UNPKG

lm-form

Version:

* 作者:liuduan * 邮箱:liuduan.05.05@163.com * 版本:**`1.0.2`**

158 lines (136 loc) 5.57 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _jsxFileName = 'src/checkedinput.js'; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _lmCell = require('lm-cell'); require('./index.scss'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } var Checkedinput = function Checkedinput(props) { var className = props.className, children = props.children, inline = props.inline, type = props.type, checked = props.checked, label = props.label, defaultChecked = props.defaultChecked, disabled = props.disabled, _onChange = props.onChange, other = _objectWithoutProperties(props, ['className', 'children', 'inline', 'type', 'checked', 'label', 'defaultChecked', 'disabled', 'onChange']), cls = void 0, inputModel = void 0; label = label ? label : children; if (['checkbox', 'radio'].indexOf(type) !== -1) { inputModel = type; cls = (0, _classnames2.default)('lm-' + inputModel + '-' + (inline ? 'label' : 'wrapper'), className); } else { inputModel = type; cls = (0, _classnames2.default)('lm-' + inputModel, className); } var inputComponent = _react2.default.createElement('input', Object.assign({ className: 'lm-' + inputModel + '-input', type: type === 'radio' ? type : 'checkbox', defaultChecked: defaultChecked, checked: checked, disabled: disabled, onChange: function onChange(e) { return _onChange(e, type); } }, other, _defineProperty({ __source: { fileName: _jsxFileName, lineNumber: 33 }, __self: undefined }, '__self', undefined))); // 多个checkbox同行时渲染 var renderInline = function renderInline(inputComponent, label) { return _react2.default.createElement( 'label', _defineProperty({ className: cls, __source: { fileName: _jsxFileName, lineNumber: 44 }, __self: undefined }, '__self', undefined), inputComponent, ['checkbox', 'radio'].indexOf(inputModel) !== -1 ? _react2.default.createElement( 'div', _defineProperty({ className: 'lm-' + inputModel + '-content', __source: { fileName: _jsxFileName, lineNumber: 48 }, __self: undefined }, '__self', undefined), inline ? label : null ) : null ); }; // 非同行时渲染 var renderItem = function renderItem(inputComponent, label) { return _react2.default.createElement( _lmCell.Cell, _defineProperty({ __source: { fileName: _jsxFileName, lineNumber: 58 }, __self: undefined }, '__self', undefined), _react2.default.createElement( _lmCell.Label, _defineProperty({ __source: { fileName: _jsxFileName, lineNumber: 59 }, __self: undefined }, '__self', undefined), label ), _react2.default.createElement( 'label', _defineProperty({ className: 'lm-cell-checkbox', __source: { fileName: _jsxFileName, lineNumber: 60 }, __self: undefined }, '__self', undefined), renderInline(inputComponent, label) ) ); }; if (inline) { return renderInline(inputComponent, label); } else { return renderItem(inputComponent, label); } }; Checkedinput.propTypes = { className: _propTypes2.default.string, // 自定义类名 inline: _propTypes2.default.bool, // 多个checkbox是否在一行显示 type: _propTypes2.default.string, // 类型 checkbox radio areement swtich defaultChecked: _propTypes2.default.bool, // 默认是否选中,用于非控制checkbox checked: _propTypes2.default.bool, // 是否选中,配合onChange使用 label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element, _propTypes2.default.number]), // label disabled: _propTypes2.default.bool, // 禁用 onChange: _propTypes2.default.func // 回调 }; Checkedinput.defaultProps = { className: '', inline: true, type: 'checkbox', disabled: false, label: '', onChange: function onChange() {} }; exports.default = Checkedinput; module.exports = exports['default'];