|
84 | 84 | </td>
|
85 | 85 | </tr>
|
86 | 86 |
|
87 |
| - <tr @mousedown="onClick($event,row)" |
| 87 | + <tr @click="onClick($event,row)" |
88 | 88 | v-else v-for="(row, rowI) in rows" :key="`row_${row._primaryKeyValue}`"
|
89 | 89 | ref="rowRefs"
|
90 | 90 | class="bg-lightListTable dark:bg-darkListTable border-lightListBorder dark:border-gray-700 hover:bg-lightListTableRowHover dark:hover:bg-darkListTableRowHover"
|
@@ -457,50 +457,48 @@ function onSortButtonClick(event, field) {
|
457 | 457 |
|
458 | 458 | const clickTarget = ref(null);
|
459 | 459 |
|
460 |
| -async function onClick(e, row) { |
461 |
| - if (clickTarget.value === e.target) return; |
| 460 | +async function onClick(e,row) { |
| 461 | + if(clickTarget.value === e.target) return; |
462 | 462 | clickTarget.value = e.target;
|
463 | 463 | await new Promise((resolve) => setTimeout(resolve, 100));
|
464 | 464 | if (window.getSelection().toString()) return;
|
465 |
| - if (e.button === 2) { |
466 |
| - return; // right click, do nothing |
467 |
| - } |
468 |
| - const openInNewTab = |
469 |
| - e.ctrlKey || |
470 |
| - e.metaKey || |
471 |
| - e.button === 1 || |
472 |
| - (row._clickUrl?.includes('target=_blank')); |
473 |
| -
|
474 |
| - if (openInNewTab) { |
475 |
| - if (row._clickUrl) { |
476 |
| - window.open(row._clickUrl, '_blank'); |
| 465 | + else { |
| 466 | + if (row._clickUrl === null) { |
| 467 | + // user asked to nothing on click |
| 468 | + return; |
| 469 | + } |
| 470 | + if (e.ctrlKey || e.metaKey || row._clickUrl?.includes('target=_blank')) { |
| 471 | + |
| 472 | + if (row._clickUrl) { |
| 473 | + window.open(row._clickUrl, '_blank'); |
| 474 | + } else { |
| 475 | + window.open( |
| 476 | + router.resolve({ |
| 477 | + name: 'resource-show', |
| 478 | + params: { |
| 479 | + resourceId: props.resource.resourceId, |
| 480 | + primaryKey: row._primaryKeyValue, |
| 481 | + }, |
| 482 | + }).href, |
| 483 | + '_blank' |
| 484 | + ); |
| 485 | + } |
477 | 486 | } else {
|
478 |
| - window.open( |
479 |
| - router.resolve({ |
| 487 | + if (row._clickUrl) { |
| 488 | + if (row._clickUrl.startsWith('http')) { |
| 489 | + document.location.href = row._clickUrl; |
| 490 | + } else { |
| 491 | + router.push(row._clickUrl); |
| 492 | + } |
| 493 | + } else { |
| 494 | + router.push({ |
480 | 495 | name: 'resource-show',
|
481 | 496 | params: {
|
482 | 497 | resourceId: props.resource.resourceId,
|
483 | 498 | primaryKey: row._primaryKeyValue,
|
484 | 499 | },
|
485 |
| - }).href, |
486 |
| - '_blank' |
487 |
| - ); |
488 |
| - } |
489 |
| - } else { |
490 |
| - if (row._clickUrl) { |
491 |
| - if (row._clickUrl.startsWith('http')) { |
492 |
| - document.location.href = row._clickUrl; |
493 |
| - } else { |
494 |
| - router.push(row._clickUrl); |
| 500 | + }); |
495 | 501 | }
|
496 |
| - } else { |
497 |
| - router.push({ |
498 |
| - name: 'resource-show', |
499 |
| - params: { |
500 |
| - resourceId: props.resource.resourceId, |
501 |
| - primaryKey: row._primaryKeyValue, |
502 |
| - }, |
503 |
| - }); |
504 | 502 | }
|
505 | 503 | }
|
506 | 504 | }
|
|
0 commit comments