material-ui
Version:
Material Design UI components built with React
52 lines (39 loc) • 1.32 kB
JSX
var React = require('react'),
CssEvent = require('./utils/css-event.js'),
Dom = require('./utils/dom.js'),
Classable = require('./mixins/classable.js');
var Ripple = React.createClass({
mixins: [Classable],
render: function() {
var classes = this.getClasses('mui-ripple');
return (
<div className={classes} />
);
},
animate: function(e, callback) {
var el = this.getDOMNode(),
offset = Dom.offset(el.parentNode),
pageX = e.pageX == undefined ? e.nativeEvent.pageX : e.pageX,
pageY = e.pageY == undefined ? e.nativeEvent.pageY : e.pageY,
x = pageX - offset.left,
y = pageY - offset.top;
this._animateRipple(el, x, y, callback);
},
animateFromCenter: function(callback) {
var el = this.getDOMNode(),
x = el.parentNode.offsetWidth / 2,
y = el.parentNode.offsetHeight / 2;
this._animateRipple(el, x, y, callback);
},
_animateRipple: function(el, x, y, callback) {
el.style.transition = 'none';
el.style.top = y + 'px';
el.style.left = x + 'px';
Dom.addClass(el, 'mui-is-visible');
CssEvent.onAnimationEnd(el, function() {
Dom.removeClass(el, 'mui-is-visible');
if (callback) callback();
});
}
});
module.exports = Ripple;