react-conventions
Version:
An open source set of React components that implement Ambassador's Design and UX patterns.
73 lines (58 loc) • 2.22 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
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',
_extends({ type: 'button', className: btnClasses, disabled: props.disabled || props.loading }, props),
props.loading ? _react2.default.createElement(_reactLoader2.default, { loaded: false, options: spinnerOptions }) : null,
_react2.default.createElement(
'em',
null,
props.children
)
);
};
Button.propTypes = {
/**
* The size of button.
*/
size: _react2.default.PropTypes.string,
/**
* Whether the button is disabled.
*/
disabled: _react2.default.PropTypes.bool,
/**
* Whether the loading spinner is displayed.
*/
loading: _react2.default.PropTypes.bool,
/**
* Whether to display only an icon on small screens
*/
collapse: _react2.default.PropTypes.bool,
/**
* Optional CSS class(es) to be used for local styles (string or array of strings)
*/
optClass: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.array, _react2.default.PropTypes.string])
};
exports.default = Button;