vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 18 kB
Source Map (JSON)
{"version":3,"file":"table-row.vue2.cjs","sources":["../../../components/table/table-row.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { CollapseTransition } from '@/components/collapse-transition'\nimport { Renderer } from '@/components/renderer'\nimport { ResizeObserver } from '@/components/resize-observer'\n\nimport { computed, inject, nextTick, onMounted, reactive, ref, toRef, watchEffect } from 'vue'\n\nimport { useNameHelper } from '@vexip-ui/config'\nimport { useSetTimeout } from '@vexip-ui/hooks'\nimport { isFunction } from '@vexip-ui/utils'\nimport { TABLE_ACTIONS, TABLE_STORE } from './symbol'\n\nimport type { PropType } from 'vue'\nimport type { TableRowState } from './symbol'\n\ndefineOptions({ name: 'TableRow' })\n\nconst props = defineProps({\n row: {\n type: Object as PropType<TableRowState>,\n default: () => ({}),\n },\n index: {\n type: Number,\n default: null,\n },\n isHead: {\n type: Boolean,\n default: false,\n },\n isFoot: {\n type: Boolean,\n default: false,\n },\n fixed: {\n type: String as PropType<'left' | 'right' | undefined>,\n default: null,\n },\n})\n\nconst { state, getters, mutations } = inject(TABLE_STORE)!\nconst tableAction = inject(TABLE_ACTIONS)!\n\nconst nh = useNameHelper('table')\n\nconst { timer } = useSetTimeout()\nconst dragging = ref(false)\nconst isDragOver = ref(false)\n\nconst wrapper = ref<HTMLElement>()\nconst rowEl = ref<HTMLElement>()\nconst expandEl = ref<HTMLElement>()\n\nconst instance = reactive({\n el: wrapper,\n row: toRef(props, 'row'),\n})\n\nconst rowKey = computed(() => props.row.key)\nconst rowType = computed(() => (props.isHead ? 'head' : props.isFoot ? 'foot' : undefined))\nconst className = computed(() => {\n let customClass = null\n\n if (!rowType.value) {\n if (typeof state.rowClass === 'function') {\n customClass = state.rowClass(props.row.data, props.index)\n } else {\n customClass = state.rowClass\n }\n }\n\n return [\n nh.be('row'),\n {\n [nh.bem('row', 'fixed')]: state.rowHeight && state.rowHeight > 0,\n [nh.bem('row', 'hover')]:\n !rowType.value && state.highlight && rowKey.value === state.hoveredRowKey,\n [nh.bem('row', 'stripe')]: state.stripe && props.index % 2 === 1,\n [nh.bem('row', 'checked')]: props.row.checked,\n [nh.bem('row', 'dragging')]: dragging.value,\n [nh.bem('row', 'drag-over')]: isDragOver.value,\n },\n customClass,\n ]\n})\nconst maxHeight = computed(() =>\n Math.max(...Object.values(props.row.cellHeights || {}), state.rowMinHeight),\n)\nconst style = computed(() => {\n let customStyle: any = ''\n\n if (!rowType.value) {\n if (typeof state.rowStyle === 'function') {\n customStyle = state.rowStyle(props.row.data, props.index)\n } else {\n customStyle = state.rowStyle\n }\n }\n\n return [\n customStyle,\n {\n height: !state.rowHeight ? `${maxHeight.value}px` : `${state.rowHeight}px`,\n minHeight: state.rowHeight ? undefined : `${state.rowMinHeight}px`,\n border: '0',\n },\n ]\n})\nconst attrs = computed(() => {\n if (!rowType.value) {\n if (typeof state.rowAttrs === 'function') {\n return state.rowAttrs(props.row.data, props.index)\n } else {\n return state.rowAttrs\n }\n }\n\n return null\n})\nconst groupStyle = computed(() => {\n if (props.isHead || props.isFoot) return undefined\n\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n state.heightTrigger\n\n const offset =\n state.heightBITree && !rowType.value && props.index ? state.heightBITree.sum(props.index) : 0\n\n return {\n transform: offset ? `translate3d(0, ${offset}px, 0)` : undefined,\n }\n})\nconst cellDraggable = computed(() => {\n return getters.hasDragColumn && !getters.disableDragRows.has(rowKey.value)\n})\nconst rowDraggable = computed(() => !rowType.value && state.rowDraggable)\nconst draggable = computed(() => !rowType.value && (state.rowDraggable || cellDraggable.value))\nconst expandRenderer = computed(() => state.expandRenderer)\nconst hasExpand = computed(() => {\n if (props.isHead || props.isFoot || !getters.expandColumn) return false\n if (state.rightFixedColumns.length) return props.fixed === 'right'\n if (state.leftFixedColumns.length) return props.fixed === 'left'\n\n return !!state.normalColumns.length && !props.fixed\n})\n\nfunction setExpandHeight() {\n let targetHeight: number\n\n if (props.row.expanded && expandEl.value) {\n targetHeight = expandEl.value.scrollHeight\n } else {\n targetHeight = 0\n }\n\n if (targetHeight !== props.row.expandHeight) {\n mutations.setRowProp(rowKey.value, 'expandHeight', targetHeight)\n updateTotalHeight(true)\n }\n}\n\nfunction updateTotalHeight(force = false) {\n if (state.heightBITree && getters.visibleKeys.has(rowKey.value) && (force || !props.fixed)) {\n const height = props.row.height + props.row.expandHeight\n const tree = state.heightBITree\n const prev = tree.get(props.index)\n\n if (height !== prev) {\n tree.add(props.index, height - prev)\n mutations.updateTotalHeight()\n mutations.triggerHeightChange()\n }\n }\n}\n\nfunction handleResize(entry: ResizeObserverEntry) {\n const height = entry.borderBoxSize?.[0]?.blockSize ?? entry.contentRect.height\n mutations.setRowProp(rowKey.value, 'height', height)\n !rowType.value && updateTotalHeight()\n}\n\nwatchEffect(() => {\n if (props.isHead || props.isFoot) return\n\n mutations.setRowProp(rowKey.value, 'height', state.rowHeight || maxHeight.value)\n !rowType.value && updateTotalHeight()\n nextTick(() => {\n hasExpand.value && setExpandHeight()\n })\n})\n\nonMounted(() => {\n nextTick(() => {\n mutations.setRowProp(rowKey.value, 'height', state.rowHeight || maxHeight.value)\n nextTick(() => {\n hasExpand.value && setExpandHeight()\n })\n })\n})\n\nfunction buildEventPayload(event: Event) {\n return {\n row: props.row.data,\n key: props.row.key,\n index: props.index,\n event,\n }\n}\n\nfunction handleMouseEnter(event: MouseEvent) {\n mutations.setHoveredRowKey(rowKey.value)\n\n if (!rowType.value && tableAction) {\n tableAction.emitRowEvent('Enter', buildEventPayload(event))\n }\n}\n\nfunction handleMouseLeave(event: MouseEvent) {\n mutations.setHoveredRowKey(null)\n\n if (!rowType.value && tableAction) {\n tableAction.emitRowEvent('Leave', buildEventPayload(event))\n }\n}\n\nfunction handleClick(event: MouseEvent) {\n if (!rowType.value && tableAction) {\n tableAction.emitRowEvent('Click', buildEventPayload(event))\n }\n}\n\nfunction handleDblclick(event: MouseEvent) {\n if (!rowType.value && tableAction) {\n tableAction.emitRowEvent('Dblclick', buildEventPayload(event))\n }\n}\n\nfunction handleContextmenu(event: MouseEvent) {\n if (!rowType.value && tableAction) {\n tableAction.emitRowEvent('Contextmenu', buildEventPayload(event))\n }\n}\n\nfunction shouldProcessDrag() {\n return draggable.value && state.dragging\n}\n\nfunction handleDragStart(event: DragEvent) {\n if (!draggable.value && !cellDraggable.value) return\n\n dragging.value = true\n tableAction.handleRowDragStart(instance, event)\n}\n\nfunction handleDragOver(event: DragEvent) {\n if (!shouldProcessDrag() || (cellDraggable.value && !getters.rowDragging)) return\n\n clearTimeout(timer.drag)\n event.stopPropagation()\n event.preventDefault()\n\n isDragOver.value = true\n\n tableAction.handleRowDragOver(instance, event)\n}\n\nfunction handleDrop(event: DragEvent) {\n if (!shouldProcessDrag()) return\n\n clearTimeout(timer.drag)\n event.stopPropagation()\n event.preventDefault()\n\n isDragOver.value = false\n\n tableAction.handleRowDrop(instance, event)\n nextTick(() => mutations.handleDrag(rowKey.value, false))\n}\n\nfunction handleDragEnd(event: DragEvent) {\n if (!shouldProcessDrag()) return\n\n event.stopPropagation()\n dragging.value = true\n\n tableAction.handleRowDragEnd(event)\n nextTick(() => mutations.handleDrag(rowKey.value, false))\n}\n\nfunction handleDragLeave(event: DragEvent) {\n if (!shouldProcessDrag()) return\n\n clearTimeout(timer.drag)\n event.preventDefault()\n\n timer.drag = setTimeout(() => {\n isDragOver.value = false\n }, 100)\n}\n\nfunction afterExpand() {\n mutations.setRowProp(rowKey.value, 'expandAnimate', false)\n}\n</script>\n\n<template>\n <div\n v-if=\"!row.hidden\"\n ref=\"wrapper\"\n :class=\"{\n [nh.be('group')]: true,\n [nh.bem('group', 'checked')]: row.checked,\n [nh.bem('group', 'last')]: row.last,\n }\"\n role=\"row\"\n :draggable=\"rowDraggable || row.dragging\"\n :style=\"groupStyle\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n @click=\"handleClick\"\n @dblclick=\"handleDblclick\"\n @contextmenu=\"handleContextmenu\"\n @dragstart.stop=\"handleDragStart\"\n @dragover=\"handleDragOver\"\n @drop=\"handleDrop\"\n @dragend=\"handleDragEnd\"\n @dragleave=\"handleDragLeave\"\n >\n <ResizeObserver :on-resize=\"handleResize\">\n <div\n v-bind=\"attrs\"\n ref=\"rowEl\"\n :class=\"className\"\n :style=\"style\"\n >\n <slot></slot>\n </div>\n </ResizeObserver>\n <CollapseTransition\n v-if=\"hasExpand\"\n :disabled=\"!row.expandAnimate\"\n @enter=\"setExpandHeight\"\n @leave=\"setExpandHeight\"\n @after-enter=\"afterExpand\"\n @after-leave=\"afterExpand\"\n >\n <div\n v-if=\"row.expanded\"\n ref=\"expandEl\"\n :class=\"[nh.be('expanded'), fixed === 'right' && nh.bem('expanded', 'right')]\"\n >\n <ResizeObserver :disabled=\"row.expandAnimate\" :on-resize=\"setExpandHeight\">\n <div :class=\"nh.be('expanded-wrapper')\">\n <Renderer\n v-if=\"isFunction(getters.expandColumn!.renderer)\"\n :renderer=\"getters.expandColumn!.renderer\"\n :data=\"{ leftFixed: 0, rightFixed: 0, row: row.data, rowIndex: index }\"\n ></Renderer>\n <Renderer\n v-else-if=\"isFunction(expandRenderer)\"\n :renderer=\"expandRenderer\"\n :data=\"{ leftFixed: 0, rightFixed: 0, row: row.data, rowIndex: index }\"\n ></Renderer>\n </div>\n </ResizeObserver>\n </div>\n </CollapseTransition>\n </div>\n</template>\n"],"names":["props","__props","state","getters","mutations","inject","TABLE_STORE","tableAction","TABLE_ACTIONS","nh","useNameHelper","timer","useSetTimeout","dragging","ref","isDragOver","wrapper","rowEl","expandEl","instance","reactive","toRef","rowKey","computed","rowType","className","customClass","maxHeight","style","customStyle","attrs","groupStyle","offset","cellDraggable","rowDraggable","draggable","expandRenderer","hasExpand","setExpandHeight","targetHeight","updateTotalHeight","force","height","tree","prev","handleResize","entry","_b","_a","watchEffect","nextTick","onMounted","buildEventPayload","event","handleMouseEnter","handleMouseLeave","handleClick","handleDblclick","handleContextmenu","shouldProcessDrag","handleDragStart","handleDragOver","handleDrop","handleDragEnd","handleDragLeave","afterExpand","_createElementBlock","_normalizeClass","_unref","_createVNode","ResizeObserver","_createElementVNode","_mergeProps","_renderSlot","_ctx","_createBlock","CollapseTransition","isFunction","Renderer"],"mappings":"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"}