UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 12 kB
{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-column/index.ts"],"sourcesContent":["import {\n Fragment,\n computed,\n defineComponent,\n getCurrentInstance,\n h,\n onBeforeMount,\n onBeforeUnmount,\n onMounted,\n ref,\n} from 'vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { isArray, isString, isUndefined } from '@element-plus/utils'\nimport { cellStarts } from '../config'\nimport { compose, mergeOptions } from '../util'\nimport useWatcher from './watcher-helper'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\n\nimport type { VNode } from 'vue'\nimport type { TableColumn, TableColumnCtx } from './defaults'\nimport type { DefaultRow } from '../table/defaults'\n\nlet columnIdSeed = 1\n\n//TODO: when vue 3.3 we can set this component a generic: https://github.com/vuejs/core/pull/7963\nexport default defineComponent({\n name: 'ElTableColumn',\n components: {\n ElCheckbox,\n },\n props: defaultProps,\n setup(props, { slots }) {\n const instance = getCurrentInstance() as TableColumn<DefaultRow>\n const columnConfig = ref<Partial<TableColumnCtx<DefaultRow>>>({})\n const owner = computed(() => {\n let parent = instance.parent as any\n while (parent && !parent.tableId) {\n parent = parent.parent\n }\n return parent\n })\n\n const { registerNormalWatchers, registerComplexWatchers } = useWatcher(\n owner,\n props\n )\n const {\n columnId,\n isSubColumn,\n realHeaderAlign,\n columnOrTableParent,\n setColumnWidth,\n setColumnForcedProps,\n setColumnRenders,\n getPropsData,\n getColumnElIndex,\n realAlign,\n updateColumnOrder,\n } = useRender(props as unknown as TableColumnCtx<DefaultRow>, slots, owner)\n\n const parent = columnOrTableParent.value\n columnId.value = `${\n ('tableId' in parent && parent.tableId) ||\n ('columnId' in parent && parent.columnId)\n }_column_${columnIdSeed++}`\n onBeforeMount(() => {\n isSubColumn.value = owner.value !== parent\n\n const type = (props.type as keyof typeof cellStarts) || 'default'\n const sortable = props.sortable === '' ? true : props.sortable\n //The selection column should not be affected by `showOverflowTooltip`.\n const showOverflowTooltip =\n type === 'selection'\n ? false\n : isUndefined(props.showOverflowTooltip)\n ? parent.props.showOverflowTooltip\n : props.showOverflowTooltip\n const tooltipFormatter = isUndefined(props.tooltipFormatter)\n ? parent.props.tooltipFormatter\n : props.tooltipFormatter\n const defaults = {\n ...cellStarts[type],\n id: columnId.value,\n type,\n property: props.prop || props.property,\n align: realAlign,\n headerAlign: realHeaderAlign,\n showOverflowTooltip,\n tooltipFormatter,\n // filter 相关属性\n filterable: props.filters || props.filterMethod,\n filteredValue: [],\n filterPlacement: '',\n filterClassName: '',\n isColumnGroup: false,\n isSubColumn: false,\n filterOpened: false,\n // sort 相关属性\n sortable,\n // index 列\n index: props.index,\n // <el-table-column key=\"xxx\" />\n rawColumnKey: instance.vnode.key,\n }\n\n const basicProps = [\n 'columnKey',\n 'label',\n 'className',\n 'labelClassName',\n 'type',\n 'renderHeader',\n 'formatter',\n 'fixed',\n 'resizable',\n ]\n const sortProps = ['sortMethod', 'sortBy', 'sortOrders']\n const selectProps = ['selectable', 'reserveSelection']\n const filterProps = [\n 'filterMethod',\n 'filters',\n 'filterMultiple',\n 'filterOpened',\n 'filteredValue',\n 'filterPlacement',\n 'filterClassName',\n ]\n\n let column = getPropsData(basicProps, sortProps, selectProps, filterProps)\n\n column = mergeOptions(defaults, column)\n // 注意 compose 中函数执行的顺序是从右到左\n const chains = compose(\n setColumnRenders,\n setColumnWidth,\n setColumnForcedProps\n )\n column = chains(column) as unknown as TableColumnCtx<DefaultRow>\n columnConfig.value = column\n\n // 注册 watcher\n registerNormalWatchers()\n registerComplexWatchers()\n })\n onMounted(() => {\n const parent = columnOrTableParent.value\n const children = isSubColumn.value\n ? parent.vnode.el?.children\n : parent.refs.hiddenColumns?.children\n const getColumnIndex = () =>\n getColumnElIndex(children || [], instance.vnode.el)\n columnConfig.value.getColumnIndex = getColumnIndex\n const columnIndex = getColumnIndex()\n columnIndex > -1 &&\n owner.value.store.commit(\n 'insertColumn',\n columnConfig.value,\n isSubColumn.value\n ? 'columnConfig' in parent && parent.columnConfig.value\n : null,\n updateColumnOrder\n )\n })\n onBeforeUnmount(() => {\n const getColumnIndex = columnConfig.value.getColumnIndex\n const columnIndex = getColumnIndex ? getColumnIndex() : -1\n columnIndex > -1 &&\n owner.value.store.commit(\n 'removeColumn',\n columnConfig.value,\n isSubColumn.value\n ? 'columnConfig' in parent && parent.columnConfig.value\n : null,\n updateColumnOrder\n )\n })\n instance.columnId = columnId.value\n\n instance.columnConfig = columnConfig as any\n return\n },\n render() {\n try {\n const renderDefault = this.$slots.default?.({\n row: {},\n column: {},\n $index: -1,\n })\n const children = []\n if (isArray(renderDefault)) {\n for (const childNode of renderDefault) {\n if (\n (childNode.type as any)?.name === 'ElTableColumn' ||\n childNode.shapeFlag & 2\n ) {\n children.push(childNode)\n } else if (\n childNode.type === Fragment &&\n isArray(childNode.children)\n ) {\n childNode.children.forEach((vnode) => {\n // No rendering when vnode is dynamic slot or text\n if (\n (vnode as VNode)?.patchFlag !== 1024 &&\n !isString((vnode as VNode)?.children)\n ) {\n children.push(vnode)\n }\n })\n }\n }\n }\n const vnode = h('div', children)\n return vnode\n } catch {\n return h('div', [])\n }\n },\n})\n"],"names":["parent","vnode"],"mappings":"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"}