Files
Iris/src/js/components/Icon.js

41 lines
1.2 KiB
JavaScript
Raw Normal View History

2019-04-11 08:05:53 +12:00
import React, { memo } from 'react';
2018-05-15 21:30:57 +12:00
import FontAwesome from 'react-fontawesome';
2019-04-11 08:05:53 +12:00
export default memo((props) => {
2019-09-05 15:36:11 +12:00
if (!props.name || props.name === '') {
return null;
}
let className = `icon icon--${props.type ? props.type : 'material'}`;
if (props.className) {
className += ` ${props.className}`;
}
switch (props.type) {
case 'svg':
return <img className={className} src={`/iris/assets/icons/${props.name}.svg`} onClick={(e) => (props.onClick ? props.onClick(e) : null)} />;
case 'gif':
return <img className={className} src={`/iris/assets/icons/${props.name}.gif`} onClick={(e) => (props.onClick ? props.onClick(e) : null)} />;
case 'fontawesome':
return <FontAwesome className={className} type="fontawesome" name={props.name} onClick={(e) => (props.onClick ? props.onClick(e) : null)} />;
case 'css':
switch (props.name) {
case 'playing':
return (
<i className={`${className} icon--playing`}>
<span />
<span />
<span />
</i>
);
}
default:
return <i className={className} onClick={(e) => (props.onClick ? props.onClick(e) : null)}>{props.name}</i>;
}
});