From af96cb92db7da34fb750ed1f0c1bb6afc978ea65 Mon Sep 17 00:00:00 2001 From: Chris LaFreniere <40371649+chlafreniere@users.noreply.github.com> Date: Fri, 14 May 2021 11:40:21 -0700 Subject: [PATCH] Handle key_up in callout dialog (#15472) --- .../browser/calloutDialog/linkCalloutDialog.ts | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts b/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts index 13e4913236..cd6ed399d0 100644 --- a/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts +++ b/src/sql/workbench/contrib/notebook/browser/calloutDialog/linkCalloutDialog.ts @@ -22,6 +22,7 @@ import { InputBox } from 'sql/base/browser/ui/inputBox/inputBox'; import { attachCalloutDialogStyler } from 'sql/workbench/common/styler'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { escapeLabel, escapeUrl } from 'sql/workbench/contrib/notebook/browser/calloutDialog/common/utils'; +import { KeyCode } from 'vs/base/common/keyCodes'; export interface ILinkCalloutDialogOptions { insertTitle?: string, @@ -100,6 +101,13 @@ export class LinkCalloutDialog extends Modal { } protected renderBody(container: HTMLElement) { + this._register(DOM.addDisposableListener(document, DOM.EventType.KEY_UP, (e: KeyboardEvent) => { + let event = new StandardKeyboardEvent(e); + if (event.equals(KeyCode.Enter)) { + DOM.EventHelper.stop(e, true); + this.hide('ok'); + } + })); let linkContentColumn = DOM.$('.column.insert-link'); DOM.append(container, linkContentColumn); @@ -147,7 +155,8 @@ export class LinkCalloutDialog extends Modal { protected onAccept(e?: StandardKeyboardEvent) { // EventHelper.stop() will call preventDefault. Without it, text cell will insert an extra newline when pressing enter on dialog DOM.EventHelper.stop(e, true); - this.insert(); + const keyboardEventExists = !!e; + this.insert(keyboardEventExists); } protected onClose(e?: StandardKeyboardEvent) { @@ -155,8 +164,10 @@ export class LinkCalloutDialog extends Modal { this.cancel(); } - public insert(): void { - this.hide('ok'); + public insert(willHideByKeyboardEvent = false): void { + if (!willHideByKeyboardEvent) { + this.hide('ok'); + } let escapedLabel = escapeLabel(this._linkTextInputBox.value); let escapedUrl = escapeUrl(this._linkUrlInputBox.value);