Skip to content

Commit aedd851

Browse files
authored
Xingyan/fix code review (#1916) (#1917)
* fix(CodeReview): 修复拖拽时记录的行号区间错误的问题
1 parent 2d90a56 commit aedd851

File tree

3 files changed

+15
-11
lines changed

3 files changed

+15
-11
lines changed

packages/devui-vue/devui/code-review/src/composables/use-code-review-comment.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export function useCodeReviewComment(reviewContentRef: Ref<HTMLElement>, props:
118118
}
119119
};
120120
// 获代码行 取值方法
121-
const getLineNumbers = (currentNumber: number, currentNumbers: Array<number>) => {
121+
const getLineNumbers = (currentNumber: number, currentNumbers: Array<number>, moveDirection: 'up' | 'down') => {
122122
if (currentNumber === -1) {
123123
// 当前行没数据不代表之前选中的没数据,此时返回原来的
124124
return currentNumbers;
@@ -129,12 +129,12 @@ export function useCodeReviewComment(reviewContentRef: Ref<HTMLElement>, props:
129129
const numbers = [...currentNumbers];
130130
let max = Math.max(...numbers);
131131
let min = Math.min(...numbers);
132-
if (currentNumber < min) {
133-
min = currentNumber;
134-
}
135-
if (currentNumber > max) {
132+
if (moveDirection === 'down') {
136133
max = currentNumber;
137134
}
135+
if (moveDirection === 'up') {
136+
min = currentNumber;
137+
}
138138
return Array.from({ length: max - min + 1 }, (_, i) => i + min);
139139
};
140140
// 获取一些公共类和判断
@@ -211,11 +211,13 @@ export function useCodeReviewComment(reviewContentRef: Ref<HTMLElement>, props:
211211
}
212212
getDoubleCheckedLineCode(shouldRenderClass);
213213
}
214-
function updateLineNumbers() {
214+
function updateLineNumbers(moveDirection: 'up' | 'down') {
215215
currentLeftLineNumbers =
216-
currentLeftLineNumber === -1 ? currentLeftLineNumbers : getLineNumbers(currentLeftLineNumber, currentLeftLineNumbers);
216+
currentLeftLineNumber === -1 ? currentLeftLineNumbers : getLineNumbers(currentLeftLineNumber, currentLeftLineNumbers, moveDirection);
217217
currentRightLineNumbers =
218-
currentRightLineNumber === -1 ? currentRightLineNumbers : getLineNumbers(currentRightLineNumber, currentRightLineNumbers);
218+
currentRightLineNumber === -1
219+
? currentRightLineNumbers
220+
: getLineNumbers(currentRightLineNumber, currentRightLineNumbers, moveDirection);
219221
getCheckedLineCode(false);
220222
afterCheckLinesEmitData = {
221223
left: currentLeftLineNumber,

packages/devui-vue/devui/code-review/src/composables/use-code-review-line-selection.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { findParentTrNode } from '../utils';
66
export function useCodeReviewLineSelection(
77
reviewContentRef: Ref<HTMLElement>,
88
props: CodeReviewProps,
9-
mouseMoveCb: () => void,
9+
mouseMoveCb: (moveDirection: 'up' | 'down') => void,
1010
mouseupCb: () => void
1111
) {
1212
const ns = useNamespace('code-review');
@@ -16,6 +16,7 @@ export function useCodeReviewLineSelection(
1616
let isClickedLeft: boolean | undefined;
1717
let shouldClear: boolean;
1818
let isMouseMoved: boolean;
19+
let startClientY: number;
1920

2021
const onMousedown = (e: MouseEvent) => {
2122
// 鼠标左键按下
@@ -44,6 +45,7 @@ export function useCodeReviewLineSelection(
4445
dragging = true;
4546
shouldClear = true;
4647
isMouseMoved = false;
48+
startClientY = e.clientY;
4749
e.preventDefault();
4850
e.stopPropagation();
4951
document.addEventListener('mousemove', onMousemove);
@@ -74,7 +76,7 @@ export function useCodeReviewLineSelection(
7476
if (endIndex === -1) {
7577
return;
7678
}
77-
mouseMoveCb();
79+
mouseMoveCb(e.clientY > startClientY ? 'down' : 'up');
7880
if (startIndex > endIndex) {
7981
[startIndex, endIndex] = [endIndex, startIndex];
8082
}

packages/devui-vue/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "vue-devui",
3-
"version": "1.6.24",
3+
"version": "1.6.25",
44
"license": "MIT",
55
"description": "DevUI components based on Vite and Vue3",
66
"keywords": [

0 commit comments

Comments
 (0)