Skip to content

Commit 901da47

Browse files
authored
fix: dispatching of events twice (#292)
* set bubbles to default * boolean input * input ele * radio and radio group * textarea * slider * select
1 parent 291558b commit 901da47

File tree

8 files changed

+18
-6
lines changed

8 files changed

+18
-6
lines changed

packages/uui-base/lib/events/UUIEvent.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
const DefaultInit = {
66
composed: true,
7+
bubbles: true,
78
};
89
export class UUIEvent<
910
DetailType extends Record<string, any> = Record<string, any>,

packages/uui-boolean-input/lib/uui-boolean-input.element.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ export abstract class UUIBooleanInputElement extends FormControlMixin(
190190
this._input.click();
191191
}
192192

193-
private _onInputChange() {
193+
private _onInputChange(e: Event) {
194+
e.stopPropagation();
194195
this.pristine = false;
195196
this.checked = this._input.checked;
196197
this.dispatchEvent(new UUIBooleanInputEvent(UUIBooleanInputEvent.CHANGE));

packages/uui-input/lib/uui-input.element.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,12 +281,14 @@ export class UUIInputElement extends FormControlMixin(
281281
}
282282

283283
protected onInput(e: Event) {
284+
e.stopPropagation();
284285
this.value = (e.target as HTMLInputElement).value;
285286

286287
this.dispatchEvent(new UUIInputEvent(UUIInputEvent.INPUT));
287288
}
288289

289-
protected onChange() {
290+
protected onChange(e: Event) {
291+
e.stopPropagation();
290292
this.pristine = false;
291293
this.dispatchEvent(new UUIInputEvent(UUIInputEvent.CHANGE));
292294
}

packages/uui-radio/lib/uui-radio-group.element.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ export class UUIRadioGroupElement extends FormControlMixin(LitElement) {
117117
}
118118

119119
private _handleSlotChange(e: Event) {
120+
e.stopPropagation();
120121
// TODO: make sure to diff new and old ones to only add and remove event listeners on relevant elements.
121122

122123
this._radioElements?.forEach(el => {
@@ -225,6 +226,7 @@ export class UUIRadioGroupElement extends FormControlMixin(LitElement) {
225226
}
226227

227228
private _onKeydown(e: KeyboardEvent) {
229+
e.stopPropagation();
228230
switch (e.key) {
229231
case ARROW_LEFT:
230232
case ARROW_UP: {
@@ -264,6 +266,7 @@ export class UUIRadioGroupElement extends FormControlMixin(LitElement) {
264266
};
265267

266268
private _handleSelectOnClick = (e: UUIRadioEvent) => {
269+
e.stopPropagation();
267270
if (e.target.checked === true) {
268271
this.value = e.target.value;
269272
this._fireChangeEvent();

packages/uui-radio/lib/uui-radio.element.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,8 @@ export class UUIRadioElement extends LitElement {
220220
this.inputElement.click();
221221
}
222222

223-
private _onChange() {
223+
private _onChange(e: Event) {
224+
e.stopPropagation();
224225
const checked = this.inputElement.checked;
225226
this.checked = checked;
226227
if (checked) {

packages/uui-select/lib/uui-select.element.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ export class UUISelectElement extends FormControlMixin(LitElement) {
229229
}
230230

231231
protected setValue(e: Event) {
232+
e.stopPropagation();
232233
const target = e.target as HTMLSelectElement;
233234
if (e.target) this.value = target.value;
234235
this.dispatchEvent(

packages/uui-slider/lib/uui-slider.element.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,12 +392,14 @@ export class UUISliderElement extends FormControlMixin(LitElement) {
392392
this._sliderPosition = `${Math.floor(ratio * 100000) / 1000}%`;
393393
}
394394

395-
private _onInput() {
395+
private _onInput(e: Event) {
396+
e.stopPropagation();
396397
this.value = this._input.value;
397398
this.dispatchEvent(new UUISliderEvent(UUISliderEvent.INPUT));
398399
}
399400

400-
private _onChange() {
401+
private _onChange(e: Event) {
402+
e.stopPropagation();
401403
this.pristine = false;
402404
this.dispatchEvent(new UUISliderEvent(UUISliderEvent.CHANGE));
403405
}

packages/uui-textarea/lib/uui-textarea.element.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,8 @@ export class UUITextareaElement extends FormControlMixin(LitElement) {
255255
//this.dispatchEvent(new UUITextareaEvent(UUITextareaEvent.INPUT));
256256
}
257257

258-
private onChange() {
258+
private onChange(e: Event) {
259+
e.stopPropagation();
259260
this.pristine = false;
260261
this.dispatchEvent(new UUITextareaEvent(UUITextareaEvent.CHANGE));
261262
}

0 commit comments

Comments
 (0)