UNPKG

antd

Version:

An enterprise-class UI design language and React components implementation

104 lines (103 loc) 3.68 kB
"use strict"; "use client"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var _LoadingOutlined = _interopRequireDefault(require("@ant-design/icons/LoadingOutlined")); var _switch = _interopRequireDefault(require("@rc-component/switch")); var _util = require("@rc-component/util"); var _clsx = require("clsx"); var _hooks = require("../_util/hooks"); var _wave = _interopRequireDefault(require("../_util/wave")); var _context = require("../config-provider/context"); var _DisabledContext = _interopRequireDefault(require("../config-provider/DisabledContext")); var _useSize = _interopRequireDefault(require("../config-provider/hooks/useSize")); var _style = _interopRequireDefault(require("./style")); const InternalSwitch = /*#__PURE__*/React.forwardRef((props, ref) => { const { prefixCls: customizePrefixCls, size: customizeSize, disabled: customDisabled, loading, className, rootClassName, style, checked: checkedProp, value, defaultChecked: defaultCheckedProp, defaultValue, onChange, styles, classNames, ...restProps } = props; const [checked, setChecked] = (0, _util.useControlledState)(defaultCheckedProp ?? defaultValue ?? false, checkedProp ?? value); const { getPrefixCls, direction, className: contextClassName, style: contextStyle, classNames: contextClassNames, styles: contextStyles } = (0, _context.useComponentConfig)('switch'); // ===================== Disabled ===================== const disabled = React.useContext(_DisabledContext.default); const mergedDisabled = (customDisabled ?? disabled) || loading; const prefixCls = getPrefixCls('switch', customizePrefixCls); const loadingIcon = /*#__PURE__*/React.createElement("div", { className: `${prefixCls}-handle` }, loading && /*#__PURE__*/React.createElement(_LoadingOutlined.default, { className: `${prefixCls}-loading-icon` })); // Style const [hashId, cssVarCls] = (0, _style.default)(prefixCls); const mergedSize = (0, _useSize.default)(customizeSize); const mergedProps = { ...props, size: mergedSize, disabled: mergedDisabled }; const [mergedClassNames, mergedStyles] = (0, _hooks.useMergeSemantic)([contextClassNames, classNames], [contextStyles, styles], { props: mergedProps }); const classes = (0, _clsx.clsx)(contextClassName, { [`${prefixCls}-small`]: mergedSize === 'small', [`${prefixCls}-loading`]: loading, [`${prefixCls}-rtl`]: direction === 'rtl' }, className, rootClassName, mergedClassNames.root, hashId, cssVarCls); const mergedStyle = { ...mergedStyles.root, ...contextStyle, ...style }; const changeHandler = (...args) => { setChecked(args[0]); onChange?.(...args); }; return /*#__PURE__*/React.createElement(_wave.default, { component: "Switch", disabled: mergedDisabled }, /*#__PURE__*/React.createElement(_switch.default, { ...restProps, classNames: mergedClassNames, styles: mergedStyles, checked: checked, onChange: changeHandler, prefixCls: prefixCls, className: classes, style: mergedStyle, disabled: mergedDisabled, ref: ref, loadingIcon: loadingIcon })); }); const Switch = InternalSwitch; Switch.__ANT_SWITCH = true; if (process.env.NODE_ENV !== 'production') { Switch.displayName = 'Switch'; } var _default = exports.default = Switch;