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

333 строки
10 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. var _Paper = require('../Paper');
  28. var _Paper2 = _interopRequireDefault(_Paper);
  29. var _EnhancedSwitch = require('../internal/EnhancedSwitch');
  30. var _EnhancedSwitch2 = _interopRequireDefault(_EnhancedSwitch);
  31. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  32. function getStyles(props, context, state) {
  33. var disabled = props.disabled,
  34. elementStyle = props.elementStyle,
  35. trackSwitchedStyle = props.trackSwitchedStyle,
  36. thumbSwitchedStyle = props.thumbSwitchedStyle,
  37. trackStyle = props.trackStyle,
  38. thumbStyle = props.thumbStyle,
  39. iconStyle = props.iconStyle,
  40. rippleStyle = props.rippleStyle,
  41. labelStyle = props.labelStyle;
  42. var _context$muiTheme = context.muiTheme,
  43. baseTheme = _context$muiTheme.baseTheme,
  44. toggle = _context$muiTheme.toggle;
  45. var toggleSize = 20;
  46. var toggleTrackWidth = 36;
  47. var styles = {
  48. icon: {
  49. width: 36,
  50. padding: '4px 0px 6px 2px'
  51. },
  52. ripple: {
  53. top: -10,
  54. left: -10,
  55. color: state.switched ? toggle.thumbOnColor : baseTheme.palette.textColor
  56. },
  57. toggleElement: {
  58. width: toggleTrackWidth
  59. },
  60. track: {
  61. transition: _transitions2.default.easeOut(),
  62. width: '100%',
  63. height: 14,
  64. borderRadius: 30,
  65. backgroundColor: toggle.trackOffColor
  66. },
  67. thumb: {
  68. transition: _transitions2.default.easeOut(),
  69. position: 'absolute',
  70. top: 1,
  71. left: 0,
  72. width: toggleSize,
  73. height: toggleSize,
  74. lineHeight: '24px',
  75. borderRadius: '50%',
  76. backgroundColor: toggle.thumbOffColor
  77. },
  78. trackWhenSwitched: {
  79. backgroundColor: toggle.trackOnColor
  80. },
  81. thumbWhenSwitched: {
  82. backgroundColor: toggle.thumbOnColor,
  83. left: '100%'
  84. },
  85. trackWhenDisabled: {
  86. backgroundColor: toggle.trackDisabledColor
  87. },
  88. thumbWhenDisabled: {
  89. backgroundColor: toggle.thumbDisabledColor
  90. },
  91. label: {
  92. color: disabled ? toggle.labelDisabledColor : toggle.labelColor,
  93. width: 'calc(100% - ' + (toggleTrackWidth + 10) + 'px)'
  94. }
  95. };
  96. (0, _simpleAssign2.default)(styles.track, trackStyle, state.switched && styles.trackWhenSwitched, state.switched && trackSwitchedStyle, disabled && styles.trackWhenDisabled);
  97. (0, _simpleAssign2.default)(styles.thumb, thumbStyle, state.switched && styles.thumbWhenSwitched, state.switched && thumbSwitchedStyle, disabled && styles.thumbWhenDisabled);
  98. if (state.switched) {
  99. styles.thumb.marginLeft = 0 - styles.thumb.width;
  100. }
  101. (0, _simpleAssign2.default)(styles.icon, iconStyle);
  102. (0, _simpleAssign2.default)(styles.ripple, rippleStyle);
  103. (0, _simpleAssign2.default)(styles.label, labelStyle);
  104. (0, _simpleAssign2.default)(styles.toggleElement, elementStyle);
  105. return styles;
  106. }
  107. var Toggle = function (_Component) {
  108. (0, _inherits3.default)(Toggle, _Component);
  109. function Toggle() {
  110. var _ref;
  111. var _temp, _this, _ret;
  112. (0, _classCallCheck3.default)(this, Toggle);
  113. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  114. args[_key] = arguments[_key];
  115. }
  116. return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_ref = Toggle.__proto__ || (0, _getPrototypeOf2.default)(Toggle)).call.apply(_ref, [this].concat(args))), _this), _this.state = {
  117. switched: false
  118. }, _this.handleStateChange = function (newSwitched) {
  119. _this.setState({
  120. switched: newSwitched
  121. });
  122. }, _this.handleToggle = function (event, isInputChecked) {
  123. if (_this.props.onToggle) {
  124. _this.props.onToggle(event, isInputChecked);
  125. }
  126. }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
  127. }
  128. (0, _createClass3.default)(Toggle, [{
  129. key: 'componentWillMount',
  130. value: function componentWillMount() {
  131. var _props = this.props,
  132. toggled = _props.toggled,
  133. defaultToggled = _props.defaultToggled,
  134. valueLink = _props.valueLink;
  135. if (toggled || defaultToggled || valueLink && valueLink.value) {
  136. this.setState({
  137. switched: true
  138. });
  139. }
  140. }
  141. }, {
  142. key: 'isToggled',
  143. value: function isToggled() {
  144. return this.refs.enhancedSwitch.isSwitched();
  145. }
  146. }, {
  147. key: 'setToggled',
  148. value: function setToggled(newToggledValue) {
  149. this.refs.enhancedSwitch.setSwitched(newToggledValue);
  150. }
  151. }, {
  152. key: 'render',
  153. value: function render() {
  154. var _props2 = this.props,
  155. defaultToggled = _props2.defaultToggled,
  156. elementStyle = _props2.elementStyle,
  157. onToggle = _props2.onToggle,
  158. trackSwitchedStyle = _props2.trackSwitchedStyle,
  159. thumbSwitchedStyle = _props2.thumbSwitchedStyle,
  160. toggled = _props2.toggled,
  161. other = (0, _objectWithoutProperties3.default)(_props2, ['defaultToggled', 'elementStyle', 'onToggle', 'trackSwitchedStyle', 'thumbSwitchedStyle', 'toggled']);
  162. var prepareStyles = this.context.muiTheme.prepareStyles;
  163. var styles = getStyles(this.props, this.context, this.state);
  164. var toggleElement = _react2.default.createElement(
  165. 'div',
  166. { style: prepareStyles((0, _simpleAssign2.default)({}, styles.toggleElement)) },
  167. _react2.default.createElement('div', { style: prepareStyles((0, _simpleAssign2.default)({}, styles.track)) }),
  168. _react2.default.createElement(_Paper2.default, { style: styles.thumb, circle: true, zDepth: 1 })
  169. );
  170. var enhancedSwitchProps = {
  171. ref: 'enhancedSwitch',
  172. inputType: 'checkbox',
  173. switchElement: toggleElement,
  174. rippleStyle: styles.ripple,
  175. rippleColor: styles.ripple.color,
  176. iconStyle: styles.icon,
  177. trackStyle: styles.track,
  178. thumbStyle: styles.thumb,
  179. labelStyle: styles.label,
  180. switched: this.state.switched,
  181. onSwitch: this.handleToggle,
  182. onParentShouldUpdate: this.handleStateChange,
  183. labelPosition: this.props.labelPosition
  184. };
  185. if (this.props.hasOwnProperty('toggled')) {
  186. enhancedSwitchProps.checked = toggled;
  187. } else if (this.props.hasOwnProperty('defaultToggled')) {
  188. enhancedSwitchProps.defaultChecked = defaultToggled;
  189. }
  190. return _react2.default.createElement(_EnhancedSwitch2.default, (0, _extends3.default)({}, other, enhancedSwitchProps));
  191. }
  192. }]);
  193. return Toggle;
  194. }(_react.Component);
  195. Toggle.defaultProps = {
  196. defaultToggled: false,
  197. disabled: false,
  198. labelPosition: 'left'
  199. };
  200. Toggle.contextTypes = {
  201. muiTheme: _propTypes2.default.object.isRequired
  202. };
  203. Toggle.propTypes = process.env.NODE_ENV !== "production" ? {
  204. /**
  205. * Determines whether the Toggle is initially turned on.
  206. * **Warning:** This cannot be used in conjunction with `toggled`.
  207. * Decide between using a controlled or uncontrolled input element and remove one of these props.
  208. * More info: https://fb.me/react-controlled-components
  209. */
  210. defaultToggled: _propTypes2.default.bool,
  211. /**
  212. * Will disable the toggle if true.
  213. */
  214. disabled: _propTypes2.default.bool,
  215. /**
  216. * Overrides the inline-styles of the Toggle element.
  217. */
  218. elementStyle: _propTypes2.default.object,
  219. /**
  220. * Overrides the inline-styles of the Icon element.
  221. */
  222. iconStyle: _propTypes2.default.object,
  223. /**
  224. * Overrides the inline-styles of the input element.
  225. */
  226. inputStyle: _propTypes2.default.object,
  227. /**
  228. * Label for toggle.
  229. */
  230. label: _propTypes2.default.node,
  231. /**
  232. * Where the label will be placed next to the toggle.
  233. */
  234. labelPosition: _propTypes2.default.oneOf(['left', 'right']),
  235. /**
  236. * Overrides the inline-styles of the Toggle element label.
  237. */
  238. labelStyle: _propTypes2.default.object,
  239. /**
  240. * Callback function that is fired when the toggle switch is toggled.
  241. *
  242. * @param {object} event Change event targeting the toggle.
  243. * @param {bool} isInputChecked The new value of the toggle.
  244. */
  245. onToggle: _propTypes2.default.func,
  246. /**
  247. * Override style of ripple.
  248. */
  249. rippleStyle: _propTypes2.default.object,
  250. /**
  251. * Override the inline-styles of the root element.
  252. */
  253. style: _propTypes2.default.object,
  254. /**
  255. * Override style for thumb.
  256. */
  257. thumbStyle: _propTypes2.default.object,
  258. /**
  259. * Override the inline styles for thumb when the toggle switch is toggled on.
  260. */
  261. thumbSwitchedStyle: _propTypes2.default.object,
  262. /**
  263. * Toggled if set to true.
  264. */
  265. toggled: _propTypes2.default.bool,
  266. /**
  267. * Override style for track.
  268. */
  269. trackStyle: _propTypes2.default.object,
  270. /**
  271. * Override the inline styles for track when the toggle switch is toggled on.
  272. */
  273. trackSwitchedStyle: _propTypes2.default.object,
  274. /**
  275. * ValueLink prop for when using controlled toggle.
  276. */
  277. valueLink: _propTypes2.default.object
  278. } : {};
  279. exports.default = Toggle;