fix: ie 下展开表格当含有height时不再动态获取该表格高度
This commit is contained in:
parent
2e48c17f25
commit
8a0bba14dd
|
@ -459,7 +459,7 @@ var Table = function (_Component) {
|
|||
Table.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
|
||||
// todo: IE 大数据渲染,行高不固定,且设置了 heightConsistent={true} 时,滚动加载操作会导致 ie11 浏览器崩溃
|
||||
// https://github.com/tinper-bee/bee-table/commit/bd2092cdbaad236ff89477304e58dea93325bf09
|
||||
if (this.columnManager.isAnyColumnsFixed() && !prevProps.height && prevProps.data == this.props.data) {
|
||||
if (this.columnManager.isAnyColumnsFixed()) {
|
||||
this.syncFixedTableRowHeight();
|
||||
}
|
||||
|
||||
|
@ -1464,16 +1464,19 @@ var Table = function (_Component) {
|
|||
var fixedColumnsExpandedRowsHeight = {};
|
||||
// expandedRows为NodeList Array.prototype.forEach ie 下报错 对象不支持 “forEach” 方法
|
||||
expandedRows.length > 0 && Array.prototype.forEach.call(expandedRows, function (row) {
|
||||
var parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key"),
|
||||
height = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {
|
||||
//子表数据减少时,动态计算高度
|
||||
var td = row.querySelector('td');
|
||||
var tdPadding = _this5.getTdPadding(td);
|
||||
var trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
height = trueheight + tdPadding;
|
||||
} catch (error) {}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(height);
|
||||
var parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key");
|
||||
var exHeight = height;
|
||||
if (!exHeight) {
|
||||
exHeight = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {
|
||||
//子表数据减少时,动态计算高度
|
||||
var td = row.querySelector('td');
|
||||
var tdPadding = _this5.getTdPadding(td);
|
||||
var trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
exHeight = trueheight + tdPadding;
|
||||
} catch (error) {}
|
||||
}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(exHeight);
|
||||
});
|
||||
if ((0, _shallowequal2["default"])(this.state.fixedColumnsHeadRowsHeight, fixedColumnsHeadRowsHeight) && (0, _shallowequal2["default"])(this.state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight) && (0, _shallowequal2["default"])(this.state.fixedColumnsExpandedRowsHeight, fixedColumnsExpandedRowsHeight)) {
|
||||
return;
|
||||
|
|
|
@ -48143,7 +48143,7 @@
|
|||
Table.prototype.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {
|
||||
// todo: IE 大数据渲染,行高不固定,且设置了 heightConsistent={true} 时,滚动加载操作会导致 ie11 浏览器崩溃
|
||||
// https://github.com/tinper-bee/bee-table/commit/bd2092cdbaad236ff89477304e58dea93325bf09
|
||||
if (this.columnManager.isAnyColumnsFixed() && !prevProps.height && prevProps.data == this.props.data) {
|
||||
if (this.columnManager.isAnyColumnsFixed()) {
|
||||
this.syncFixedTableRowHeight();
|
||||
}
|
||||
|
||||
|
@ -49148,16 +49148,19 @@
|
|||
var fixedColumnsExpandedRowsHeight = {};
|
||||
// expandedRows为NodeList Array.prototype.forEach ie 下报错 对象不支持 “forEach” 方法
|
||||
expandedRows.length > 0 && Array.prototype.forEach.call(expandedRows, function (row) {
|
||||
var parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key"),
|
||||
height = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {
|
||||
//子表数据减少时,动态计算高度
|
||||
var td = row.querySelector('td');
|
||||
var tdPadding = _this5.getTdPadding(td);
|
||||
var trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
height = trueheight + tdPadding;
|
||||
} catch (error) {}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(height);
|
||||
var parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key");
|
||||
var exHeight = height;
|
||||
if (!exHeight) {
|
||||
exHeight = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {
|
||||
//子表数据减少时,动态计算高度
|
||||
var td = row.querySelector('td');
|
||||
var tdPadding = _this5.getTdPadding(td);
|
||||
var trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
exHeight = trueheight + tdPadding;
|
||||
} catch (error) {}
|
||||
}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(exHeight);
|
||||
});
|
||||
if ((0, _shallowequal2['default'])(this.state.fixedColumnsHeadRowsHeight, fixedColumnsHeadRowsHeight) && (0, _shallowequal2['default'])(this.state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight) && (0, _shallowequal2['default'])(this.state.fixedColumnsExpandedRowsHeight, fixedColumnsExpandedRowsHeight)) {
|
||||
return;
|
||||
|
@ -63371,7 +63374,8 @@
|
|||
showMinute = props.showMinute,
|
||||
showSecond = props.showSecond,
|
||||
autoTriggerChange = props.autoTriggerChange,
|
||||
others = _objectWithoutProperties(props, ["showClose", "defaultPanelShown", "onBlur", "showHour", "showMinute", "showSecond", "autoTriggerChange"]);
|
||||
inputShowValue = props.inputShowValue,
|
||||
others = _objectWithoutProperties(props, ["showClose", "defaultPanelShown", "onBlur", "showHour", "showMinute", "showSecond", "autoTriggerChange", "inputShowValue"]);
|
||||
|
||||
var value = state.value;
|
||||
var pickerChangeHandler = {};
|
||||
|
@ -63416,10 +63420,10 @@
|
|||
if (props.keyboardInput) {
|
||||
keyboardInputProps.readOnly = false;
|
||||
keyboardInputProps.onChange = this.inputChange;
|
||||
keyboardInputProps.value = state.inputValue && state.inputValue.format && state.inputValue.isValid() && this.props.validatorFunc(state.inputValue) ? state.inputValue.format(props.format) : state.inputValue;
|
||||
keyboardInputProps.value = inputShowValue || (state.inputValue && state.inputValue.format && state.inputValue.isValid() && this.props.validatorFunc(state.inputValue) ? state.inputValue.format(props.format) : state.inputValue);
|
||||
} else {
|
||||
keyboardInputProps.readOnly = true;
|
||||
keyboardInputProps.value = value && this.getValue(value) || "";
|
||||
keyboardInputProps.value = inputShowValue || value && this.getValue(value) || "";
|
||||
}
|
||||
var classes = (0, _classnames2["default"])(props.className, "datepicker-container");
|
||||
return _react2["default"].createElement(
|
||||
|
@ -63536,16 +63540,22 @@
|
|||
input.focus();
|
||||
}
|
||||
input.onkeydown = function (e) {
|
||||
// 日历的input
|
||||
if (e.keyCode == _tinperBeeCore.KeyCode.DELETE) {
|
||||
input.value = '';
|
||||
_this3.fireChange('', '');
|
||||
} else if (e.keyCode == _tinperBeeCore.KeyCode.ESC) {
|
||||
} else if (e.keyCode == _tinperBeeCore.KeyCode.ESC || e.keyCode == _tinperBeeCore.KeyCode.TAB) {
|
||||
if (e.keyCode == _tinperBeeCore.KeyCode.TAB) {
|
||||
console.debug('[bee-datepicker] [DatePicker] e.keyCode == KeyCode.TAB');
|
||||
}
|
||||
_this3.setState({
|
||||
open: false
|
||||
});
|
||||
var v = _this3.state.value;
|
||||
_this3.props.onOpenChange(false, v, v && _this3.getValue(v) || '');
|
||||
console.debug(' [bee-datepicker] [DatePicker] ReactDOM.findDOMNode(this.outInput)', _reactDom2["default"].findDOMNode(_this3.outInput));
|
||||
_reactDom2["default"].findDOMNode(_this3.outInput).focus(); // 按esc时候焦点回到input输入框
|
||||
// e.stopPropagation();
|
||||
} else if (e.keyCode == _tinperBeeCore.KeyCode.ENTER) {
|
||||
var parsed = (0, _moment2["default"])(input.value, format, true);
|
||||
var isDisabled = disabledDate && disabledDate(parsed);
|
||||
|
@ -63562,6 +63572,14 @@
|
|||
open: false
|
||||
});
|
||||
}
|
||||
} else if (e.keyCode >= 37 && e.keyCode <= 40) {
|
||||
// 向下
|
||||
// 自定义_dataTransfer
|
||||
e.target._dataTransfer = {
|
||||
owner: _reactDom2["default"].findDOMNode(_this3.outInput),
|
||||
_target: e.target
|
||||
// e.target.___onCalendarKeyDown = true;
|
||||
};
|
||||
}
|
||||
_this3.props.onKeyDown && _this3.props.onKeyDown(e);
|
||||
};
|
||||
|
@ -63627,7 +63645,7 @@
|
|||
_this3.setState({
|
||||
inputValue: value
|
||||
});
|
||||
if ((0, _moment2["default"])(value, _this3.props.format).isValid() && _this3.props.validatorFunc(value)) {
|
||||
if ((0, _moment2["default"])(value, _this3.props.format, true).isValid() && _this3.props.validatorFunc(value)) {
|
||||
_this3.setState({
|
||||
value: (0, _moment2["default"])(value, _this3.props.format)
|
||||
});
|
||||
|
@ -63668,7 +63686,10 @@
|
|||
_this3.fireChange(null, value);
|
||||
}
|
||||
}
|
||||
_this3.props.outInputKeydown && _this3.props.outInputKeydown(e);
|
||||
if (_this3.props.outInputKeydown) {
|
||||
console.debug('[bee-datepicker] [DatePicker] exist this.props.outInputKeydown and the props is ,' + _this3.props);
|
||||
_this3.props.outInputKeydown(e);
|
||||
}
|
||||
};
|
||||
|
||||
this.onMouseLeave = function (e) {
|
||||
|
@ -88503,8 +88524,12 @@
|
|||
var _this2 = this;
|
||||
|
||||
this.onCalendarKeyDown = function (event) {
|
||||
if (event.keyCode === _KeyCode2["default"].ESC) {
|
||||
if (event.keyCode === _KeyCode2["default"].ESC || event.keyCode === _KeyCode2["default"].TAB) {
|
||||
event.stopPropagation();
|
||||
event.target._dataTransfer = {
|
||||
owner: _reactDom2["default"].findDOMNode(_this2.outInput),
|
||||
_target: e.target
|
||||
};
|
||||
_this2.close(_this2.focus);
|
||||
}
|
||||
_this2.props.onKeyDown && _this2.props.onKeyDown(event);
|
||||
|
@ -88528,11 +88553,34 @@
|
|||
};
|
||||
|
||||
this.onKeyDown = function (event) {
|
||||
// formcontrol onKeyDown
|
||||
var enterKeyDown = _this2.props.enterKeyDown;
|
||||
|
||||
console.debug('++++++++++++++++++++++++ [bee Picker.js] [event.keyCode ===' + event.keyCode + '] ');
|
||||
if (event.keyCode === _KeyCode2["default"].DOWN || enterKeyDown && event.keyCode === _KeyCode2["default"].ENTER) {
|
||||
if (!_this2.state.open) _this2.open();
|
||||
if (!_this2.state.open) {
|
||||
_this2.open();
|
||||
event.nativeEvent.stopImmediatePropagation();
|
||||
// event.target._dataTransfer = {
|
||||
// owner: e
|
||||
// }
|
||||
}
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
// delete event.keyCode;
|
||||
console.debug('++++++++++++++++++++++++ [bee Picker.js] event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); ');
|
||||
} else if (event.keyCode === _KeyCode2["default"].TAB) {
|
||||
if (_this2.state.open) {
|
||||
console.debug('+TABTABTABTABTABTABTABTABTABTAB [bee Picker.js] this.close() event.stopPropagation()');
|
||||
_this2.close();
|
||||
_this2.focus();
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
} else {
|
||||
console.debug('+TABTABTABTABTABTABTABTABTABTAB [bee Picker.js] nothing to do');
|
||||
}
|
||||
} else {
|
||||
console.debug('NONONONONONONONOONONO [bee Picker.js] nothing to do');
|
||||
}
|
||||
_this2.props.onKeyDown && _this2.props.onKeyDown(event);
|
||||
};
|
||||
|
@ -88594,6 +88642,11 @@
|
|||
if (!_this2.state.open) {
|
||||
_reactDom2["default"].findDOMNode(_this2).focus();
|
||||
}
|
||||
// } else {
|
||||
// // ReactDOM.findDOMNode(this).focus();
|
||||
// if(this.calendarInstance)
|
||||
// this.calendarInstance.focus();
|
||||
// }
|
||||
};
|
||||
|
||||
this.focusCalendar = function () {
|
||||
|
|
File diff suppressed because one or more lines are too long
25
src/Table.js
25
src/Table.js
|
@ -251,7 +251,7 @@ class Table extends Component {
|
|||
componentDidUpdate(prevProps, prevState) {
|
||||
// todo: IE 大数据渲染,行高不固定,且设置了 heightConsistent={true} 时,滚动加载操作会导致 ie11 浏览器崩溃
|
||||
// https://github.com/tinper-bee/bee-table/commit/bd2092cdbaad236ff89477304e58dea93325bf09
|
||||
if(this.columnManager.isAnyColumnsFixed() && !prevProps.height && prevProps.data == this.props.data) {
|
||||
if(this.columnManager.isAnyColumnsFixed()) {
|
||||
this.syncFixedTableRowHeight();
|
||||
}
|
||||
|
||||
|
@ -1245,17 +1245,20 @@ class Table extends Component {
|
|||
const fixedColumnsExpandedRowsHeight = {};
|
||||
// expandedRows为NodeList Array.prototype.forEach ie 下报错 对象不支持 “forEach” 方法
|
||||
expandedRows.length > 0 && Array.prototype.forEach.call(expandedRows,row => {
|
||||
let parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key"),
|
||||
height = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {//子表数据减少时,动态计算高度
|
||||
let td = row.querySelector('td');
|
||||
let tdPadding = this.getTdPadding(td);
|
||||
let trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
height = trueheight+tdPadding;
|
||||
} catch (error) {
|
||||
let parentRowKey = row && row.previousSibling && row.previousSibling.getAttribute("data-row-key");
|
||||
let exHeight = height;
|
||||
if(!exHeight) {
|
||||
exHeight = row && parseInt(row.getBoundingClientRect().height) || 'auto';
|
||||
try {//子表数据减少时,动态计算高度
|
||||
let td = row.querySelector('td');
|
||||
let tdPadding = this.getTdPadding(td);
|
||||
let trueheight = parseInt(row.querySelectorAll('.u-table')[0].getBoundingClientRect().height);
|
||||
exHeight = trueheight+tdPadding;
|
||||
} catch (error) {
|
||||
|
||||
}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(height);
|
||||
}
|
||||
}
|
||||
fixedColumnsExpandedRowsHeight[parentRowKey] = parseInt(exHeight);
|
||||
})
|
||||
if (shallowequal(this.state.fixedColumnsHeadRowsHeight, fixedColumnsHeadRowsHeight) &&
|
||||
shallowequal(this.state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight) &&
|
||||
|
|
Loading…
Reference in New Issue