Skip to content

Commit e7553e7

Browse files
committed
refactor(picker-base): port headerOrientation prop in base class+test for TP,DRP
1 parent 0fe1c0f commit e7553e7

File tree

6 files changed

+66
-29
lines changed

6 files changed

+66
-29
lines changed

projects/igniteui-angular/src/lib/date-common/picker-base.directive.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { IBaseCancelableBrowserEventArgs, IBaseEventArgs } from '../core/utils';
1414
import { IgxOverlayOutletDirective } from '../directives/toggle/toggle.directive';
1515
import { OverlaySettings } from '../services/overlay/utilities';
1616
import { IgxPickerToggleComponent } from './picker-icons.common';
17-
import { PickerInteractionMode } from './types';
17+
import { PickerHeaderOrientation, PickerInteractionMode } from './types';
1818
import { WEEKDAYS } from '../calendar/calendar';
1919
import { DateRange } from '../date-range-picker/date-range-picker-inputs.common';
2020
import { IGX_INPUT_GROUP_TYPE, IgxInputGroupType } from '../input-group/inputGroupType';
@@ -78,6 +78,17 @@ export abstract class PickerBaseDirective implements IToggleView, EditorProvider
7878
@Input()
7979
public mode: PickerInteractionMode = PickerInteractionMode.DropDown;
8080

