Skip to content

Commit b94049e

Browse files
committed
feat(drp): limit displayMonthsCount between 1 and 2
1 parent 37fd4d4 commit b94049e

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

projects/igniteui-angular/src/lib/core/utils.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,19 @@ export const isEqual = (obj1, obj2): boolean => {
225225
return obj1 === obj2;
226226
};
227227

228+
/**
229+
* Limits a number to a range between a minimum and a maximum value.
230+
*
231+
* @param number
232+
* @param min
233+
* @param max
234+
* @returns: `number`
235+
* @hidden
236+
*/
237+
export const clamp = (number: number, min: number, max: number) =>
238+
Math.max(min, Math.min(number, max));
239+
240+
228241
/**
229242
* Utility service taking care of various utility functions such as
230243
* detecting browser features, general cross browser DOM manipulation, etc.

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

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1645,6 +1645,24 @@ describe('IgxDateRangePicker', () => {
16451645
expect(dateRange['_calendar'].wrapper.nativeElement).toHaveClass(CSS_CLASS_CALENDAR_WRAPPER_VERTICAL);
16461646
}));
16471647

1648+
it('should limit the displayMonthsCount property between 1 and 2', fakeAsync(() => {
1649+
fixture = TestBed.createComponent(DateRangeDefaultComponent);
1650+
fixture.detectChanges();
1651+
dateRange = fixture.componentInstance.dateRange;
1652+
dateRange.open();
1653+
tick();
1654+
1655+
dateRange.displayMonthsCount = 3;
1656+
fixture.detectChanges();
1657+
1658+
expect(dateRange.displayMonthsCount).toBe(2);
1659+
1660+
dateRange.displayMonthsCount = -1;
1661+
fixture.detectChanges();
1662+
1663+
expect(dateRange.displayMonthsCount).toBe(1);
1664+
}));
1665+
16481666
describe('Templated Calendar Header', () => {
16491667
let dateRangeDebugEl: DebugElement;
16501668
beforeEach(fakeAsync(() => {

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

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { filter, takeUntil } from 'rxjs/operators';
1616
import { CalendarSelection, IgxCalendarComponent, IgxCalendarHeaderTemplateDirective, IgxCalendarHeaderTitleTemplateDirective, IgxCalendarSubheaderTemplateDirective } from '../calendar/public_api';
1717
import { DateRangeType } from '../core/dates';
1818
import { DateRangePickerResourceStringsEN, IDateRangePickerResourceStrings } from '../core/i18n/date-range-picker-resources';
19-
import { IBaseCancelableBrowserEventArgs, isDate, parseDate, PlatformUtil } from '../core/utils';
19+
import { clamp, IBaseCancelableBrowserEventArgs, isDate, parseDate, PlatformUtil } from '../core/utils';
2020
import { IgxCalendarContainerComponent } from '../date-common/calendar-container/calendar-container.component';
2121
import { PickerBaseDirective } from '../date-common/picker-base.directive';
2222
import { IgxPickerActionsDirective } from '../date-common/picker-icons.common';
@@ -92,7 +92,13 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
9292
* ```
9393
*/
9494
@Input()
95-
public displayMonthsCount = 2;
95+
public get displayMonthsCount(): number {
96+
return this._displayMonthsCount;
97+
}
98+
99+
public set displayMonthsCount(value: number) {
100+
this._displayMonthsCount = clamp(value, 1, 2);
101+
}
96102

97103
/**
98104
* Gets/Sets the orientation of the multiple months displayed in the picker's calendar's days view.
@@ -468,6 +474,7 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
468474
private _calendarContainer?: HTMLElement;
469475
private _positionSettings: PositionSettings;
470476
private _focusedInput: IgxDateRangeInputsBaseComponent;
477+
private _displayMonthsCount = 2;
471478
private _overlaySubFilter:
472479
[MonoTypeOperatorFunction<OverlayEventArgs>, MonoTypeOperatorFunction<OverlayEventArgs | OverlayCancelableEventArgs>] = [
473480
filter(x => x.id === this._overlayId),
@@ -1105,7 +1112,7 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
11051112
this.calendar.selection = CalendarSelection.RANGE;
11061113
this.calendar.weekStart = this.weekStart;
11071114
this.calendar.hideOutsideDays = this.hideOutsideDays;
1108-
this.calendar.monthsViewNumber = this.displayMonthsCount;
1115+
this.calendar.monthsViewNumber = this._displayMonthsCount;
11091116
this.calendar.showWeekNumbers = this.showWeekNumbers;
11101117
this._calendar.headerTitleTemplate = this.headerTitleTemplate;
11111118
this._calendar.headerTemplate = this.headerTemplate;

0 commit comments

Comments
 (0)