UNPKG

5.51 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
12
13var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
14
15var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
16
17var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
18
19var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
20
21var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
22
23var _createClass2 = require('babel-runtime/helpers/createClass');
24
25var _createClass3 = _interopRequireDefault(_createClass2);
26
27var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
28
29var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
30
31var _inherits2 = require('babel-runtime/helpers/inherits');
32
33var _inherits3 = _interopRequireDefault(_inherits2);
34
35var _simpleAssign = require('simple-assign');
36
37var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
38
39var _react = require('react');
40
41var _react2 = _interopRequireDefault(_react);
42
43var _propTypes = require('prop-types');
44
45var _propTypes2 = _interopRequireDefault(_propTypes);
46
47var _reactDom = require('react-dom');
48
49var _reactDom2 = _interopRequireDefault(_reactDom);
50
51var _shallowEqual = require('recompose/shallowEqual');
52
53var _shallowEqual2 = _interopRequireDefault(_shallowEqual);
54
55var _autoPrefix = require('../utils/autoPrefix');
56
57var _autoPrefix2 = _interopRequireDefault(_autoPrefix);
58
59var _transitions = require('../styles/transitions');
60
61var _transitions2 = _interopRequireDefault(_transitions);
62
63function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
64
65var CircleRipple = function (_Component) {
66 (0, _inherits3.default)(CircleRipple, _Component);
67
68 function CircleRipple() {
69 (0, _classCallCheck3.default)(this, CircleRipple);
70 return (0, _possibleConstructorReturn3.default)(this, (CircleRipple.__proto__ || (0, _getPrototypeOf2.default)(CircleRipple)).apply(this, arguments));
71 }
72
73 (0, _createClass3.default)(CircleRipple, [{
74 key: 'shouldComponentUpdate',
75 value: function shouldComponentUpdate(nextProps) {
76 return !(0, _shallowEqual2.default)(this.props, nextProps);
77 }
78 }, {
79 key: 'componentWillUnmount',
80 value: function componentWillUnmount() {
81 clearTimeout(this.enterTimer);
82 clearTimeout(this.leaveTimer);
83 }
84 }, {
85 key: 'componentWillAppear',
86 value: function componentWillAppear(callback) {
87 this.initializeAnimation(callback);
88 }
89 }, {
90 key: 'componentWillEnter',
91 value: function componentWillEnter(callback) {
92 this.initializeAnimation(callback);
93 }
94 }, {
95 key: 'componentDidAppear',
96 value: function componentDidAppear() {
97 this.animate();
98 }
99 }, {
100 key: 'componentDidEnter',
101 value: function componentDidEnter() {
102 this.animate();
103 }
104 }, {
105 key: 'componentWillLeave',
106 value: function componentWillLeave(callback) {
107 var style = _reactDom2.default.findDOMNode(this).style;
108 style.opacity = 0;
109 // If the animation is aborted, remove from the DOM immediately
110 var removeAfter = this.props.aborted ? 0 : 2000;
111 this.enterTimer = setTimeout(callback, removeAfter);
112 }
113 }, {
114 key: 'animate',
115 value: function animate() {
116 var style = _reactDom2.default.findDOMNode(this).style;
117 var transitionValue = _transitions2.default.easeOut('2s', 'opacity') + ', ' + _transitions2.default.easeOut('1s', 'transform');
118 _autoPrefix2.default.set(style, 'transition', transitionValue);
119 _autoPrefix2.default.set(style, 'transform', 'scale(1)');
120 }
121 }, {
122 key: 'initializeAnimation',
123 value: function initializeAnimation(callback) {
124 var style = _reactDom2.default.findDOMNode(this).style;
125 style.opacity = this.props.opacity;
126 _autoPrefix2.default.set(style, 'transform', 'scale(0)');
127 this.leaveTimer = setTimeout(callback, 0);
128 }
129 }, {
130 key: 'render',
131 value: function render() {
132 var _props = this.props,
133 aborted = _props.aborted,
134 color = _props.color,
135 opacity = _props.opacity,
136 style = _props.style,
137 touchGenerated = _props.touchGenerated,
138 other = (0, _objectWithoutProperties3.default)(_props, ['aborted', 'color', 'opacity', 'style', 'touchGenerated']);
139 var prepareStyles = this.context.muiTheme.prepareStyles;
140
141
142 var mergedStyles = (0, _simpleAssign2.default)({
143 position: 'absolute',
144 top: 0,
145 left: 0,
146 height: '100%',
147 width: '100%',
148 borderRadius: '50%',
149 backgroundColor: color
150 }, style);
151
152 return _react2.default.createElement('div', (0, _extends3.default)({}, other, { style: prepareStyles(mergedStyles) }));
153 }
154 }]);
155 return CircleRipple;
156}(_react.Component);
157
158CircleRipple.defaultProps = {
159 opacity: 0.1,
160 aborted: false
161};
162CircleRipple.contextTypes = {
163 muiTheme: _propTypes2.default.object.isRequired
164};
165CircleRipple.propTypes = process.env.NODE_ENV !== "production" ? {
166 aborted: _propTypes2.default.bool,
167 color: _propTypes2.default.string,
168 opacity: _propTypes2.default.number,
169 style: _propTypes2.default.object,
170 touchGenerated: _propTypes2.default.bool
171} : {};
172exports.default = CircleRipple;
\No newline at end of file