Skip to content

Commit 15db2ff

Browse files
committed
raster_layer_editor: Fix several issues with the min and max input fields on RasterLayerEditor.
The first issue was sometimes keyboard events would propagate up to the document and it could trigger keyboard shortcuts in Jupyter Lab. The second issue was min and max values being set to NaN when changing the inputs via the keyboard.
1 parent 4ef1552 commit 15db2ff

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

js/raster_layer_editor.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ export class RasterLayerEditor extends LitElement {
7878
@query("legend-customization") legendCustomization?: LegendCustomization;
7979
@queryAll("#band-selection select") bandSelects!: NodeListOf<HTMLInputElement>;
8080

81+
@query("#min") private minInput!: HTMLInputElement;
82+
@query("#max") private maxInput!: HTMLInputElement;
83+
8184
override connectedCallback() {
8285
super.connectedCallback();
8386
this.colorModel =
@@ -141,6 +144,7 @@ export class RasterLayerEditor extends LitElement {
141144
id="min"
142145
name="min"
143146
.value="${this.minValue ?? "Loading..."}"
147+
@keydown="${this.onInputKeyDown}"
144148
@change="${this.onMinTextChanged}"
145149
?disabled="${this.minAndMaxValuesLocked}"
146150
/>
@@ -151,6 +155,7 @@ export class RasterLayerEditor extends LitElement {
151155
id="max"
152156
name="max"
153157
.value="${this.maxValue ?? "Loading..."}"
158+
@keydown="${this.onInputKeyDown}"
154159
@change="${this.onMaxTextChanged}"
155160
?disabled="${this.minAndMaxValuesLocked}"
156161
/>
@@ -296,12 +301,16 @@ export class RasterLayerEditor extends LitElement {
296301
this.gamma = (event.target as HTMLInputElement).valueAsNumber;
297302
}
298303

299-
private onMinTextChanged(event: Event): void {
300-
this.minValue = (event.target as HTMLInputElement).valueAsNumber;
304+
private onInputKeyDown(event: KeyboardEvent): void {
305+
event.stopPropagation(); // Prevent the event from bubbling up to the document.
306+
}
307+
308+
private onMinTextChanged(_event: Event): void {
309+
this.minValue = +this.minInput.value; // Convert input string to number.
301310
}
302311

303-
private onMaxTextChanged(event: Event): void {
304-
this.maxValue = (event.target as HTMLInputElement).valueAsNumber;
312+
private onMaxTextChanged(_event: Event): void {
313+
this.maxValue = +this.maxInput.value; // Convert input string to number.
305314
}
306315

307316
private calculateBandStats(): void {

0 commit comments

Comments
 (0)