'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.styles = undefined; var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _ref; // @inheritedComponent ButtonBase var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _withStyles = require('../styles/withStyles'); var _withStyles2 = _interopRequireDefault(_withStyles); var _colorManipulator = require('../styles/colorManipulator'); var _ButtonBase = require('../ButtonBase'); var _ButtonBase2 = _interopRequireDefault(_ButtonBase); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var babelPluginFlowReactPropTypes_proptype_Node = require('react').babelPluginFlowReactPropTypes_proptype_Node || require('prop-types').any; var babelPluginFlowReactPropTypes_proptype_ElementType = require('react').babelPluginFlowReactPropTypes_proptype_ElementType || require('prop-types').any; var styles = exports.styles = function styles(theme) { return { root: (0, _extends3.default)({}, theme.typography.button, { lineHeight: '1.4em', // Improve readability for multiline button. boxSizing: 'border-box', minWidth: 88, minHeight: 36, padding: theme.spacing.unit + 'px ' + theme.spacing.unit * 2 + 'px', borderRadius: 2, color: theme.palette.text.primary, transition: theme.transitions.create(['background-color', 'box-shadow'], { duration: theme.transitions.duration.short }), '&:hover': { textDecoration: 'none', // Reset on mouse devices backgroundColor: (0, _colorManipulator.fade)(theme.palette.text.primary, 0.12), '@media (hover: none)': { backgroundColor: 'transparent' }, '&$disabled': { backgroundColor: 'transparent' } } }), dense: { padding: theme.spacing.unit - 1 + 'px ' + theme.spacing.unit + 'px', minWidth: 64, minHeight: 32, fontSize: theme.typography.pxToRem(theme.typography.fontSize - 1) }, label: { width: '100%', display: 'inherit', alignItems: 'inherit', justifyContent: 'inherit' }, flatPrimary: { color: theme.palette.primary[500], '&:hover': { backgroundColor: (0, _colorManipulator.fade)(theme.palette.primary[500], 0.12), // Reset on mouse devices '@media (hover: none)': { backgroundColor: 'transparent' } } }, flatAccent: { color: theme.palette.secondary.A200, '&:hover': { backgroundColor: (0, _colorManipulator.fade)(theme.palette.secondary.A200, 0.12), // Reset on mouse devices '@media (hover: none)': { backgroundColor: 'transparent' } } }, flatContrast: { color: theme.palette.getContrastText(theme.palette.primary[500]), '&:hover': { backgroundColor: (0, _colorManipulator.fade)(theme.palette.getContrastText(theme.palette.primary[500]), 0.12), // Reset on mouse devices '@media (hover: none)': { backgroundColor: 'transparent' } } }, colorInherit: { color: 'inherit' }, raised: { color: theme.palette.getContrastText(theme.palette.grey[300]), backgroundColor: theme.palette.grey[300], boxShadow: theme.shadows[2], '&$keyboardFocused': { boxShadow: theme.shadows[6] }, '&:active': { boxShadow: theme.shadows[8] }, '&$disabled': { boxShadow: theme.shadows[0], backgroundColor: theme.palette.text.divider }, '&:hover': { backgroundColor: theme.palette.grey.A100, // Reset on mouse devices '@media (hover: none)': { backgroundColor: theme.palette.grey[300] }, '&$disabled': { backgroundColor: theme.palette.text.divider, // Reset on mouse devices '@media (hover: none)': { backgroundColor: theme.palette.grey[300] } } } }, keyboardFocused: {}, raisedPrimary: { color: theme.palette.getContrastText(theme.palette.primary[500]), backgroundColor: theme.palette.primary[500], '&:hover': { backgroundColor: theme.palette.primary[700], // Reset on mouse devices '@media (hover: none)': { backgroundColor: theme.palette.primary[500] } } }, raisedAccent: { color: theme.palette.getContrastText(theme.palette.secondary.A200), backgroundColor: theme.palette.secondary.A200, '&:hover': { backgroundColor: theme.palette.secondary.A400, // Reset on mouse devices '@media (hover: none)': { backgroundColor: theme.palette.secondary.A200 } } }, raisedContrast: { color: theme.palette.getContrastText(theme.palette.primary[500]) }, disabled: { color: theme.palette.action.disabled }, fab: { borderRadius: '50%', padding: 0, minWidth: 0, width: 56, height: 56, boxShadow: theme.shadows[6], '&:active': { boxShadow: theme.shadows[12] } } }; }; var babelPluginFlowReactPropTypes_proptype_Color = require('prop-types').oneOf(['default', 'inherit', 'primary', 'accent', 'contrast']); var babelPluginFlowReactPropTypes_proptype_Props = { /** * The content of the button. */ children: typeof babelPluginFlowReactPropTypes_proptype_Node === 'function' ? babelPluginFlowReactPropTypes_proptype_Node.isRequired ? babelPluginFlowReactPropTypes_proptype_Node.isRequired : babelPluginFlowReactPropTypes_proptype_Node : require('prop-types').shape(babelPluginFlowReactPropTypes_proptype_Node).isRequired, /** * Useful to extend the style applied to components. */ classes: require('prop-types').object, /** * @ignore */ className: require('prop-types').string, /** * The color of the component. It's using the theme palette when that makes sense. */ color: require('prop-types').oneOf(['default', 'inherit', 'primary', 'accent', 'contrast']), /** * The component used for the root node. * Either a string to use a DOM element or a component. * The default value is a `button`. */ component: typeof babelPluginFlowReactPropTypes_proptype_ElementType === 'function' ? babelPluginFlowReactPropTypes_proptype_ElementType : require('prop-types').shape(babelPluginFlowReactPropTypes_proptype_ElementType), /** * Uses a smaller minWidth, ideal for things like card actions. */ dense: require('prop-types').bool, /** * If `true`, the button will be disabled. */ disabled: require('prop-types').bool, /** * If `true`, the keyboard focus ripple will be disabled. * `disableRipple` must also be true. */ disableFocusRipple: require('prop-types').bool, /** * If `true`, the ripple effect will be disabled. */ disableRipple: require('prop-types').bool, /** * If `true`, will use floating action button styling. */ fab: require('prop-types').bool, /** * The URL to link to when the button is clicked. * If defined, an `a` element will be used as the root node. */ href: require('prop-types').string, /** * If `true`, the button will use raised styling. */ raised: require('prop-types').bool, /** * @ignore */ type: require('prop-types').string }; function Button(props) { var _classNames; var children = props.children, classes = props.classes, classNameProp = props.className, color = props.color, dense = props.dense, disabled = props.disabled, disableFocusRipple = props.disableFocusRipple, fab = props.fab, raised = props.raised, other = (0, _objectWithoutProperties3.default)(props, ['children', 'classes', 'className', 'color', 'dense', 'disabled', 'disableFocusRipple', 'fab', 'raised']); var flat = !raised && !fab; var className = (0, _classnames2.default)((_classNames = {}, (0, _defineProperty3.default)(_classNames, classes.root, true), (0, _defineProperty3.default)(_classNames, classes.raised, raised || fab), (0, _defineProperty3.default)(_classNames, classes.fab, fab), (0, _defineProperty3.default)(_classNames, classes.colorInherit, color === 'inherit'), (0, _defineProperty3.default)(_classNames, classes.flatPrimary, flat && color === 'primary'), (0, _defineProperty3.default)(_classNames, classes.flatAccent, flat && color === 'accent'), (0, _defineProperty3.default)(_classNames, classes.flatContrast, flat && color === 'contrast'), (0, _defineProperty3.default)(_classNames, classes.raisedPrimary, !flat && color === 'primary'), (0, _defineProperty3.default)(_classNames, classes.raisedAccent, !flat && color === 'accent'), (0, _defineProperty3.default)(_classNames, classes.raisedContrast, !flat && color === 'contrast'), (0, _defineProperty3.default)(_classNames, classes.dense, dense), (0, _defineProperty3.default)(_classNames, classes.disabled, disabled), _classNames), classNameProp); return _react2.default.createElement( _ButtonBase2.default, (0, _extends3.default)({ className: className, disabled: disabled, focusRipple: !disableFocusRipple, keyboardFocusedClassName: classes.keyboardFocused }, other), _react2.default.createElement( 'span', { className: classes.label }, children ) ); } Button.propTypes = process.env.NODE_ENV !== "production" ? (_ref = { classes: require('prop-types').object.isRequired, color: require('prop-types').oneOf(['default', 'inherit', 'primary', 'accent', 'contrast']).isRequired, dense: require('prop-types').bool.isRequired, disabled: require('prop-types').bool.isRequired, fab: require('prop-types').bool.isRequired, disableFocusRipple: require('prop-types').bool.isRequired, raised: require('prop-types').bool.isRequired, disableRipple: require('prop-types').bool.isRequired, type: require('prop-types').string.isRequired, children: typeof babelPluginFlowReactPropTypes_proptype_Node === 'function' ? babelPluginFlowReactPropTypes_proptype_Node.isRequired ? babelPluginFlowReactPropTypes_proptype_Node.isRequired : babelPluginFlowReactPropTypes_proptype_Node : require('prop-types').shape(babelPluginFlowReactPropTypes_proptype_Node).isRequired }, (0, _defineProperty3.default)(_ref, 'classes', require('prop-types').object), (0, _defineProperty3.default)(_ref, 'className', require('prop-types').string), (0, _defineProperty3.default)(_ref, 'color', require('prop-types').oneOf(['default', 'inherit', 'primary', 'accent', 'contrast'])), (0, _defineProperty3.default)(_ref, 'component', typeof babelPluginFlowReactPropTypes_proptype_ElementType === 'function' ? babelPluginFlowReactPropTypes_proptype_ElementType : require('prop-types').shape(babelPluginFlowReactPropTypes_proptype_ElementType)), (0, _defineProperty3.default)(_ref, 'dense', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'disabled', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'disableFocusRipple', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'disableRipple', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'fab', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'href', require('prop-types').string), (0, _defineProperty3.default)(_ref, 'raised', require('prop-types').bool), (0, _defineProperty3.default)(_ref, 'type', require('prop-types').string), _ref) : {}; Button.defaultProps = { color: 'default', dense: false, disabled: false, fab: false, disableFocusRipple: false, raised: false, disableRipple: false, type: 'button' }; exports.default = (0, _withStyles2.default)(styles, { name: 'MuiButton' })(Button);