UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

168 lines (163 loc) 4.92 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var shared = require('@vue/shared'); var defaults = require('./defaults.js'); var render = require('./render.js'); var watcher = require('./watcher.js'); var config = require('../config.js'); const prefixCls = "ivue-table-column"; let columnIdSeed = 1; var TableColumn = vue.defineComponent({ name: prefixCls, props: defaults["default"], setup(props, { slots }) { const vm = vue.getCurrentInstance(); const columnConfig = vue.ref({}); const parentDom = vue.computed(() => { let parent2 = vm.parent; while (parent2 && !parent2.tableId) { parent2 = parent2.parent; } return parent2; }); const initData = () => { var _a; const children = isSubColumn.value ? parent.vnode.el.children : (_a = parent.refs.hiddenColumns) == null ? void 0 : _a.children; const getColumnIndex = () => { return getColumnDomIndex(children || [], vm.vnode.el); }; columnConfig.value.getColumnIndex = getColumnIndex; const columnIndex = getColumnIndex(); if (columnIndex > -1) { parentDom.value.store.commit( "insertColumn", columnConfig.value, isSubColumn.value ? parent.columnConfig.value : null ); } }; const initBeforeMount = () => { isSubColumn.value = parentDom.value !== parent; const type = props.type || "default"; const sortable = props.sortable === "" ? true : props.sortable; const defaults = { ...config.cellStyles[type], id: columnId.value, type, property: props.prop || props.property, align, headerAlign, showOverflowTooltip: props.showOverflowTooltip, filterable: props.filters || props.filterMethod, filterPlacement: "", filterOpened: false, isSubColumn: false, sortable, index: props.index, rawColumnKey: vm.vnode.key, filteredValue: [] }; const basicProps = [ "columnKey", "label", "className", "labelClassName", "type", "renderHeader", "formatter", "fixed", "resizable" ]; const sortProps = ["sortMethod", "sortBy", "sortOrders"]; const selectProps = ["selectable", "reserveSelection"]; const filterProps = [ "filterMethod", "filters", "filterMultiple", "filterOpened", "filteredValue", "filterPlacement" ]; let column = getPropsData( basicProps, sortProps, selectProps, filterProps ); column = config.mergeOptions(defaults, column); const chains = config.compose( columnRender, setColumnWidth, setColumnProps ); column = chains(column); columnConfig.value = column; registerNormalWatchers(); registerComplexWatchers(); }; vue.onBeforeMount(() => { initBeforeMount(); }); vue.onMounted(() => { initData(); }); vue.onBeforeUnmount(() => { parentDom.value.store.commit( "removeColumn", columnConfig.value, isSubColumn.value ? parent.columnConfig.value : null ); }); const { columnId, isSubColumn, align, headerAlign, columnParent, getPropsData, getColumnDomIndex, columnRender, setColumnWidth, setColumnProps } = render["default"](props, slots, parentDom); const { registerNormalWatchers, registerComplexWatchers } = watcher["default"]( parentDom, props ); const parent = columnParent.value; columnId.value = `${parent.tableId || parent.columnId}-column-${columnIdSeed++}`; vm.columnId = columnId.value; vm.columnConfig = columnConfig; }, render() { var _a, _b, _c; try { const slotsList = (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, { row: {}, column: {}, $index: -1 }); const slot = []; if (Array.isArray(slotsList)) { for (const childNode of slotsList) { if (((_c = childNode.type) == null ? void 0 : _c.name) === prefixCls || childNode.shapeFlag & 2) { slot.push(childNode); } else if (childNode.type === vue.Fragment && Array.isArray(childNode.children)) { childNode.children.forEach((vnode2) => { if ((vnode2 == null ? void 0 : vnode2.patchFlag) !== 1024 && !shared.isString(vnode2 == null ? void 0 : vnode2.children)) { slot.push(vnode2); } }); } } } const vnode = vue.h("div", slot); return vnode; } catch (e) { return vue.h("div", []); } } }); exports["default"] = TableColumn; //# sourceMappingURL=index.js.map