tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 22.3 kB
Source Map (JSON)
{"version":3,"file":"useDragSort.mjs","sources":["../../../../common/js/utils/swapDragArrayElement.ts","../../../../components/table/hooks/useDragSort.ts"],"sourcesContent":["// 拖拽排序场景中:调整某个元素的顺序\nexport default function swapDragArrayElement(\n data: any[], currentIndex: number, targetIndex: number\n) {\n const newData = [...data];\n if (targetIndex - currentIndex > 0) {\n newData.splice(targetIndex + 1, 0, newData[currentIndex]);\n newData.splice(currentIndex, 1);\n } else {\n newData.splice(targetIndex, 0, newData[currentIndex]);\n newData.splice(currentIndex + 1, 1);\n }\n return newData;\n}\n","// 表格 行拖拽 + 列拖拽功能\nimport { SetupContext, computed, toRefs, ref, watch, h, ComputedRef } from 'vue';\nimport Sortable, { SortableEvent, SortableOptions, MoveEvent } from 'sortablejs';\nimport { isFunction } from 'lodash-es';\nimport { TableRowData, TdPrimaryTableProps, DragSortContext, PrimaryTableCol } from '../type';\nimport useClassName from './useClassName';\nimport log from '@tdesign/common-js/log/index';\nimport { hasClass } from '@tdesign/shared-utils';\nimport swapDragArrayElement from '@tdesign/common-js/utils/swapDragArrayElement';\nimport { BaseTableColumns, SimplePageInfo } from '../types';\nimport { getColumnDataByKey, getColumnIndexByKey } from '@tdesign/common-js/table/utils';\n\nfunction removeNode(node: HTMLElement) {\n if (node.parentElement !== null) {\n node.parentElement.removeChild(node);\n }\n}\n\nfunction insertNodeAt(fatherNode: HTMLElement, node: HTMLElement, position: number) {\n const refNode = position === 0 ? fatherNode.children[0] : fatherNode.children[position - 1].nextSibling;\n fatherNode.insertBefore(node, refNode);\n}\n\nexport default function useDragSort(\n props: TdPrimaryTableProps,\n context: SetupContext,\n params: ComputedRef<{\n showElement: boolean;\n }>,\n) {\n const { sortOnRowDraggable, dragSort, data } = toRefs(props);\n const innerPagination = ref(props.pagination);\n const { tableDraggableClasses, tableBaseClass, tableFullRowClasses, tableExpandClasses } = useClassName();\n const columns = ref<PrimaryTableCol[]>(props.columns || []);\n const primaryTableRef = ref(null);\n // @ts-ignore 判断是否有拖拽列\n const dragCol = computed(() => columns.value.find((item) => item.colKey === 'drag'));\n // 行拖拽判断条件\n const isRowDraggable = computed(\n () => sortOnRowDraggable.value || ['row', 'row-handler-col'].includes(dragSort.value),\n );\n // 行拖拽判断条件-手柄列\n const isRowHandlerDraggable = computed(\n () => ['row-handler', 'row-handler-col'].includes(dragSort.value) && !!dragCol.value,\n );\n // 列拖拽判断条件\n const isColDraggable = computed(() => ['col', 'row-handler-col'].includes(dragSort.value));\n\n if (props.sortOnRowDraggable) {\n log.error('Table', \"`sortOnRowDraggable` is going to be deprecated, use dragSort='row' instead.\");\n }\n\n // 本地分页的表格,index 不同,需加上分页计数\n function getDataPageIndex(index: number, pagination: SimplePageInfo) {\n const current = pagination.current ?? pagination.defaultCurrent;\n const pageSize = pagination.pageSize ?? pagination.defaultPageSize;\n // 开启本地分页的场景\n if (!props.disableDataPage && pagination && data.value.length > pageSize) {\n return pageSize * (current - 1) + index;\n }\n return index;\n }\n\n // 行拖拽排序\n const registerRowDragEvent = (element: HTMLDivElement): void => {\n /**\n * fix: https://github.com/Tencent/tdesign-vue-next/issues/4985\n * 若table内容未渲染(即element子元素为空),拖拽事件不注册\n */\n if (element?.children?.length === 0 || (!isRowHandlerDraggable.value && !isRowDraggable.value)) return;\n const dragContainer = element?.querySelector('tbody');\n if (!dragContainer) {\n console.error('tbody does not exist.');\n return null;\n }\n const baseOptions: SortableOptions = {\n animation: 150,\n ghostClass: tableDraggableClasses.ghost,\n chosenClass: tableDraggableClasses.chosen,\n dragClass: tableDraggableClasses.dragging,\n // 过滤首行尾行固定,过滤展开行\n filter: `.${tableFullRowClasses.base},.${tableExpandClasses.row}`,\n onMove: (evt: MoveEvent) => !hasClass(evt.related, tableFullRowClasses.base),\n onEnd(evt: SortableEvent) {\n if (evt.newIndex === evt.oldIndex) return;\n // 处理受控:拖拽列表恢复原始排序\n removeNode(evt.item);\n insertNodeAt(evt.from, evt.item, evt.oldIndex);\n let { oldIndex: currentIndex, newIndex: targetIndex } = evt;\n if (\n (isFunction(props.firstFullRow) && props.firstFullRow(h)) ||\n context.slots.firstFullRow ||\n context.slots['first-full-row']\n ) {\n currentIndex -= 1;\n targetIndex -= 1;\n }\n if (innerPagination.value) {\n currentIndex = getDataPageIndex(currentIndex, innerPagination.value);\n targetIndex = getDataPageIndex(targetIndex, innerPagination.value);\n }\n const params: DragSortContext<TableRowData> = {\n data: data.value,\n currentIndex,\n current: data.value[currentIndex],\n targetIndex,\n target: data.value[targetIndex],\n newData: swapDragArrayElement([...props.data], currentIndex, targetIndex),\n e: evt,\n sort: 'row',\n };\n // currentData is going to be deprecated\n params.currentData = params.newData;\n props.onDragSort?.(params);\n },\n ...props.dragSortOptions,\n };\n\n if (!dragContainer) return;\n if (isRowDraggable.value) {\n new Sortable(dragContainer, { ...baseOptions });\n } else {\n new Sortable(dragContainer, {\n ...baseOptions,\n handle: `.${tableDraggableClasses.handle}`,\n });\n }\n };\n\n const registerOneLevelColDragEvent = (container: HTMLElement, recover: boolean) => {\n const options: SortableOptions = {\n animation: 150,\n dataIdAttr: 'data-colkey',\n direction: 'vertical',\n ghostClass: tableDraggableClasses.ghost,\n chosenClass: tableDraggableClasses.chosen,\n dragClass: tableDraggableClasses.dragging,\n handle: `.${tableBaseClass.thCellInner}`,\n // 存在类名:t-table__th--drag-sort 的列才允许拖拽调整顺序(注意:添加 draggable 之后,固定列的表头 和 吸顶表头 位置顺序会错位,暂时注释)\n // draggable: `th.${tableDraggableClasses.dragSortTh}`,\n onEnd: (evt: SortableEvent) => {\n if (evt.newIndex === evt.oldIndex) return;\n if (recover) {\n // 处理受控:拖拽列表恢复原始排序,等待外部数据 data 变化,更新最终顺序\n removeNode(evt.item);\n insertNodeAt(evt.from, evt.item, evt.oldIndex);\n }\n const { oldIndex, newIndex, target: targetElement } = evt;\n let currentIndex = recover ? oldIndex : newIndex;\n let targetIndex = recover ? newIndex : oldIndex;\n const oldElement = targetElement.children[currentIndex] as HTMLElement;\n const newElement = targetElement.children[targetIndex] as HTMLElement;\n const current = getColumnDataByKey(columns.value, oldElement.dataset.colkey);\n const target = getColumnDataByKey(columns.value, newElement.dataset.colkey);\n if (!current || !current.colKey) {\n log.error('Table', `colKey is missing in ${JSON.stringify(current)}`);\n }\n if (!target || !target.colKey) {\n log.error('Table', `colKey is missing in ${JSON.stringify(target)}`);\n }\n // 寻找外部数据 props.columns 中的真正下标\n currentIndex = getColumnIndexByKey(props.columns, current.colKey);\n targetIndex = getColumnIndexByKey(props.columns, target.colKey);\n const params: DragSortContext<TableRowData> = {\n data: columns.value,\n currentIndex,\n current,\n targetIndex,\n target,\n newData: swapDragArrayElement([...props.columns], currentIndex, targetIndex),\n e: evt,\n sort: 'col',\n };\n // currentData is going to be deprecated\n params.currentData = params.newData;\n props.onDragSort?.(params);\n },\n ...props.dragSortOptions,\n };\n if (!container) return;\n new Sortable(container, options);\n };\n\n // 列拖拽排序:涉及到多级表头、自定义显示列 等综合场景\n const registerColDragEvent = (tableElement: HTMLElement) => {\n if (!isColDraggable.value || !tableElement) return;\n const trList = tableElement.querySelectorAll('thead > tr');\n if (trList.length <= 1) {\n const [container] = trList;\n registerOneLevelColDragEvent(container as HTMLElement, true);\n } else {\n // 多级表头只抛出事件,不处理其他未知逻辑(如多层表头之间具体如何交换)\n trList?.forEach((container) => {\n registerOneLevelColDragEvent(container as HTMLElement, false);\n });\n }\n };\n\n function setDragSortPrimaryTableRef(primaryTableElement: any) {\n primaryTableRef.value = primaryTableElement;\n }\n\n function setDragSortColumns(val: BaseTableColumns) {\n // @ts-ignore\n columns.value = val;\n }\n\n // eslint-disable-next-line\n watch([primaryTableRef, columns, dragSort, params], ([val, columns, dragSort, params]) => {\n register(val, params);\n });\n\n function register(val: any, params: any) {\n const primaryTableCmp = val as any;\n if (!val || !primaryTableCmp.$el || !params.showElement) return;\n // register after table tr rendered\n const timerA = setTimeout(() => {\n registerRowDragEvent(primaryTableCmp.$el);\n registerColDragEvent(primaryTableCmp.$el);\n /** 待表头节点准备完成后 */\n const timer = setTimeout(() => {\n if (primaryTableCmp.$refs.affixHeaderRef) {\n registerColDragEvent(primaryTableCmp.$refs.affixHeaderRef);\n }\n clearTimeout(timer);\n });\n\n clearTimeout(timerA);\n }, 60);\n }\n\n return {\n innerPagination,\n isRowDraggable,\n isRowHandlerDraggable,\n isColDraggable,\n setDragSortPrimaryTableRef,\n setDragSortColumns,\n };\n}\n"],"names":["swapDragArrayElement","data","currentIndex","targetIndex","newData","_toConsumableArray","splice","removeNode","node","parentElement","removeChild","insertNodeAt","fatherNode","position","refNode","children","nextSibling","insertBefore","useDragSort","props","context","params","_toRefs","toRefs","sortOnRowDraggable","dragSort","innerPagination","ref","pagination","_useClassName","useClassName","tableDraggableClasses","tableBaseClass","tableFullRowClasses","tableExpandClasses","columns","primaryTableRef","dragCol","computed","value","find","item","colKey","isRowDraggable","includes","isRowHandlerDraggable","isColDraggable","log","error","getDataPageIndex","index","_pagination$current","_pagination$pageSize","current","defaultCurrent","pageSize","defaultPageSize","disableDataPage","length","registerRowDragEvent","element","_element$children","dragContainer","querySelector","console","baseOptions","_objectSpread","animation","ghostClass","ghost","chosenClass","chosen","dragClass","dragging","filter","concat","base","row","onMove","evt","hasClass","related","onEnd","_props$onDragSort","newIndex","oldIndex","from","isFunction","firstFullRow","h","slots","target","e","sort","currentData","onDragSort","call","dragSortOptions","Sortable","handle","registerOneLevelColDragEvent","container","recover","options","dataIdAttr","direction","thCellInner","_props$onDragSort2","targetElement","oldElement","newElement","getColumnDataByKey","dataset","colkey","JSON","stringify","getColumnIndexByKey","registerColDragEvent","tableElement","trList","querySelectorAll","_trList","_slicedToArray","forEach","setDragSortPrimaryTableRef","primaryTableElement","setDragSortColumns","val","watch","_ref","_ref2","register","primaryTableCmp","$el","showElement","timerA","setTimeout","timer","$refs","affixHeaderRef","clearTimeout"],"mappings":"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"}