UNPKG

ant-table-ext

Version:

An extended table based on ant table

230 lines (193 loc) 8.63 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); 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 _omit = require('omit.js'); var _omit2 = _interopRequireDefault(_omit); var _TextArea = require('./TextArea'); var _TextArea2 = _interopRequireDefault(_TextArea); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function fixControlledValue(value) { if (typeof value === 'undefined' || value === null) { return ''; } return value; } var Input = function (_Component) { (0, _inherits3['default'])(Input, _Component); function Input() { (0, _classCallCheck3['default'])(this, Input); var _this = (0, _possibleConstructorReturn3['default'])(this, (Input.__proto__ || Object.getPrototypeOf(Input)).apply(this, arguments)); _this.handleKeyDown = function (e) { var _this$props = _this.props, onPressEnter = _this$props.onPressEnter, onKeyDown = _this$props.onKeyDown; if (e.keyCode === 13 && onPressEnter) { onPressEnter(e); } if (onKeyDown) { onKeyDown(e); } }; return _this; } (0, _createClass3['default'])(Input, [{ key: 'focus', value: function focus() { this.refs.input.focus(); } }, { key: 'blur', value: function blur() { this.refs.input.blur(); } }, { key: 'getInputClassName', value: function getInputClassName() { var _classNames; var _props = this.props, prefixCls = _props.prefixCls, size = _props.size, disabled = _props.disabled; return (0, _classnames2['default'])(prefixCls, (_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-sm', size === 'small'), (0, _defineProperty3['default'])(_classNames, prefixCls + '-lg', size === 'large'), (0, _defineProperty3['default'])(_classNames, prefixCls + '-disabled', disabled), _classNames)); } }, { key: 'renderLabeledInput', value: function renderLabeledInput(children) { var props = this.props; // Not wrap when there is not addons if (!props.addonBefore && !props.addonAfter) { return children; } var wrapperClassName = props.prefixCls + '-group'; var addonClassName = wrapperClassName + '-addon'; var addonBefore = props.addonBefore ? _react2['default'].createElement( 'span', { className: addonClassName }, props.addonBefore ) : null; var addonAfter = props.addonAfter ? _react2['default'].createElement( 'span', { className: addonClassName }, props.addonAfter ) : null; var className = (0, _classnames2['default'])(props.prefixCls + '-wrapper', (0, _defineProperty3['default'])({}, wrapperClassName, addonBefore || addonAfter)); // Need another wrapper for changing display:table to display:inline-block // and put style prop in wrapper if (addonBefore || addonAfter) { return _react2['default'].createElement( 'span', { className: props.prefixCls + '-group-wrapper', style: props.style }, _react2['default'].createElement( 'span', { className: className }, addonBefore, (0, _react.cloneElement)(children, { style: null }), addonAfter ) ); } return _react2['default'].createElement( 'span', { className: className }, addonBefore, children, addonAfter ); } }, { key: 'renderLabeledIcon', value: function renderLabeledIcon(children) { var props = this.props; if (!('prefix' in props || 'suffix' in props)) { return children; } var prefix = props.prefix ? _react2['default'].createElement( 'span', { className: props.prefixCls + '-prefix' }, props.prefix ) : null; var suffix = props.suffix ? _react2['default'].createElement( 'span', { className: props.prefixCls + '-suffix' }, props.suffix ) : null; return _react2['default'].createElement( 'span', { className: (0, _classnames2['default'])(props.className, props.prefixCls + '-affix-wrapper'), style: props.style }, prefix, (0, _react.cloneElement)(children, { style: null, className: this.getInputClassName() }), suffix ); } }, { key: 'renderInput', value: function renderInput() { var _props2 = this.props, value = _props2.value, className = _props2.className; // Fix https://fb.me/react-unknown-prop var otherProps = (0, _omit2['default'])(this.props, ['prefixCls', 'onPressEnter', 'addonBefore', 'addonAfter', 'prefix', 'suffix']); if ('value' in this.props) { otherProps.value = fixControlledValue(value); // Input elements must be either controlled or uncontrolled, // specify either the value prop, or the defaultValue prop, but not both. delete otherProps.defaultValue; } return this.renderLabeledIcon(_react2['default'].createElement('input', (0, _extends3['default'])({}, otherProps, { className: (0, _classnames2['default'])(this.getInputClassName(), className), onKeyDown: this.handleKeyDown, ref: 'input' }))); } }, { key: 'render', value: function render() { if (this.props.type === 'textarea') { return _react2['default'].createElement(_TextArea2['default'], (0, _extends3['default'])({}, this.props, { ref: 'input' })); } return this.renderLabeledInput(this.renderInput()); } }]); return Input; }(_react.Component); exports['default'] = Input; Input.defaultProps = { prefixCls: 'ant-input', type: 'text', disabled: false }; Input.propTypes = { type: _propTypes2['default'].string, id: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].number]), size: _propTypes2['default'].oneOf(['small', 'default', 'large']), disabled: _propTypes2['default'].bool, value: _propTypes2['default'].any, defaultValue: _propTypes2['default'].any, className: _propTypes2['default'].string, addonBefore: _propTypes2['default'].node, addonAfter: _propTypes2['default'].node, prefixCls: _propTypes2['default'].string, autosize: _propTypes2['default'].oneOfType([_propTypes2['default'].bool, _propTypes2['default'].object]), onPressEnter: _propTypes2['default'].func, onKeyDown: _propTypes2['default'].func, onFocus: _propTypes2['default'].func, onBlur: _propTypes2['default'].func, prefix: _propTypes2['default'].node, suffix: _propTypes2['default'].node }; module.exports = exports['default'];