react-fontawesome
Version:
A React component for the font-awesome icon library.
115 lines (92 loc) • 3.56 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);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
/**
* A React component for the font-awesome icon library.
*
*
* @param {Boolean} [border=false] Whether or not to show a border radius
* @param {String} [className] An extra set of CSS classes to add to the component
* @param {Boolean} [fixedWidth=false] Make buttons fixed width
* @param {String} [flip=false] Flip the icon's orientation.
* @param {Boolean} [inverse=false]Inverse the icon's color
* @param {String} name Name of the icon to use
* @param {Boolean} [pulse=false] Rotate icon with 8 steps (rather than smoothly)
* @param {Number} [rotate] The degress to rotate the icon by
* @param {String} [size] The icon scaling size
* @param {Boolean} [spin=false] Spin the icon
* @param {String} [stack] Stack an icon on top of another
* @module FontAwesome
* @type {ReactClass}
*/
exports.default = _react2.default.createClass({
displayName: 'FontAwesome',
propTypes: {
border: _react2.default.PropTypes.bool,
className: _react2.default.PropTypes.string,
fixedWidth: _react2.default.PropTypes.bool,
flip: _react2.default.PropTypes.oneOf(['horizontal', 'vertical']),
inverse: _react2.default.PropTypes.bool,
name: _react2.default.PropTypes.string.isRequired,
pulse: _react2.default.PropTypes.bool,
rotate: _react2.default.PropTypes.oneOf([90, 180, 270]),
size: _react2.default.PropTypes.oneOf(['lg', '2x', '3x', '4x', '5x']),
spin: _react2.default.PropTypes.bool,
stack: _react2.default.PropTypes.oneOf(['1x', '2x'])
},
render: function render() {
var _props = this.props;
var border = _props.border;
var fixedWidth = _props.fixedWidth;
var flip = _props.flip;
var inverse = _props.inverse;
var name = _props.name;
var pulse = _props.pulse;
var rotate = _props.rotate;
var size = _props.size;
var spin = _props.spin;
var stack = _props.stack;
var props = _objectWithoutProperties(_props, ['border', 'fixedWidth', 'flip', 'inverse', 'name', 'pulse', 'rotate', 'size', 'spin', 'stack']);
var className = 'fa fa-' + name;
if (size) {
className += ' fa-' + size;
}
if (spin) {
className += ' fa-spin';
}
if (pulse) {
className += ' fa-pulse';
}
if (border) {
className += ' fa-border';
}
if (fixedWidth) {
className += ' fa-fw';
}
if (inverse) {
className += ' fa-inverse';
}
if (flip) {
className += ' fa-flip-' + flip;
}
if (rotate) {
className += ' fa-rotate-' + rotate;
}
if (stack) {
className += ' fa-stack-' + stack;
}
if (this.props.className) {
className += ' ' + this.props.className;
}
return _react2.default.createElement('span', _extends({}, props, {
className: className
}));
}
});
module.exports = exports['default'];