JSFiddle - React, Tailwind, and code Playground
by Jordan Sayner
HTML
<script src="https://cdn.jsdelivr.net/npm/interactjs/dist/interact.min.js"></script>
<body>
<div class="resizable">
<div>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
</div>
<div class="resizer right"></div>
</div>
<div class="resizable">
<div>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.</p>
</div>
<div class="resizer right"></div>
</div>
</body>
CSS
.resizable {
width: 500px;
border: 1px solid red;
max-width: 900px;
min-width: 350px;
margin: 0 0 24px 0;
position: relative;
}
.resizer {
height: 100%;
width: 4px;
background: blue;
cursor: ew-resize;
position: absolute;
top: 0;
}
.right {
right: 0;
}
JavaScript
interact('.resizable').resizable({
edges: {
top: false,
bottom: false,
left: false,
right: '.right',
}
})
.on('resizestart', event => {
// this event used to include event.interaction.downEvent.target
console.log("downEvent is: ", event.interaction.downEvent);
})
.on('resizemove', event => {
let {
width
} = event.rect;
Object.assign(event.target.style, {
width: `${Math.max (event.rect.width, 10)}px`
});
});