@nutui/nutui-react
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
55 lines (54 loc) • 2.41 kB
JavaScript
import React__default, { useState } from "react";
import { Close } from "@nutui/icons-react";
import classNames from "classnames";
import { C as ComponentDefaults } from "./typings.js";
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { type: "default", background: "", color: "", plain: false, round: false, mark: false, closeable: false, closeIcon: null, onClose: (e) => {
}, onClick: (e) => {
} });
const Tag = (props) => {
const { className, style, background, plain, type, round, children, mark, closeable, closeIcon, color, onClick, onClose } = Object.assign(Object.assign({}, defaultProps), props);
const [visible, setVisible] = useState(true);
const classPrefix = "nut-tag";
const classes = classNames({
[classPrefix]: true,
[`${classPrefix}-${type}`]: type,
[`${classPrefix}-plain`]: plain,
[`${classPrefix}-round`]: round,
[`${classPrefix}-mark`]: mark,
[`${classPrefix}-close`]: closeable,
[`${className}`]: className
});
const handleClick = (e) => {
onClick && onClick(e);
};
const getStyle = () => {
const style2 = {};
if (color) {
style2.color = color;
} else if (background && plain) {
style2.color = background;
}
if (plain) {
style2.borderColor = background;
} else if (background) {
style2.background = background;
}
return style2;
};
return React__default.createElement(React__default.Fragment, null, closeable ? visible && React__default.createElement(
"div",
{ className: classes, style: Object.assign(Object.assign({}, style), getStyle()), onClick: (e) => handleClick(e) },
children && React__default.createElement("span", { className: `${classPrefix}-text` }, children),
React__default.isValidElement(closeIcon) ? React__default.createElement("i", { className: `${classPrefix}-custom-icon`, onClick: (e) => {
setVisible(false);
onClose && onClose(e);
} }, closeIcon) : React__default.createElement(Close, { width: 8, height: 8, onClick: (e) => {
setVisible(false);
onClose && onClose(e);
} })
) : React__default.createElement("div", { className: classes, style: Object.assign(Object.assign({}, style), getStyle()), onClick: (e) => handleClick(e) }, children && React__default.createElement("span", { className: `${classPrefix}-text` }, children)));
};
Tag.displayName = "NutTag";
export {
Tag as default
};