vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
828 lines (827 loc) • 33.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.Cell = void 0;
var _xeUtils = _interopRequireDefault(require("xe-utils"));
var _conf = _interopRequireDefault(require("../../v-x-e-table/src/conf"));
var _vXETable = _interopRequireDefault(require("../../v-x-e-table"));
var _dom = _interopRequireDefault(require("../../tools/dom"));
var _utils = _interopRequireWildcard(require("../../tools/utils"));
var _util = require("./util");
var _vn = require("../../tools/vn");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
function renderHelpIcon(h, params) {
var $table = params.$table,
column = params.column;
var titlePrefix = column.titlePrefix || column.titleHelp;
return titlePrefix ? [h('i', {
"class": ['vxe-cell-help-icon', titlePrefix.icon || _conf["default"].icon.TABLE_HELP],
on: {
mouseenter: function mouseenter(evnt) {
$table.triggerHeaderHelpEvent(evnt, params);
},
mouseleave: function mouseleave(evnt) {
$table.handleTargetLeaveEvent(evnt);
}
}
})] : [];
}
function renderTitleContent(h, params, content) {
var $table = params.$table,
column = params.column;
var type = column.type,
showHeaderOverflow = column.showHeaderOverflow;
var allColumnHeaderOverflow = $table.showHeaderOverflow,
tooltipOpts = $table.tooltipOpts;
var showAllTip = tooltipOpts.showAll || tooltipOpts.enabled;
var headOverflow = _xeUtils["default"].isUndefined(showHeaderOverflow) || _xeUtils["default"].isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
var showTitle = headOverflow === 'title';
var showTooltip = headOverflow === true || headOverflow === 'tooltip';
var ons = {};
if (showTitle || showTooltip || showAllTip) {
ons.mouseenter = function (evnt) {
if ($table._isResize) {
return;
}
if (showTitle) {
_dom["default"].updateCellTitle(evnt.currentTarget, column);
} else if (showTooltip || showAllTip) {
$table.triggerHeaderTooltipEvent(evnt, params);
}
};
}
if (showTooltip || showAllTip) {
ons.mouseleave = function (evnt) {
if ($table._isResize) {
return;
}
if (showTooltip || showAllTip) {
$table.handleTargetLeaveEvent(evnt);
}
};
}
return [type === 'html' && _xeUtils["default"].isString(content) ? h('span', {
"class": 'vxe-cell--title',
domProps: {
innerHTML: content
},
on: ons
}) : h('span', {
"class": 'vxe-cell--title',
on: ons
}, (0, _vn.getSlotVNs)(content))];
}
function getFooterContent(h, params) {
var $table = params.$table,
column = params.column,
_columnIndex = params._columnIndex,
items = params.items;
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender;
var renderOpts = editRender || cellRender;
if (slots && slots.footer) {
return $table.callSlot(slots.footer, params, h);
}
if (renderOpts) {
var compConf = _vXETable["default"].renderer.get(renderOpts.name);
if (compConf && compConf.renderFooter) {
return (0, _vn.getSlotVNs)(compConf.renderFooter.call($table, h, renderOpts, params));
}
}
return [_utils["default"].formatText(items[_columnIndex], 1)];
}
function getDefaultCellLabel(params) {
var $table = params.$table,
row = params.row,
column = params.column;
return _utils["default"].formatText($table.getCellLabel(row, column), 1);
}
var Cell = {
createColumn: function createColumn($xetable, _vm) {
var type = _vm.type,
sortable = _vm.sortable,
remoteSort = _vm.remoteSort,
filters = _vm.filters,
editRender = _vm.editRender,
treeNode = _vm.treeNode;
var editConfig = $xetable.editConfig,
editOpts = $xetable.editOpts,
checkboxOpts = $xetable.checkboxOpts;
var renMaps = {
renderHeader: this.renderDefaultHeader,
renderCell: treeNode ? this.renderTreeCell : this.renderDefaultCell,
renderFooter: this.renderDefaultFooter
};
switch (type) {
case 'seq':
renMaps.renderHeader = this.renderSeqHeader;
renMaps.renderCell = treeNode ? this.renderTreeIndexCell : this.renderSeqCell;
break;
case 'radio':
renMaps.renderHeader = this.renderRadioHeader;
renMaps.renderCell = treeNode ? this.renderTreeRadioCell : this.renderRadioCell;
break;
case 'checkbox':
renMaps.renderHeader = this.renderCheckboxHeader;
renMaps.renderCell = checkboxOpts.checkField ? treeNode ? this.renderTreeSelectionCellByProp : this.renderCheckboxCellByProp : treeNode ? this.renderTreeSelectionCell : this.renderCheckboxCell;
break;
case 'expand':
renMaps.renderCell = this.renderExpandCell;
renMaps.renderData = this.renderExpandData;
break;
case 'html':
renMaps.renderCell = treeNode ? this.renderTreeHTMLCell : this.renderHTMLCell;
if (filters && (sortable || remoteSort)) {
renMaps.renderHeader = this.renderSortAndFilterHeader;
} else if (sortable || remoteSort) {
renMaps.renderHeader = this.renderSortHeader;
} else if (filters) {
renMaps.renderHeader = this.renderFilterHeader;
}
break;
default:
if (editConfig && editRender) {
renMaps.renderHeader = this.renderEditHeader;
renMaps.renderCell = editOpts.mode === 'cell' ? treeNode ? this.renderTreeCellEdit : this.renderCellEdit : treeNode ? this.renderTreeRowEdit : this.renderRowEdit;
} else if (filters && (sortable || remoteSort)) {
renMaps.renderHeader = this.renderSortAndFilterHeader;
} else if (sortable || remoteSort) {
renMaps.renderHeader = this.renderSortHeader;
} else if (filters) {
renMaps.renderHeader = this.renderFilterHeader;
}
}
return (0, _util.getColumnConfig)($xetable, _vm, renMaps);
},
/**
* 单元格
*/
renderHeaderTitle: function renderHeaderTitle(h, params) {
var $table = params.$table,
column = params.column;
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender;
var renderOpts = editRender || cellRender;
if (slots && slots.header) {
return renderTitleContent(h, params, $table.callSlot(slots.header, params, h));
}
if (renderOpts) {
var compConf = _vXETable["default"].renderer.get(renderOpts.name);
if (compConf && compConf.renderHeader) {
return (0, _vn.getSlotVNs)(renderTitleContent(h, params, compConf.renderHeader.call($table, h, renderOpts, params)));
}
}
return renderTitleContent(h, params, _utils["default"].formatText(column.getTitle(), 1));
},
renderDefaultHeader: function renderDefaultHeader(h, params) {
return renderHelpIcon(h, params).concat(Cell.renderHeaderTitle(h, params));
},
renderDefaultCell: function renderDefaultCell(h, params) {
var $table = params.$table,
row = params.row,
column = params.column;
var slots = column.slots,
editRender = column.editRender,
cellRender = column.cellRender;
var renderOpts = editRender || cellRender;
if (slots && slots["default"]) {
return $table.callSlot(slots["default"], params, h);
}
if (renderOpts) {
var funName = editRender ? 'renderCell' : 'renderDefault';
var compConf = _vXETable["default"].renderer.get(renderOpts.name);
if (compConf && compConf[funName]) {
return (0, _vn.getSlotVNs)(compConf[funName].call($table, h, renderOpts, Object.assign({
$type: editRender ? 'edit' : 'cell'
}, params)));
}
}
var cellValue = $table.getCellLabel(row, column);
var cellPlaceholder = editRender ? editRender.placeholder : '';
return [h('span', {
"class": 'vxe-cell--label'
}, editRender && (0, _utils.eqEmptyValue)(cellValue) ? [
// 如果设置占位符
h('span', {
"class": 'vxe-cell--placeholder'
}, _utils["default"].formatText((0, _utils.getFuncText)(cellPlaceholder), 1))] : _utils["default"].formatText(cellValue, 1))];
},
renderTreeCell: function renderTreeCell(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderDefaultCell.call(this, h, params));
},
renderDefaultFooter: function renderDefaultFooter(h, params) {
return [h('span', {
"class": 'vxe-cell--item'
}, getFooterContent(h, params))];
},
/**
* 树节点
*/
renderTreeIcon: function renderTreeIcon(h, params, cellVNodes) {
var $table = params.$table,
isHidden = params.isHidden;
var treeOpts = $table.treeOpts,
treeExpandeds = $table.treeExpandeds,
treeLazyLoadeds = $table.treeLazyLoadeds;
var row = params.row,
column = params.column,
level = params.level;
var slots = column.slots;
var children = treeOpts.children,
hasChild = treeOpts.hasChild,
indent = treeOpts.indent,
lazy = treeOpts.lazy,
trigger = treeOpts.trigger,
iconLoaded = treeOpts.iconLoaded,
showIcon = treeOpts.showIcon,
iconOpen = treeOpts.iconOpen,
iconClose = treeOpts.iconClose;
var rowChilds = row[children];
var hasLazyChilds = false;
var isAceived = false;
var isLazyLoaded = false;
var on = {};
if (slots && slots.icon) {
return $table.callSlot(slots.icon, params, h, cellVNodes);
}
if (!isHidden) {
isAceived = $table.findRowIndexOf(treeExpandeds, row) > -1;
if (lazy) {
isLazyLoaded = $table.findRowIndexOf(treeLazyLoadeds, row) > -1;
hasLazyChilds = row[hasChild];
}
}
if (!trigger || trigger === 'default') {
on.click = function (evnt) {
return $table.triggerTreeExpandEvent(evnt, params);
};
}
return [h('div', {
"class": ['vxe-cell--tree-node', {
'is--active': isAceived
}],
style: {
paddingLeft: "".concat(level * indent, "px")
}
}, [showIcon && (rowChilds && rowChilds.length || hasLazyChilds) ? [h('div', {
"class": 'vxe-tree--btn-wrapper',
on: on
}, [h('i', {
"class": ['vxe-tree--node-btn', isLazyLoaded ? iconLoaded || _conf["default"].icon.TABLE_TREE_LOADED : isAceived ? iconOpen || _conf["default"].icon.TABLE_TREE_OPEN : iconClose || _conf["default"].icon.TABLE_TREE_CLOSE]
})])] : null, h('div', {
"class": 'vxe-tree-cell'
}, cellVNodes)])];
},
/**
* 索引
*/
renderSeqHeader: function renderSeqHeader(h, params) {
var $table = params.$table,
column = params.column;
var slots = column.slots;
return renderTitleContent(h, params, slots && slots.header ? $table.callSlot(slots.header, params, h) : _utils["default"].formatText(column.getTitle(), 1));
},
renderSeqCell: function renderSeqCell(h, params) {
var $table = params.$table,
column = params.column;
var treeConfig = $table.treeConfig,
seqOpts = $table.seqOpts;
var slots = column.slots;
if (slots && slots["default"]) {
return $table.callSlot(slots["default"], params, h);
}
var seq = params.seq;
var seqMethod = seqOpts.seqMethod;
return [_utils["default"].formatText(seqMethod ? seqMethod(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + seq, 1)];
},
renderTreeIndexCell: function renderTreeIndexCell(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderSeqCell(h, params));
},
/**
* 单选
*/
renderRadioHeader: function renderRadioHeader(h, params) {
var $table = params.$table,
column = params.column;
var slots = column.slots;
var headerSlot = slots ? slots.header : null;
var titleSlot = slots ? slots.title : null;
return renderTitleContent(h, params, headerSlot ? $table.callSlot(headerSlot, params, h) : [h('span', {
"class": 'vxe-radio--label'
}, titleSlot ? $table.callSlot(titleSlot, params, h) : _utils["default"].formatText(column.getTitle(), 1))]);
},
renderRadioCell: function renderRadioCell(h, params) {
var $table = params.$table,
column = params.column,
isHidden = params.isHidden;
var radioOpts = $table.radioOpts,
selectRow = $table.selectRow;
var slots = column.slots;
var labelField = radioOpts.labelField,
checkMethod = radioOpts.checkMethod,
visibleMethod = radioOpts.visibleMethod;
var row = params.row;
var defaultSlot = slots ? slots["default"] : null;
var radioSlot = slots ? slots.radio : null;
var isChecked = row === selectRow;
var isVisible = !visibleMethod || visibleMethod({
row: row
});
var isDisabled = !!checkMethod;
var on;
if (!isHidden) {
on = {
click: function click(evnt) {
if (!isDisabled && isVisible) {
$table.triggerRadioRowEvent(evnt, params);
}
}
};
if (checkMethod) {
isDisabled = !checkMethod({
row: row
});
}
}
var radioParams = _objectSpread(_objectSpread({}, params), {}, {
checked: isChecked,
disabled: isDisabled,
visible: isVisible
});
if (radioSlot) {
return $table.callSlot(radioSlot, radioParams, h);
}
var radioVNs = [];
if (isVisible) {
radioVNs.push(h('span', {
"class": ['vxe-radio--icon', isChecked ? _conf["default"].icon.TABLE_RADIO_CHECKED : _conf["default"].icon.TABLE_RADIO_UNCHECKED]
}));
}
if (defaultSlot || labelField) {
radioVNs.push(h('span', {
"class": 'vxe-radio--label'
}, defaultSlot ? $table.callSlot(defaultSlot, radioParams, h) : _xeUtils["default"].get(row, labelField)));
}
return [h('span', {
"class": ['vxe-cell--radio', {
'is--checked': isChecked,
'is--disabled': isDisabled
}],
on: on
}, radioVNs)];
},
renderTreeRadioCell: function renderTreeRadioCell(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderRadioCell(h, params));
},
/**
* 多选
*/
renderCheckboxHeader: function renderCheckboxHeader(h, params) {
var $table = params.$table,
column = params.column,
isHidden = params.isHidden;
var isAllCheckboxSelected = $table.isAllSelected,
isAllCheckboxIndeterminate = $table.isIndeterminate,
isAllCheckboxDisabled = $table.isAllCheckboxDisabled;
var slots = column.slots;
var headerSlot = slots ? slots.header : null;
var titleSlot = slots ? slots.title : null;
var checkboxOpts = $table.checkboxOpts;
var headerTitle = column.getTitle();
var on;
if (!isHidden) {
on = {
click: function click(evnt) {
if (!isAllCheckboxDisabled) {
$table.triggerCheckAllEvent(evnt, !isAllCheckboxSelected);
}
}
};
}
var checkboxParams = _objectSpread(_objectSpread({}, params), {}, {
checked: isAllCheckboxSelected,
disabled: isAllCheckboxDisabled,
indeterminate: isAllCheckboxIndeterminate
});
if (headerSlot) {
return renderTitleContent(h, checkboxParams, $table.callSlot(headerSlot, checkboxParams, h));
}
if (checkboxOpts.checkStrictly ? !checkboxOpts.showHeader : checkboxOpts.showHeader === false) {
return renderTitleContent(h, checkboxParams, [h('span', {
"class": 'vxe-checkbox--label'
}, titleSlot ? $table.callSlot(titleSlot, checkboxParams, h) : headerTitle)]);
}
return renderTitleContent(h, checkboxParams, [h('span', {
"class": ['vxe-cell--checkbox', {
'is--checked': isAllCheckboxSelected,
'is--disabled': isAllCheckboxDisabled,
'is--indeterminate': isAllCheckboxIndeterminate
}],
attrs: {
title: _conf["default"].i18n('vxe.table.allTitle')
},
on: on
}, [h('span', {
"class": ['vxe-checkbox--icon', isAllCheckboxIndeterminate ? _conf["default"].icon.TABLE_CHECKBOX_INDETERMINATE : isAllCheckboxSelected ? _conf["default"].icon.TABLE_CHECKBOX_CHECKED : _conf["default"].icon.TABLE_CHECKBOX_UNCHECKED]
})].concat(titleSlot || headerTitle ? [h('span', {
"class": 'vxe-checkbox--label'
}, titleSlot ? $table.callSlot(titleSlot, checkboxParams, h) : headerTitle)] : []))]);
},
renderCheckboxCell: function renderCheckboxCell(h, params) {
var $table = params.$table,
row = params.row,
column = params.column,
isHidden = params.isHidden;
var treeConfig = $table.treeConfig,
treeIndeterminates = $table.treeIndeterminates,
selection = $table.selection;
var _$table$checkboxOpts = $table.checkboxOpts,
labelField = _$table$checkboxOpts.labelField,
checkMethod = _$table$checkboxOpts.checkMethod,
visibleMethod = _$table$checkboxOpts.visibleMethod;
var slots = column.slots;
var defaultSlot = slots ? slots["default"] : null;
var checkboxSlot = slots ? slots.checkbox : null;
var indeterminate = false;
var isChecked = false;
var isVisible = !visibleMethod || visibleMethod({
row: row
});
var isDisabled = !!checkMethod;
var on;
if (!isHidden) {
isChecked = $table.findRowIndexOf(selection, row) > -1;
on = {
click: function click(evnt) {
if (!isDisabled && isVisible) {
$table.triggerCheckRowEvent(evnt, params, !isChecked);
}
}
};
if (checkMethod) {
isDisabled = !checkMethod({
row: row
});
}
if (treeConfig) {
indeterminate = $table.findRowIndexOf(treeIndeterminates, row) > -1;
}
}
var checkboxParams = _objectSpread(_objectSpread({}, params), {}, {
checked: isChecked,
disabled: isDisabled,
visible: isVisible,
indeterminate: indeterminate
});
if (checkboxSlot) {
return $table.callSlot(checkboxSlot, checkboxParams, h);
}
var checkVNs = [];
if (isVisible) {
checkVNs.push(h('span', {
"class": ['vxe-checkbox--icon', indeterminate ? _conf["default"].icon.TABLE_CHECKBOX_INDETERMINATE : isChecked ? _conf["default"].icon.TABLE_CHECKBOX_CHECKED : _conf["default"].icon.TABLE_CHECKBOX_UNCHECKED]
}));
}
if (defaultSlot || labelField) {
checkVNs.push(h('span', {
"class": 'vxe-checkbox--label'
}, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams, h) : _xeUtils["default"].get(row, labelField)));
}
return [h('span', {
"class": ['vxe-cell--checkbox', {
'is--checked': isChecked,
'is--disabled': isDisabled,
'is--indeterminate': indeterminate
}],
on: on
}, checkVNs)];
},
renderTreeSelectionCell: function renderTreeSelectionCell(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderCheckboxCell(h, params));
},
renderCheckboxCellByProp: function renderCheckboxCellByProp(h, params) {
var $table = params.$table,
row = params.row,
column = params.column,
isHidden = params.isHidden;
var treeConfig = $table.treeConfig,
treeIndeterminates = $table.treeIndeterminates;
var _$table$checkboxOpts2 = $table.checkboxOpts,
labelField = _$table$checkboxOpts2.labelField,
checkField = _$table$checkboxOpts2.checkField,
halfField = _$table$checkboxOpts2.halfField,
checkMethod = _$table$checkboxOpts2.checkMethod,
visibleMethod = _$table$checkboxOpts2.visibleMethod;
var slots = column.slots;
var defaultSlot = slots ? slots["default"] : null;
var checkboxSlot = slots ? slots.checkbox : null;
var indeterminate = false;
var isChecked = false;
var isVisible = !visibleMethod || visibleMethod({
row: row
});
var isDisabled = !!checkMethod;
var on;
if (!isHidden) {
isChecked = _xeUtils["default"].get(row, checkField);
on = {
click: function click(evnt) {
if (!isDisabled && isVisible) {
$table.triggerCheckRowEvent(evnt, params, !isChecked);
}
}
};
if (checkMethod) {
isDisabled = !checkMethod({
row: row
});
}
if (treeConfig) {
indeterminate = $table.findRowIndexOf(treeIndeterminates, row) > -1;
}
}
var checkboxParams = _objectSpread(_objectSpread({}, params), {}, {
checked: isChecked,
disabled: isDisabled,
visible: isVisible,
indeterminate: indeterminate
});
if (checkboxSlot) {
return $table.callSlot(checkboxSlot, checkboxParams, h);
}
var checkVNs = [];
if (isVisible) {
checkVNs.push(h('span', {
"class": ['vxe-checkbox--icon', indeterminate ? _conf["default"].icon.TABLE_CHECKBOX_INDETERMINATE : isChecked ? _conf["default"].icon.TABLE_CHECKBOX_CHECKED : _conf["default"].icon.TABLE_CHECKBOX_UNCHECKED]
}));
}
if (defaultSlot || labelField) {
checkVNs.push(h('span', {
"class": 'vxe-checkbox--label'
}, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams, h) : _xeUtils["default"].get(row, labelField)));
}
return [h('span', {
"class": ['vxe-cell--checkbox', {
'is--checked': isChecked,
'is--disabled': isDisabled,
'is--indeterminate': halfField && !isChecked ? row[halfField] : indeterminate
}],
on: on
}, checkVNs)];
},
renderTreeSelectionCellByProp: function renderTreeSelectionCellByProp(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderCheckboxCellByProp(h, params));
},
/**
* 展开行
*/
renderExpandCell: function renderExpandCell(h, params) {
var $table = params.$table,
isHidden = params.isHidden,
row = params.row,
column = params.column;
var expandOpts = $table.expandOpts,
rowExpandeds = $table.rowExpandeds,
expandLazyLoadeds = $table.expandLazyLoadeds;
var lazy = expandOpts.lazy,
labelField = expandOpts.labelField,
iconLoaded = expandOpts.iconLoaded,
showIcon = expandOpts.showIcon,
iconOpen = expandOpts.iconOpen,
iconClose = expandOpts.iconClose,
visibleMethod = expandOpts.visibleMethod;
var slots = column.slots;
var defaultSlot = slots ? slots["default"] : null;
var isAceived = false;
var isLazyLoaded = false;
if (slots && slots.icon) {
return $table.callSlot(slots.icon, params, h);
}
if (!isHidden) {
isAceived = $table.findRowIndexOf(rowExpandeds, params.row) > -1;
if (lazy) {
isLazyLoaded = $table.findRowIndexOf(expandLazyLoadeds, row) > -1;
}
}
return [showIcon && (!visibleMethod || visibleMethod(params)) ? h('span', {
"class": ['vxe-table--expanded', {
'is--active': isAceived
}],
on: {
click: function click(evnt) {
$table.triggerRowExpandEvent(evnt, params);
}
}
}, [h('i', {
"class": ['vxe-table--expand-btn', isLazyLoaded ? iconLoaded || _conf["default"].icon.TABLE_EXPAND_LOADED : isAceived ? iconOpen || _conf["default"].icon.TABLE_EXPAND_OPEN : iconClose || _conf["default"].icon.TABLE_EXPAND_CLOSE]
})]) : null, defaultSlot || labelField ? h('span', {
"class": 'vxe-table--expand-label'
}, defaultSlot ? $table.callSlot(defaultSlot, params, h) : _xeUtils["default"].get(row, labelField)) : null];
},
renderExpandData: function renderExpandData(h, params) {
var $table = params.$table,
column = params.column;
var slots = column.slots,
contentRender = column.contentRender;
if (slots && slots.content) {
return $table.callSlot(slots.content, params, h);
}
if (contentRender) {
var compConf = _vXETable["default"].renderer.get(contentRender.name);
if (compConf && compConf.renderExpand) {
return (0, _vn.getSlotVNs)(compConf.renderExpand.call($table, h, contentRender, params));
}
}
return [];
},
/**
* HTML 标签
*/
renderHTMLCell: function renderHTMLCell(h, params) {
var $table = params.$table,
column = params.column;
var slots = column.slots;
if (slots && slots["default"]) {
return $table.callSlot(slots["default"], params, h);
}
return [h('span', {
"class": 'vxe-cell--html',
domProps: {
innerHTML: getDefaultCellLabel(params)
}
})];
},
renderTreeHTMLCell: function renderTreeHTMLCell(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderHTMLCell(h, params));
},
/**
* 排序和筛选
*/
renderSortAndFilterHeader: function renderSortAndFilterHeader(h, params) {
return Cell.renderDefaultHeader(h, params).concat(Cell.renderSortIcon(h, params)).concat(Cell.renderFilterIcon(h, params));
},
/**
* 排序
*/
renderSortHeader: function renderSortHeader(h, params) {
return Cell.renderDefaultHeader(h, params).concat(Cell.renderSortIcon(h, params));
},
renderSortIcon: function renderSortIcon(h, params) {
var $table = params.$table,
column = params.column;
var _$table$sortOpts = $table.sortOpts,
showIcon = _$table$sortOpts.showIcon,
iconAsc = _$table$sortOpts.iconAsc,
iconDesc = _$table$sortOpts.iconDesc;
return showIcon ? [h('span', {
"class": 'vxe-cell--sort'
}, [h('i', {
"class": ['vxe-sort--asc-btn', iconAsc || _conf["default"].icon.TABLE_SORT_ASC, {
'sort--active': column.order === 'asc'
}],
attrs: {
title: _conf["default"].i18n('vxe.table.sortAsc')
},
on: {
click: function click(evnt) {
$table.triggerSortEvent(evnt, column, 'asc');
}
}
}), h('i', {
"class": ['vxe-sort--desc-btn', iconDesc || _conf["default"].icon.TABLE_SORT_DESC, {
'sort--active': column.order === 'desc'
}],
attrs: {
title: _conf["default"].i18n('vxe.table.sortDesc')
},
on: {
click: function click(evnt) {
$table.triggerSortEvent(evnt, column, 'desc');
}
}
})])] : [];
},
/**
* 筛选
*/
renderFilterHeader: function renderFilterHeader(h, params) {
return Cell.renderDefaultHeader(h, params).concat(Cell.renderFilterIcon(h, params));
},
renderFilterIcon: function renderFilterIcon(h, params) {
var $table = params.$table,
column = params.column,
hasFilter = params.hasFilter;
var filterStore = $table.filterStore,
filterOpts = $table.filterOpts;
var showIcon = filterOpts.showIcon,
iconNone = filterOpts.iconNone,
iconMatch = filterOpts.iconMatch;
return showIcon ? [h('span', {
"class": ['vxe-cell--filter', {
'is--active': filterStore.visible && filterStore.column === column
}]
}, [h('i', {
"class": ['vxe-filter--btn', hasFilter ? iconMatch || _conf["default"].icon.TABLE_FILTER_MATCH : iconNone || _conf["default"].icon.TABLE_FILTER_NONE],
attrs: {
title: _conf["default"].i18n('vxe.table.filter')
},
on: {
click: function click(evnt) {
$table.triggerFilterEvent(evnt, params.column, params);
}
}
})])] : [];
},
/**
* 可编辑
*/
renderEditHeader: function renderEditHeader(h, params) {
var $table = params.$table,
column = params.column;
var editConfig = $table.editConfig,
editRules = $table.editRules,
editOpts = $table.editOpts;
var sortable = column.sortable,
remoteSort = column.remoteSort,
filters = column.filters,
editRender = column.editRender;
var isRequired = false;
if (editRules) {
var columnRules = _xeUtils["default"].get(editRules, column.field);
if (columnRules) {
isRequired = columnRules.some(function (rule) {
return rule.required;
});
}
}
return ((0, _utils.isEnableConf)(editConfig) ? [isRequired && editOpts.showAsterisk ? h('i', {
"class": 'vxe-cell--required-icon'
}) : null, (0, _utils.isEnableConf)(editRender) && editOpts.showIcon ? h('i', {
"class": ['vxe-cell--edit-icon', editOpts.icon || _conf["default"].icon.TABLE_EDIT]
}) : null] : []).concat(Cell.renderDefaultHeader(h, params)).concat(sortable || remoteSort ? Cell.renderSortIcon(h, params) : []).concat(filters ? Cell.renderFilterIcon(h, params) : []);
},
// 行格编辑模式
renderRowEdit: function renderRowEdit(h, params) {
var $table = params.$table,
column = params.column;
var editRender = column.editRender;
var actived = $table.editStore.actived;
return Cell.runRenderer(h, params, this, (0, _utils.isEnableConf)(editRender) && actived && actived.row === params.row);
},
renderTreeRowEdit: function renderTreeRowEdit(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderRowEdit(h, params));
},
// 单元格编辑模式
renderCellEdit: function renderCellEdit(h, params) {
var $table = params.$table,
column = params.column;
var editRender = column.editRender;
var actived = $table.editStore.actived;
return Cell.runRenderer(h, params, this, (0, _utils.isEnableConf)(editRender) && actived && actived.row === params.row && actived.column === params.column);
},
renderTreeCellEdit: function renderTreeCellEdit(h, params) {
return Cell.renderTreeIcon(h, params, Cell.renderCellEdit(h, params));
},
runRenderer: function runRenderer(h, params, _vm, isEdit) {
var $table = params.$table,
column = params.column;
var slots = column.slots,
editRender = column.editRender,
formatter = column.formatter;
var compConf = _vXETable["default"].renderer.get(editRender.name);
if (isEdit) {
if (slots && slots.edit) {
return $table.callSlot(slots.edit, params, h);
}
if (compConf && compConf.renderEdit) {
return (0, _vn.getSlotVNs)(compConf.renderEdit.call($table, h, editRender, Object.assign({
$type: 'edit'
}, params)));
}
return [];
}
if (slots && slots["default"]) {
return $table.callSlot(slots["default"], params, h);
}
if (formatter) {
return [h('span', {
"class": 'vxe-cell--label'
}, [getDefaultCellLabel(params)])];
}
return Cell.renderDefaultCell.call(_vm, h, params);
}
};
exports.Cell = Cell;
var _default = Cell;
exports["default"] = _default;