UNPKG

@material-ui/core

Version:

React components that implement Google's Material Design.

148 lines (117 loc) 4.77 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _classnames = _interopRequireDefault(require("classnames")); var _Transition = _interopRequireDefault(require("react-transition-group/Transition")); /** * @ignore - internal component. */ var Ripple = /*#__PURE__*/ function (_React$Component) { (0, _inherits2.default)(Ripple, _React$Component); function Ripple() { var _getPrototypeOf2; var _this; (0, _classCallCheck2.default)(this, Ripple); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = (0, _possibleConstructorReturn2.default)(this, (_getPrototypeOf2 = (0, _getPrototypeOf3.default)(Ripple)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.state = { visible: false, leaving: false }; _this.handleEnter = function () { _this.setState({ visible: true }); }; _this.handleExit = function () { _this.setState({ leaving: true }); }; return _this; } (0, _createClass2.default)(Ripple, [{ key: "render", value: function render() { var _classNames, _classNames2; var _this$props = this.props, classes = _this$props.classes, classNameProp = _this$props.className, pulsate = _this$props.pulsate, rippleX = _this$props.rippleX, rippleY = _this$props.rippleY, rippleSize = _this$props.rippleSize, other = (0, _objectWithoutProperties2.default)(_this$props, ["classes", "className", "pulsate", "rippleX", "rippleY", "rippleSize"]); var _this$state = this.state, visible = _this$state.visible, leaving = _this$state.leaving; var rippleClassName = (0, _classnames.default)(classes.ripple, (_classNames = {}, (0, _defineProperty2.default)(_classNames, classes.rippleVisible, visible), (0, _defineProperty2.default)(_classNames, classes.ripplePulsate, pulsate), _classNames), classNameProp); var rippleStyles = { width: rippleSize, height: rippleSize, top: -(rippleSize / 2) + rippleY, left: -(rippleSize / 2) + rippleX }; var childClassName = (0, _classnames.default)(classes.child, (_classNames2 = {}, (0, _defineProperty2.default)(_classNames2, classes.childLeaving, leaving), (0, _defineProperty2.default)(_classNames2, classes.childPulsate, pulsate), _classNames2)); return _react.default.createElement(_Transition.default, (0, _extends2.default)({ onEnter: this.handleEnter, onExit: this.handleExit }, other), _react.default.createElement("span", { className: rippleClassName, style: rippleStyles }, _react.default.createElement("span", { className: childClassName }))); } }]); return Ripple; }(_react.default.Component); Ripple.propTypes = process.env.NODE_ENV !== "production" ? { /** * Override or extend the styles applied to the component. * See [CSS API](#css-api) below for more details. */ classes: _propTypes.default.object.isRequired, /** * @ignore */ className: _propTypes.default.string, /** * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element. */ pulsate: _propTypes.default.bool, /** * Diameter of the ripple. */ rippleSize: _propTypes.default.number, /** * Horizontal position of the ripple center. */ rippleX: _propTypes.default.number, /** * Vertical position of the ripple center. */ rippleY: _propTypes.default.number } : {}; Ripple.defaultProps = { pulsate: false }; var _default = Ripple; exports.default = _default;