1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 | 'use strict'
|
7 |
|
8 | import React, {PropTypes as types} from 'react'
|
9 | import classnames from 'classnames'
|
10 | import {ApPureMixin} from 'apeman-react-mixin-pure'
|
11 |
|
12 | const SpinnerThemes = {
|
13 | a: [ 'fa', 'fa-spin', 'fa-spinner' ],
|
14 | b: [ 'fa', 'fa-spin', 'fa-circle-o-notch' ],
|
15 | c: [ 'fa', 'fa-spin', 'fa-refresh' ],
|
16 | d: [ 'fa', 'fa-spin', 'fa-gear' ],
|
17 | e: [ 'fa', 'fa-spin', 'fa-pulse' ]
|
18 | }
|
19 | const SpinnerSizes = [
|
20 | 'medium',
|
21 | 'xx-small',
|
22 | 'x-small',
|
23 | 'small',
|
24 | 'large',
|
25 | 'x-large',
|
26 | 'xx-large',
|
27 | 'smaller',
|
28 | 'larger'
|
29 | ]
|
30 |
|
31 | const DEFAULT_THEME = 'c'
|
32 | const DEFAULT_SIZE = 'medium'
|
33 |
|
34 |
|
35 | const ApSpinner = React.createClass({
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | propTypes: {
|
41 |
|
42 | enabled: types.bool,
|
43 |
|
44 | theme: types.oneOf(
|
45 | Object.keys(SpinnerThemes)
|
46 | ),
|
47 |
|
48 | size: types.oneOf(SpinnerSizes),
|
49 |
|
50 | cover: types.bool
|
51 | },
|
52 |
|
53 | mixins: [
|
54 | ApPureMixin
|
55 | ],
|
56 |
|
57 | statics: {
|
58 | DEFAULT_THEME: DEFAULT_THEME
|
59 | },
|
60 |
|
61 | getInitialState () {
|
62 | return {}
|
63 | },
|
64 |
|
65 | getDefaultProps () {
|
66 | return {
|
67 | enabled: false,
|
68 | theme: DEFAULT_THEME,
|
69 | size: DEFAULT_SIZE
|
70 | }
|
71 | },
|
72 |
|
73 | render () {
|
74 | const s = this
|
75 | let { props } = s
|
76 | let className = classnames('ap-spinner', props.className, {
|
77 | 'ap-spinner-cover': !!props.cover,
|
78 | 'ap-spinner-enabled': !!props.enabled
|
79 | })
|
80 | return (
|
81 | <div className={ className }
|
82 | style={ Object.assign({}, props.style) }>
|
83 | <span className={ classnames('ap-spinner-icon', SpinnerThemes[props.theme]) }
|
84 | style={ {fontSize: props.size} }
|
85 | >
|
86 | </span>
|
87 | </div>
|
88 | )
|
89 | },
|
90 |
|
91 |
|
92 |
|
93 |
|
94 |
|
95 | componentDidMount () {
|
96 | const s = this
|
97 | s.setState({
|
98 | iconVisible: true
|
99 | })
|
100 | },
|
101 |
|
102 | componentWillUnmount () {
|
103 | const s = this
|
104 | }
|
105 |
|
106 |
|
107 |
|
108 |
|
109 |
|
110 | })
|
111 |
|
112 | export default ApSpinner
|