2019-06-19 14:40:52 +00:00
|
|
|
import {
|
|
|
|
createStyles,
|
|
|
|
Theme,
|
|
|
|
withStyles,
|
|
|
|
WithStyles
|
|
|
|
} from "@material-ui/core/styles";
|
|
|
|
import classNames from "classnames";
|
2019-08-09 10:26:22 +00:00
|
|
|
import React from "react";
|
2019-06-19 14:40:52 +00:00
|
|
|
|
2019-10-28 16:16:49 +00:00
|
|
|
const styles = theme =>
|
2019-06-19 14:40:52 +00:00
|
|
|
createStyles({
|
|
|
|
"@keyframes skeleton-animation": {
|
|
|
|
"0%": {
|
|
|
|
opacity: 0.6
|
|
|
|
},
|
|
|
|
"100%": {
|
|
|
|
opacity: 1
|
|
|
|
}
|
|
|
|
},
|
2019-08-09 11:14:35 +00:00
|
|
|
primary: {
|
|
|
|
"&$skeleton": {
|
|
|
|
background: theme.palette.primary.main
|
|
|
|
}
|
|
|
|
},
|
2019-06-19 14:40:52 +00:00
|
|
|
skeleton: {
|
|
|
|
animation: "skeleton-animation .75s linear infinite forwards alternate",
|
|
|
|
background: theme.palette.background.default,
|
|
|
|
borderRadius: 4,
|
|
|
|
display: "block",
|
|
|
|
height: "0.8em",
|
|
|
|
margin: "0.2em 0"
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
interface SkeletonProps extends WithStyles<typeof styles> {
|
|
|
|
className?: string;
|
2019-08-09 11:14:35 +00:00
|
|
|
primary?: boolean;
|
2019-06-19 14:40:52 +00:00
|
|
|
style?: React.CSSProperties;
|
|
|
|
}
|
|
|
|
|
|
|
|
const Skeleton = withStyles(styles, { name: "Skeleton" })(
|
2019-08-09 11:14:35 +00:00
|
|
|
({ className, classes, primary, style }: SkeletonProps) => (
|
|
|
|
<span
|
|
|
|
className={classNames(classes.skeleton, className, {
|
|
|
|
[classes.primary]: primary
|
|
|
|
})}
|
|
|
|
style={style}
|
|
|
|
>
|
2019-06-19 14:40:52 +00:00
|
|
|
‌
|
|
|
|
</span>
|
|
|
|
)
|
|
|
|
);
|
|
|
|
|
|
|
|
Skeleton.displayName = "Skeleton";
|
|
|
|
export default Skeleton;
|