@nutui/icons-react-taro
Version:
京东风格的icon库-V15
70 lines (69 loc) • 1.44 kB
JavaScript
import React from "react";
import { globalConfig } from "./internal.js";
const defaultProps = {
name: "",
size: "",
width: "",
height: "",
color: "",
onClick: (e) => {
},
className: ""
};
function pxCheck(value) {
return Number.isNaN(Number(value)) ? String(value) : `${value}px`;
}
const Icon = (props) => {
const {
name,
size,
classPrefix = globalConfig.classPrefix,
color,
tag = globalConfig.tag,
children,
className,
fontClassName = globalConfig.fontClassName,
style,
onClick,
...rest
} = {
...defaultProps,
...props
};
const isImage = name ? name.indexOf("/") !== -1 : false;
const type = isImage ? "img" : tag || "i";
const handleClick = (e) => {
if (onClick) {
onClick(e);
}
};
const hasSrc = () => {
if (isImage)
return { src: name };
return {};
};
const pxChecked = pxCheck(size || "");
return React.createElement(
type,
{
className: isImage ? `${classPrefix}-img ${className || ""} ` : `${fontClassName} ${classPrefix} ${classPrefix}-${name} ${className || ""}`,
style: {
color,
...pxChecked ? {
fontSize: pxChecked,
width: pxChecked,
height: pxChecked
} : {},
...style
},
...rest,
onClick: handleClick,
...hasSrc()
},
children
);
};
Icon.displayName = "NutIcon";
export {
Icon as default
};