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

114 строки
3.0 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 _simpleAssign = require('simple-assign');
  10. var _simpleAssign2 = _interopRequireDefault(_simpleAssign);
  11. var _react = require('react');
  12. var _react2 = _interopRequireDefault(_react);
  13. var _propTypes = require('prop-types');
  14. var _propTypes2 = _interopRequireDefault(_propTypes);
  15. var _EnhancedButton = require('../internal/EnhancedButton');
  16. var _EnhancedButton2 = _interopRequireDefault(_EnhancedButton);
  17. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  18. function getStyles(props, context) {
  19. var selected = props.selected;
  20. var bottomNavigation = context.muiTheme.bottomNavigation;
  21. var color = selected ? bottomNavigation.selectedColor : bottomNavigation.unselectedColor;
  22. var styles = {
  23. root: {
  24. transition: 'padding-top 0.3s',
  25. paddingTop: selected ? 6 : 8,
  26. paddingBottom: 10,
  27. paddingLeft: 12,
  28. paddingRight: 12,
  29. minWidth: 80,
  30. maxWidth: 168
  31. },
  32. label: {
  33. fontSize: selected ? bottomNavigation.selectedFontSize : bottomNavigation.unselectedFontSize,
  34. transition: 'color 0.3s, font-size 0.3s',
  35. color: color
  36. },
  37. icon: {
  38. display: 'block',
  39. /**
  40. * Used to ensure SVG icons are centered
  41. */
  42. width: '100%'
  43. },
  44. iconColor: color
  45. };
  46. return styles;
  47. }
  48. var BottomNavigationItem = function BottomNavigationItem(props, context) {
  49. var label = props.label,
  50. icon = props.icon,
  51. style = props.style,
  52. other = (0, _objectWithoutProperties3.default)(props, ['label', 'icon', 'style']);
  53. var prepareStyles = context.muiTheme.prepareStyles;
  54. var styles = getStyles(props, context);
  55. var styledIcon = (0, _react.cloneElement)(icon, {
  56. style: (0, _simpleAssign2.default)({}, styles.icon, icon.props.style),
  57. color: icon.props.color || styles.iconColor
  58. });
  59. return _react2.default.createElement(
  60. _EnhancedButton2.default,
  61. (0, _extends3.default)({}, other, { style: (0, _simpleAssign2.default)({}, styles.root, style) }),
  62. styledIcon,
  63. _react2.default.createElement(
  64. 'div',
  65. { style: prepareStyles(styles.label) },
  66. label
  67. )
  68. );
  69. };
  70. BottomNavigationItem.propTypes = process.env.NODE_ENV !== "production" ? {
  71. /**
  72. * Set the icon representing the view for this item.
  73. */
  74. icon: _propTypes2.default.node,
  75. /**
  76. * Set the label describing the view for this item.
  77. */
  78. label: _propTypes2.default.node,
  79. /**
  80. * @ignore
  81. * Override the inline-styles of the root element.
  82. */
  83. style: _propTypes2.default.object
  84. } : {};
  85. BottomNavigationItem.contextTypes = {
  86. muiTheme: _propTypes2.default.object.isRequired
  87. };
  88. exports.default = BottomNavigationItem;