diff --git a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts index 7e1d88dfaa4..7148d6561e7 100644 --- a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts +++ b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.spec.ts @@ -969,7 +969,7 @@ describe('IgxDatePicker', () => { }, element: { nativeElement: jasmine.createSpyObj('mockElement', - ['focus', 'blur', 'click', 'addEventListener', 'removeEventListener']) + ['focus', 'blur', 'click', 'addEventListener', 'removeEventListener', 'querySelector']) } } as any; mockInputDirective = { @@ -1030,6 +1030,7 @@ describe('IgxDatePicker', () => { datePicker = TestBed.inject(IgxDatePickerComponent); (datePicker as any).inputGroup = mockInputGroup; + (mockInputGroup.element.nativeElement.querySelector as jasmine.Spy).and.returnValue(mockInputGroup.element.nativeElement); (datePicker as any).inputDirective = mockInputDirective; (datePicker as any).dateTimeEditor = mockDateEditor; (datePicker as any).viewContainerRef = viewsContainerRef; diff --git a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts index 389683fcb44..b13f9a0beb2 100644 --- a/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts +++ b/projects/igniteui-angular/date-picker/src/date-picker/date-picker.component.ts @@ -462,7 +462,7 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr } private get inputGroupElement(): HTMLElement { - return this.inputGroup?.element.nativeElement; + return this.inputGroup?.element.nativeElement.querySelector('.igx-input-group__bundle'); } private get dateValue(): Date { diff --git a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.spec.ts b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.spec.ts index 594ee6a7a9b..ae6cd0cee55 100644 --- a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.spec.ts +++ b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.spec.ts @@ -1922,10 +1922,11 @@ describe('IgxDateRangePicker', () => { fixture.detectChanges(); const overlayContent = document.getElementsByClassName(CSS_CLASS_OVERLAY_CONTENT)[0] as HTMLElement; + const expectedTarget = dateRange.element.nativeElement.querySelector('.igx-input-group__bundle'); expect(AutoPositionStrategy.prototype.position).toHaveBeenCalledTimes(1); expect(AutoPositionStrategy.prototype.position) .toHaveBeenCalledWith(overlayContent, jasmine.anything(), document, - jasmine.anything(), dateRange.element.nativeElement); + jasmine.anything(), expectedTarget); })); it('Should the weekStart property takes precedence over locale.', fakeAsync(() => { fixture = TestBed.createComponent(DateRangeCustomComponent); diff --git a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts index 86c2edd2951..049d44ce91a 100644 --- a/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts +++ b/projects/igniteui-angular/date-picker/src/date-range-picker/date-range-picker.component.ts @@ -1255,10 +1255,15 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective private configPositionStrategy(): void { this._positionSettings = { openAnimation: fadeIn, - closeAnimation: fadeOut + closeAnimation: fadeOut, + offset: 1 }; this._dropDownOverlaySettings.positionStrategy = new AutoPositionStrategy(this._positionSettings); - this._dropDownOverlaySettings.target = this.element.nativeElement; + + const bundle = this.hasProjectedInputs + ? this.projectedInputs.first?.nativeElement.querySelector('.igx-input-group__bundle') + : this.element.nativeElement.querySelector('.igx-input-group__bundle'); + this._dropDownOverlaySettings.target = bundle || this.element.nativeElement; } private configOverlaySettings(): void { diff --git a/projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.ts b/projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.ts index 9ce0aa76dd4..28b2ad29172 100644 --- a/projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.ts +++ b/projects/igniteui-angular/time-picker/src/time-picker/time-picker.component.ts @@ -432,6 +432,10 @@ export class IgxTimePickerComponent extends PickerBaseDirective return Object.assign({}, this._defaultDropDownOverlaySettings, this.overlaySettings); } + private get inputGroupElement(): HTMLElement { + return this.inputGroup?.element.nativeElement.querySelector('.igx-input-group__bundle'); + } + /** @hidden @internal */ public displayValue: PipeTransform = { transform: (date: Date) => this.formatter(date) }; /** @hidden @internal */ @@ -472,7 +476,6 @@ export class IgxTimePickerComponent extends PickerBaseDirective outlet: this.outlet }; private _defaultDropDownOverlaySettings: OverlaySettings = { - target: this.element.nativeElement, modal: false, closeOnOutsideClick: true, scrollStrategy: new AbsoluteScrollStrategy(), @@ -771,6 +774,10 @@ export class IgxTimePickerComponent extends PickerBaseDirective : this.dialogOverlaySettings , settings); + if (this.isDropdown && this.inputGroupElement) { + overlaySettings.target = this.inputGroupElement; + } + this.toggleRef.open(overlaySettings); }