UNPKG

react-ions

Version:

An open source set of React components that implement Ambassador's Design and UX patterns.

91 lines (74 loc) 2.34 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _reactLoader = require('react-loader'); var _reactLoader2 = _interopRequireDefault(_reactLoader); var _style = require('./style.scss'); var _style2 = _interopRequireDefault(_style); var _OptClass = require('../internal/OptClass'); var _OptClass2 = _interopRequireDefault(_OptClass); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Button = function Button(props) { var collapseClass = props.collapse ? 'collapse' : null; var loaderClasses = props.loading ? 'loading' : null; var btnClasses = (0, _OptClass2.default)(_style2.default, [_style2.default.btn, props.size, loaderClasses, collapseClass], props.optClass); var spinnerOptions = { lines: 10, length: 4, width: 3, radius: 5 }; return _react2.default.createElement( 'button', { type: props.type, style: props.style, className: btnClasses, disabled: props.disabled || props.loading, onClick: props.onClick }, props.loading ? _react2.default.createElement(_reactLoader2.default, { loaded: false, options: spinnerOptions }) : null, _react2.default.createElement( 'em', null, props.children ) ); }; Button.defaultProps = { type: 'button' }; Button.propTypes = { /** * The size of button. */ size: _propTypes2.default.string, /** * Whether the button is disabled. */ disabled: _propTypes2.default.bool, /** * Whether the loading spinner is displayed. */ loading: _propTypes2.default.bool, /** * Whether to display only an icon on small screens */ collapse: _propTypes2.default.bool, /** * Optional CSS class(es) to be used for local styles (string or array of strings) */ optClass: _propTypes2.default.oneOfType([_propTypes2.default.array, _propTypes2.default.string]), /** * A function to be called onClick */ onClick: _propTypes2.default.func, /** * The type of button. */ type: _propTypes2.default.string, /** * A string to allow for inline styles */ style: _propTypes2.default.string }; exports.default = Button;