vxe-table-plugin-element
Version:
基于 vxe-table 的表格适配插件,用于兼容 element-ui 组件库
808 lines (807 loc) • 36.1 kB
JavaScript
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define("vxe-table-plugin-element", ["exports", "vue", "xe-utils", "dayjs"], factory);
} else if (typeof exports !== "undefined") {
factory(exports, require("vue"), require("xe-utils"), require("dayjs"));
} else {
var mod = {
exports: {}
};
factory(mod.exports, global.Vue, global.XEUtils, global.dayjs);
global.VXETablePluginElement = mod.exports;
}
})(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _vue, _xeUtils, _dayjs) {
"use strict";
Object.defineProperty(_exports, "__esModule", {
value: true
});
_exports["default"] = _exports.VXETablePluginElement = void 0;
_xeUtils = _interopRequireDefault(_xeUtils);
_dayjs = _interopRequireDefault(_dayjs);
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
var vxetable;
function isEmptyValue(cellValue) {
return cellValue === null || cellValue === undefined || cellValue === '';
}
function getOnName(type) {
return 'on' + type.substring(0, 1).toLocaleUpperCase() + type.substring(1);
}
function getModelProp(renderOpts) {
return 'modelValue';
}
function getModelEvent(renderOpts) {
return 'update:modelValue';
}
function getChangeEvent(renderOpts) {
var type = 'change';
switch (renderOpts.name) {
case 'ElAutocomplete':
type = 'select';
break;
case 'ElInput':
case 'ElInputNumber':
type = 'input';
break;
}
return type;
}
function toDayStringDate(value, format) {
return (0, _dayjs["default"])(value, format).date;
}
function toDayDateString(date, format) {
return (0, _dayjs["default"])(date).format(format);
}
function parseDate(value, props) {
return value && props.valueFormat ? toDayStringDate(value, props.valueFormat) : value;
}
function getFormatDate(value, props, defaultFormat) {
return value ? toDayDateString(parseDate(value, props), props.format || defaultFormat) : value;
}
function getFormatDates(values, props, separator, defaultFormat) {
return _xeUtils["default"].map(values, function (date) {
return getFormatDate(date, props, defaultFormat);
}).join(separator);
}
function equalDaterange(cellValue, data, props, defaultFormat) {
cellValue = getFormatDate(cellValue, props, defaultFormat);
return cellValue >= getFormatDate(data[0], props, defaultFormat) && cellValue <= getFormatDate(data[1], props, defaultFormat);
}
function getCellEditFilterProps(renderOpts, params, value, defaultProps) {
return _xeUtils["default"].assign({}, defaultProps, renderOpts.props, _defineProperty({}, getModelProp(renderOpts), value));
}
function getItemProps(renderOpts, params, value, defaultProps) {
return _xeUtils["default"].assign({}, defaultProps, renderOpts.props, _defineProperty({}, getModelProp(renderOpts), value));
}
function formatText(cellValue) {
return '' + (isEmptyValue(cellValue) ? '' : cellValue);
}
function getCellLabelVNs(renderOpts, params, cellLabel) {
var placeholder = renderOpts.placeholder;
return [(0, _vue.h)('span', {
"class": 'vxe-cell--label'
}, placeholder && isEmptyValue(cellLabel) ? [(0, _vue.h)('span', {
"class": 'vxe-cell--placeholder'
}, formatText(vxetable._t(placeholder)))] : formatText(cellLabel))];
}
function getOns(renderOpts, params, inputFunc, changeFunc) {
var events = renderOpts.events;
var modelEvent = getModelEvent(renderOpts);
var changeEvent = getChangeEvent(renderOpts);
var isSameEvent = changeEvent === modelEvent;
var ons = {};
_xeUtils["default"].objectEach(events, function (func, key) {
ons[getOnName(key)] = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
func.apply(void 0, [params].concat(args));
};
});
if (inputFunc) {
ons[getOnName(modelEvent)] = function (targetEvnt) {
inputFunc(targetEvnt);
if (events && events[modelEvent]) {
events[modelEvent](params, targetEvnt);
}
if (isSameEvent && changeFunc) {
changeFunc(targetEvnt);
}
};
}
if (!isSameEvent && changeFunc) {
ons[getOnName(changeEvent)] = function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
changeFunc.apply(void 0, args);
if (events && events[changeEvent]) {
events[changeEvent].apply(events, [params].concat(args));
}
};
}
return ons;
}
function getEditOns(renderOpts, params) {
var $table = params.$table,
row = params.row,
column = params.column;
return getOns(renderOpts, params, function (value) {
// 处理 model 值双向绑定
_xeUtils["default"].set(row, column.field, value);
}, function () {
// 处理 change 事件相关逻辑
$table.updateStatus(params);
});
}
function getFilterOns(renderOpts, params, option, changeFunc) {
return getOns(renderOpts, params, function (value) {
// 处理 model 值双向绑定
option.data = value;
}, changeFunc);
}
function getItemOns(renderOpts, params) {
var $form = params.$form,
data = params.data,
field = params.field;
return getOns(renderOpts, params, function (value) {
// 处理 model 值双向绑定
_xeUtils["default"].set(data, field, value);
}, function () {
// 处理 change 事件相关逻辑
$form.updateStatus(params);
});
}
function matchCascaderData(index, list, values, labels) {
var val = values[index];
if (list && values.length > index) {
_xeUtils["default"].each(list, function (item) {
if (item.value === val) {
labels.push(item.label);
matchCascaderData(++index, item.children, values, labels);
}
});
}
}
function getSelectCellValue(renderOpts, params) {
var _renderOpts$options = renderOpts.options,
options = _renderOpts$options === void 0 ? [] : _renderOpts$options,
optionGroups = renderOpts.optionGroups,
_renderOpts$props = renderOpts.props,
props = _renderOpts$props === void 0 ? {} : _renderOpts$props,
_renderOpts$optionPro = renderOpts.optionProps,
optionProps = _renderOpts$optionPro === void 0 ? {} : _renderOpts$optionPro,
_renderOpts$optionGro = renderOpts.optionGroupProps,
optionGroupProps = _renderOpts$optionGro === void 0 ? {} : _renderOpts$optionGro;
var $table = params.$table,
rowid = params.rowid,
row = params.row,
column = params.column;
var filterable = props.filterable,
multiple = props.multiple;
var labelProp = optionProps.label || 'label';
var valueProp = optionProps.value || 'value';
var groupOptions = optionGroupProps.options || 'options';
var cellValue = _xeUtils["default"].get(row, column.field);
var colid = column.id;
var cellData;
if (filterable) {
var internalData = $table.internalData;
var fullAllDataRowIdData = internalData.fullAllDataRowIdData;
var rest = fullAllDataRowIdData[rowid];
if (rest) {
cellData = rest.cellData;
if (!cellData) {
cellData = rest.cellData = {};
}
}
if (rest && cellData[colid] && cellData[colid].value === cellValue) {
return cellData[colid].label;
}
}
if (!isEmptyValue(cellValue)) {
var selectlabel = _xeUtils["default"].map(multiple ? cellValue : [cellValue], optionGroups ? function (value) {
var selectItem;
for (var index = 0; index < optionGroups.length; index++) {
selectItem = _xeUtils["default"].find(optionGroups[index][groupOptions], function (item) {
return item[valueProp] === value;
});
if (selectItem) {
break;
}
}
return selectItem ? selectItem[labelProp] : value;
} : function (value) {
var selectItem = _xeUtils["default"].find(options, function (item) {
return item[valueProp] === value;
});
return selectItem ? selectItem[labelProp] : value;
}).join(', ');
if (cellData && options && options.length) {
cellData[colid] = {
value: cellValue,
label: selectlabel
};
}
return selectlabel;
}
return '';
}
function getCascaderCellValue(renderOpts, params) {
var _renderOpts$props2 = renderOpts.props,
props = _renderOpts$props2 === void 0 ? {} : _renderOpts$props2;
var row = params.row,
column = params.column;
var cellValue = _xeUtils["default"].get(row, column.field);
var values = cellValue || [];
var labels = [];
matchCascaderData(0, props.options, values, labels);
return (props.showAllLevels === false ? labels.slice(labels.length - 1, labels.length) : labels).join(" ".concat(props.separator || '/', " "));
}
function getDatePickerCellValue(renderOpts, params) {
var _renderOpts$props3 = renderOpts.props,
props = _renderOpts$props3 === void 0 ? {} : _renderOpts$props3;
var row = params.row,
column = params.column;
var _props$rangeSeparator = props.rangeSeparator,
rangeSeparator = _props$rangeSeparator === void 0 ? '-' : _props$rangeSeparator;
var cellValue = _xeUtils["default"].get(row, column.field);
switch (props.type) {
case 'week':
cellValue = getFormatDate(cellValue, props, 'YYYYwWW');
break;
case 'month':
cellValue = getFormatDate(cellValue, props, 'YYYY-MM');
break;
case 'year':
cellValue = getFormatDate(cellValue, props, 'YYYY');
break;
case 'dates':
cellValue = getFormatDates(cellValue, props, ', ', 'YYYY-MM-DD');
break;
case 'daterange':
cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM-DD');
break;
case 'datetimerange':
cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM-DD HH:ss:mm');
break;
case 'monthrange':
cellValue = getFormatDates(cellValue, props, " ".concat(rangeSeparator, " "), 'YYYY-MM');
break;
default:
cellValue = getFormatDate(cellValue, props, 'YYYY-MM-DD');
}
return cellValue;
}
function getTimePickerCellValue(renderOpts, params) {
var _renderOpts$props4 = renderOpts.props,
props = _renderOpts$props4 === void 0 ? {} : _renderOpts$props4;
var row = params.row,
column = params.column;
var isRange = props.isRange,
_props$format = props.format,
format = _props$format === void 0 ? 'hh:mm:ss' : _props$format,
_props$rangeSeparator2 = props.rangeSeparator,
rangeSeparator = _props$rangeSeparator2 === void 0 ? '-' : _props$rangeSeparator2;
var cellValue = _xeUtils["default"].get(row, column.field);
if (cellValue && isRange) {
cellValue = _xeUtils["default"].map(cellValue, function (date) {
return toDayDateString(parseDate(date, props), format);
}).join(" ".concat(rangeSeparator, " "));
}
return toDayDateString(parseDate(cellValue, props), format);
}
function createEditRender(defaultProps) {
return function (renderOpts, params) {
var row = params.row,
column = params.column;
var name = renderOpts.name,
attrs = renderOpts.attrs;
var cellValue = _xeUtils["default"].get(row, column.field);
return [(0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, cellValue, defaultProps)), getEditOns(renderOpts, params)))];
};
}
function defaultButtonEditRender(renderOpts, params) {
var attrs = renderOpts.attrs;
return [(0, _vue.h)((0, _vue.resolveComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread({}, attrs), getCellEditFilterProps(renderOpts, params, null)), getOns(renderOpts, params)), cellText(renderOpts.content))];
}
function defaultButtonsEditRender(renderOpts, params) {
var children = renderOpts.children;
if (children) {
return children.map(function (childRenderOpts) {
return defaultButtonEditRender(childRenderOpts, params)[0];
});
}
return [];
}
function createFilterRender(defaultProps) {
return function (renderOpts, params) {
var column = params.column;
var name = renderOpts.name,
attrs = renderOpts.attrs;
return [(0, _vue.h)('div', {
"class": 'vxe-table--filter-element-wrapper'
}, column.filters.map(function (option, oIndex) {
var optionValue = option.data;
return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({
key: oIndex
}, attrs), getCellEditFilterProps(renderOpts, params, optionValue, defaultProps)), getFilterOns(renderOpts, params, option, function () {
// 处理 change 事件相关逻辑
handleConfirmFilter(params, !!option.data, option);
})));
}))];
};
}
function handleConfirmFilter(params, checked, option) {
var $panel = params.$panel;
$panel.changeOption(null, checked, option);
}
/**
* 模糊匹配
* @param params
*/
function defaultFuzzyFilterMethod(params) {
var option = params.option,
row = params.row,
column = params.column;
var data = option.data;
var cellValue = _xeUtils["default"].get(row, column.field);
return _xeUtils["default"].toValueString(cellValue).indexOf(data) > -1;
}
/**
* 精确匹配
* @param params
*/
function defaultExactFilterMethod(params) {
var option = params.option,
row = params.row,
column = params.column;
var data = option.data;
var cellValue = _xeUtils["default"].get(row, column.field);
/* eslint-disable eqeqeq */
return cellValue === data;
}
function renderOptions(options, optionProps) {
var labelProp = optionProps.label || 'label';
var valueProp = optionProps.value || 'value';
return _xeUtils["default"].map(options, function (item, oIndex) {
return (0, _vue.h)((0, _vue.resolveComponent)('el-option'), {
key: oIndex,
value: item[valueProp],
label: item[labelProp],
disabled: item.disabled
});
});
}
function cellText(cellValue) {
return [formatText(cellValue)];
}
function createFormItemRender(defaultProps) {
return function (renderOpts, params) {
var data = params.data,
field = params.field;
var name = renderOpts.name;
var attrs = renderOpts.attrs;
var itemValue = _xeUtils["default"].get(data, field);
return [(0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({}, attrs), getItemProps(renderOpts, params, itemValue, defaultProps)), getItemOns(renderOpts, params)))];
};
}
function defaultButtonItemRender(renderOpts, params) {
var attrs = renderOpts.attrs;
var props = getItemProps(renderOpts, params, null);
return [(0, _vue.h)((0, _vue.resolveComponent)('el-button'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), getOns(renderOpts, params)), {
"default": function _default() {
return cellText(renderOpts.content || props.content);
}
})];
}
function defaultButtonsItemRender(renderOpts, params) {
var children = renderOpts.children;
if (children) {
return children.map(function (childRenderOpts) {
return defaultButtonItemRender(childRenderOpts, params)[0];
});
}
return [];
}
function createExportMethod(getExportCellValue) {
return function (params) {
var row = params.row,
column = params.column,
options = params.options;
return options && options.original ? _xeUtils["default"].get(row, column.field) : getExportCellValue(column.editRender || column.cellRender, params);
};
}
function createFormItemRadioAndCheckboxRender() {
return function (renderOpts, params) {
var name = renderOpts.name,
_renderOpts$options2 = renderOpts.options,
options = _renderOpts$options2 === void 0 ? [] : _renderOpts$options2,
_renderOpts$optionPro2 = renderOpts.optionProps,
optionProps = _renderOpts$optionPro2 === void 0 ? {} : _renderOpts$optionPro2,
attrs = renderOpts.attrs;
var data = params.data,
field = params.field;
var labelProp = optionProps.label || 'label';
var valueProp = optionProps.value || 'value';
var itemValue = _xeUtils["default"].get(data, field);
return [(0, _vue.h)((0, _vue.resolveComponent)("".concat(name, "Group")), _objectSpread(_objectSpread(_objectSpread({}, attrs), getItemProps(renderOpts, params, itemValue)), getItemOns(renderOpts, params)), {
"default": function _default() {
return options.map(function (option, oIndex) {
return (0, _vue.h)((0, _vue.resolveComponent)(name), {
key: oIndex,
label: option[valueProp],
disabled: option.disabled
}, {
"default": function _default() {
return cellText(option[labelProp]);
}
});
});
}
})];
};
}
/**
* 检查触发源是否属于目标节点
*/
function getEventTargetNode(evnt, container, className) {
var targetElem;
var target = evnt.target;
while (target && target.nodeType && target !== document) {
if (className && target.className && target.className.split && target.className.split(' ').indexOf(className) > -1) {
targetElem = target;
} else if (target === container) {
return {
flag: className ? !!targetElem : true,
container: container,
targetElem: targetElem
};
}
target = target.parentNode;
}
return {
flag: false
};
}
/**
* 事件兼容性处理
*/
function handleClearEvent(params) {
var $event = params.$event;
var bodyElem = document.body;
if (
// 远程搜索
getEventTargetNode($event, bodyElem, 'el-autocomplete-suggestion').flag ||
// 下拉框
getEventTargetNode($event, bodyElem, 'el-select-dropdown').flag ||
// 级联
getEventTargetNode($event, bodyElem, 'el-cascader__dropdown').flag || getEventTargetNode($event, bodyElem, 'el-cascader-menus').flag ||
// 日期
getEventTargetNode($event, bodyElem, 'el-time-panel').flag || getEventTargetNode($event, bodyElem, 'el-picker-panel').flag ||
// 颜色
getEventTargetNode($event, bodyElem, 'el-color-dropdown').flag) {
return false;
}
}
/**
* 基于 vxe-table 的表格适配插件,用于兼容 element-ui 组件库
*/
var VXETablePluginElement = _exports.VXETablePluginElement = {
install: function install(vxetable) {
// 检查版本
if (!/^(4)\./.test(vxetable.version) && !/v4/i.test(vxetable.v)) {
console.error('[vxe-table-plugin-element 4.x] Version vxe-table 4.x is required');
}
vxetable.renderer.mixin({
ElAutocomplete: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItemContent: createFormItemRender()
},
ElInput: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultFuzzyFilterMethod,
renderItemContent: createFormItemRender()
},
ElInputNumber: {
autofocus: 'input.el-input__inner',
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultFuzzyFilterMethod,
renderItemContent: createFormItemRender()
},
ElSelect: {
renderEdit: function renderEdit(renderOpts, params) {
var _renderOpts$options3 = renderOpts.options,
options = _renderOpts$options3 === void 0 ? [] : _renderOpts$options3,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro3 = renderOpts.optionProps,
optionProps = _renderOpts$optionPro3 === void 0 ? {} : _renderOpts$optionPro3,
_renderOpts$optionGro2 = renderOpts.optionGroupProps,
optionGroupProps = _renderOpts$optionGro2 === void 0 ? {} : _renderOpts$optionGro2;
var row = params.row,
column = params.column;
var attrs = renderOpts.attrs;
var cellValue = _xeUtils["default"].get(row, column.field);
var props = getCellEditFilterProps(renderOpts, params, cellValue);
var ons = getEditOns(renderOpts, params);
if (optionGroups) {
var groupOptions = optionGroupProps.options || 'options';
var groupLabel = optionGroupProps.label || 'label';
return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), {
"default": function _default() {
return _xeUtils["default"].map(optionGroups, function (group, gIndex) {
return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), {
key: gIndex,
label: group[groupLabel]
}, {
"default": function _default() {
return renderOptions(group[groupOptions], optionProps);
}
});
});
}
})];
}
return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, props), attrs), ons), {
"default": function _default() {
return renderOptions(options, optionProps);
}
})];
},
renderCell: function renderCell(renderOpts, params) {
return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
},
renderFilter: function renderFilter(renderOpts, params) {
var _renderOpts$options4 = renderOpts.options,
options = _renderOpts$options4 === void 0 ? [] : _renderOpts$options4,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro4 = renderOpts.optionProps,
optionProps = _renderOpts$optionPro4 === void 0 ? {} : _renderOpts$optionPro4,
_renderOpts$optionGro3 = renderOpts.optionGroupProps,
optionGroupProps = _renderOpts$optionGro3 === void 0 ? {} : _renderOpts$optionGro3;
var groupOptions = optionGroupProps.options || 'options';
var groupLabel = optionGroupProps.label || 'label';
var column = params.column;
var attrs = renderOpts.attrs;
return [(0, _vue.h)('div', {
"class": 'vxe-table--filter-element-wrapper'
}, optionGroups ? column.filters.map(function (option, oIndex) {
var optionValue = option.data;
var props = getCellEditFilterProps(renderOpts, params, optionValue);
return (0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({
key: oIndex
}, attrs), props), getFilterOns(renderOpts, params, option, function () {
// 处理 change 事件相关逻辑
handleConfirmFilter(params, props.multiple ? option.data && option.data.length > 0 : !_xeUtils["default"].eqNull(option.data), option);
})), {
"default": function _default() {
return _xeUtils["default"].map(optionGroups, function (group, gIndex) {
return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), {
key: gIndex,
label: group[groupLabel]
}, {
"default": function _default() {
return renderOptions(group[groupOptions], optionProps);
}
});
});
}
});
}) : column.filters.map(function (option, oIndex) {
var optionValue = option.data;
var props = getCellEditFilterProps(renderOpts, params, optionValue);
return (0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({
key: oIndex
}, attrs), props), getFilterOns(renderOpts, params, option, function () {
// 处理 change 事件相关逻辑
handleConfirmFilter(params, props.multiple ? option.data && option.data.length > 0 : !_xeUtils["default"].eqNull(option.data), option);
})), {
"default": function _default() {
return renderOptions(options, optionProps);
}
});
}))];
},
defaultFilterMethod: function defaultFilterMethod(params) {
var option = params.option,
row = params.row,
column = params.column;
var data = option.data;
var field = column.field,
renderOpts = column.filterRender;
var _renderOpts$props5 = renderOpts.props,
props = _renderOpts$props5 === void 0 ? {} : _renderOpts$props5;
var cellValue = _xeUtils["default"].get(row, field);
if (props.multiple) {
if (_xeUtils["default"].isArray(cellValue)) {
return _xeUtils["default"].includeArrays(cellValue, data);
}
return data.indexOf(cellValue) > -1;
}
/* eslint-disable eqeqeq */
return cellValue == data;
},
renderItemContent: function renderItemContent(renderOpts, params) {
var _renderOpts$options5 = renderOpts.options,
options = _renderOpts$options5 === void 0 ? [] : _renderOpts$options5,
optionGroups = renderOpts.optionGroups,
_renderOpts$optionPro5 = renderOpts.optionProps,
optionProps = _renderOpts$optionPro5 === void 0 ? {} : _renderOpts$optionPro5,
_renderOpts$optionGro4 = renderOpts.optionGroupProps,
optionGroupProps = _renderOpts$optionGro4 === void 0 ? {} : _renderOpts$optionGro4;
var data = params.data,
field = params.field;
var attrs = renderOpts.attrs;
var itemValue = _xeUtils["default"].get(data, field);
var props = getItemProps(renderOpts, params, itemValue);
var ons = getItemOns(renderOpts, params);
if (optionGroups) {
var groupOptions = optionGroupProps.options || 'options';
var groupLabel = optionGroupProps.label || 'label';
return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), {
"default": function _default() {
return _xeUtils["default"].map(optionGroups, function (group, gIndex) {
return (0, _vue.h)((0, _vue.resolveComponent)('el-option-group'), {
label: group[groupLabel],
key: gIndex
}, {
"default": function _default() {
return renderOptions(group[groupOptions], optionProps);
}
});
});
}
})];
}
return [(0, _vue.h)((0, _vue.resolveComponent)('el-select'), _objectSpread(_objectSpread(_objectSpread({}, attrs), props), ons), {
"default": function _default() {
return renderOptions(options, optionProps);
}
})];
},
exportMethod: createExportMethod(getSelectCellValue)
},
ElCascader: {
renderEdit: createEditRender(),
renderCell: function renderCell(renderOpts, params) {
return getCellLabelVNs(renderOpts, params, getCascaderCellValue(renderOpts, params));
},
renderItemContent: createFormItemRender(),
exportMethod: createExportMethod(getCascaderCellValue)
},
ElDatePicker: {
renderEdit: createEditRender(),
renderCell: function renderCell(renderOpts, params) {
return getCellLabelVNs(renderOpts, params, getDatePickerCellValue(renderOpts, params));
},
renderFilter: function renderFilter(renderOpts, params) {
var column = params.column;
var name = renderOpts.name,
attrs = renderOpts.attrs;
return [(0, _vue.h)('div', {
"class": 'vxe-table--filter-element-wrapper'
}, column.filters.map(function (option, oIndex) {
var optionValue = option.data;
return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({
key: oIndex
}, attrs), getCellEditFilterProps(renderOpts, params, optionValue)), getFilterOns(renderOpts, params, option, function () {
// 处理 change 事件相关逻辑
handleConfirmFilter(params, !!option.data, option);
})));
}))];
},
defaultFilterMethod: function defaultFilterMethod(params) {
var option = params.option,
row = params.row,
column = params.column;
var data = option.data;
var renderOpts = column.filterRender;
var _renderOpts$props6 = renderOpts.props,
props = _renderOpts$props6 === void 0 ? {} : _renderOpts$props6;
var cellValue = _xeUtils["default"].get(row, column.field);
if (data) {
switch (props.type) {
case 'daterange':
return equalDaterange(cellValue, data, props, 'YYYY-MM-DD');
case 'datetimerange':
return equalDaterange(cellValue, data, props, 'YYYY-MM-DD HH:ss:mm');
case 'monthrange':
return equalDaterange(cellValue, data, props, 'YYYY-MM');
default:
return cellValue === data;
}
}
return false;
},
renderItemContent: createFormItemRender(),
exportMethod: createExportMethod(getDatePickerCellValue)
},
ElTimePicker: {
renderEdit: createEditRender(),
renderCell: function renderCell(renderOpts, params) {
return getCellLabelVNs(renderOpts, params, getTimePickerCellValue(renderOpts, params));
},
renderItemContent: createFormItemRender(),
exportMethod: createExportMethod(getTimePickerCellValue)
},
ElTimeSelect: {
renderEdit: createEditRender(),
renderItemContent: createFormItemRender()
},
ElRate: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItemContent: createFormItemRender()
},
ElSwitch: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: function renderFilter(renderOpts, params) {
var column = params.column;
var name = renderOpts.name,
attrs = renderOpts.attrs;
return [(0, _vue.h)('div', {
"class": 'vxe-table--filter-element-wrapper'
}, column.filters.map(function (option, oIndex) {
var optionValue = option.data;
return (0, _vue.h)((0, _vue.resolveComponent)(name), _objectSpread(_objectSpread(_objectSpread({
key: oIndex
}, attrs), getCellEditFilterProps(renderOpts, params, optionValue)), getFilterOns(renderOpts, params, option, function () {
// 处理 change 事件相关逻辑
handleConfirmFilter(params, _xeUtils["default"].isBoolean(option.data), option);
})));
}))];
},
defaultFilterMethod: defaultExactFilterMethod,
renderItemContent: createFormItemRender()
},
ElSlider: {
renderDefault: createEditRender(),
renderEdit: createEditRender(),
renderFilter: createFilterRender(),
defaultFilterMethod: defaultExactFilterMethod,
renderItemContent: createFormItemRender()
},
ElRadio: {
renderItemContent: createFormItemRadioAndCheckboxRender()
},
ElCheckbox: {
renderItemContent: createFormItemRadioAndCheckboxRender()
},
ElButton: {
renderDefault: defaultButtonEditRender,
renderItemContent: defaultButtonItemRender
},
ElButtons: {
renderDefault: defaultButtonsEditRender,
renderItemContent: defaultButtonsItemRender
}
});
vxetable.interceptor.add('event.clearFilter', handleClearEvent);
vxetable.interceptor.add('event.clearEdit', handleClearEvent);
vxetable.interceptor.add('event.clearAreas', handleClearEvent);
// 兼容老版本
vxetable.interceptor.add('event.clearActived', handleClearEvent);
}
};
if (typeof window !== 'undefined' && window.VXETable && window.VXETable.use) {
window.VXETable.use(VXETablePluginElement);
}
var _default2 = _exports["default"] = VXETablePluginElement;
});