81+
/**
82+
* Gets/Sets the orientation of the `IgxDatePickerComponent` header.
83+
*
84+
* @example
85+
* ```html
86+
* <igx-date-picker headerOrientation="vertical"></igx-date-picker>
87+
* ```
88+
*/
89+
@Input()
90+
public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;
91+
8192
/**
8293
* Overlay settings used to display the pop-up element.
8394
*

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import { IBaseCancelableBrowserEventArgs, isDate, PlatformUtil } from '../core/u
5151
import { IgxCalendarContainerComponent } from '../date-common/calendar-container/calendar-container.component';
5252
import { PickerBaseDirective } from '../date-common/picker-base.directive';
5353
import { IgxPickerActionsDirective, IgxPickerClearComponent } from '../date-common/public_api';
54-
import { PickerHeaderOrientation } from '../date-common/types';
5554
import { DateTimeUtil } from '../date-common/util/date-time.util';
5655
import { DatePart, DatePartDeltas, IgxDateTimeEditorDirective } from '../directives/date-time-editor/public_api';
5756
import { IgxOverlayOutletDirective } from '../directives/toggle/toggle.directive';
@@ -162,17 +161,6 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr
162161
@Input()
163162
public formatter: (val: Date) => string;
164163

165-
/**
166-
* Gets/Sets the orientation of the `IgxDatePickerComponent` header.
167-
*
168-
* @example
169-
* ```html
170-
* <igx-date-picker headerOrientation="vertical"></igx-date-picker>
171-
* ```
172-
*/
173-
@Input()
174-
public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;
175-
176164
/**
177165
* Gets/Sets the today button's label.
178166
*
@@ -989,7 +977,6 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr
989977
this.setCalendarViewDate();
990978

991979
componentInstance.mode = this.mode;
992-
// componentInstance.headerOrientation = this.headerOrientation;
993980
componentInstance.closeButtonLabel = this.cancelButtonLabel;
994981
componentInstance.todayButtonLabel = this.todayButtonLabel;
995982
componentInstance.pickerActions = this.pickerActions;

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ComponentFixture, TestBed, fakeAsync, tick, waitForAsync, flush } from '@angular/core/testing';
22
import { Component, OnInit, ViewChild, DebugElement, ChangeDetectionStrategy } from '@angular/core';
33
import { IgxInputDirective, IgxInputState, IgxLabelDirective, IgxPrefixDirective, IgxSuffixDirective } from '../input-group/public_api';
4-
import { PickerInteractionMode } from '../date-common/types';
4+
import { PickerHeaderOrientation, PickerInteractionMode } from '../date-common/types';
55
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
66
import { FormsModule, ReactiveFormsModule, UntypedFormBuilder, UntypedFormControl, Validators } from '@angular/forms';
77
import { By } from '@angular/platform-browser';
@@ -1580,6 +1580,30 @@ describe('IgxDateRangePicker', () => {
15801580
expect(calendarHeader).toBeTruthy('Calendar header should be present');
15811581
}));
15821582

1583+
it('should set calendar headerOrientation prop in dialog mode', fakeAsync(() => {
1584+
fixture = TestBed.createComponent(DateRangeDefaultComponent);
1585+
fixture.detectChanges();
1586+
dateRange = fixture.componentInstance.dateRange;
1587+
1588+
dateRange.mode = 'dialog';
1589+
dateRange.open();
1590+
tick();
1591+
fixture.detectChanges();
1592+
1593+
expect(dateRange['_calendar'].headerOrientation).toBe(PickerHeaderOrientation.Horizontal);
1594+
1595+
dateRange.close();
1596+
tick();
1597+
fixture.detectChanges();
1598+
1599+
dateRange.headerOrientation = PickerHeaderOrientation.Vertical;
1600+
dateRange.open();
1601+
tick();
1602+
fixture.detectChanges();
1603+
1604+
expect(dateRange['_calendar'].headerOrientation).toBe(PickerHeaderOrientation.Vertical);
1605+
}));
1606+
15831607
describe('Templated Calendar Header', () => {
15841608
let dateRangeDebugEl: DebugElement;
15851609
beforeEach(fakeAsync(() => {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,7 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
11001100
this._calendar.headerTitleTemplate = this.headerTitleTemplate;
11011101
this._calendar.headerTemplate = this.headerTemplate;
11021102
this._calendar.subheaderTemplate = this.subheaderTemplate;
1103+
this._calendar.headerOrientation = this.headerOrientation;
11031104
this.calendar.selected.pipe(takeUntil(this._destroy$)).subscribe((ev: Date[]) => this.handleSelection(ev));
11041105

11051106
componentInstance.mode = this.mode;

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

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ const CSS_CLASS_HEADER_HOUR = '.igx-time-picker__header-hour';
3737
const CSS_CLASS_OVERLAY_WRAPPER = 'igx-overlay__wrapper';
3838
const TIME_PICKER_TOGGLE_ICON = 'access_time';
3939
const TIME_PICKER_CLEAR_ICON = 'clear';
40+
const CSS_CLASS_TIME_PICKER_VERTICAL = '.igx-time-picker--vertical';
4041

4142
describe('IgxTimePicker', () => {
4243
let timePicker: IgxTimePickerComponent;
@@ -465,7 +466,7 @@ describe('IgxTimePicker', () => {
465466
});
466467

467468
describe('Interaction tests', () => {
468-
let timePickerElement: DebugElement;
469+
let timePickerElement: HTMLElement;
469470
let timePickerDebElement: DebugElement;
470471
let inputGroup: DebugElement;
471472
let hourColumn: DebugElement;
@@ -1140,6 +1141,7 @@ describe('IgxTimePicker', () => {
11401141
fixture = TestBed.createComponent(IgxTimePickerTestComponent);
11411142
fixture.detectChanges();
11421143
timePicker = fixture.componentInstance.timePicker;
1144+
timePickerDebElement = fixture.debugElement.query(By.css(CSS_CLASS_TIMEPICKER));
11431145
timePickerElement = fixture.debugElement.query(By.css(CSS_CLASS_TIMEPICKER)).nativeElement;
11441146
inputGroup = fixture.debugElement.query(By.css(`.${CSS_CLASS_INPUTGROUP}`));
11451147
hourColumn = fixture.debugElement.query(By.css(`.${CSS_CLASS_HOURLIST}`));
@@ -1570,6 +1572,31 @@ describe('IgxTimePicker', () => {
15701572
inputEl = fixture.nativeElement.querySelector(CSS_CLASS_INPUT);
15711573
expect(inputEl.placeholder).toEqual('sample placeholder');
15721574
}));
1575+
1576+
it('should set headerOrientation prop in dialog mode', fakeAsync(() => {
1577+
timePicker.mode = PickerInteractionMode.Dialog;
1578+
timePicker.open();
1579+
tick();
1580+
fixture.detectChanges();
1581+
expect(timePicker.headerOrientation).toEqual('horizontal');
1582+
let dialogDivVertical = timePickerDebElement.query(By.css(CSS_CLASS_TIME_PICKER_VERTICAL));
1583+
expect(dialogDivVertical).toBeNull();
1584+
1585+
timePicker.close();
1586+
tick();
1587+
fixture.detectChanges();
1588+
1589+
timePicker.mode = PickerInteractionMode.Dialog;
1590+
timePicker.headerOrientation = 'vertical';
1591+
fixture.detectChanges();
1592+
1593+
timePicker.open();
1594+
tick();
1595+
fixture.detectChanges();
1596+
1597+
dialogDivVertical = timePickerDebElement.query(By.css(CSS_CLASS_TIME_PICKER_VERTICAL));
1598+
expect(dialogDivVertical).not.toBeNull();
1599+
}));
15731600
});
15741601

15751602
describe('Keyboard navigation', () => {

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

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -239,19 +239,6 @@ export class IgxTimePickerComponent extends PickerBaseDirective
239239
@Input()
240240
public formatter: (val: Date) => string;
241241

242-
/**
243-
* Sets the orientation of the picker's header.
244-
*
245-
* @remarks
246-
* Available in dialog mode only. Default value is `horizontal`.
247-
*
248-
* ```html
249-
* <igx-time-picker [headerOrientation]="'vertical'"></igx-time-picker>
250-
* ```
251-
*/
252-
@Input()
253-
public headerOrientation: PickerHeaderOrientation = PickerHeaderOrientation.Horizontal;
254-
255242
/** @hidden @internal */
256243
@Input({ transform: booleanAttribute })
257244
public readOnly = false;

0 commit comments

Comments
 (0)