@roo-ui/components
Version:
76 lines (53 loc) • 2.62 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _cleanTag = require('clean-tag');
var _cleanTag2 = _interopRequireDefault(_cleanTag);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _styledSystem = require('styled-system');
var _styledComponents = require('styled-components');
var _styledComponents2 = _interopRequireDefault(_styledComponents);
var _Box = require('../Box');
var _Box2 = _interopRequireDefault(_Box);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var fadeIn = (0, _styledComponents.keyframes)(['0%{opacity:0}100%{opacity:1}']);
var bounce = (0, _styledComponents.keyframes)(['0%,80%,100%{transform:scale(0)}40%{transform:scale(1.0)}']);
var parseDelay = function parseDelay(delay) {
if (typeof delay === 'number') {
return delay + 'ms';
}
return delay;
};
var Bouncers = (0, _styledComponents2.default)(_Box2.default).withConfig({
displayName: 'LoadingIndicator__Bouncers'
})(['animation:', ' ', ' both;animation-delay:', ';margin:0 auto;text-align:center;display:flex;justify-content:space-around;', ''], fadeIn, (0, _styledSystem.themeGet)('transitions.default'), function (props) {
return props.delay;
}, _styledSystem.width);
var Bouncer = (0, _styledComponents2.default)(_cleanTag2.default.div).withConfig({
displayName: 'LoadingIndicator__Bouncer'
})(['animation:', ' 1.4s infinite ease-in-out both;border-radius:100%;display:inline-block;&:nth-child(1){animation-delay:-0.32s;}&:nth-child(2){animation-delay:-0.16s;}&:nth-child(3){animation-delay:0;}', ' ', ''], bounce, _styledSystem.color, _styledSystem.size);
var LoadingIndicator = function LoadingIndicator(props) {
var delay = parseDelay(props.delay);
return _react2.default.createElement(
Bouncers,
{ delay: delay, width: props.size * 4 },
_react2.default.createElement(Bouncer, { bg: props.color, size: props.size }),
_react2.default.createElement(Bouncer, { bg: props.color, size: props.size }),
_react2.default.createElement(Bouncer, { bg: props.color, size: props.size })
);
};
LoadingIndicator.propTypes = {
color: _propTypes2.default.string,
size: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
delay: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number])
};
LoadingIndicator.defaultProps = {
color: 'greys.steel',
size: 18,
delay: 0
};
exports.default = LoadingIndicator;