Skip to content

Commit 29eb672

Browse files
committed
fix(time-picker): More code refactoring. #3978
1 parent f88163a commit 29eb672

File tree

3 files changed

+37
-63
lines changed

3 files changed

+37
-63
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,11 @@ export interface IgxTimePickerBase {
4040
parseMask(preserveAmPm?: boolean): string;
4141
}
4242

43+
/** @hidden */
44+
export const enum TimeParts {
45+
Hour = 'hour',
46+
Minute = 'minute',
47+
Seconds = 'seconds',
48+
amPM = 'ampm'
49+
}
50+

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
@@ -62,22 +62,22 @@ <h2 class="igx-time-picker__header-hour">
6262
<div class="igx-time-picker__body">
6363
<div *ngIf="showHoursList" #hourList [igxItemList]="'hourList'">
6464
<span [igxHourItem]="hour"
65-
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForHours(hour)}"
65+
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForItem('hour', hour)}"
6666
*ngFor="let hour of hourView">{{ hour }}</span>
6767
</div>
6868
<div *ngIf="showMinutesList" #minuteList [igxItemList]="'minuteList'">
6969
<span [igxMinuteItem]="minute"
70-
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForMinutes(minute)}"
70+
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForItem('minute', minute)}"
7171
*ngFor="let minute of minuteView" >{{ minute }}</span>
7272
</div>
7373
<div *ngIf="showSecondsList" #secondsList [igxItemList]="'secondsList'">
7474
<span [igxSecondsItem]="seconds"
75-
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForSeconds(seconds)}"
75+
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForItem('seconds', seconds)}"
7676
*ngFor="let seconds of secondsView">{{ seconds }}</span>
7777
</div>
7878
<div *ngIf="showAmPmList" #ampmList [igxItemList]="'ampmList'">
7979
<span [igxAmPmItem]="ampm"
80-
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForAmPm(ampm)}"
80+
[ngClass]="{'igx-time-picker__item--disabled': applyDisabledStyleForItem('ampm', ampm)}"
8181
*ngFor="let ampm of ampmView">{{ ampm }}</span>
8282
</div>
8383
</div>

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

Lines changed: 25 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ import { ITimePickerResourceStrings } from '../core/i18n/time-picker-resources';
5050
import { CurrentResourceStrings } from '../core/i18n/resources';
5151
import { KEYS, CancelableBrowserEventArgs, IBaseEventArgs } from '../core/utils';
5252
import { InteractionMode } from '../core/enums';
53+
import { TimeParts } from './time-picker.common';
5354

5455
let NEXT_ID = 0;
5556
const ITEMS_COUNT = 7;
@@ -636,78 +637,43 @@ export class IgxTimePickerComponent implements
636637
}
637638

638639
/** @hidden @internal */
639-
applyDisabledStyleForHours(hourString: string): boolean {
640-
const minValueDate: Date = this.convertMinMaxValue(this.minValue)
641-
const maxValueDate: Date = this.convertMinMaxValue(this.maxValue)
642-
if (!minValueDate || !maxValueDate) {
640+
applyDisabledStyleForItem(period: string, value: string) {
641+
if (!this.minValue || !this.maxValue) {
643642
return false;
644643
}
645-
let hour = parseInt(hourString, 10);
646-
if (this.selectedAmPm === 'PM') {
647-
hour += 12;
648-
}
644+
const minValueDate: Date = this.convertMinMaxValue(this.minValue);
645+
const maxValueDate: Date = this.convertMinMaxValue(this.maxValue);
646+
let hour: number = parseInt(this.selectedHour, 10);
647+
let minute: number = parseInt(this.selectedMinute, 10);
648+
let seconds: number = parseInt(this.selectedSeconds, 10);
649+
let amPM: string = this.selectedAmPm;
649650
const date = new Date(minValueDate);
650-
date.setHours(hour);
651-
return date < minValueDate || date > maxValueDate;
652-
}
651+
switch (period) {
652+
case TimeParts.Hour:
653+
hour = parseInt(value, 10);
654+
break;
653655

654-
/** @hidden @internal */
655-
applyDisabledStyleForMinutes(minuteString: string): boolean {
656-
const minValueDate: Date = this.convertMinMaxValue(this.minValue)
657-
const maxValueDate: Date = this.convertMinMaxValue(this.maxValue)
658-
if (!minValueDate || !maxValueDate) {
659-
return false;
660-
}
661-
const minute = parseInt(minuteString, 10);
662-
let hour = parseInt(this.selectedHour, 10);
663-
if (this.selectedAmPm === 'PM') {
664-
hour += 12;
665-
}
666-
const date = new Date(minValueDate);
667-
date.setHours(hour);
668-
date.setMinutes(minute);
669-
return date < minValueDate || date > maxValueDate;
670-
}
656+
case TimeParts.Minute:
657+
minute = parseInt(value, 10);
658+
break;
671659

672-
/** @hidden @internal */
673-
applyDisabledStyleForSeconds(secondsString: string): boolean {
674-
const minValueDate: Date = this.convertMinMaxValue(this.minValue)
675-
const maxValueDate: Date = this.convertMinMaxValue(this.maxValue)
676-
if (!minValueDate || !maxValueDate) {
677-
return false;
678-
}
679-
const minute = parseInt(this.selectedMinute, 10);
680-
let hour = parseInt(this.selectedHour, 10);
681-
const second = parseInt(secondsString, 10);
682-
if (this.selectedAmPm === 'PM') {
683-
hour += 12;
684-
}
685-
const date = new Date(minValueDate);
686-
date.setHours(hour);
687-
date.setMinutes(minute);
688-
date.setSeconds(second);
689-
return date < minValueDate || date > maxValueDate;
690-
}
660+
case TimeParts.Seconds:
661+
seconds = parseInt(value, 10);
662+
break;
691663

692-
/** @hidden @internal */
693-
applyDisabledStyleForAmPm(selectedAmPm): boolean {
694-
const minValueDate: Date = this.convertMinMaxValue(this.minValue)
695-
const maxValueDate: Date = this.convertMinMaxValue(this.maxValue)
696-
if (!minValueDate || !maxValueDate) {
697-
return false;
664+
case TimeParts.amPM:
665+
amPM = value;
666+
break;
698667
}
699-
const minute = parseInt(this.selectedMinute, 10);
700-
let hour = parseInt(this.selectedHour, 10);
701-
const second = parseInt(this.selectedSeconds, 10);
702-
const amPM = selectedAmPm;
668+
703669
if (amPM === 'PM') {
704670
hour += 12;
705671
}
706-
const date = new Date(minValueDate);
707672
date.setHours(hour);
708673
date.setMinutes(minute);
709-
date.setSeconds(second);
674+
date.setSeconds(seconds);
710675
return date < minValueDate || date > maxValueDate;
676+
711677
}
712678

713679
/** @hidden @internal */

0 commit comments

Comments
 (0)