Skip to content

Commit 5618862

Browse files
committed
fix(forms): respect event default prevention
- Updated the toggle method to accept an optional event parameter. - Added a test case to ensure the checkbox state does not toggle when the event's default is prevented. Signed-off-by: Cory Rylan <crylan@nvidia.com>
1 parent c7e16a5 commit 5618862

2 files changed

Lines changed: 12 additions & 3 deletions

File tree

‎projects/forms/src/mixins/checkbox.test.ts‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,15 @@ describe('CheckboxFormControlMixin', () => {
206206
expect(element.checked).toBe(false);
207207
});
208208

209+
it('should not toggle when the event default is prevented',()=>{
210+
constevent=newEvent('click',{cancelable: true});
211+
event.preventDefault();
212+
213+
element.toggle(event);
214+
215+
expect(element.checked).toBe(false);
216+
});
217+
209218
it('should request updates for checkbox state changes',()=>{
210219
vi.spyOn(element,'requestUpdate');
211220

‎projects/forms/src/mixins/checkbox.ts‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export interface CheckboxFormControlMixinInstance extends FormControlMixinInstan
3939
/**
4040
* Toggles the checked state.
4141
*/
42-
toggle(): void;
42+
toggle(event?: Event): void;
4343
}
4444

4545
exporttypeCheckboxFormControlMixinReturn<TBaseextendsConstructor>=(new(
@@ -196,8 +196,8 @@ export function CheckboxFormControlMixin<TBase extends Constructor>(
196196
this.checkValidity();
197197
}
198198

199-
toggle(){
200-
if(this.disabled||this.readOnly){
199+
toggle(event?: Event){
200+
if(this.disabled||this.readOnly||event?.defaultPrevented){
201201
return;
202202
}
203203

0 commit comments

Comments
 (0)