UNPKG

@roo-ui/components

Version:

76 lines (53 loc) 2.62 kB
'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;