Skip to content

Commit d0f9cd2

Browse files
authored
Merge branch '10.1.x' into simeonoff/fix-8172-10.1.x
2 parents 4adeecd + 40a2972 commit d0f9cd2

File tree

4 files changed

+54
-10
lines changed

4 files changed

+54
-10
lines changed

projects/igniteui-angular/src/lib/combo/combo.component.spec.ts

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import { DisplayDensity } from '../core/density';
1919
import { AbsoluteScrollStrategy, ConnectedPositioningStrategy } from '../services/public_api';
2020
import { IgxSelectionAPIService } from '../core/selection';
2121
import { IgxIconService } from '../icon/public_api';
22-
import { CancelableEventArgs } from '../core/utils';
2322

2423
const CSS_CLASS_COMBO = 'igx-combo';
2524
const CSS_CLASS_COMBO_DROPDOWN = 'igx-combo__drop-down';
@@ -584,6 +583,38 @@ describe('igxCombo', () => {
584583
expect(combo.onSearchInput.emit).toHaveBeenCalledTimes(1);
585584
expect(matchSpy).toHaveBeenCalledTimes(1);
586585
});
586+
it('should not open on click if combo is disabled', () => {
587+
combo = new IgxComboComponent(elementRef, mockCdr, mockSelection as any, mockComboService,
588+
mockIconService, null, mockInjector);
589+
const dropdown = jasmine.createSpyObj('IgxComboDropDownComponent', ['open', 'close', 'toggle']);
590+
const spyObj = jasmine.createSpyObj('event', ['stopPropagation', 'preventDefault']);
591+
spyOn(mockIconService, 'addSvgIconFromText').and.returnValue(null);
592+
combo.ngOnInit();
593+
combo.dropdown = dropdown;
594+
dropdown.collapsed = true;
595+
596+
combo.disabled = true;
597+
combo.onInputClick(spyObj);
598+
expect(combo.dropdown.collapsed).toBeTruthy();
599+
});
600+
it('should not clear value when combo is disabled', () => {
601+
const selectionService = new IgxSelectionAPIService();
602+
combo = new IgxComboComponent(elementRef, mockCdr, selectionService, mockComboService,
603+
mockIconService, null, mockInjector);
604+
const dropdown = jasmine.createSpyObj('IgxComboDropDownComponent', ['selectItem']);
605+
const spyObj = jasmine.createSpyObj('event', ['stopPropagation']);
606+
spyOn(mockIconService, 'addSvgIconFromText').and.returnValue(null);
607+
combo.ngOnInit();
608+
combo.data = data;
609+
combo.dropdown = dropdown;
610+
combo.disabled = true;
611+
spyOnProperty(combo, 'totalItemCount').and.returnValue(combo.data.length);
612+
613+
const item = combo.data.slice(0, 1);
614+
combo.selectItems(item, true);
615+
combo.handleClearItems(spyObj);
616+
expect(combo.value).toEqual(item[0]);
617+
});
587618
});
588619
describe('Initialization and rendering tests: ', () => {
589620
configureTestSuite();
@@ -2523,13 +2554,6 @@ describe('igxCombo', () => {
25232554
expect(combo.valid).toEqual(IgxComboState.INITIAL);
25242555
expect(combo.comboInput.valid).toEqual(IgxInputState.INITIAL);
25252556
});
2526-
it('should not open on click if combo is disabled', () => {
2527-
combo.disabled = true;
2528-
fixture.detectChanges();
2529-
UIInteractions.simulateClickEvent(combo.comboInput.nativeElement);
2530-
fixture.detectChanges();
2531-
expect(combo.dropdown.collapsed).toBeTruthy();
2532-
});
25332557
it('should be possible to be enabled/disabled when used as a form control', () => {
25342558
const form = fixture.componentInstance.reactiveForm;
25352559
const comboFormReference = form.controls.townCombo;

projects/igniteui-angular/src/lib/combo/combo.component.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,9 @@ export class IgxComboComponent extends DisplayDensityBase implements IgxComboBas
13161316
* @hidden @internal
13171317
*/
13181318
public handleClearItems(event: Event): void {
1319+
if (this.disabled) {
1320+
return;
1321+
}
13191322
this.deselectAllItems(true, event);
13201323
if (this.collapsed) {
13211324
this.getEditElement().focus();

projects/igniteui-angular/src/lib/time-picker/time-picker.component.spec.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,6 +1389,15 @@ describe('IgxTimePicker', () => {
13891389
expect(timePicker.onValidationFailed.emit).toHaveBeenCalled();
13901390
}));
13911391

1392+
it('should trigger onValueChanged if 00:00 is cleared from the input', () => {
1393+
fixture.componentInstance.date = new Date(2018, 10, 27, 0, 0, 0, 0);
1394+
fixture.detectChanges();
1395+
spyOn(timePicker.onValueChanged, 'emit');
1396+
timePicker.clear();
1397+
fixture.detectChanges();
1398+
expect(timePicker.onValueChanged.emit).toHaveBeenCalledTimes(1);
1399+
});
1400+
13921401
it('should scroll on dropdown opened and accept value when focus lost', fakeAsync(() => {
13931402
fixture.detectChanges();
13941403

projects/igniteui-angular/src/lib/time-picker/time-picker.component.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1951,7 +1951,7 @@ export class IgxTimePickerComponent implements
19511951
// TODO: refactoring - this.value should be null #6585
19521952
this.value?.setHours(0, 0, 0);
19531953

1954-
if (oldVal.getTime() !== this.value.getTime()) {
1954+
if (oldVal.getTime() !== this.value?.getTime() || this.isReset()) {
19551955
const args: IgxTimePickerValueChangedEventArgs = {
19561956
oldValue: oldVal,
19571957
newValue: this.value
@@ -1994,7 +1994,7 @@ export class IgxTimePickerComponent implements
19941994
// TODO: refactoring - this.value should be null #6585
19951995
this.value?.setHours(0, 0, 0);
19961996
this.displayValue = inputMask;
1997-
if (oldVal.getTime() !== this.value?.getTime()) {
1997+
if (oldVal.getTime() !== this.value?.getTime() || this.isReset()) {
19981998
// TODO: Do not emit event when the editor is empty #6482
19991999
const args: IgxTimePickerValueChangedEventArgs = {
20002000
oldValue: oldVal,
@@ -2147,6 +2147,14 @@ export class IgxTimePickerComponent implements
21472147
input.valid = IgxInputState.INITIAL;
21482148
}
21492149
}
2150+
2151+
// Workaround method for #8135
2152+
// TODO: It must be removed in #6482
2153+
private isReset(): boolean {
2154+
return this.value?.getHours() === 0
2155+
&& this.value?.getMinutes() === 0
2156+
&& this.value?.getSeconds() === 0;
2157+
}
21502158
}
21512159

21522160
/**

0 commit comments

Comments
 (0)