Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 6325f33

Browse files
author
pipeline
committed
v29.2.5 is released
1 parent 4fb2df8 commit 6325f33

File tree

164 files changed

+2738
-1977
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

164 files changed

+2738
-1977
lines changed

‎controls/barcodegenerator/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 29.2.4 (2025-05-14)
5+
## 29.2.5 (2025-05-21)
66

77
### Barcode
88

‎controls/base/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## [Unreleased]
44

5-
## 29.2.4 (2025-05-14)
5+
## 29.2.5 (2025-05-21)
66

77
### Common
88

‎controls/buttons/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
## [Unreleased]
44

5+
## 29.2.5 (2025年05月21日)
6+
7+
### Switch
8+
9+
#### Bug Fixes
10+
11+
- `#I959152` - Fixed the issue of the click event being triggered twice when placing a switch within a label tag. Additionally, resolved a script error that occurred when placing the switch within a dialog.
12+
513
## 29.1.33 (2025年03月25日)
614

715
### Chip

‎controls/buttons/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@syncfusion/ej2-buttons",
3-
"version": "29.1.33",
3+
"version": "29.2.4",
44
"description": "A package of feature-rich Essential JS 2 components such as Button, CheckBox, RadioButton and Switch.",
55
"author": "Syncfusion Inc.",
66
"license": "SEE LICENSE IN license",

‎controls/buttons/spec/check-box.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,13 @@ describe('CheckBox', () => {
804804
checkbox.getLabel();
805805
checkbox.appendTo('#checkbox');
806806
});
807-
807+
it('Vue CheckBox with updateVueArrayModel function', function () {
808+
checkbox = new CheckBox({ indeterminate: null });
809+
checkbox.isVue = true;
810+
checkbox.value = ['games', 'volleyball'];
811+
checkbox.appendTo('#checkbox');
812+
checkbox.element.value = 'volleyball';
813+
checkbox.updateVueArrayModel();
814+
});
808815
});
809816
});

