element-plus
Version:
A Component Library for Vue 3
1 lines • 6.88 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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"}