UNPKG

react-tm-nucleus

Version:
194 lines (160 loc) 6.35 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of'); var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf); 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 _get2 = require('babel-runtime/helpers/get'); var _get3 = _interopRequireDefault(_get2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _baseInput = require('./abstract/baseInput'); var _baseInput2 = _interopRequireDefault(_baseInput); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var Input = function (_BaseInput) { (0, _inherits3.default)(Input, _BaseInput); function Input(props) { (0, _classCallCheck3.default)(this, Input); var _this = (0, _possibleConstructorReturn3.default)(this, (0, _getPrototypeOf2.default)(Input).call(this, props)); _this.staticProps = _lodash2.default.concat(_baseInput2.default.STATE_PROPERTIES, "changeCallback"); _this.state = _lodash2.default.pick(props, _baseInput2.default.STATE_PROPERTIES); _this._onChange = _this._onChange.bind(_this); return _this; } (0, _createClass3.default)(Input, [{ key: 'componentDidUpdate', value: function componentDidUpdate(prevProps, prevState) { if (this.state.value != prevState.value) this.props.changeCallback(); } }, { key: 'shouldComponentUpdate', value: function shouldComponentUpdate(nextProps, nextState) { return this.state.value != nextState.value || this.state.checked != nextState.checked || this.state.disabled != nextState.disabled || this.state.required != nextState.required; } }, { key: 'value', value: function value(v) { if (typeof v !== "undefined") { this.setState({ value: v }); } else { return this.state.value; } } }, { key: 'checked', value: function checked(v) { if (typeof v !== "undefined") { if (typeof v !== "boolean") { throw new Error("Invalid type of value: requires boolean!!!"); } else { this.setState({ checked: v }); } } else { return this.state.checked; } } }, { key: 'disabled', value: function disabled(v) { if (typeof v !== "undefined") { if (typeof v !== "boolean") { throw new Error("Invalid type of value: requires boolean!!!"); } else { this.setState({ disabled: v }); } } else { return this.state.disabled; } } }, { key: 'required', value: function required(v) { if (typeof v !== "undefined") { if (typeof v !== "boolean") { throw new Error("Invalid type of value: requires boolean!!!"); } else { this.setState({ required: v }); } } else { return this.state.required; } } }, { key: 'type', value: function type() { return this.state.type; } }, { key: '_onChange', value: function _onChange(e) { var target = e.target; this.setState({ value: target.value, checked: target.checked }); } }, { key: 'filterProps', value: function filterProps(props) { var changeCallback = props.changeCallback; var other = (0, _objectWithoutProperties3.default)(props, ['changeCallback']); return (0, _get3.default)((0, _getPrototypeOf2.default)(Input.prototype), 'filterProps', this).call(this, other); } }, { key: 'render', value: function render() { var classes = "input-group__text-field " + (this.state.value ? 'has-content' : ''); var props = this.filterProps(this.props); return _react2.default.createElement('input', (0, _extends3.default)({}, props, { className: classes, type: this.state.type, value: this.state.value, checked: this.state.checked, disabled: this.state.disabled, required: this.state.required, onChange: this._onChange })); } }]); return Input; }(_baseInput2.default); Input.propTypes = { id: _react2.default.PropTypes.string, type: _react2.default.PropTypes.oneOf(_baseInput2.default.INPUT_TYPES), value: _react2.default.PropTypes.string, checked: _react2.default.PropTypes.bool, disabled: _react2.default.PropTypes.bool, required: _react2.default.PropTypes.bool, changeCallback: _react2.default.PropTypes.func }; Input.defaultProps = { id: "", type: _baseInput2.default.DEFAULT_TYPE, value: "", checked: false, disabled: false, required: false, changeCallback: function changeCallback() {} }; exports.default = Input;