From fbd8d629558a5581862aed5098ccc7b899120e08 Mon Sep 17 00:00:00 2001 From: Phil Renaud Date: Mon, 19 Aug 2024 10:20:24 -0400 Subject: [PATCH] Check for target on click to prevent double-opening cmd+clicked links on jobs index (#23832) --- .changelog/23832.txt | 3 +++ ui/app/controllers/jobs/index.js | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .changelog/23832.txt diff --git a/.changelog/23832.txt b/.changelog/23832.txt new file mode 100644 index 000000000..44f048a9d --- /dev/null +++ b/.changelog/23832.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fix an issue where cmd+click or ctrl+click would double-open a job +``` diff --git a/ui/app/controllers/jobs/index.js b/ui/app/controllers/jobs/index.js index f72f18629..b13be7e7f 100644 --- a/ui/app/controllers/jobs/index.js +++ b/ui/app/controllers/jobs/index.js @@ -12,6 +12,8 @@ import { tracked } from '@glimmer/tracking'; import localStorageProperty from 'nomad-ui/utils/properties/local-storage'; import { restartableTask, timeout } from 'ember-concurrency'; import Ember from 'ember'; +// eslint-disable-next-line no-unused-vars +import JobModel from '../../models/job'; const JOB_LIST_THROTTLE = 5000; const JOB_DETAILS_THROTTLE = 1000; @@ -62,8 +64,20 @@ export default class JobsIndexController extends Controller { @tracked pendingJobs = null; @tracked pendingJobIDs = null; + /** + * Trigger can either be the pointer event itself, or if the keyboard shorcut was used, the html element corresponding to the job. + * @param {JobModel} job + * @param {PointerEvent|HTMLElement} trigger + */ @action - gotoJob(job) { + gotoJob(job, trigger) { + // Don't navigate if the user clicked on a link; this will happen with modifier keys like cmd/ctrl on the link itself + if ( + trigger instanceof PointerEvent && + /** @type {HTMLElement} */ (trigger.target).tagName === 'A' + ) { + return; + } this.router.transitionTo('jobs.job.index', job.idWithNamespace); }