{"version":3,"file":"use-columns.mjs","sources":["../../../../../packages/components/table-select/src/use-columns.ts"],"sourcesContent":["import { ElCheckbox } from '@element-ultra/components/checkbox'\nimport { ElRadio } from '@element-ultra/components/radio'\nimport type { TableColumn } from '@element-ultra/components/table'\nimport { h, ComputedRef, computed, ShallowRef } from 'vue'\nimport type { TableSelectProps } from './table-select'\nimport { getChainValue } from '@element-ultra/utils'\ninterface Options {\n  allChecked: ComputedRef<boolean>\n  indeterminate: ComputedRef<boolean>\n  props: TableSelectProps\n  selected: ShallowRef<Record<string, any> | null>\n  checkedData: ShallowRef<Record<string, any>>\n  toggleAllChecked: (check: boolean) => void\n  handleToggleCheck: (row: any, rowIndex: number) => void\n  setSelectedData: (row: any) => void\n}\n\nexport default function useColumns(options: Options) {\n  const {\n    props,\n    allChecked,\n    indeterminate,\n    checkedData,\n    selected,\n    toggleAllChecked,\n    handleToggleCheck,\n    setSelectedData\n  } = options\n\n  // 列\n  const columns = computed(() => {\n    const { valueKey, multiple, columnFilter, rowDisabled } = props\n\n    const extra: TableColumn[] = []\n    if (multiple) {\n      extra.push({\n        name: () => {\n          return h(ElCheckbox, {\n            modelValue: allChecked.value,\n            indeterminate: indeterminate.value,\n            'onUpdate:modelValue'(v) {\n              toggleAllChecked(v as boolean)\n            }\n          })\n        },\n        align: 'center',\n        fixed: 'left',\n        width: 60,\n        render: ({ row, index }) =>\n          h(ElCheckbox, {\n            checked: !!checkedData.value[getChainValue(row, valueKey)],\n            disabled: rowDisabled?.(row, index),\n            onClick: (e: MouseEvent) => {\n              e.stopPropagation()\n            },\n            onChange: () => {\n              handleToggleCheck(row, index)\n            }\n          }),\n        key: '$_check'\n      })\n    } else {\n      extra.push({\n        name: '单选',\n        align: 'center',\n        fixed: 'left',\n        width: 60,\n        render: ({ row, index }) => {\n          const { valueKey } = props\n          const disabled = rowDisabled?.(row, index)\n          return h(ElRadio, {\n            value: row[valueKey],\n            disabled,\n            onClick(e: MouseEvent) {\n              e.stopPropagation()\n            },\n            onChange() {\n              !disabled && setSelectedData(row)\n            },\n            modelValue: selected.value?.[valueKey]\n          })\n        },\n        key: '$_selection'\n      })\n    }\n\n    if (props.showIndex) {\n      extra.push({\n        name: '序号',\n        key: '$_index',\n        align: 'center',\n        fixed: 'left',\n        width: 60,\n        render: ({ index }) => index + 1\n      })\n    }\n\n    return [\n      ...extra,\n      ...(columnFilter\n        ? props.columns.filter(columnFilter)\n        : props.dialogColumns || props.columns)\n    ]\n  })\n\n  return columns\n}\n"],"names":["valueKey"],"mappings":"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"}