here I created horizontally(right to left) resizeable div using angular 6
import { Component, HostListener, OnInit } from '@angular/core';
@Component({
selector: 'my-app',
template: `
<style>
.textarea {
min-height: 150px;
border:1px solid #ddd;
padding:15px;
position:relative;
width: 100px;
float:right;
}
.textarea .grabber{
content: '';
position: absolute;
top: 0;
left: 0;
margin-right: -15px;
cursor: ew-resize;
height: 100%;
width: 10px;
border-top: 1px solid #444;
overflow: hidden;
background-color: #444;
}
</style>
<div class="textarea" [style.width.px]='width' contenteditable="true" >
this is a text area
<div class="grabber" ></div>
</div>`
})
export class AppComponent {
name = 'Angular 6';
width = 150;
x = 100;
oldX = 0;
grabber = false;
@HostListener('document:mousemove', ['$event'])
onMouseMove(event: MouseEvent) {
if (!this.grabber) {
return;
}
this.resizer(event.clientX - this.oldX);
this.oldX = event.clientX;
}
@HostListener('document:mouseup', ['$event'])
onMouseUp(event: MouseEvent) {
this.grabber = false;
}
resizer(offsetX: number) {
this.width -= offsetX;
}
@HostListener('document:mousedown', ['$event'])
onMouseDown(event: MouseEvent) {
this.grabber = true;
this.oldX = event.clientX;
}
}