UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.04 kB
{"version":3,"file":"use-columns.mjs","names":[],"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"],"mappings":";;;;;;;AAUA,SAAS,WACP,OACA,SACA,OACA;CACA,MAAM,WAAW,eACf,MAAM,QAAQ,CAAC,KAAK,QAAQ,WAAW;EACrC,GAAG;EACH,KAAK,OAAO,OAAO,OAAO,WAAW;EACtC,EAAE,CACJ;CAED,MAAM,iBAAiB,eAAe;AACpC,SAAO,MAAM,SAAS,CAAC,QAAQ,WAAW,CAAC,OAAO,OAAO;GACzD;CAEF,MAAM,qBAAqB,eACzB,MAAM,eAAe,CAAC,QACnB,WAAW,OAAO,UAAU,UAAU,OAAO,UAAU,KACzD,CACF;CAED,MAAM,sBAAsB,eAC1B,MAAM,eAAe,CAAC,QAAQ,WAAW,OAAO,UAAU,QAAQ,CACnE;CAED,MAAM,gBAAgB,eACpB,MAAM,eAAe,CAAC,QAAQ,WAAW,CAAC,OAAO,MAAM,CACxD;CAED,MAAM,cAAc,eAAe;EACjC,MAAM,MAAkB,EAAE;AAE1B,QAAM,mBAAmB,CAAC,SAAS,WAAW;AAC5C,OAAI,KAAK;IACP,GAAG;IACH;IACD,CAAC;IACF;AAEF,QAAM,cAAc,CAAC,SAAS,WAAW;AACvC,OAAI,KAAK,OAAO;IAChB;AAEF,QAAM,oBAAoB,CAAC,SAAS,WAAW;AAC7C,OAAI,KAAK;IACP,GAAG;IACH;IACD,CAAC;IACF;AAEF,SAAO;GACP;CAEF,MAAM,kBAAkB,eAAe;AACrC,SAAO,MAAM,mBAAmB,CAAC,UAAU,MAAM,oBAAoB,CAAC;GACtE;CAEF,MAAM,gBAAgB,eAAe;AACnC,SAAO,MAAM,SAAS,CAAC,QACpB,OAAO,WAAW;AACjB,SAAM,OAAO,OAAO,gBAAgB,QAAQ,MAAM,MAAM,EAAE,MAAM,MAAM;AACtE,UAAO;KAET,EAAE,CACH;GACD;CAEF,MAAM,oBAAoB,eAAe;AACvC,SAAO,MAAM,eAAe,CAAC,QAC1B,OAAO,WAAW,QAAQ,OAAO,OAClC,EACD;GACD;CAEF,MAAM,aAAa,QAAiB;AAClC,SAAO,MAAM,SAAS,CAAC,MAAM,WAAW,OAAO,QAAQ,IAAI;;CAG7D,MAAM,kBAAkB,QAAiB;AACvC,SAAO,MAAM,cAAc,CAAC;;CAG9B,MAAM,qBAAqB,QAAqB,UAAkB;AAChE,SAAO,QAAQ;;CAGjB,SAAS,eAAe,GAAe;EACrC,MAAM,EAAE,QAAS,EAAE,cAA8B;AACjD,MAAI,CAAC,IAAK;EACV,MAAM,EAAE,WAAW,WAAW;EAE9B,IAAI,QAAQ,UAAU;AAEtB,MAAI,SAAS,UAAU,CACrB,SAAQ,iBAAiB,UAAU;MAEnC,SAAQ,iBAAiB,OAAO;AAGlC,QAAM,eAAe;GAAE,QAAQ,UAAU,IAAI;GAAG;GAAK;GAAO,CAAC;;AAG/D,QAAO;EACL,SAAS;EACT;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;EACD"}