‎controls/buttons/spec/switch.spec.ts

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,22 +434,25 @@ describe('Switch', () => {
434434

435435
describe('Parent element click event prevented while clicking on switch component', () => {
436436
let switchBtn: Switch;
437-
let input: HTMLElement;
438-
let parentElement: HTMLElement;
437+
let input: HTMLElement;letinput1: HTMLElement;
438+
let parentElement: HTMLElement;letparentElement1: HTMLElement;
439439
let parentChecked: boolean = false;
440440
beforeEach(() => {
441-
parentElement = createElement('div', {
442-
id: 'form'
443-
}) as HTMLElement;
441+
parentElement = createElement('div', { id: 'form' }) as HTMLElement;
442+
parentElement1 = createElement('label', { id: 'label1' }) as HTMLElement;
444443
input = createElement('input', { id: 'switch1' }) as HTMLElement;
444+
input1 = createElement('input', { id: 'switch2' }) as HTMLElement;
445445
parentElement.appendChild(input);
446+
parentElement1.appendChild(input1);
446447
parentElement.onclick = function () {
447448
parentChecked = true;
448449
}
449450
document.body.appendChild(parentElement);
451+
document.body.appendChild(parentElement1);
450452
});
451453
afterEach(() => {
452454
parentElement.remove();
455+
parentElement1.remove();
453456
switchBtn.destroy();
454457
})
455458
it('ej2-918217: Parent element click event prevented while clicking on switch component in angular platforms.', () => {
@@ -459,6 +462,27 @@ describe('Switch', () => {
459462
switchBtn.click();
460463
expect(parentChecked).toBeTruthy();
461464
});
465+
it('959152: Click event trigger twice when we placed switch component within the label tag', () => {
466+
switchBtn = new Switch({
467+
checked: true
468+
}, '#switch2');
469+
switchBtn.element.parentElement.click();
470+
expect(switchBtn.checked).toEqual(false);
471+
});
472+
it('Coverage improvement for switch focus handler', () => {
473+
switchBtn = new Switch({
474+
checked: true
475+
}, '#switch1');
476+
switchBtn.isAngular = true;
477+
(switchBtn as any).mouseLeaveHandler();
478+
const keyArgs: KeyboardEvent = new KeyboardEvent('keyup', {
479+
key: 'space',
480+
code: 'Space',
481+
bubbles: true,
482+
cancelable: true
483+
});
484+
(switchBtn as any).switchFocusHandler(keyArgs);
485+
});
462486
});
463487

464488
describe('Switch in HTML5 forms', () => {

‎controls/buttons/src/check-box/check-box.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -591,15 +591,17 @@ export class CheckBox extends Component<HTMLInputElement> implements INotifyProp
591591

592592
protected unWireEvents(): void {
593593
const wrapper: Element = this.wrapper;
594-
EventHandler.remove(wrapper, 'click', this.clickHandler);
595594
EventHandler.remove(this.element, 'keyup', this.keyUpHandler);
596595
EventHandler.remove(this.element, 'focus', this.focusHandler);
597596
EventHandler.remove(this.element, 'focusout', this.focusOutHandler);
598-
const label: Element = wrapper.getElementsByTagName('label')[0];
599-
if (label) {
600-
EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);
601-
EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);
602-
EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);
597+
if (wrapper) {
598+
EventHandler.remove(wrapper, 'click', this.clickHandler);
599+
const label: Element = wrapper.getElementsByTagName('label')[0];
600+
if (label) {
601+
EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);
602+
EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);
603+
EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);
604+
}
603605
}
604606
const formElem: HTMLFormElement = <HTMLFormElement>closest(this.element, 'form');
605607
if (formElem) {

‎controls/buttons/src/radio-button/radio-button.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -527,11 +527,13 @@ export class RadioButton extends Component<HTMLInputElement> implements INotifyP
527527
EventHandler.remove(this.element, 'focus', this.focusHandler);
528528
EventHandler.remove(this.element, 'focusout', this.focusOutHandler);
529529
EventHandler.remove(this.element, 'keyup', this.keyUpHandler);
530-
const rippleLabel: Element = label.getElementsByTagName('label')[0];
531-
if (rippleLabel) {
532-
EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);
533-
EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);
534-
EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);
530+
if (label) {
531+
const rippleLabel: Element = label.getElementsByTagName('label')[0];
532+
if (rippleLabel) {
533+
EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);
534+
EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);
535+
EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);
536+
}
535537
}
536538
if (this.formElement) {
537539
EventHandler.remove(this.formElement, 'reset', this.formResetHandler);

‎controls/buttons/src/switch/switch.ts

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,9 @@ export class Switch extends Component<HTMLInputElement> implements INotifyProper
167167
}
168168
}
169169
private clickHandler(evt?: Event): void {
170+
if (evt && this.element.closest('label')) {
171+
if (evt.target !== this.element) { return; }
172+
}
170173
this.isDrag = false;
171174
this.focusOutHandler();
172175
const beforeChangeEventArgs: BeforeChangeEventArgs = { event: evt, cancel: false, checked: this.checked };
@@ -191,7 +194,9 @@ export class Switch extends Component<HTMLInputElement> implements INotifyProper
191194
if (this.formElement) {
192195
EventHandler.remove(this.formElement, 'reset', this.formResetHandler);
193196
}
194-
destroy(this, this.getWrapper() as Element, this.tagName);
197+
if (this.getWrapper()) {
198+
destroy(this, this.getWrapper() as Element, this.tagName);
199+
}
195200
if (this.refreshing) {
196201
['e-control', 'e-switch', 'e-lib'].forEach((key: string) => {
197202
this.element.classList.add(key);
@@ -514,14 +519,18 @@ export class Switch extends Component<HTMLInputElement> implements INotifyProper
514519
}
515520
private unWireEvents(): void {
516521
const wrapper: Element = this.getWrapper() as Element;
517-
EventHandler.remove(wrapper, 'click', this.clickHandler);
518-
EventHandler.remove(this.element, 'focus', this.focusHandler);
519-
EventHandler.remove(this.element, 'focusout', this.focusOutHandler);
520-
EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);
521-
EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);
522-
EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);
523-
EventHandler.remove(wrapper, 'mouseleave', this.mouseLeaveHandler);
524-
EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);
522+
if (wrapper) {
523+
EventHandler.remove(wrapper, 'click', this.clickHandler);
524+
EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);
525+
EventHandler.remove(wrapper, 'mouseleave', this.mouseLeaveHandler);
526+
EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);
527+
}
528+
if (this.element) {
529+
EventHandler.remove(this.element, 'focus', this.focusHandler);
530+
EventHandler.remove(this.element, 'focusout', this.focusOutHandler);
531+
EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);
532+
EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);
533+
}
525534
}
526535

527536
/**

‎controls/calendars/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
## [Unreleased]
44

5+
## 29.2.5 (2025年05月21日)
6+
7+
### DatePicker
8+
9+
#### Bug Fixes
10+
11+
- `#I711579` - Fixed an issue where the DatePicker popup did not close on mobile devices when clicking outside of it.
12+
513
## 29.1.40 (2025年04月29日)
614

715
### DateRangePicker

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /