UNPKG

@visactor/vue-vtable

Version:

The vue version of VTable

96 lines (93 loc) 4.18 kB
import { convertPropsToCamelCase } from './stringUtils.js'; import { createCustomLayoutHandler } from './customLayoutUtils.js'; import 'tslib'; import '@visactor/vutils'; import 'vue'; import '@visactor/vtable'; import { checkRenderEditor } from '../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 = 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 = 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 = createCustomLayoutHandler(vnode.children); } if (vnode.children.headerCustomLayout) { vnode.props.headerCustomLayout = createCustomLayoutHandler(vnode.children, true); } 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 }); } export { extractListSlotOptions, extractPivotSlotOptions, mergeSlotOptions };