UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 15.3 kB
{"version":3,"file":"event-helper.mjs","sources":["../../../../../../../packages/components/table/src/table-header/event-helper.ts"],"sourcesContent":["import { getCurrentInstance, inject, ref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport {\n addClass,\n hasClass,\n isClient,\n isElement,\n removeClass,\n} from '@element-plus/utils'\nimport { TABLE_INJECTION_KEY } from '../tokens'\n\nimport type { EmitFn } from '@element-plus/utils'\nimport type { TableHeaderProps } from '.'\nimport type { TableColumnCtx } from '../table-column/defaults'\nimport type { DefaultRow, TableSortOrder } from '../table/defaults'\n\nfunction useEvent<T extends DefaultRow>(\n props: TableHeaderProps<T>,\n emit: EmitFn<string[]>\n) {\n const instance = getCurrentInstance()\n const parent = inject(TABLE_INJECTION_KEY)\n const handleFilterClick = (event: Event) => {\n event.stopPropagation()\n return\n }\n\n const handleHeaderClick = (event: Event, column: TableColumnCtx<T>) => {\n if (!column.filters && column.sortable) {\n handleSortClick(event, column, false)\n } else if (column.filterable && !column.sortable) {\n handleFilterClick(event)\n }\n parent?.emit('header-click', column, event)\n }\n\n const handleHeaderContextMenu = (event: Event, column: TableColumnCtx<T>) => {\n parent?.emit('header-contextmenu', column, event)\n }\n const draggingColumn = ref<TableColumnCtx<T> | null>(null)\n const dragging = ref(false)\n const dragState = ref<{\n startMouseLeft: number\n startLeft: number\n startColumnLeft: number\n tableLeft: number\n }>()\n const handleMouseDown = (event: MouseEvent, column: TableColumnCtx<T>) => {\n if (!isClient) return\n if (column.children && column.children.length > 0) return\n /* istanbul ignore if */\n if (\n draggingColumn.value &&\n props.border &&\n draggingColumn.value.id === column.id\n ) {\n dragging.value = true\n\n const table = parent\n emit('set-drag-visible', true)\n const tableEl = table?.vnode.el\n const tableLeft = tableEl?.getBoundingClientRect().left\n const columnEl = instance?.vnode?.el?.querySelector(`th.${column.id}`)\n const columnRect = columnEl.getBoundingClientRect()\n const minLeft = columnRect.left - tableLeft + 30\n\n addClass(columnEl, 'noclick')\n\n dragState.value = {\n startMouseLeft: event.clientX,\n startLeft: columnRect.right - tableLeft,\n startColumnLeft: columnRect.left - tableLeft,\n tableLeft,\n }\n const resizeProxy = table?.refs.resizeProxy as HTMLElement\n resizeProxy.style.left = `${(dragState.value as any).startLeft}px`\n\n document.onselectstart = function () {\n return false\n }\n document.ondragstart = function () {\n return false\n }\n\n const handleMouseMove = (event: MouseEvent) => {\n const deltaLeft =\n event.clientX - (dragState.value as any).startMouseLeft\n const proxyLeft = (dragState.value as any).startLeft + deltaLeft\n\n resizeProxy.style.left = `${Math.max(minLeft, proxyLeft)}px`\n }\n\n const handleMouseUp = () => {\n if (dragging.value) {\n const { startColumnLeft, startLeft } = dragState.value as any\n const finalLeft = Number.parseInt(resizeProxy.style.left, 10)\n const columnWidth = finalLeft - startColumnLeft\n column.width = column.realWidth = columnWidth\n table?.emit(\n 'header-dragend',\n column.width,\n startLeft - startColumnLeft,\n column,\n event\n )\n requestAnimationFrame(() => {\n props.store.scheduleLayout(false, true)\n })\n document.body.style.cursor = ''\n dragging.value = false\n draggingColumn.value = null\n dragState.value = undefined\n emit('set-drag-visible', false)\n }\n\n document.removeEventListener('mousemove', handleMouseMove)\n document.removeEventListener('mouseup', handleMouseUp)\n document.onselectstart = null\n document.ondragstart = null\n\n setTimeout(() => {\n removeClass(columnEl, 'noclick')\n }, 0)\n }\n\n document.addEventListener('mousemove', handleMouseMove)\n document.addEventListener('mouseup', handleMouseUp)\n }\n }\n\n const handleMouseMove = (event: MouseEvent, column: TableColumnCtx<T>) => {\n if (!props.border || (column.children && column.children.length > 0)) return\n const el = event.target as HTMLElement\n const target = isElement(el) ? el.closest('th') : null\n if (!target) {\n return\n }\n\n const isSortable = hasClass(target, 'is-sortable')\n\n if (isSortable) {\n const cursor = dragging.value ? 'col-resize' : ''\n target.style.cursor = cursor\n\n const caret = target.querySelector<HTMLElement>('.caret-wrapper')\n if (caret) {\n caret.style.cursor = cursor\n }\n }\n\n if (!column.resizable || dragging.value) {\n draggingColumn.value = null\n return\n }\n\n const rect = target.getBoundingClientRect()\n const isLastTh = target.parentNode?.lastElementChild === target\n const allowDrag = props.allowDragLastColumn || !isLastTh\n const isResizeHandleActive =\n rect.width > 12 && rect.right - event.clientX < 8 && allowDrag\n const cursor = isResizeHandleActive ? 'col-resize' : ''\n\n document.body.style.cursor = cursor\n draggingColumn.value = isResizeHandleActive ? (column as any) : null\n if (isSortable) {\n target.style.cursor = cursor\n }\n }\n\n const handleMouseOut = () => {\n if (!isClient || dragging.value) return\n document.body.style.cursor = ''\n }\n const toggleOrder = ({ order, sortOrders }: TableColumnCtx<T>) => {\n if ((order as string) === '') return sortOrders[0]\n const index = sortOrders.indexOf(order || null)\n return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1]\n }\n const handleSortClick = (\n event: Event,\n column: TableColumnCtx<T>,\n givenOrder?: TableSortOrder | boolean\n ) => {\n event.stopPropagation()\n const order = (\n column.order === givenOrder ? null : givenOrder || toggleOrder(column)\n ) as TableSortOrder | null\n const target = (event.target as HTMLElement)?.closest('th')\n\n if (target) {\n if (hasClass(target, 'noclick')) {\n removeClass(target, 'noclick')\n return\n }\n }\n\n if (!column.sortable) return\n\n const clickTarget = event.currentTarget\n\n if (\n ['ascending', 'descending'].some(\n (str) =>\n hasClass(clickTarget as Element, str) &&\n !column.sortOrders.includes(str as TableSortOrder)\n )\n ) {\n return\n }\n\n const states = props.store.states\n let sortProp = states.sortProp.value\n let sortOrder\n const sortingColumn = states.sortingColumn.value\n\n if (\n sortingColumn !== column ||\n (sortingColumn === column && isNull(sortingColumn.order))\n ) {\n if (sortingColumn) {\n sortingColumn.order = null\n }\n states.sortingColumn.value = column\n sortProp = column.property\n }\n if (!order) {\n sortOrder = column.order = null\n } else {\n sortOrder = column.order = order\n }\n\n states.sortProp.value = sortProp\n states.sortOrder.value = sortOrder\n\n parent?.store.commit('changeSortCondition')\n }\n\n return {\n handleHeaderClick,\n handleHeaderContextMenu,\n handleMouseDown,\n handleMouseMove,\n handleMouseOut,\n handleSortClick,\n handleFilterClick,\n }\n}\n\nexport default useEvent\n"],"names":["handleMouseMove","event","cursor"],"mappings":"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"}