You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

StepButton.js 6.7 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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. var _EnhancedButton = require('../internal/EnhancedButton');
  28. var _EnhancedButton2 = _interopRequireDefault(_EnhancedButton);
  29. var _StepLabel = require('./StepLabel');
  30. var _StepLabel2 = _interopRequireDefault(_StepLabel);
  31. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  32. var isLabel = function isLabel(child) {
  33. return child && child.type && child.type.muiName === 'StepLabel';
  34. };
  35. var getStyles = function getStyles(props, context, state) {
  36. var hovered = state.hovered;
  37. var _context$muiTheme$ste = context.muiTheme.stepper,
  38. backgroundColor = _context$muiTheme$ste.backgroundColor,
  39. hoverBackgroundColor = _context$muiTheme$ste.hoverBackgroundColor;
  40. var styles = {
  41. root: {
  42. padding: 0,
  43. backgroundColor: hovered ? hoverBackgroundColor : backgroundColor,
  44. transition: _transitions2.default.easeOut()
  45. }
  46. };
  47. if (context.stepper.orientation === 'vertical') {
  48. styles.root.width = '100%';
  49. }
  50. return styles;
  51. };
  52. var StepButton = function (_Component) {
  53. (0, _inherits3.default)(StepButton, _Component);
  54. function StepButton() {
  55. var _ref;
  56. var _temp, _this, _ret;
  57. (0, _classCallCheck3.default)(this, StepButton);
  58. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  59. args[_key] = arguments[_key];
  60. }
  61. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = StepButton.__proto__ || (0, _getPrototypeOf2.default)(StepButton)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
  62. hovered: false,
  63. touched: false
  64. }, _this.handleMouseEnter = function (event) {
  65. var onMouseEnter = _this.props.onMouseEnter;
  66. // Cancel hover styles for touch devices
  67. if (!_this.state.touched) {
  68. _this.setState({ hovered: true });
  69. }
  70. if (typeof onMouseEnter === 'function') {
  71. onMouseEnter(event);
  72. }
  73. }, _this.handleMouseLeave = function (event) {
  74. var onMouseLeave = _this.props.onMouseLeave;
  75. _this.setState({ hovered: false });
  76. if (typeof onMouseLeave === 'function') {
  77. onMouseLeave(event);
  78. }
  79. }, _this.handleTouchStart = function (event) {
  80. var onTouchStart = _this.props.onTouchStart;
  81. if (!_this.state.touched) {
  82. _this.setState({ touched: true });
  83. }
  84. if (typeof onTouchStart === 'function') {
  85. onTouchStart(event);
  86. }
  87. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  88. }
  89. (0, _createClass3.default)(StepButton, [{
  90. key: 'render',
  91. value: function render() {
  92. var _props = this.props,
  93. active = _props.active,
  94. children = _props.children,
  95. completed = _props.completed,
  96. disabled = _props.disabled,
  97. icon = _props.icon,
  98. iconContainerStyle = _props.iconContainerStyle,
  99. last = _props.last,
  100. onMouseEnter = _props.onMouseEnter,
  101. onMouseLeave = _props.onMouseLeave,
  102. onTouchStart = _props.onTouchStart,
  103. style = _props.style,
  104. other = (0, _objectWithoutProperties3.default)(_props, ['active', 'children', 'completed', 'disabled', 'icon', 'iconContainerStyle', 'last', 'onMouseEnter', 'onMouseLeave', 'onTouchStart', 'style']);
  105. var styles = getStyles(this.props, this.context, this.state);
  106. var child = isLabel(children) ? children : _react2.default.createElement(
  107. _StepLabel2.default,
  108. null,
  109. children
  110. );
  111. return _react2.default.createElement(
  112. _EnhancedButton2.default,
  113. (0, _extends3.default)({
  114. disabled: disabled,
  115. style: (0, _simpleAssign2.default)(styles.root, style),
  116. onMouseEnter: this.handleMouseEnter,
  117. onMouseLeave: this.handleMouseLeave,
  118. onTouchStart: this.handleTouchStart
  119. }, other),
  120. _react2.default.cloneElement(child, { active: active, completed: completed, disabled: disabled, icon: icon, iconContainerStyle: iconContainerStyle })
  121. );
  122. }
  123. }]);
  124. return StepButton;
  125. }(_react.Component);
  126. StepButton.contextTypes = {
  127. muiTheme: _propTypes2.default.object.isRequired,
  128. stepper: _propTypes2.default.object
  129. };
  130. StepButton.propTypes = process.env.NODE_ENV !== "production" ? {
  131. /**
  132. * Passed from `Step` Is passed to StepLabel.
  133. */
  134. active: _propTypes2.default.bool,
  135. /**
  136. * Can be a `StepLabel` or a node to place inside `StepLabel` as children.
  137. */
  138. children: _propTypes2.default.node,
  139. /**
  140. * Sets completed styling. Is passed to StepLabel.
  141. */
  142. completed: _propTypes2.default.bool,
  143. /**
  144. * Disables the button and sets disabled styling. Is passed to StepLabel.
  145. */
  146. disabled: _propTypes2.default.bool,
  147. /**
  148. * The icon displayed by the step label.
  149. */
  150. icon: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.string, _propTypes2.default.number]),
  151. /**
  152. * Override the inline-styles of the icon container element.
  153. */
  154. iconContainerStyle: _propTypes2.default.object,
  155. /** @ignore */
  156. last: _propTypes2.default.bool,
  157. /** @ignore */
  158. onMouseEnter: _propTypes2.default.func,
  159. /** @ignore */
  160. onMouseLeave: _propTypes2.default.func,
  161. /** @ignore */
  162. onTouchStart: _propTypes2.default.func,
  163. /**
  164. * Override the inline-style of the root element.
  165. */
  166. style: _propTypes2.default.object
  167. } : {};
  168. exports.default = StepButton;