UNPKG

5.42 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.default = void 0;
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
14var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
15
16var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
17
18var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
19
20var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
22var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
24var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
25
26var React = _interopRequireWildcard(require("react"));
27
28var _tooltip = _interopRequireDefault(require("@beisen-phoenix/tooltip"));
29
30require("./style.css");
31
32var _commonUtils = _interopRequireDefault(require("@beisen-phoenix/common-utils"));
33
34var Checkbox =
35/*#__PURE__*/
36function (_React$PureComponent) {
37 (0, _inherits2.default)(Checkbox, _React$PureComponent);
38
39 function Checkbox(props) {
40 var _this;
41
42 (0, _classCallCheck2.default)(this, Checkbox);
43 _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Checkbox).call(this, props));
44 _this.inputRef = React.createRef();
45 _this.txtRef = React.createRef();
46 _this.containerRef = React.createRef();
47
48 _this.onChange = function (event) {
49 var checked = _this.state.checked;
50 var _this$props = _this.props,
51 onChange = _this$props.onChange,
52 disabled = _this$props.disabled,
53 restProps = (0, _objectWithoutProperties2.default)(_this$props, ["onChange", "disabled"]);
54 if (disabled) return;
55
56 if (!_this.props.partialChecked) {
57 _this.setState({
58 checked: !checked
59 });
60
61 restProps.checked = !checked;
62 }
63
64 onChange && onChange(restProps, event);
65 event.stopPropagation && event.stopPropagation();
66 };
67
68 var _checked = 'checked' in props ? props.checked : props.defaultChecked;
69
70 _this.state = {
71 checked: _checked
72 };
73 return _this;
74 }
75
76 (0, _createClass2.default)(Checkbox, [{
77 key: "componentWillReceiveProps",
78 value: function componentWillReceiveProps(nextProps) {
79 'checked' in nextProps && this.setState({
80 checked: nextProps.checked
81 });
82 }
83 }, {
84 key: "render",
85 value: function render() {
86 var _this$props2 = this.props,
87 disabled = _this$props2.disabled,
88 _this$props2$label = _this$props2.label,
89 label = _this$props2$label === void 0 ? '' : _this$props2$label,
90 partialChecked = _this$props2.partialChecked,
91 value = _this$props2.value,
92 tipsType = _this$props2.tipsType,
93 fontSize = _this$props2.fontSize,
94 textColor = _this$props2.textColor;
95 var checked = this.state.checked;
96 var onChange = this.onChange;
97 var inputProps = {
98 value: value,
99 onChange: onChange
100 }; // 生成符合BEM规范的className
101
102 var classes = _commonUtils.default.BEMClass('checkbox');
103
104 var labelCls = classes({
105 modifiers: {
106 disabled: disabled
107 },
108 extra: this.props.extraCls
109 });
110 var boxCls = classes({
111 element: 'box',
112 modifiers: {
113 partialChecked: partialChecked
114 }
115 });
116 var inputCls = classes({
117 element: 'input',
118 modifiers: {
119 disabled: disabled
120 }
121 });
122 var realCls = classes({
123 element: 'realInput',
124 modifiers: {
125 checked: checked,
126 disabled: disabled,
127 partialChecked: partialChecked,
128 disabledChecked: disabled && checked
129 }
130 });
131 var tipCls = classes({
132 element: 'tooltip',
133 extra: this.props.extraCls
134 });
135 var txtCls = classes({
136 element: 'text',
137 modifiers: {
138 disabled: disabled,
139 fontMiddle: fontSize === 'middle'
140 },
141 extra: "color-".concat(textColor)
142 });
143 return React.createElement("label", {
144 className: labelCls,
145 ref: this.containerRef
146 }, React.createElement("span", {
147 className: boxCls
148 }, React.createElement("input", (0, _extends2.default)({
149 type: "checkbox",
150 ref: this.inputRef
151 }, inputProps, {
152 className: inputCls
153 })), React.createElement("span", {
154 className: realCls
155 })), label ? tipsType === 'animate' ? React.createElement(_tooltip.default, {
156 extraCls: tipCls,
157 showOverflowTooltip: true,
158 title: label
159 }, React.createElement("span", {
160 className: txtCls,
161 ref: this.txtRef
162 }, label)) : React.createElement("span", {
163 className: txtCls,
164 title: label,
165 ref: this.txtRef
166 }, label) : null);
167 }
168 }]);
169 return Checkbox;
170}(React.PureComponent);
171
172exports.default = Checkbox;
173Checkbox.defaultProps = {
174 disabled: false,
175 defaultChecked: false,
176 label: '',
177 tipsType: 'animate',
178 fontSize: 'normal',
179 textColor: 'M1'
180};
\No newline at end of file