Skip to content

Commit 4147b7a

Browse files
authored
Merge pull request #9418 from IgniteUI/PMiteva/time-picker-pipe
Create TimeItemsPipe
2 parents 31f5463 + 26f5461 commit 4147b7a

File tree

5 files changed

+380
-458
lines changed

5 files changed

+380
-458
lines changed

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,25 @@ export interface IgxTimePickerBase {
1212
ampmList: ElementRef;
1313
inputFormat: string;
1414
itemsDelta: Pick<DatePartDeltas, 'hours' | 'minutes' | 'seconds'>;
15+
spinLoop: boolean;
1516
selectedDate: Date;
1617
maxDropdownValue: Date;
1718
minDropdownValue: Date;
19+
isTwelveHourFormat: boolean;
20+
showHoursList: boolean;
21+
showMinutesList: boolean;
22+
showSecondsList: boolean;
23+
showAmPmList: boolean;
24+
minDateValue: Date;
25+
maxDateValue: Date;
1826
nextHour(delta: number);
1927
nextMinute(delta: number);
2028
nextSeconds(delta: number);
2129
nextAmPm(delta: number);
2230
close(): void;
2331
cancelButtonClick(): void;
2432
onItemClick(item: string, dateType: string): void;
33+
setSelectedValue(): void;
34+
getPartValue(value: Date, type: string): string;
35+
toISOString(value: Date): string;
2536
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,31 +56,31 @@ <h2 class="igx-time-picker__header-hour">
5656
[attr.aria-valuenow]="timeItem.isSelectedTime ? timeItem.hourValue : null"
5757
[attr.aria-valuemin]="timeItem.isSelectedTime ? timeItem.minValue : null"
5858
[attr.aria-valuemax]="timeItem.isSelectedTime ? timeItem.maxValue : null"
59-
*ngFor="let hour of hourView">{{ hour }}</span>
59+
*ngFor="let hour of (hourItems|timeItemPipe:'hour': this.selectedDate: this.minValue: this.maxValue)">{{ hour }}</span>
6060
</div>
6161
<div *ngIf="this.showMinutesList" #minuteList [igxItemList]="'minuteList'">
6262
<span [igxTimeItem]="minute" #timeItem="timeItem" aria-label="minutes"
6363
[attr.role]="timeItem.isSelectedTime ? 'spinbutton' : null"
6464
[attr.aria-valuenow]="timeItem.isSelectedTime ? minute : null"
6565
[attr.aria-valuemin]="timeItem.isSelectedTime ? timeItem.minValue : null"
6666
[attr.aria-valuemax]="timeItem.isSelectedTime ? timeItem.maxValue : null"
67-
*ngFor="let minute of minuteView">{{ minute }}</span>
67+
*ngFor="let minute of (minuteItems|timeItemPipe:'minutes': this.selectedDate: this.minValue: this.maxValue)">{{ minute }}</span>
6868
</div>
6969
<div *ngIf="this.showSecondsList" #secondsList [igxItemList]="'secondsList'">
7070
<span [igxTimeItem]="seconds" #timeItem="timeItem" aria-label="seconds"
7171
[attr.role]="timeItem.isSelectedTime ? 'spinbutton' : null"
7272
[attr.aria-valuenow]="timeItem.isSelectedTime ? seconds : null"
7373
[attr.aria-valuemin]="timeItem.isSelectedTime ? timeItem.minValue : null"
7474
[attr.aria-valuemax]="timeItem.isSelectedTime ? timeItem.maxValue : null"
75-
*ngFor="let seconds of secondsView">{{ seconds }}</span>
75+
*ngFor="let seconds of (secondsItems|timeItemPipe:'seconds': this.selectedDate: this.minValue: this.maxValue)">{{ seconds }}</span>
7676
</div>
7777
<div *ngIf="this.showAmPmList" #ampmList [igxItemList]="'ampmList'">
7878
<span [igxTimeItem]="ampm" #timeItem="timeItem" aria-label="ampm"
7979
[attr.role]="timeItem.isSelectedTime ? 'spinbutton' : null"
8080
[attr.aria-valuenow]="timeItem.isSelectedTime ? ampm : null"
8181
[attr.aria-valuemin]="timeItem.isSelectedTime ? timeItem.minValue : null"
8282
[attr.aria-valuemax]="timeItem.isSelectedTime ? timeItem.maxValue : null"
83-
*ngFor="let ampm of ampmView">{{ ampm }}</span>
83+
*ngFor="let ampm of (ampmItems|timeItemPipe:'ampm': this.selectedDate: this.minValue: this.maxValue)">{{ ampm }}</span>
8484
</div>
8585
</div>
8686
<ng-container

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

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ describe('IgxTimePicker', () => {
8383
(timePicker as any).dateTimeEditor = mockDateTimeEditorDirective;
8484
const mockToggleDirective = jasmine.createSpyObj('IgxToggleDirective', { collapsed: true });
8585
(timePicker as any).toggleRef = mockToggleDirective;
86-
timePicker.ngOnInit();
86+
timePicker.minDropdownValue = timePicker.minDateValue;
87+
timePicker.maxDropdownValue = timePicker.maxDateValue;
8788

8889
const date = new Date(2020, 12, 12, 10, 30, 30);
8990
timePicker.value = new Date(date);
@@ -139,8 +140,8 @@ describe('IgxTimePicker', () => {
139140

140141
const date = new Date(2020, 12, 12, 10, 30, 30);
141142
timePicker.value = new Date(date);
142-
143-
timePicker.ngOnInit();
143+
timePicker.minDropdownValue = timePicker.minDateValue;
144+
timePicker.maxDropdownValue = timePicker.maxDateValue;
144145

145146
const selectedDate = new Date(2020, 12, 12, 6, 45, 0);
146147
spyOn(timePicker.valueChange, 'emit').and.callThrough();
@@ -159,7 +160,8 @@ describe('IgxTimePicker', () => {
159160
timePicker.value = new Date(date);
160161
timePicker.minValue = new Date(2020, 12, 12, 6, 0, 0);
161162
timePicker.maxValue = new Date(2020, 12, 12, 16, 0, 0);
162-
timePicker.ngOnInit();
163+
timePicker.minDropdownValue = timePicker.minDateValue;
164+
timePicker.maxDropdownValue = timePicker.maxDateValue;
163165

164166
const selectedDate = new Date(2020, 12, 12, 3, 45, 0);
165167
const args: IgxTimePickerValidationFailedEventArgs = {
@@ -181,13 +183,16 @@ describe('IgxTimePicker', () => {
181183
timePicker = new IgxTimePickerComponent(elementRef, null, null, null, mockInjector, null);
182184
timePicker['dateTimeEditor'] = mockDateTimeEditorDirective;
183185
timePicker['inputDirective'] = mockInputDirective;
186+
timePicker.minDropdownValue = timePicker.minDateValue;
187+
timePicker.maxDropdownValue = timePicker.maxDateValue;
184188
timePicker.ngOnInit();
185189
timePicker.registerOnChange(mockNgControl.registerOnChangeCb);
186190
timePicker.registerOnTouched(mockNgControl.registerOnTouchedCb);
187191

188-
expect(timePicker.value).toBeUndefined();
192+
expect(timePicker.value).toBeUndefined();
189193
expect(mockNgControl.registerOnChangeCb).not.toHaveBeenCalled();
190194
timePicker.writeValue(date);
195+
timePicker.setSelectedValue();
191196
expect(timePicker.value).toBe(date);
192197

193198
timePicker.nextHour(100);

0 commit comments

Comments
 (0)