@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
143 lines (120 loc) • 4.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _table = _interopRequireDefault(require("../../../table"));
var _lodashEs = require("lodash");
var _shared = require("@fe6/shared");
var _const = require("../const");
var _vueTypes = _interopRequireDefault(require("../../../_util/vue-types"));
var _useTableContext = require("../hooks/use-table-context");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var SUMMARY_ROW_KEY = '_row';
var SUMMARY_INDEX_KEY = '_index';
var _default = (0, _vue.defineComponent)({
name: 'TableProFooter',
props: {
summaryFunc: {
type: Function
},
summaryData: {
type: Array
},
scroll: {
type: Object
},
rowKey: _vueTypes.default.string.def('key')
},
setup: function setup(props) {
var table = (0, _useTableContext.useTableContext)();
var getDataSource = (0, _vue.computed)(function () {
var summaryFunc = props.summaryFunc,
summaryData = props.summaryData;
if (summaryData === null || summaryData === void 0 ? void 0 : summaryData.length) {
summaryData.forEach(function (item, i) {
return item[props.rowKey] = "".concat(i);
});
return summaryData;
}
if (!(0, _shared.isFunction)(summaryFunc)) {
return [];
}
var dataSource = (0, _vue.toRaw)((0, _vue.unref)(table.getDataSource()));
dataSource = summaryFunc(dataSource);
dataSource.forEach(function (item, i) {
item[props.rowKey] = "".concat(i);
});
return dataSource;
});
var getColumns = (0, _vue.computed)(function () {
var dataSource = (0, _vue.unref)(getDataSource);
var columns = (0, _lodashEs.cloneDeep)(table.getColumns());
var index = columns.findIndex(function (item) {
return item.flag === _const.INDEX_COLUMN_FLAG;
});
var hasRowSummary = dataSource.some(function (item) {
return Reflect.has(item, SUMMARY_ROW_KEY);
});
var hasIndexSummary = dataSource.some(function (item) {
return Reflect.has(item, SUMMARY_INDEX_KEY);
});
if (index !== -1) {
if (hasIndexSummary) {
columns[index].customRender = function (_ref) {
var record = _ref.record;
return record[SUMMARY_INDEX_KEY];
};
columns[index].ellipsis = false;
} else {
Reflect.deleteProperty(columns[index], 'customRender');
}
}
if (table.getRowSelection() && hasRowSummary) {
var isFixed = columns.some(function (col) {
return col.fixed === 'left';
});
columns.unshift(_extends(_extends({
width: 60,
title: 'selection',
key: 'selectionKey',
align: 'center'
}, isFixed ? {
fixed: 'left'
} : {}), {
customRender: function customRender(_ref2) {
var record = _ref2.record;
return record[SUMMARY_ROW_KEY];
}
}));
}
return columns;
});
return {
getColumns: getColumns,
getDataSource: getDataSource
};
},
render: function render() {
var _this = this;
var footerNode = null;
if (this.summaryFunc || this.summaryData) {
footerNode = (0, _vue.createVNode)(_table.default, {
"show-header": false,
"bordered": false,
"pagination": false,
"data-source": this.getDataSource,
"row-key": function rowKey(r) {
return r[_this.rowKey];
},
"columns": this.getColumns,
"table-layout": "fixed",
"scroll": this.scroll
}, null);
}
return footerNode;
}
});
exports.default = _default;