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
static propTypes = {
triggersClass: PropTypes.string,
expandClass : PropTypes.string,
contractClass: PropTypes.string,
embedCss : PropTypes.bool,
onResize : PropTypes.func.isRequired
}
static defaultProps = {
triggersClass: 'resize-triggers',
expandClass: 'expand-trigger',
contractClass: 'contract-trigger',
embedCss: true
}
The component will automatically embed some required style. This can be turned off using the embedCss={false}
prop.
.resize-triggers {
visibility: hidden;
}
.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