{"version":3,"file":"useRowSelect.mjs","sources":["../../../src/table/hooks/useRowSelect.tsx"],"sourcesContent":["/**\n * 行选中相关功能：单选 + 多选\n */\nimport { computed, toRefs, h, ref, watch } from 'vue';\nimport intersection from 'lodash/intersection';\nimport get from 'lodash/get';\nimport isFunction from 'lodash/isFunction';\nimport useDefaultValue from '../../hooks/useDefaultValue';\nimport {\n  PrimaryTableCellParams,\n  PrimaryTableCol,\n  RowClassNameParams,\n  TableRowData,\n  TdPrimaryTableProps,\n} from '../type';\nimport { isRowSelectedDisabled } from '../../_common/js/table/utils';\nimport { TableClassName } from './useClassName';\nimport Checkbox from '../../checkbox';\nimport Radio from '../../radio';\nimport log from '../../_common/js/log';\n\nexport default function useRowSelect(\n  props: TdPrimaryTableProps,\n  tableSelectedClasses: TableClassName['tableSelectedClasses'],\n) {\n  const { selectedRowKeys, columns, rowKey, data, pagination, reserveSelectedRowOnPaginate } = toRefs(props);\n  const currentPaginateData = ref<TableRowData[]>(data.value);\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 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    const singleSelectCol = columns.value.find((col) => col.type === 'single');\n    if (!singleSelectCol || !singleSelectCol.checkProps || !('allowUncheck' in singleSelectCol.checkProps))\n      return false;\n    return singleSelectCol.checkProps.allowUncheck;\n  });\n\n  watch(\n    [data, pagination, reserveSelectedRowOnPaginate],\n    () => {\n      if (reserveSelectedRowOnPaginate.value) return;\n      const { pageSize, current, defaultPageSize, defaultCurrent } = pagination.value;\n      const tPageSize = pageSize || defaultPageSize;\n      const tCurrent = current || defaultCurrent;\n      currentPaginateData.value = data.value.slice(tPageSize * (tCurrent - 1), tPageSize * tCurrent);\n    },\n    { immediate: true },\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  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        intersectionKeys.value.length !== 0 &&\n        canSelectedRows.value.length !== 0 &&\n        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} />;\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 (selectColumn.value.type === 'multiple') {\n      isExisted ? selectedRowKeys.splice(selectedRowIndex, 1) : selectedRowKeys.push(id);\n    } else if (selectColumn.value.type === '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    if (selectedColIndex === -1) return;\n    const { disabled } = getRowSelectDisabledData({\n      row,\n      rowIndex: index,\n      col: props.columns[selectedColIndex],\n      colIndex: selectedColIndex,\n    });\n    if (disabled) return;\n    handleSelectChange(row);\n  };\n\n  watch(\n    () => [[...data.value], 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  return {\n    selectedRowClassNames,\n    currentPaginateData,\n    setTSelectedRowKeys,\n    formatToRowSelectColumn,\n    onInnerSelectRowClick,\n  };\n}\n"],"names":["tSelectedRowKeys","setTSelectedRowKeys","intersection","currentPaginateData","immediate","watch","selectedRowClassNames","isFunction","row","rowIndex","checkProps","get","checked","disabled","onClick","e","_createVNode","_mergeProps","isExisted","log","selectedRowData","currentRowKey","currentRowData","type","width","cell","title","col","colIndex","formatToRowSelectColumn","onInnerSelectRowClick"],"mappings":"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"}