UNPKG

ant-table-ext

Version:

An extended table based on ant table

152 lines (121 loc) 4.99 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); 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 _omit = require('omit.js'); var _omit2 = _interopRequireDefault(_omit); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _calculateNodeHeight = require('./calculateNodeHeight'); var _calculateNodeHeight2 = _interopRequireDefault(_calculateNodeHeight); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function onNextFrame(cb) { if (window.requestAnimationFrame) { return window.requestAnimationFrame(cb); } return window.setTimeout(cb, 1); } function clearNextFrameAction(nextFrameId) { if (window.cancelAnimationFrame) { window.cancelAnimationFrame(nextFrameId); } else { window.clearTimeout(nextFrameId); } } var TextArea = function (_React$Component) { (0, _inherits3['default'])(TextArea, _React$Component); function TextArea() { (0, _classCallCheck3['default'])(this, TextArea); var _this = (0, _possibleConstructorReturn3['default'])(this, (TextArea.__proto__ || Object.getPrototypeOf(TextArea)).apply(this, arguments)); _this.state = { textareaStyles: null }; _this.resizeTextarea = function () { var autosize = _this.props.autosize; if (!autosize || !_this.textAreaRef) { return; } var minRows = autosize ? autosize.minRows : null; var maxRows = autosize ? autosize.maxRows : null; var textareaStyles = (0, _calculateNodeHeight2['default'])(_this.textAreaRef, false, minRows, maxRows); _this.setState({ textareaStyles: textareaStyles }); }; _this.handleTextareaChange = function (e) { if (!('value' in _this.props)) { _this.resizeTextarea(); } var onChange = _this.props.onChange; if (onChange) { onChange(e); } }; _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); } }; _this.saveTextAreaRef = function (textArea) { _this.textAreaRef = textArea; }; return _this; } (0, _createClass3['default'])(TextArea, [{ key: 'componentDidMount', value: function componentDidMount() { this.resizeTextarea(); } }, { key: 'componentWillReceiveProps', value: function componentWillReceiveProps(nextProps) { // Re-render with the new content then recalculate the height as required. if (this.props.value !== nextProps.value) { if (this.nextFrameActionId) { clearNextFrameAction(this.nextFrameActionId); } this.nextFrameActionId = onNextFrame(this.resizeTextarea); } } }, { key: 'focus', value: function focus() { this.textAreaRef.focus(); } }, { key: 'blur', value: function blur() { this.textAreaRef.blur(); } }, { key: 'render', value: function render() { var props = this.props; var otherProps = (0, _omit2['default'])(props, ['prefixCls', 'onPressEnter', 'autosize']); var style = (0, _extends3['default'])({}, props.style, this.state.textareaStyles); return _react2['default'].createElement('textarea', (0, _extends3['default'])({}, otherProps, { className: (0, _classnames2['default'])(props.prefixCls, props.className), style: style, onKeyDown: this.handleKeyDown, onChange: this.handleTextareaChange, ref: this.saveTextAreaRef })); } }]); return TextArea; }(_react2['default'].Component); exports['default'] = TextArea; TextArea.defaultProps = { prefixCls: 'ant-input' }; module.exports = exports['default'];