@@ -4,7 +4,9 @@ import property from "@ui5/webcomponents-base/dist/decorators/property.js";
44import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js" ;
55import jsxRenderer from "@ui5/webcomponents-base/dist/renderer/JsxRenderer.js" ;
66import type { IFormInputElement } from "@ui5/webcomponents-base/dist/features/InputElementsFormSupport.js" ;
7- import { isSpace , isEnter } from "@ui5/webcomponents-base/dist/Keys.js" ;
7+ import {
8+ isSpace , isEnter , isShift , isEscape ,
9+ } from "@ui5/webcomponents-base/dist/Keys.js" ;
810import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js" ;
911import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js" ;
1012import { getEffectiveAriaLabelText } from "@ui5/webcomponents-base/dist/util/AccessibilityTextsHelper.js" ;
@@ -77,6 +79,7 @@ class Switch extends UI5Element implements IFormInputElement {
7779 change : void
7880 "value-changed" : void
7981 }
82+
8083 /**
8184 * Defines the component design.
8285 *
@@ -195,6 +198,9 @@ class Switch extends UI5Element implements IFormInputElement {
195198 @property ( )
196199 value = "" ;
197200
201+ @property ( { type : Boolean , noAttribute : true } )
202+ _cancelAction = false ;
203+
198204 @i18n ( "@ui5/webcomponents" )
199205 static i18nBundle : I18nBundle ;
200206
@@ -227,6 +233,7 @@ class Switch extends UI5Element implements IFormInputElement {
227233 }
228234
229235 _onkeydown ( e : KeyboardEvent ) {
236+ this . _cancelAction = isShift ( e ) || isEscape ( e ) ;
230237 if ( isSpace ( e ) ) {
231238 e . preventDefault ( ) ;
232239 }
@@ -237,7 +244,7 @@ class Switch extends UI5Element implements IFormInputElement {
237244 }
238245
239246 _onkeyup ( e : KeyboardEvent ) {
240- if ( isSpace ( e ) ) {
247+ if ( isSpace ( e ) && ! this . _cancelAction ) {
241248 this . _onclick ( ) ;
242249 }
243250 }
0 commit comments