diff --git a/libs/v-table/src/cell-edit-mixin.js b/libs/v-table/src/cell-edit-mixin.js index b5cc24e31..24cdf9476 100644 --- a/libs/v-table/src/cell-edit-mixin.js +++ b/libs/v-table/src/cell-edit-mixin.js @@ -24,28 +24,39 @@ exports.default = { editInputLen = void 0, _actionFun = void 0, textAlign = void 0, - formatterVal = ''; + childTarget = void 0; while (target.className && target.className.indexOf('v-table-body-cell') === -1 || !target.className) { target = target.parentNode; } + childTarget = target.children[0]; + + childTarget.style.display = 'none'; + if ((0, _dom.hasClass)(target, 'cell-editing')) { return false; } (0, _dom.addClass)(target, 'cell-editing'); - oldVal = target.innerText; + oldVal = childTarget.innerText.trim(); if (target.style.textAlign) { textAlign = target.style.textAlign; } - target.innerHTML = ''; + editInput = document.createElement('input'); + editInput.value = oldVal; + editInput.className = 'cell-edit-input'; + editInput.style.textAlign = textAlign; + editInput.style.width = '100%'; + editInput.style.height = '100%'; + + + target.appendChild(editInput); - editInput = target.querySelector('.cell-edit-input'); editInput.focus(); editInputLen = editInput.value.length; @@ -69,14 +80,14 @@ exports.default = { return false; } - formatterVal = self.cellEditFormatter && self.cellEditFormatter(editInput.value, oldVal, rowIndex, rowData, field); - - target.innerHTML = formatterVal && formatterVal.length > 0 ? formatterVal : editInput.value; + childTarget.style.display = ''; callback(editInput.value, oldVal); _utils2.default.unbind(editInput, 'blur', _actionFun); _utils2.default.unbind(editInput, 'keydown', _actionFun); + + target.removeChild(editInput); } }; @@ -84,14 +95,13 @@ exports.default = { _utils2.default.bind(editInput, 'keydown', _actionFun); }, cellEditClick: function cellEditClick(e, isEdit, rowData, field, rowIndex) { - if (isEdit) { var self = this; var onCellEditCallBack = function onCellEditCallBack(newValue, oldVal) { - self.cellEditDone(newValue, oldVal, rowIndex, rowData, field); + self.cellEditDone && self.cellEditDone(newValue, oldVal, rowIndex, rowData, field); }; this.cellEdit(e, onCellEditCallBack, rowIndex, rowData, field); diff --git a/libs/v-table/src/drag-width-mixin.js b/libs/v-table/src/drag-width-mixin.js index db40aab24..7153d0bb8 100644 --- a/libs/v-table/src/drag-width-mixin.js +++ b/libs/v-table/src/drag-width-mixin.js @@ -8,6 +8,8 @@ var _utils = require('../../src/utils/utils.js'); var _utils2 = _interopRequireDefault(_utils); +var _dom = require('../../src/utils/dom.js'); + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = { @@ -47,7 +49,7 @@ exports.default = { target = event.target; - while (target && (target.className && target.className.indexOf('v-table-title-cell') === -1 || !target.className)) { + while (target && (target.className && !(0, _dom.hasClass)(target, 'v-table-title-cell') || !target.className)) { target = target.parentNode; } @@ -149,6 +151,8 @@ exports.default = { if (this.totalColumnsWidth < this.internalWidth) { rightViewBody.style.overflowX = 'hidden'; + + (0, _dom.removeClass)(rightViewBody, 'v-table-rightview-special-border'); rightViewBody.classList.remove('v-table-rightview-special-border'); } else { @@ -156,7 +160,7 @@ exports.default = { if (!this.hasFrozenColumn) { - rightViewBody.classList.add('v-table-rightview-special-border'); + (0, _dom.addClass)(rightViewBody, 'v-table-rightview-special-border'); } } diff --git a/libs/v-table/src/table.vue b/libs/v-table/src/table.vue index 569658768..3c6e84807 100644 --- a/libs/v-table/src/table.vue +++ b/libs/v-table/src/table.vue @@ -455,8 +455,6 @@ rowMouseLeave: Function, // 单元格编辑完成回调 cellEditDone: Function, - // 单元格编辑格式化 - cellEditFormatter: Function, // 单元格合并 cellMerge: Function, // select all @@ -809,24 +807,29 @@ this.initColumns(); }, - 'tableData': function (newVal) { + // deep watch + 'tableData': { - this.internalTableData = this.initInternalTableData(newVal); + handler:function (newVal) { - this.updateCheckboxGroupModel(); + this.internalTableData = this.initInternalTableData(newVal); - this.tableEmpty(); + this.updateCheckboxGroupModel(); - if (Array.isArray(newVal) && newVal.length > 0) { + this.tableEmpty(); - this.initView(); + if (Array.isArray(newVal) && newVal.length > 0) { - if (!this.hasBindScrollEvent) { - this.scrollControl(); + this.initView(); + + if (!this.hasBindScrollEvent) { + this.scrollControl(); + } } - } - this.resize(); + this.resize(); + }, + deep: true } } }