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
JavaScript
'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;