Add logging for autocompletion interactions
Release-Notes: skip
Change-Id: I6e5508e98c2c40667c7c233800f28d2a30b35224
diff --git a/polygerrit-ui/app/embed/gr-textarea.ts b/polygerrit-ui/app/embed/gr-textarea.ts
index 628b65b..9b88e9c 100644
--- a/polygerrit-ui/app/embed/gr-textarea.ts
+++ b/polygerrit-ui/app/embed/gr-textarea.ts
@@ -456,13 +456,7 @@
const value = await this.getValue();
this.innerValue = value;
- this.dispatchEvent(
- new CustomEvent('input', {
- detail: {
- value: this.value,
- },
- })
- );
+ this.fire('input', {value: this.value});
}
private onFocus(event: Event) {
@@ -492,7 +486,7 @@
(event.ctrlKey || event.metaKey)
) {
event.preventDefault();
- this.dispatchEvent(new CustomEvent('saveShortcut'));
+ this.fire('saveShortcut');
}
await this.toggleHintVisibilityIfAny();
}
@@ -507,7 +501,13 @@
}
private handleScroll() {
- this.dispatchEvent(new CustomEvent('scroll'));
+ this.fire('scroll');
+ }
+
+ private fire<T>(type: string, detail?: T) {
+ this.dispatchEvent(
+ new CustomEvent(type, {detail, bubbles: true, composed: true})
+ );
}
private async handleTabKeyPress(event: KeyboardEvent) {
@@ -529,14 +529,7 @@
await this.putCursorAtEnd();
await this.onInput(event);
- this.dispatchEvent(
- new CustomEvent('hintApplied', {
- detail: {
- hint,
- oldValue,
- },
- })
- );
+ this.fire('hintApplied', {hint, oldValue});
}
private async toggleHintVisibilityIfAny() {
@@ -572,6 +565,7 @@
}
private addHintSpanAtEndOfContent(editableDivElement: Node, hint: string) {
+ const oldValue = this.value ?? '';
const hintSpan = document.createElement('span');
hintSpan.classList.add(AUTOCOMPLETE_HINT_CLASS);
hintSpan.setAttribute('role', 'alert');
@@ -581,26 +575,16 @@
);
hintSpan.dataset['hint'] = hint;
editableDivElement.appendChild(hintSpan);
- this.dispatchEvent(
- new CustomEvent('hintShown', {
- detail: {
- hint,
- },
- })
- );
+ this.fire('hintShown', {hint, oldValue});
}
private removeHintSpanIfShown() {
const hintSpan = this.hintSpan();
if (hintSpan) {
hintSpan.remove();
- this.dispatchEvent(
- new CustomEvent('hintDismissed', {
- detail: {
- hint: (hintSpan as HTMLElement).dataset['hint'],
- },
- })
- );
+ this.fire('hintDismissed', {
+ hint: (hintSpan as HTMLElement).dataset['hint'],
+ });
}
}
@@ -616,13 +600,7 @@
event?.preventDefault();
event?.stopImmediatePropagation();
- this.dispatchEvent(
- new CustomEvent('cursorPositionChange', {
- detail: {
- position: this.getCursorPosition(),
- },
- })
- );
+ this.fire('cursorPositionChange', {position: this.getCursorPosition()});
}
private async updateValueInDom() {