Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

158 строки
4.9 KiB

  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. var _extends2 = require('babel-runtime/helpers/extends');
  6. var _extends3 = _interopRequireDefault(_extends2);
  7. var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
  8. var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
  9. var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
  10. var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
  11. var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
  12. var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
  13. var _createClass2 = require('babel-runtime/helpers/createClass');
  14. var _createClass3 = _interopRequireDefault(_createClass2);
  15. var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
  16. var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
  17. var _inherits2 = require('babel-runtime/helpers/inherits');
  18. var _inherits3 = _interopRequireDefault(_inherits2);
  19. var _simpleAssign = require('simple-assign');
  20. var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
  21. var _react = require('react');
  22. var _react2 = _interopRequireDefault(_react);
  23. var _propTypes = require('prop-types');
  24. var _propTypes2 = _interopRequireDefault(_propTypes);
  25. var _transitions = require('../styles/transitions');
  26. var _transitions2 = _interopRequireDefault(_transitions);
  27. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  28. function getStyles(props, context, state) {
  29. var color = props.color,
  30. hoverColor = props.hoverColor;
  31. var baseTheme = context.muiTheme.baseTheme;
  32. var offColor = color || baseTheme.palette.textColor;
  33. var onColor = hoverColor || offColor;
  34. return {
  35. root: {
  36. color: state.hovered ? onColor : offColor,
  37. position: 'relative',
  38. fontSize: baseTheme.spacing.iconSize,
  39. display: 'inline-block',
  40. userSelect: 'none',
  41. transition: _transitions2.default.easeOut()
  42. }
  43. };
  44. }
  45. var FontIcon = function (_Component) {
  46. (0, _inherits3.default)(FontIcon, _Component);
  47. function FontIcon() {
  48. var _ref;
  49. var _temp, _this, _ret;
  50. (0, _classCallCheck3.default)(this, FontIcon);
  51. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  52. args[_key] = arguments[_key];
  53. }
  54. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = FontIcon.__proto__ || (0, _getPrototypeOf2.default)(FontIcon)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
  55. hovered: false
  56. }, _this.handleMouseLeave = function (event) {
  57. // hover is needed only when a hoverColor is defined
  58. if (_this.props.hoverColor !== undefined) {
  59. _this.setState({ hovered: false });
  60. }
  61. if (_this.props.onMouseLeave) {
  62. _this.props.onMouseLeave(event);
  63. }
  64. }, _this.handleMouseEnter = function (event) {
  65. // hover is needed only when a hoverColor is defined
  66. if (_this.props.hoverColor !== undefined) {
  67. _this.setState({ hovered: true });
  68. }
  69. if (_this.props.onMouseEnter) {
  70. _this.props.onMouseEnter(event);
  71. }
  72. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  73. }
  74. (0, _createClass3.default)(FontIcon, [{
  75. key: 'render',
  76. value: function render() {
  77. var _props = this.props,
  78. hoverColor = _props.hoverColor,
  79. onMouseLeave = _props.onMouseLeave,
  80. onMouseEnter = _props.onMouseEnter,
  81. style = _props.style,
  82. other = (0, _objectWithoutProperties3.default)(_props, ['hoverColor', 'onMouseLeave', 'onMouseEnter', 'style']);
  83. var prepareStyles = this.context.muiTheme.prepareStyles;
  84. var styles = getStyles(this.props, this.context, this.state);
  85. return _react2.default.createElement('span', (0, _extends3.default)({}, other, {
  86. onMouseLeave: this.handleMouseLeave,
  87. onMouseEnter: this.handleMouseEnter,
  88. style: prepareStyles((0, _simpleAssign2.default)(styles.root, style))
  89. }));
  90. }
  91. }]);
  92. return FontIcon;
  93. }(_react.Component);
  94. FontIcon.muiName = 'FontIcon';
  95. FontIcon.defaultProps = {
  96. onMouseEnter: function onMouseEnter() {},
  97. onMouseLeave: function onMouseLeave() {}
  98. };
  99. FontIcon.contextTypes = {
  100. muiTheme: _propTypes2.default.object.isRequired
  101. };
  102. FontIcon.propTypes = process.env.NODE_ENV !== "production" ? {
  103. /**
  104. * This is the font color of the font icon. If not specified,
  105. * this component will default to muiTheme.palette.textColor.
  106. */
  107. color: _propTypes2.default.string,
  108. /**
  109. * This is the icon color when the mouse hovers over the icon.
  110. */
  111. hoverColor: _propTypes2.default.string,
  112. /** @ignore */
  113. onMouseEnter: _propTypes2.default.func,
  114. /** @ignore */
  115. onMouseLeave: _propTypes2.default.func,
  116. /**
  117. * Override the inline-styles of the root element.
  118. */
  119. style: _propTypes2.default.object
  120. } : {};
  121. exports.default = FontIcon;