Skip to content

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; let input1: HTMLElement;
438+
let parentElement: HTMLElement; let parentElement1: 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)