lm-form
Version:
* 作者:liuduan * 邮箱:liuduan.05.05@163.com * 版本:**`1.0.2`**
158 lines (136 loc) • 5.57 kB
JavaScript
'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'];