element-plus
Version:
A Component Library for Vue 3
1 lines • 6.71 kB
Source Map (JSON)
{"version":3,"file":"use-columns.mjs","sources":["../../../../../../../packages/components/table-v2/src/composables/use-columns.ts"],"sourcesContent":["import { computed, unref } from 'vue'\nimport { isObject } from '@element-plus/utils'\nimport { SortOrder, oppositeOrderMap } from '../constants'\nimport { placeholderSign } from '../private'\nimport { calcColumnStyle } from './utils'\n\nimport type { CSSProperties, Ref } from 'vue'\nimport type { TableV2Props } from '../table'\nimport type { AnyColumns, Column, KeyType } from '../types'\n\nfunction useColumns(\n props: TableV2Props,\n columns: Ref<AnyColumns>,\n fixed: Ref<boolean>\n) {\n const _columns = computed(() =>\n unref(columns).map((column, index) => ({\n ...column,\n key: column.key ?? column.dataKey ?? index,\n }))\n )\n\n const visibleColumns = computed(() => {\n return unref(_columns).filter((column) => !column.hidden)\n })\n\n const fixedColumnsOnLeft = computed(() =>\n unref(visibleColumns).filter(\n (column) => column.fixed === 'left' || column.fixed === true\n )\n )\n\n const fixedColumnsOnRight = computed(() =>\n unref(visibleColumns).filter((column) => column.fixed === 'right')\n )\n\n const normalColumns = computed(() =>\n unref(visibleColumns).filter((column) => !column.fixed)\n )\n\n const mainColumns = computed(() => {\n const ret: AnyColumns = []\n\n unref(fixedColumnsOnLeft).forEach((column) => {\n ret.push({\n ...column,\n placeholderSign,\n })\n })\n\n unref(normalColumns).forEach((column) => {\n ret.push(column)\n })\n\n unref(fixedColumnsOnRight).forEach((column) => {\n ret.push({\n ...column,\n placeholderSign,\n })\n })\n\n return ret\n })\n\n const hasFixedColumns = computed(() => {\n return unref(fixedColumnsOnLeft).length || unref(fixedColumnsOnRight).length\n })\n\n const columnsStyles = computed(() => {\n return unref(_columns).reduce<Record<KeyType, CSSProperties>>(\n (style, column) => {\n style[column.key] = calcColumnStyle(column, unref(fixed), props.fixed)\n return style\n },\n {}\n )\n })\n\n const columnsTotalWidth = computed(() => {\n return unref(visibleColumns).reduce(\n (width, column) => width + column.width,\n 0\n )\n })\n\n const getColumn = (key: KeyType) => {\n return unref(_columns).find((column) => column.key === key)\n }\n\n const getColumnStyle = (key: KeyType) => {\n return unref(columnsStyles)[key]\n }\n\n const updateColumnWidth = (column: Column<any>, width: number) => {\n column.width = width\n }\n\n function onColumnSorted(e: MouseEvent) {\n const { key } = (e.currentTarget as HTMLElement).dataset\n if (!key) return\n const { sortState, sortBy } = props\n\n let order = SortOrder.ASC\n\n if (isObject(sortState)) {\n order = oppositeOrderMap[sortState[key]]\n } else {\n order = oppositeOrderMap[sortBy.order]\n }\n\n props.onColumnSort?.({ column: getColumn(key)!, key, order })\n }\n\n return {\n columns: _columns,\n columnsStyles,\n columnsTotalWidth,\n fixedColumnsOnLeft,\n fixedColumnsOnRight,\n hasFixedColumns,\n mainColumns,\n normalColumns,\n visibleColumns,\n\n getColumn,\n getColumnStyle,\n updateColumnWidth,\n onColumnSorted,\n }\n}\n\nexport { useColumns }\nexport type UseColumnsReturn = ReturnType<typeof useColumns>\n"],"names":[],"mappings":"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"}