@visactor/vue-vtable
Version:
The vue version of VTable
97 lines (93 loc) • 4.17 kB
JavaScript
;
var stringUtils = require('./stringUtils.js');
var customLayoutUtils = require('./customLayoutUtils.js');
var util = require('../edit/util.js');
function extractPivotSlotOptions(vnodes) {
const options = {
columns: [],
columnHeaderTitle: [],
rows: [],
rowHeaderTitle: [],
indicators: [],
corner: {},
tooltip: {},
menu: {}
};
const typeMapping = {
PivotColumnDimension: 'columns',
PivotColumnHeaderTitle: 'columnHeaderTitle',
PivotRowDimension: 'rows',
PivotRowHeaderTitle: 'rowHeaderTitle',
PivotCorner: 'corner',
PivotIndicator: 'indicators',
Tooltip: 'tooltip',
Menu: 'menu'
};
vnodes.forEach(vnode => {
var _a, _b;
vnode.props = stringUtils.convertPropsToCamelCase(vnode.props);
const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
const optionKey = typeMapping[typeName];
if (optionKey) {
if (Array.isArray(options[optionKey])) {
if (vnode.props.hasOwnProperty('objectHandler')) {
options[optionKey].push(vnode.props.objectHandler);
}
else {
options[optionKey].push(vnode.props);
}
}
else {
options[optionKey] = vnode.props;
}
}
});
return options;
}
function extractListSlotOptions(vnodes) {
const options = {
columns: [],
tooltip: {},
menu: {}
};
const typeMapping = {
ListColumn: 'columns',
Tooltip: 'tooltip',
Menu: 'menu'
};
vnodes.forEach(vnode => {
var _a, _b;
vnode.props = stringUtils.convertPropsToCamelCase(vnode.props);
const typeName = ((_a = vnode.type) === null || _a === void 0 ? void 0 : _a.symbol) || ((_b = vnode.type) === null || _b === void 0 ? void 0 : _b.name);
const optionKey = typeMapping[typeName];
if (optionKey) {
if (optionKey === 'columns' && vnode.children) {
if (vnode.children.customLayout) {
vnode.props.customLayout = customLayoutUtils.createCustomLayoutHandler(vnode.children);
}
if (vnode.children.headerCustomLayout) {
vnode.props.headerCustomLayout = customLayoutUtils.createCustomLayoutHandler(vnode.children, true);
}
// 校验编辑器
util.checkRenderEditor(vnode.props, vnode.children.edit);
}
if (Array.isArray(options[optionKey])) {
options[optionKey].push(vnode.props);
}
else {
options[optionKey] = vnode.props;
}
}
});
return options;
}
function mergeSlotOptions(propsOptions, slotOptions) {
return Object.assign(Object.assign({}, propsOptions), { columns: slotOptions.columns && slotOptions.columns.length ? slotOptions.columns : propsOptions.columns, columnHeaderTitle: slotOptions.columnHeaderTitle && slotOptions.columnHeaderTitle.length
? slotOptions.columnHeaderTitle
: propsOptions.columnHeaderTitle, rows: slotOptions.rows && slotOptions.rows.length ? slotOptions.rows : propsOptions.rows, rowHeaderTitle: slotOptions.rowHeaderTitle && slotOptions.rowHeaderTitle.length
? slotOptions.rowHeaderTitle
: propsOptions.rowHeaderTitle, indicators: slotOptions.indicators && slotOptions.indicators.length ? slotOptions.indicators : propsOptions.indicators, corner: Object.keys(propsOptions.corner || {}).length ? propsOptions.corner : slotOptions.corner, tooltip: Object.keys(slotOptions.tooltip || {}).length ? slotOptions.tooltip : propsOptions.tooltip, menu: Object.keys(slotOptions.menu || {}).length ? slotOptions.menu : propsOptions.menu });
}
exports.extractListSlotOptions = extractListSlotOptions;
exports.extractPivotSlotOptions = extractPivotSlotOptions;
exports.mergeSlotOptions = mergeSlotOptions;