{"version":3,"file":"primary-table.mjs","sources":["../../src/table/primary-table.tsx"],"sourcesContent":["import { computed, defineComponent, toRefs, h, ref, onMounted, SetupContext } from 'vue';\nimport get from 'lodash/get';\nimport omit from 'lodash/omit';\nimport baseTableProps from './base-table-props';\nimport primaryTableProps from './primary-table-props';\nimport BaseTable from './base-table';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport useColumnController from './hooks/useColumnController';\nimport useRowExpand from './hooks/useRowExpand';\nimport useTableHeader, { renderTitle } from './hooks/useTableHeader';\nimport useRowSelect from './hooks/useRowSelect';\nimport { TdPrimaryTableProps, PrimaryTableCol, TableRowData, PrimaryTableCellParams } from './type';\nimport useSorter from './hooks/useSorter';\nimport useFilter from './hooks/useFilter';\nimport useDragSort from './hooks/useDragSort';\nimport useAsyncLoading from './hooks/useAsyncLoading';\nimport EditableCell, { EditableCellProps } from './editable-cell';\nimport { PageInfo } from '../pagination';\nimport useClassName from './hooks/useClassName';\nimport useEditableRow from './hooks/useEditableRow';\nimport useStyle from './hooks/useStyle';\nimport { ScrollToElementParams } from '../hooks/useVirtualScrollNew';\n\nexport { BASE_TABLE_ALL_EVENTS } from './base-table';\n\nconst OMIT_PROPS = [\n  'hideSortTips',\n  'dragSort',\n  'defaultExpandedRowKeys',\n  'defaultSelectedRowKeys',\n  'columnController',\n  'filterRow',\n  'sortOnRowDraggable',\n  'expandOnRowClick',\n  'multipleSort',\n  'expandIcon',\n  'reserveSelectedRowOnPaginate',\n  'selectOnRowClick',\n  'onChange',\n  'onAsyncLoadingClick',\n  'onColumnChange',\n  'onColumnControllerVisibleChange',\n  'onDataChange',\n  'onDisplayColumnsChange',\n  'onDragSort',\n  'onExpandChange',\n  'onFilterChange',\n  'onSelectChange',\n  'onSortChange',\n];\n\nexport default defineComponent({\n  name: 'XPrimaryTable',\n\n  props: {\n    ...baseTableProps,\n    ...primaryTableProps,\n  },\n\n  setup(props: TdPrimaryTableProps, context: SetupContext) {\n    const renderTNode = useTNodeJSX();\n    const { columns, columnController } = toRefs(props);\n    const primaryTableRef = ref(null);\n\n    const { classPrefix, tableDraggableClasses, tableBaseClass, tableSelectedClasses, tableSortClasses } =\n      useClassName();\n    const { sizeClassNames } = useStyle(props);\n    // 自定义列配置功能\n    const { tDisplayColumns, renderColumnController } = useColumnController(props, context);\n    // 展开/收起行功能\n    const { showExpandedRow, showExpandIconColumn, getExpandColumn, renderExpandedRow, onInnerExpandRowClick } =\n      useRowExpand(props, context);\n    // 排序功能\n    const { renderSortIcon } = useSorter(props, context);\n    // 行选中功能\n    const {\n      selectedRowClassNames,\n      currentPaginateData,\n      formatToRowSelectColumn,\n      setTSelectedRowKeys,\n      onInnerSelectRowClick,\n    } = useRowSelect(props, tableSelectedClasses);\n    // 过滤功能\n    const {\n      hasEmptyCondition,\n      isTableOverflowHidden,\n      renderFilterIcon,\n      renderFirstFilterRow,\n      setFilterPrimaryTableRef,\n    } = useFilter(props, context);\n\n    // 拖拽排序功能\n    const { isRowHandlerDraggable, isRowDraggable, isColDraggable, setDragSortPrimaryTableRef, setDragSortColumns } =\n      useDragSort(props, context);\n\n    const { renderTitleWidthIcon } = useTableHeader(props);\n    const { renderAsyncLoading } = useAsyncLoading(props);\n\n    const {\n      errorListMap,\n      editableKeysMap,\n      validateRowData,\n      validateTableData,\n      onRuleChange,\n      clearValidateData,\n      onPrimaryTableCellEditChange,\n    } = useEditableRow(props);\n\n    const primaryTableClasses = computed(() => {\n      return {\n        [tableDraggableClasses.colDraggable]: isColDraggable.value,\n        [tableDraggableClasses.rowHandlerDraggable]: isRowHandlerDraggable.value,\n        [tableDraggableClasses.rowDraggable]: isRowDraggable.value,\n        [tableBaseClass.overflowVisible]: isTableOverflowHidden.value === false,\n        [tableBaseClass.tableRowEdit]: props.editableRowKeys,\n      };\n    });\n\n    // 如果想给 TR 添加类名，请在这里补充，不要透传更多额外 Props 到 BaseTable\n    const tRowClassNames = computed(() => {\n      const tClassNames = [props.rowClassName, selectedRowClassNames.value];\n      return tClassNames.filter((v) => v);\n    });\n\n    // 如果想给 TR 添加属性，请在这里补充，不要透传更多额外 Props 到 BaseTable\n    const tRowAttributes = computed(() => {\n      const tAttributes = [props.rowAttributes];\n      if (isRowHandlerDraggable.value || isRowDraggable.value) {\n        tAttributes.push(({ row }) => ({ 'data-id': get(row, props.rowKey || 'id') }));\n      }\n      return tAttributes.filter((v) => v);\n    });\n\n    // 多个 Hook 共用 primaryTableRef\n    onMounted(() => {\n      setFilterPrimaryTableRef(primaryTableRef.value);\n      setDragSortPrimaryTableRef(primaryTableRef.value);\n    });\n\n    // 对外暴露的方法\n    context.expose({\n      validateRowData,\n      validateTableData,\n      clearValidateData,\n      refreshTable: () => {\n        primaryTableRef.value.refreshTable();\n      },\n      scrollToElement: (data: ScrollToElementParams) => {\n        primaryTableRef.value.virtualConfig.scrollToElement(data);\n      },\n      scrollColumnIntoView: (colKey: string) => {\n        primaryTableRef.value.scrollColumnIntoView(colKey);\n      },\n      // 暴露基础表格 ref 及相关方法\n      baseTableRef: primaryTableRef,\n    });\n\n    // 1. 影响列数量的因素有：自定义列配置、展开/收起行、多级表头；2. 影响表头内容的因素有：排序图标、筛选图标\n    const getColumns = (columns: PrimaryTableCol<TableRowData>[]) => {\n      const arr: PrimaryTableCol<TableRowData>[] = [];\n      for (let i = 0, len = columns.length; i < len; i++) {\n        let item = { ...columns[i] };\n        // 自定义列显示控制\n        const isDisplayColumn = item.children?.length || tDisplayColumns.value?.includes(item.colKey);\n        if (!isDisplayColumn && props.columnController) continue;\n        item = formatToRowSelectColumn(item);\n        const { sort } = props;\n        if (item.sorter && props.showSortColumnBgColor) {\n          const sorts = sort instanceof Array ? sort : [sort];\n          const sortedColumn = sorts.find(\n            (sort) => sort && sort.sortBy === item.colKey && sort.descending !== undefined,\n          );\n          if (sortedColumn) {\n            item.className =\n              item.className instanceof Array\n                ? item.className.concat(tableSortClasses.sortColumn)\n                : [item.className, tableSortClasses.sortColumn];\n          }\n        }\n        // 添加排序图标和过滤图标\n        if (item.sorter || item.filter) {\n          const titleContent = renderTitle(context.slots, item, i);\n          const { ellipsisTitle } = item;\n          item.title = (h, p) => {\n            const sortIcon = item.sorter ? renderSortIcon(p) : null;\n            const filterIcon = item.filter ? renderFilterIcon(p) : null;\n            // @ts-ignore 注意：此处 Vue2 和 Vue3 有所不同\n            const attach = primaryTableRef.value?.tableContentRef;\n            return renderTitleWidthIcon(\n              [titleContent, sortIcon, filterIcon],\n              p.col,\n              p.colIndex,\n              ellipsisTitle,\n              attach,\n              {\n                classPrefix,\n                ellipsisOverlayClassName: props.size !== 'medium' ? sizeClassNames[props.size] : '',\n              },\n            );\n          };\n          item.ellipsisTitle = false;\n        }\n        // 如果是单元格可编辑状态\n        if (item.edit?.component) {\n          const oldCell = item.cell;\n          item.cell = (h, p: PrimaryTableCellParams<TableRowData>) => {\n            const cellProps: EditableCellProps = {\n              ...p,\n              oldCell,\n              tableBaseClass,\n              cellEmptyContent: props.cellEmptyContent,\n              onChange: props.onRowEdit,\n              onValidate: props.onRowValidate,\n              onRuleChange,\n              onEditableChange: onPrimaryTableCellEditChange,\n            };\n            if (props.editableRowKeys) {\n              const rowValue = get(p.row, props.rowKey || 'id');\n              cellProps.editable = editableKeysMap.value[rowValue] || false;\n              const key = [rowValue, p.col.colKey].join('__');\n              const errorList = errorListMap.value?.[key];\n              errorList && (cellProps.errors = errorList);\n            }\n            if (props.editableCellState) {\n              cellProps.readonly = !props.editableCellState(p);\n            }\n            return <EditableCell {...cellProps} v-slots={context.slots} />;\n          };\n        }\n        if (item.children?.length) {\n          item.children = getColumns(item.children);\n        }\n        // 多级表头和自定义列配置特殊逻辑：要么子节点不存在，要么子节点长度大于 1，方便做自定义列配置\n        if (!item.children || item.children?.length) {\n          arr.push(item);\n        }\n      }\n      return arr;\n    };\n\n    const tColumns = computed(() => {\n      const cols = getColumns(columns.value);\n      if (showExpandIconColumn.value) {\n        cols.unshift(getExpandColumn());\n      }\n      return cols;\n    });\n\n    const onInnerPageChange = (pageInfo: PageInfo, newData: Array<TableRowData>) => {\n      currentPaginateData.value = newData;\n      props.onPageChange?.(pageInfo, newData);\n      const changeParams: Parameters<TdPrimaryTableProps['onChange']> = [\n        { pagination: pageInfo },\n        { trigger: 'pagination', currentData: newData },\n      ];\n      props.onChange?.(...changeParams);\n      // 是否在分页时保留选中结果，如果不保留则需清空\n      if (!props.reserveSelectedRowOnPaginate) {\n        setTSelectedRowKeys([], {\n          selectedRowData: [],\n          type: 'uncheck',\n          currentRowKey: 'CLEAR_ON_PAGINATE',\n        });\n      }\n    };\n\n    // handle click and dblclick exits at the same time\n    let timer: any;\n    const DURATION = 250;\n    const onInnerRowClick: TdPrimaryTableProps['onRowClick'] = (params) => {\n      // no dbl click conflict, no delay\n      if (!props.onRowDblclick) {\n        onInnerExpandRowClick(params);\n        onInnerSelectRowClick(params);\n        return;\n      }\n      if (timer) {\n        // dblclick\n        clearTimeout(timer);\n        timer = undefined;\n      } else {\n        timer = setTimeout(() => {\n          onInnerExpandRowClick(params);\n          onInnerSelectRowClick(params);\n          timer = undefined;\n        }, DURATION);\n      }\n    };\n\n    return () => {\n      const formatNode = (\n        api: string,\n        renderInnerNode: Function,\n        condition: boolean,\n        extra?: { reverse?: boolean },\n      ) => {\n        if (!condition) return props[api];\n        const innerNode = renderInnerNode(h);\n        const propsNode = renderTNode(api);\n        if (innerNode && !propsNode) return () => innerNode;\n        if (propsNode && !innerNode) return () => propsNode;\n        if (innerNode && propsNode) {\n          return () =>\n            extra?.reverse ? (\n              <div>\n                {innerNode}\n                {propsNode}\n              </div>\n            ) : (\n              <div>\n                {propsNode}\n                {innerNode}\n              </div>\n            );\n        }\n        return null;\n      };\n      const isColumnController = !!(columnController.value && Object.keys(columnController.value).length);\n      // @ts-ignore\n      const placement = isColumnController ? columnController.value.placement || 'top-right' : '';\n      const isBottomController = isColumnController && placement?.indexOf('bottom') !== -1;\n      const topContent = formatNode('topContent', renderColumnController, isColumnController && !isBottomController);\n      const bottomContent = formatNode('bottomContent', renderColumnController, isBottomController, {\n        reverse: true,\n      });\n      const firstFullRow = formatNode('firstFullRow', renderFirstFilterRow, !hasEmptyCondition.value);\n      const lastFullRow = formatNode('lastFullRow', renderAsyncLoading, !!props.asyncLoading);\n\n      const baseTableProps = {\n        ...omit(props, OMIT_PROPS),\n        rowClassName: tRowClassNames.value,\n        rowAttributes: tRowAttributes.value,\n        columns: tColumns.value,\n        topContent,\n        bottomContent,\n        firstFullRow,\n        lastFullRow,\n        thDraggable: ['col', 'row-handler-col'].includes(props.dragSort),\n        onPageChange: onInnerPageChange,\n        renderExpandedRow: showExpandedRow.value ? renderExpandedRow : undefined,\n      };\n\n      if (props.expandOnRowClick || props.selectOnRowClick) {\n        baseTableProps.onRowClick = onInnerRowClick;\n      }\n\n      return (\n        // @ts-ignore\n        <BaseTable\n          ref={primaryTableRef}\n          v-slots={context.slots}\n          {...baseTableProps}\n          class={primaryTableClasses.value}\n          onLeafColumnsChange={setDragSortColumns}\n        />\n      );\n    };\n  },\n});\n"],"names":["name","setup","useEditableRow","tAttributes","onMounted","setFilterPrimaryTableRef","setDragSortPrimaryTableRef","validateRowData","validateTableData","clearValidateData","primaryTableRef","scrollToElement","scrollColumnIntoView","baseTableRef","item","classPrefix","ellipsisOverlayClassName","oldCell","tableBaseClass","onRuleChange","onEditableChange","get","errorList","arr","cols","pagination","trigger","currentData","selectedRowData","type","currentRowKey","_createVNode","reverse","topContent","bottomContent","firstFullRow","lastFullRow","thDraggable","onPageChange","renderExpandedRow","BaseTable","_mergeProps"],"mappings":"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"}