@nutui/nutui-react-taro
Version:
京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序
37 lines (36 loc) • 1.81 kB
JavaScript
import { _ as __rest } from "./tslib.es6-iWu3F_1J.js";
import React__default from "react";
import { C as ComponentDefaults } from "./typings-DV9RBfhj.js";
import { u as usePropsValue } from "./use-props-value-SH9krhkx.js";
const defaultProps = Object.assign(Object.assign({}, ComponentDefaults), { disabled: false, activeText: "", inactiveText: "" });
const Switch = (props) => {
const _a = Object.assign(Object.assign({}, defaultProps), props), { checked, defaultChecked, disabled, activeText, inactiveText, className, style, onChange } = _a, rest = __rest(_a, ["checked", "defaultChecked", "disabled", "activeText", "inactiveText", "className", "style", "onChange"]);
const classPrefix = "nut-switch";
const [value, setValue] = usePropsValue({
value: checked,
defaultValue: defaultChecked
});
const classes = () => {
return `${classPrefix} ${value ? "nut-switch-open" : "nut-switch-close"} ${disabled ? `${classPrefix}-disabled` : ""} ${`${classPrefix}-base`} ${className}`;
};
const onClick = (event) => {
if (disabled)
return;
onChange && onChange(!value, event);
setValue(!value);
};
return React__default.createElement(
"div",
Object.assign({ className: classes(), onClick: (e) => onClick(e), style }, rest),
React__default.createElement(
"div",
{ className: `${classPrefix}-button` },
!value && React__default.createElement("div", { className: `${classPrefix}-close-line` }),
activeText && React__default.createElement(React__default.Fragment, null, value ? React__default.createElement("div", { className: `${classPrefix}-label open` }, activeText) : React__default.createElement("div", { className: `${classPrefix}-label close` }, inactiveText))
)
);
};
Switch.displayName = "NutSwitch";
export {
Switch as S
};