src/components/icon/IconLoading.js
- /**
- * @author haw
- */
-
- import React, {
- PropTypes
- } from 'react';
- import {classNames, px2rem} from '../util';
-
- const prefix = 'icon-loading';
- const defaultSize = 34;
-
- export default function IconLoading(props) {
- const {
- size,
- className,
- style,
- ...rest
- } = props;
- const loadingLeafs = createLeafs(prefix);
- let clazz = classNames(prefix, {
- [className]: className
- });
- let rem = px2rem(size);
- let scale = size / defaultSize;
- let scaleStyle = {
- transform: (`scale(${scale})`)
- };
- let newStyle = {
- ...style,
- width: `${rem}rem`,
- height: `${rem}rem`
- };
-
- return (
- <div className={clazz} style={newStyle} {...rest}>
- <div style={scaleStyle}>{loadingLeafs}</div>
- </div>
- );
- }
-
- IconLoading.propTypes = {
- size: PropTypes.number,
- style: PropTypes.object,
- className: PropTypes.string
- };
-
- IconLoading.defaultProps = {
- size: defaultSize
- };
-
- function createLeafs(prefix) {
- const count = 12;
- const leafPrefix = `${prefix}-leaf`;
- const leafs = [];
- let className;
-
- for (let i = 0; i < count; i++) {
- className = classNames(leafPrefix, `${leafPrefix}-${i}`);
- leafs.push(<i className={className} key={i}></i>);
- }
-
- return leafs;
- }