-
Notifications
You must be signed in to change notification settings - Fork 32
/
Copy pathSmallWaitCursor.jsx
78 lines (68 loc) · 1.85 KB
/
SmallWaitCursor.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/**
* @component
*/
import classNames from 'clsx';
import PropTypes from 'prop-types';
import React, { PureComponent } from 'react';
/**
* A small circular loading indicator.
*/
export default class SmallWaitCursor extends PureComponent {
render() {
const { show, style, showBackground, inline, className } = this.props;
if (showBackground) {
return (
<div
className={classNames('wait-cursor', className, {
hidden: !show,
})}
style={style}
>
<div className="wait-cursor__spinner" />
</div>
);
}
return (
<div
className={classNames('wait-cursor__spinner', className, {
'wait-cursor__spinner--inline': inline,
hidden: !show,
})}
/>
);
}
}
SmallWaitCursor.propTypes = {
/**
* Wether the wait cursor should be shown.
*/
show: PropTypes.bool,
/**
* A React style object that will be applied to the wrapper.
*/
style: PropTypes.objectOf(
PropTypes.oneOfType([PropTypes.number, PropTypes.string])
),
/**
* Wether a background should be shown behind the spinner.
*/
showBackground: PropTypes.bool,
/**
* Wether the spinner should be rendered with `display: inline-block;`. This
* does not work when `showBackground` is `true`
*/
inline: PropTypes.bool,
/**
* A classname sring that will be applied to the container element of the
* spinner.
*/
className: PropTypes.string,
};
SmallWaitCursor.defaultProps = {
show: false,
style: null,
showBackground: true,
inline: false,
className: null,
};
SmallWaitCursor.displayName = 'SmallWaitCursor';