mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2025-11-10 00:27:41 +08:00
@ -271,13 +271,8 @@ export class Datetime implements ComponentInterface {
|
||||
};
|
||||
|
||||
this.updateDatetimeValue(changeData);
|
||||
const columns = this.generateColumns();
|
||||
|
||||
picker.columns = columns;
|
||||
|
||||
await this.validate(picker);
|
||||
picker.columns = this.generateColumns();
|
||||
});
|
||||
await this.validate(picker);
|
||||
await picker.present();
|
||||
}
|
||||
|
||||
@ -406,14 +401,14 @@ export class Datetime implements ComponentInterface {
|
||||
max[name] = 0;
|
||||
});
|
||||
|
||||
return divyColumns(columns);
|
||||
return this.validateColumns(divyColumns(columns));
|
||||
}
|
||||
|
||||
private async validate(picker: HTMLIonPickerElement) {
|
||||
private validateColumns(columns: PickerColumn[]) {
|
||||
const today = new Date();
|
||||
const minCompareVal = dateDataSortValue(this.datetimeMin);
|
||||
const maxCompareVal = dateDataSortValue(this.datetimeMax);
|
||||
const yearCol = await picker.getColumn('year');
|
||||
const yearCol = columns.find(c => c.name === 'year');
|
||||
|
||||
let selectedYear: number = today.getFullYear();
|
||||
if (yearCol) {
|
||||
@ -432,7 +427,7 @@ export class Datetime implements ComponentInterface {
|
||||
}
|
||||
}
|
||||
|
||||
const selectedMonth = await this.validateColumn(picker,
|
||||
const selectedMonth = this.validateColumn(columns,
|
||||
'month', 1,
|
||||
minCompareVal, maxCompareVal,
|
||||
[selectedYear, 0, 0, 0, 0],
|
||||
@ -440,26 +435,28 @@ export class Datetime implements ComponentInterface {
|
||||
);
|
||||
|
||||
const numDaysInMonth = daysInMonth(selectedMonth, selectedYear);
|
||||
const selectedDay = await this.validateColumn(picker,
|
||||
const selectedDay = this.validateColumn(columns,
|
||||
'day', 2,
|
||||
minCompareVal, maxCompareVal,
|
||||
[selectedYear, selectedMonth, 0, 0, 0],
|
||||
[selectedYear, selectedMonth, numDaysInMonth, 23, 59]
|
||||
);
|
||||
|
||||
const selectedHour = await this.validateColumn(picker,
|
||||
const selectedHour = this.validateColumn(columns,
|
||||
'hour', 3,
|
||||
minCompareVal, maxCompareVal,
|
||||
[selectedYear, selectedMonth, selectedDay, 0, 0],
|
||||
[selectedYear, selectedMonth, selectedDay, 23, 59]
|
||||
);
|
||||
|
||||
await this.validateColumn(picker,
|
||||
this.validateColumn(columns,
|
||||
'minute', 4,
|
||||
minCompareVal, maxCompareVal,
|
||||
[selectedYear, selectedMonth, selectedDay, selectedHour, 0],
|
||||
[selectedYear, selectedMonth, selectedDay, selectedHour, 59]
|
||||
);
|
||||
|
||||
return columns;
|
||||
}
|
||||
|
||||
private calcMinMax() {
|
||||
@ -514,8 +511,8 @@ export class Datetime implements ComponentInterface {
|
||||
}
|
||||
}
|
||||
|
||||
private async validateColumn(picker: HTMLIonPickerElement, name: string, index: number, min: number, max: number, lowerBounds: number[], upperBounds: number[]): Promise<number> {
|
||||
const column = await picker.getColumn(name);
|
||||
private validateColumn(columns: PickerColumn[], name: string, index: number, min: number, max: number, lowerBounds: number[], upperBounds: number[]): number {
|
||||
const column = columns.find(c => c.name === name);
|
||||
if (!column) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user