2024-08-20 23:25:37 +04:00

85 lines
3.3 KiB
JavaScript

import _extends from "@babel/runtime/helpers/esm/extends";
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["prefixCls", "className", "style", "checked", "disabled", "defaultChecked", "type", "title", "onChange"];
import classNames from 'classnames';
import useMergedState from "rc-util/es/hooks/useMergedState";
import * as React from 'react';
import { forwardRef, useImperativeHandle, useRef } from 'react';
export var Checkbox = /*#__PURE__*/forwardRef(function (props, ref) {
var _props$prefixCls = props.prefixCls,
prefixCls = _props$prefixCls === void 0 ? 'rc-checkbox' : _props$prefixCls,
className = props.className,
style = props.style,
checked = props.checked,
disabled = props.disabled,
_props$defaultChecked = props.defaultChecked,
defaultChecked = _props$defaultChecked === void 0 ? false : _props$defaultChecked,
_props$type = props.type,
type = _props$type === void 0 ? 'checkbox' : _props$type,
title = props.title,
onChange = props.onChange,
inputProps = _objectWithoutProperties(props, _excluded);
var inputRef = useRef(null);
var holderRef = useRef(null);
var _useMergedState = useMergedState(defaultChecked, {
value: checked
}),
_useMergedState2 = _slicedToArray(_useMergedState, 2),
rawValue = _useMergedState2[0],
setRawValue = _useMergedState2[1];
useImperativeHandle(ref, function () {
return {
focus: function focus(options) {
var _inputRef$current;
(_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 || _inputRef$current.focus(options);
},
blur: function blur() {
var _inputRef$current2;
(_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 || _inputRef$current2.blur();
},
input: inputRef.current,
nativeElement: holderRef.current
};
});
var classString = classNames(prefixCls, className, _defineProperty(_defineProperty({}, "".concat(prefixCls, "-checked"), rawValue), "".concat(prefixCls, "-disabled"), disabled));
var handleChange = function handleChange(e) {
if (disabled) {
return;
}
if (!('checked' in props)) {
setRawValue(e.target.checked);
}
onChange === null || onChange === void 0 || onChange({
target: _objectSpread(_objectSpread({}, props), {}, {
type: type,
checked: e.target.checked
}),
stopPropagation: function stopPropagation() {
e.stopPropagation();
},
preventDefault: function preventDefault() {
e.preventDefault();
},
nativeEvent: e.nativeEvent
});
};
return /*#__PURE__*/React.createElement("span", {
className: classString,
title: title,
style: style,
ref: holderRef
}, /*#__PURE__*/React.createElement("input", _extends({}, inputProps, {
className: "".concat(prefixCls, "-input"),
ref: inputRef,
onChange: handleChange,
disabled: disabled,
checked: !!rawValue,
type: type
})), /*#__PURE__*/React.createElement("span", {
className: "".concat(prefixCls, "-inner")
}));
});
export default Checkbox;