UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

143 lines (120 loc) 4.15 kB
"use strict"; 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;