refactor(client): image-loader to TypeScript
This commit is contained in:
8
client/package-lock.json
generated
8
client/package-lock.json
generated
@ -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": {
|
"@types/react-spinkit": {
|
||||||
"version": "3.0.6",
|
"version": "3.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/@types/react-spinkit/-/react-spinkit-3.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/@types/react-spinkit/-/react-spinkit-3.0.6.tgz",
|
||||||
|
@ -1,20 +1,21 @@
|
|||||||
|
/* eslint-disable @typescript-eslint/ban-ts-comment */
|
||||||
import React, { useState } from 'react';
|
import React, { useState } from 'react';
|
||||||
|
|
||||||
import './image-loader.css';
|
import './image-loader.css';
|
||||||
|
// @ts-ignore
|
||||||
import LazyLoad from 'react-lazy-load';
|
import LazyLoad from 'react-lazy-load';
|
||||||
import PropTypes from 'prop-types';
|
|
||||||
|
|
||||||
const propTypes = {
|
interface ImageLoaderProps {
|
||||||
alt: PropTypes.string,
|
alt?: string;
|
||||||
className: PropTypes.string,
|
className?: string;
|
||||||
height: PropTypes.number,
|
height?: number;
|
||||||
loadedClassName: PropTypes.string,
|
loadedClassName?: string;
|
||||||
loadingClassName: PropTypes.string,
|
loadingClassName?: string;
|
||||||
offsetVertical: PropTypes.number,
|
offsetVertical?: number;
|
||||||
src: PropTypes.string,
|
src?: string;
|
||||||
style: PropTypes.object,
|
style?: React.CSSProperties;
|
||||||
width: PropTypes.number
|
width?: number;
|
||||||
};
|
}
|
||||||
|
|
||||||
const ImageLoader = ({
|
const ImageLoader = ({
|
||||||
className = '',
|
className = '',
|
||||||
@ -26,7 +27,7 @@ const ImageLoader = ({
|
|||||||
style,
|
style,
|
||||||
width,
|
width,
|
||||||
height
|
height
|
||||||
}) => {
|
}: ImageLoaderProps): JSX.Element => {
|
||||||
const [loaded, setLoaded] = useState(false);
|
const [loaded, setLoaded] = useState(false);
|
||||||
const fullClassName = `${className} ${
|
const fullClassName = `${className} ${
|
||||||
loaded ? loadedClassName : loadingClassName
|
loaded ? loadedClassName : loadingClassName
|
||||||
@ -49,5 +50,5 @@ const ImageLoader = ({
|
|||||||
</LazyLoad>
|
</LazyLoad>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
ImageLoader.propTypes = propTypes;
|
|
||||||
export default ImageLoader;
|
export default ImageLoader;
|
@ -6,6 +6,6 @@ export { default as SkeletonSprite } from './skeleton-sprite';
|
|||||||
export { default as Spacer } from './spacer';
|
export { default as Spacer } from './spacer';
|
||||||
export { default as Link } from './link';
|
export { default as Link } from './link';
|
||||||
export { default as CurrentChallengeLink } from './CurrentChallengeLink';
|
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 AvatarRenderer } from './AvatarRenderer';
|
||||||
export { default as borderColorPicker } from './borderColorPicker';
|
export { default as borderColorPicker } from './borderColorPicker';
|
||||||
|
Reference in New Issue
Block a user