Skip to content

Commit fd8dea6

Browse files
authored
Merge pull request #8735 from IgniteUI/bpenkov/date-range-dropdown-positioning
Fix IgxDateRangePicker default dropdown positioning
2 parents 7931773 + e70f85c commit fd8dea6

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { IgxDateTimeEditorModule, IgxDateTimeEditorDirective } from '../directiv
1717
import { DateRangeType } from '../core/dates';
1818
import { IgxDateRangePickerComponent, IgxDateRangeEndComponent } from './public_api';
1919
import { IgxIconModule } from '../icon/public_api';
20+
import { AutoPositionStrategy } from '../services/public_api';
2021

2122
// The number of milliseconds in one day
2223
const ONE_DAY = 1000 * 60 * 60 * 24;
@@ -30,6 +31,7 @@ const CSS_CLASS_CALENDAR_TOGGLE = '.igx-toggle';
3031
const CSS_CLASS_ICON = 'igx-icon';
3132
const CSS_CLASS_DONE_BUTTON = 'igx-button--flat';
3233
const CSS_CLASS_LABEL = 'igx-input-group__label';
34+
const CSS_CLASS_OVERLAY_CONTENT = 'igx-overlay__content';
3335

3436
describe('IgxDateRangePicker', () => {
3537
describe('Unit tests: ', () => {
@@ -1119,6 +1121,23 @@ describe('IgxDateRangePicker', () => {
11191121
const result = fixture.componentInstance.formatter({ start: startDate, end: endDate });
11201122
expect(singleInputElement.nativeElement.value).toEqual(result);
11211123
});
1124+
1125+
it('should invoke AutoPositionStrategy by default with proper arguments', fakeAsync(() => {
1126+
fixture = TestBed.createComponent(DateRangeDefaultComponent);
1127+
fixture.detectChanges();
1128+
spyOn<any>(AutoPositionStrategy.prototype, 'position');
1129+
1130+
dateRange = fixture.componentInstance.dateRange;
1131+
dateRange.open();
1132+
tick();
1133+
fixture.detectChanges();
1134+
1135+
const overlayContent = document.getElementsByClassName(CSS_CLASS_OVERLAY_CONTENT)[0] as HTMLElement;
1136+
expect(AutoPositionStrategy.prototype.position).toHaveBeenCalledTimes(1);
1137+
expect(AutoPositionStrategy.prototype.position)
1138+
.toHaveBeenCalledWith(overlayContent, jasmine.anything(), document,
1139+
jasmine.anything(), dateRange.element.nativeElement);
1140+
}));
11221141
});
11231142
});
11241143
});
@@ -1135,7 +1154,7 @@ export class DateRangeTestComponent implements OnInit {
11351154
public minValue: Date | String;
11361155
public maxValue: Date | String;
11371156

1138-
@ViewChild(IgxDateRangePickerComponent, { read: IgxDateRangePickerComponent, static: true })
1157+
@ViewChild(IgxDateRangePickerComponent, { static: true })
11391158
public dateRange: IgxDateRangePickerComponent;
11401159

11411160
public ngOnInit(): void {

projects/igniteui-angular/src/lib/date-range-picker/date-range-picker.component.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,8 +516,8 @@ export class IgxDateRangePickerComponent extends DisplayDensityBase
516516
* @example
517517
* ```typescript
518518
* public selectFiveDayRange() {
519-
* const inFiveDays = new Date(new Date().setDate(today.getDate() + 5));
520519
* const today = new Date();
520+
* const inFiveDays = new Date(new Date().setDate(today.getDate() + 5));
521521
* this.dateRange.selectRange(today, inFiveDays);
522522
* }
523523
* ```
@@ -756,6 +756,9 @@ export class IgxDateRangePickerComponent extends DisplayDensityBase
756756
public handleSelection(selectionData: Date[]): void {
757757
this.value = this.extractRange(selectionData);
758758
this.rangeSelected.emit(this.value);
759+
if (this.mode === InteractionMode.DropDown && selectionData?.length > 1) {
760+
this.close();
761+
}
759762
}
760763

761764
protected onStatusChanged = () => {
@@ -955,7 +958,7 @@ export class IgxDateRangePickerComponent extends DisplayDensityBase
955958
closeAnimation: fadeOut
956959
};
957960
this._dropDownOverlaySettings.positionStrategy = new AutoPositionStrategy(this._positionSettings);
958-
this.dropdownOverlaySettings.target = this.element.nativeElement;
961+
this._dropDownOverlaySettings.target = this.element.nativeElement;
959962
}
960963

961964
private configOverlaySettings(): void {

0 commit comments

Comments
 (0)