ant-design-vue
Version:
An enterprise-class UI design language and Vue-based implementation
155 lines (134 loc) • 6.63 kB
JavaScript
"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _vueTypes = _interopRequireWildcard(require("../../_util/vue-types"));
var _ExpandIcon = _interopRequireDefault(require("./ExpandIcon"));
var _BaseMixin = _interopRequireDefault(require("../../_util/BaseMixin"));
var _propsUtil = require("../../_util/props-util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
var ExpandableRow = {
mixins: [_BaseMixin.default],
name: 'ExpandableRow',
inheritAttrs: false,
props: {
prefixCls: _vueTypes.default.string.isRequired,
rowKey: _vueTypes.default.oneOfType([_vueTypes.default.string, _vueTypes.default.number]).isRequired,
fixed: (0, _vueTypes.withUndefined)(_vueTypes.default.oneOfType([_vueTypes.default.string, _vueTypes.default.looseBool])),
record: _vueTypes.default.oneOfType([_vueTypes.default.object, _vueTypes.default.array]).isRequired,
indentSize: _vueTypes.default.number,
needIndentSpaced: _vueTypes.default.looseBool.isRequired,
expandRowByClick: _vueTypes.default.looseBool,
expandIconAsCell: _vueTypes.default.looseBool,
expandIconColumnIndex: _vueTypes.default.number,
childrenColumnName: _vueTypes.default.string,
expandedRowRender: _vueTypes.default.func,
expandIcon: _vueTypes.default.func // onExpandedChange: PropTypes.func.isRequired,
// onRowClick: PropTypes.func,
// children: PropTypes.func.isRequired,
},
setup: function setup(props) {
var store = (0, _vue.inject)('table-store', function () {
return {};
});
return {
expanded: (0, _vue.computed)(function () {
return store.expandedRowKeys.includes(props.rowKey);
})
};
},
beforeUnmount: function beforeUnmount() {
this.handleDestroy();
},
methods: {
hasExpandIcon: function hasExpandIcon(columnIndex) {
var _this$$props = this.$props,
expandRowByClick = _this$$props.expandRowByClick,
expandIcon = _this$$props.expandIcon;
if (this.tempExpandIconAsCell || columnIndex !== this.tempExpandIconColumnIndex) {
return false;
}
return !!expandIcon || !expandRowByClick;
},
handleExpandChange: function handleExpandChange(record, event) {
var expanded = this.expanded,
rowKey = this.rowKey;
this.__emit('expandedChange', !expanded, record, event, rowKey);
},
handleDestroy: function handleDestroy() {
var rowKey = this.rowKey,
record = this.record;
this.__emit('expandedChange', false, record, null, rowKey, true);
},
handleRowClick: function handleRowClick(record, index, event) {
var expandRowByClick = this.expandRowByClick;
if (expandRowByClick) {
this.handleExpandChange(record, event);
}
this.__emit('rowClick', record, index, event);
},
renderExpandIcon: function renderExpandIcon() {
var prefixCls = this.prefixCls,
expanded = this.expanded,
record = this.record,
needIndentSpaced = this.needIndentSpaced,
expandIcon = this.expandIcon;
if (expandIcon) {
return expandIcon({
prefixCls: prefixCls,
expanded: expanded,
record: record,
needIndentSpaced: needIndentSpaced,
expandable: this.expandable,
onExpand: this.handleExpandChange
});
}
return (0, _vue.createVNode)(_ExpandIcon.default, {
"expandable": this.expandable,
"prefixCls": prefixCls,
"onExpand": this.handleExpandChange,
"needIndentSpaced": needIndentSpaced,
"expanded": expanded,
"record": record
}, null);
},
renderExpandIconCell: function renderExpandIconCell(cells) {
if (!this.tempExpandIconAsCell) {
return;
}
var prefixCls = this.prefixCls;
cells.push((0, _vue.createVNode)("td", {
"class": "".concat(prefixCls, "-expand-icon-cell"),
"key": "rc-table-expand-icon-cell"
}, [this.renderExpandIcon()]));
}
},
render: function render() {
var childrenColumnName = this.childrenColumnName,
expandedRowRender = this.expandedRowRender,
indentSize = this.indentSize,
record = this.record,
fixed = this.fixed,
expanded = this.expanded;
this.tempExpandIconAsCell = fixed !== 'right' ? this.expandIconAsCell : false;
this.tempExpandIconColumnIndex = fixed !== 'right' ? this.expandIconColumnIndex : -1;
var childrenData = record[childrenColumnName];
this.expandable = !!(childrenData || expandedRowRender);
var expandableRowProps = {
indentSize: indentSize,
expanded: expanded,
hasExpandIcon: this.hasExpandIcon,
renderExpandIcon: this.renderExpandIcon,
renderExpandIconCell: this.renderExpandIconCell,
onRowClick: this.handleRowClick
};
return (0, _propsUtil.getSlot)(this, 'default', expandableRowProps);
}
};
var _default = ExpandableRow;
exports.default = _default;