A React component to implement cross-browser event based resize detection, without interval polling!.
var Resizable = require('react-component-resizable');
<Resizable className="via transferPropsTo" onResize={this.onResize}>
Content...
</Resizable>
npm install react-component-resizable --save
propTypes: {
triggersClass: React.PropTypes.string, // default resize-triggers
expandClass: React.PropTypes.string, // default expand-trigger
contractClass: React.PropTypes.string, // default contract-trigger
embedCss: React.PropTypes.bool, // embed required style, default true
onResize: React.PropTypes.func.isRequired // required callback function
}
The component will automatically embed some required style. This can be turned off using the embedCss={false}
prop.
.resize-triggers {
visibility: hidden;
opacity: 0;
z-index: -1;
}
.resize-triggers, .resize-triggers > div, .contract-trigger:before {
content: " ";
display: block;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
overflow: hidden;
}
.resize-triggers > div {
overflow: auto;
}
.contract-trigger:before {
width: 200%;
height: 200%;
}
Many thanks to Daniel - backalleycoder.com for this blog post and scecima and his project javascript-detect-element-resize!
MIT