{"version":3,"file":"useRowSelect.mjs","sources":["../../../../components/table/hooks/useRowSelect.tsx"],"sourcesContent":["/**\n * 行选中相关功能：单选 + 多选\n */\nimport { computed, toRefs, h, ref, watch } from 'vue';\nimport { get, isFunction, intersection } from 'lodash-es';\n\nimport { useDefaultValue } from '@tdesign/shared-hooks';\nimport {\n  ActiveRowActionContext,\n  PrimaryTableCellParams,\n  PrimaryTableCol,\n  RowClassNameParams,\n  TableRowData,\n  TdPrimaryTableProps,\n} from '../type';\nimport { isRowSelectedDisabled } from '@tdesign/common-js/table/utils';\nimport { TableClassName } from './useClassName';\nimport Checkbox from '../../checkbox';\nimport Radio, { RadioProps } from '../../radio';\nimport log from '@tdesign/common-js/log/index';\n\nexport default function useRowSelect(\n  props: TdPrimaryTableProps,\n  tableSelectedClasses: TableClassName['tableSelectedClasses'],\n) {\n  const { selectedRowKeys, columns, rowKey, data, reserveSelectedRowOnPaginate, pagination } = toRefs(props);\n  const currentPaginateData = ref<TableRowData[]>(\n    pagination.value\n      ? data.value.slice(\n          (pagination.value.current - 1) * pagination.value.pageSize,\n          pagination.value.current * pagination.value.pageSize,\n        )\n      : data.value,\n  );\n  const selectedRowClassNames = ref();\n  const [tSelectedRowKeys, setTSelectedRowKeys] = useDefaultValue(\n    selectedRowKeys,\n    props.defaultSelectedRowKeys || [],\n    props.onSelectChange,\n    'selectedRowKeys',\n  );\n  const selectedRowDataMap = ref(new Map<string | number, TableRowData>());\n  const selectColumn = computed(() => props.columns.find(({ type }) => ['multiple', 'single'].includes(type)));\n  const selectionType = computed(() => props.rowSelectionType || selectColumn.value?.type || 'single');\n  const canSelectedRows = computed(() => {\n    const currentData = reserveSelectedRowOnPaginate.value ? data.value : currentPaginateData.value;\n    return currentData.filter((row, rowIndex): boolean => !isDisabled(row, rowIndex));\n  });\n  // 选中的行，和所有可以选择的行，交集，用于计算 isSelectedAll 和 isIndeterminate\n  const intersectionKeys = computed(() =>\n    intersection(\n      tSelectedRowKeys.value,\n      canSelectedRows.value.map((t) => get(t, props.rowKey || 'id')),\n    ),\n  );\n\n  const allowUncheck = computed(() => {\n    if (props.rowSelectionAllowUncheck) return true;\n    const singleSelectCol = selectionType.value === 'single';\n    if (!singleSelectCol || !selectColumn.value?.checkProps || !('allowUncheck' in selectColumn.value?.checkProps))\n      return false;\n    return selectColumn.value.checkProps.allowUncheck;\n  });\n\n  watch(\n    [data, columns, tSelectedRowKeys, selectColumn, rowKey],\n    () => {\n      const disabledRowFunc = (p: RowClassNameParams<TableRowData>) =>\n        selectColumn.value.disabled(p) ? tableSelectedClasses.disabled : '';\n      const disabledRowClass = selectColumn.value?.disabled ? disabledRowFunc : undefined;\n      const selected = new Set(tSelectedRowKeys.value);\n      const selectedRowClassFunc = ({ row }: RowClassNameParams<TableRowData>) => {\n        const rowId = get(row, props.rowKey || 'id');\n        return selected.has(rowId) ? tableSelectedClasses.selected : '';\n      };\n      const selectedRowClass = selected.size ? selectedRowClassFunc : undefined;\n      selectedRowClassNames.value = [disabledRowClass, selectedRowClass];\n    },\n    { immediate: true },\n  );\n\n  // 在远程分页场景下，当前页全选功能的状态判定需基于当前页数据是否存在进行动态重新计算\n  watch(data, () => {\n    currentPaginateData.value = data.value;\n  });\n\n  function isDisabled(row: Record<string, any>, rowIndex: number): boolean {\n    return isRowSelectedDisabled(selectColumn.value, row, rowIndex);\n  }\n\n  function getSelectedHeader() {\n    return () => {\n      const isIndeterminate =\n        intersectionKeys.value.length > 0 && intersectionKeys.value.length < canSelectedRows.value.length;\n      const isChecked =\n        canSelectedRows.value.length !== 0 && intersectionKeys.value.length === canSelectedRows.value.length;\n      return (\n        <Checkbox\n          checked={isChecked}\n          indeterminate={isIndeterminate}\n          disabled={!canSelectedRows.value.length}\n          onChange={handleSelectAll}\n        />\n      );\n    };\n  }\n\n  function getRowSelectDisabledData(p: PrimaryTableCellParams<TableRowData>) {\n    const { col, row, rowIndex } = p;\n    const disabled: boolean = isFunction(col.disabled) ? col.disabled({ row, rowIndex }) : col.disabled;\n    const checkProps = isFunction(col.checkProps) ? col.checkProps({ row, rowIndex }) : col.checkProps;\n    return {\n      disabled: disabled || checkProps?.disabled,\n      checkProps,\n    };\n  }\n\n  function renderSelectCell(p: PrimaryTableCellParams<TableRowData>) {\n    const { col: column, row = {} } = p;\n    const checked = tSelectedRowKeys.value.includes(get(row, props.rowKey || 'id'));\n    const { disabled, checkProps } = getRowSelectDisabledData(p);\n    const selectBoxProps: Object = {\n      checked,\n      disabled,\n      ...checkProps,\n      // 兼容处理不同的参数\n      onClick: (e: MouseEvent | { e: MouseEvent }) => {\n        // 选中行功能中，点击 checkbox/radio 需阻止事件冒泡，避免触发不必要的 onRowClick\n        if (typeof e === 'object' && 'e' in e) {\n          e.e?.stopPropagation();\n        } else {\n          e?.stopPropagation();\n        }\n      },\n      onChange: () => handleSelectChange(row),\n    };\n    if (column.type === 'single') return <Radio {...(selectBoxProps as RadioProps)} />;\n    if (column.type === 'multiple') {\n      const isIndeterminate = props.indeterminateSelectedRowKeys?.length\n        ? props.indeterminateSelectedRowKeys.includes(get(row, props.rowKey))\n        : false;\n      return <Checkbox indeterminate={isIndeterminate} {...selectBoxProps} />;\n    }\n    return null;\n  }\n\n  function handleSelectChange(row: TableRowData = {}) {\n    let selectedRowKeys = [...tSelectedRowKeys.value];\n    const reRowKey = props.rowKey || 'id';\n    const id = get(row, reRowKey);\n    const selectedRowIndex = selectedRowKeys.indexOf(id);\n    const isExisted = selectedRowIndex !== -1;\n    if (selectionType.value === 'multiple') {\n      isExisted ? selectedRowKeys.splice(selectedRowIndex, 1) : selectedRowKeys.push(id);\n    } else if (selectionType.value === 'single') {\n      selectedRowKeys = isExisted && allowUncheck.value ? [] : [id];\n    } else {\n      log.warn('Table', '`column.type` must be one of `multiple` and `single`');\n      return;\n    }\n    setTSelectedRowKeys(selectedRowKeys, {\n      selectedRowData: selectedRowKeys.map((t) => selectedRowDataMap.value.get(t)),\n      currentRowKey: id,\n      currentRowData: row,\n      type: isExisted ? 'uncheck' : 'check',\n    });\n  }\n\n  function handleSelectAll(checked: boolean) {\n    const reRowKey = props.rowKey || 'id';\n    const canSelectedRowKeys = canSelectedRows.value.map((record) => get(record, reRowKey));\n    const disabledSelectedRowKeys = selectedRowKeys.value?.filter((id) => !canSelectedRowKeys.includes(id)) || [];\n    const allIds = checked ? [...disabledSelectedRowKeys, ...canSelectedRowKeys] : [...disabledSelectedRowKeys];\n    setTSelectedRowKeys(allIds, {\n      selectedRowData: checked ? allIds.map((t) => selectedRowDataMap.value.get(t)) : [],\n      type: checked ? 'check' : 'uncheck',\n      currentRowKey: 'CHECK_ALL_BOX',\n    });\n  }\n\n  function formatToRowSelectColumn(col: PrimaryTableCol) {\n    const isSelection = ['multiple', 'single'].includes(col.type);\n    if (!isSelection) return col;\n    return {\n      ...col,\n      width: col.width || 64,\n      className: [tableSelectedClasses.checkCell, col.className],\n      cell: (_: typeof h, p: PrimaryTableCellParams<TableRowData>) => renderSelectCell(p),\n      title: col.type === 'multiple' ? getSelectedHeader() : col.title,\n    };\n  }\n\n  const onInnerSelectRowClick: TdPrimaryTableProps['onRowClick'] = ({ row, index }) => {\n    const selectedColIndex = props.columns.findIndex((item) => item.colKey === 'row-select');\n    let disabled = false;\n    if (selectedColIndex !== -1) {\n      disabled = getRowSelectDisabledData({\n        row,\n        rowIndex: index,\n        col: props.columns[selectedColIndex],\n        colIndex: selectedColIndex,\n      })?.disabled;\n    }\n    if (disabled) return;\n    handleSelectChange(row);\n  };\n\n  watch(\n    [data, rowKey],\n    () => {\n      for (let i = 0, len = data.value.length; i < len; i++) {\n        selectedRowDataMap.value.set(get(data.value[i], rowKey.value || 'id'), data.value[i]);\n      }\n    },\n    { immediate: true },\n  );\n\n  // 是否开启了行选中功能\n  const showRowSelect = computed(() => Boolean(selectColumn.value || props.selectOnRowClick || props.selectedRowKeys));\n\n  const clearAllSelectedRowKeys = () => {\n    setTSelectedRowKeys([], {\n      selectedRowData: [],\n      currentRowKey: undefined,\n      currentRowData: undefined,\n      type: 'uncheck',\n    });\n  };\n\n  const handleRowSelectWithAreaSelection = ({ activeRowList, action }: ActiveRowActionContext<TableRowData>) => {\n    if (!showRowSelect.value) return;\n\n    if (action === 'clear') {\n      clearAllSelectedRowKeys();\n      return;\n    }\n\n    if (action === 'select-all') {\n      handleSelectAll(true);\n      return;\n    }\n\n    if (selectionType.value === 'single') {\n      if (action === 'space-one-selection') {\n        handleSelectChange(activeRowList[0].row);\n      }\n      return;\n    }\n\n    const validAreaSelection = activeRowList.filter(\n      ({ row, rowIndex }) =>\n        !getRowSelectDisabledData({\n          row,\n          rowIndex,\n          col: selectColumn.value,\n          colIndex: undefined,\n        }).disabled,\n    );\n    if (!validAreaSelection.length) return;\n\n    const areaSelectionKeys = validAreaSelection.map(({ row }) => get(row, props.rowKey));\n    const intersectionKeys = intersection(tSelectedRowKeys.value, areaSelectionKeys);\n    const toCheck = intersectionKeys.length !== areaSelectionKeys.length;\n    const clearedKeys = tSelectedRowKeys.value.filter((key) => !areaSelectionKeys.includes(key));\n    const newSelectedRowKeys = toCheck ? [...new Set(tSelectedRowKeys.value.concat(areaSelectionKeys))] : clearedKeys;\n\n    const currentRowData = action === 'space-one-selection' ? activeRowList[0].row : undefined;\n    setTSelectedRowKeys(newSelectedRowKeys, {\n      selectedRowData: activeRowList,\n      currentRowKey: get(currentRowData, props.rowKey),\n      currentRowData,\n      type: toCheck ? 'check' : 'uncheck',\n    });\n  };\n\n  return {\n    selectColumn,\n    showRowSelect,\n    selectedRowClassNames,\n    currentPaginateData,\n    setTSelectedRowKeys,\n    formatToRowSelectColumn,\n    onInnerSelectRowClick,\n    handleRowSelectWithAreaSelection,\n  };\n}\n"],"names":["useRowSelect","props","tableSelectedClasses","_toRefs","toRefs","selectedRowKeys","columns","rowKey","data","reserveSelectedRowOnPaginate","pagination","currentPaginateData","ref","value","slice","current","pageSize","selectedRowClassNames","_useDefaultValue","useDefaultValue","defaultSelectedRowKeys","onSelectChange","_useDefaultValue2","_slicedToArray","tSelectedRowKeys","setTSelectedRowKeys","selectedRowDataMap","Map","selectColumn","computed","find","_ref","type","includes","selectionType","_selectColumn$value","rowSelectionType","canSelectedRows","currentData","filter","row","rowIndex","isDisabled","intersectionKeys","intersection","map","t","get","allowUncheck","_selectColumn$value2","_selectColumn$value3","rowSelectionAllowUncheck","singleSelectCol","checkProps","watch","_selectColumn$value4","disabledRowFunc","p","disabled","disabledRowClass","selected","Set","selectedRowClassFunc","_ref2","rowId","has","selectedRowClass","size","immediate","isRowSelectedDisabled","getSelectedHeader","isIndeterminate","length","isChecked","_createVNode","Checkbox","handleSelectAll","getRowSelectDisabledData","col","isFunction","renderSelectCell","column","_p$row","checked","_getRowSelectDisabled","selectBoxProps","_objectSpread","onClick","e","_typeof","_e$e","stopPropagation","onChange","handleSelectChange","Radio","_props$indeterminateS","indeterminateSelectedRowKeys","_mergeProps","arguments","undefined","_toConsumableArray","reRowKey","id","selectedRowIndex","indexOf","isExisted","splice","push","log","warn","selectedRowData","currentRowKey","currentRowData","_selectedRowKeys$valu","canSelectedRowKeys","record","disabledSelectedRowKeys","allIds","concat","formatToRowSelectColumn","isSelection","width","className","checkCell","cell","_","title","onInnerSelectRowClick","_ref3","index","selectedColIndex","findIndex","item","colKey","_getRowSelectDisabled2","colIndex","i","len","set","showRowSelect","Boolean","selectOnRowClick","clearAllSelectedRowKeys","handleRowSelectWithAreaSelection","_ref4","activeRowList","action","validAreaSelection","_ref5","areaSelectionKeys","_ref6","toCheck","clearedKeys","key","newSelectedRowKeys"],"mappings":"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"}