refactor(client): image-loader to TypeScript

This commit is contained in:
Marlon Johnson
2021-06-21 13:08:02 -07:00
parent e462102f3d
commit 7e5e76fd36
3 changed files with 24 additions and 15 deletions

View File

@ -5805,6 +5805,14 @@
}
}
},
"@types/react-lazyload": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/@types/react-lazyload/-/react-lazyload-3.1.0.tgz",
"integrity": "sha512-JnVJb+6cUrIk4Fo/zc/4NuFtm0h3XeNlN4Gt++WEHGeUDtlhnF1lXRz0WoqNmh5gH3oyeYOJXIZ8MoPL9ehp0g==",
"requires": {
"@types/react": "*"
}
},
"@types/react-spinkit": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/@types/react-spinkit/-/react-spinkit-3.0.6.tgz",

View File

@ -1,20 +1,21 @@
/* eslint-disable @typescript-eslint/ban-ts-comment */
import React, { useState } from 'react';
import './image-loader.css';
// @ts-ignore
import LazyLoad from 'react-lazy-load';
import PropTypes from 'prop-types';
const propTypes = {
alt: PropTypes.string,
className: PropTypes.string,
height: PropTypes.number,
loadedClassName: PropTypes.string,
loadingClassName: PropTypes.string,
offsetVertical: PropTypes.number,
src: PropTypes.string,
style: PropTypes.object,
width: PropTypes.number
};
interface ImageLoaderProps {
alt?: string;
className?: string;
height?: number;
loadedClassName?: string;
loadingClassName?: string;
offsetVertical?: number;
src?: string;
style?: React.CSSProperties;
width?: number;
}
const ImageLoader = ({
className = '',
@ -26,7 +27,7 @@ const ImageLoader = ({
style,
width,
height
}) => {
}: ImageLoaderProps): JSX.Element => {
const [loaded, setLoaded] = useState(false);
const fullClassName = `${className} ${
loaded ? loadedClassName : loadingClassName
@ -49,5 +50,5 @@ const ImageLoader = ({
</LazyLoad>
);
};
ImageLoader.propTypes = propTypes;
export default ImageLoader;

View File

@ -6,6 +6,6 @@ export { default as SkeletonSprite } from './skeleton-sprite';
export { default as Spacer } from './spacer';
export { default as Link } from './link';
export { default as CurrentChallengeLink } from './CurrentChallengeLink';
export { default as ImageLoader } from './ImageLoader';
export { default as ImageLoader } from './image-loader';
export { default as AvatarRenderer } from './AvatarRenderer';
export { default as borderColorPicker } from './borderColorPicker';