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);
|
this.updateDatetimeValue(changeData);
|
||||||
const columns = this.generateColumns();
|
picker.columns = this.generateColumns();
|
||||||
|
|
||||||
picker.columns = columns;
|
|
||||||
|
|
||||||
await this.validate(picker);
|
|
||||||
});
|
});
|
||||||
await this.validate(picker);
|
|
||||||
await picker.present();
|
await picker.present();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,14 +401,14 @@ export class Datetime implements ComponentInterface {
|
|||||||
max[name] = 0;
|
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 today = new Date();
|
||||||
const minCompareVal = dateDataSortValue(this.datetimeMin);
|
const minCompareVal = dateDataSortValue(this.datetimeMin);
|
||||||
const maxCompareVal = dateDataSortValue(this.datetimeMax);
|
const maxCompareVal = dateDataSortValue(this.datetimeMax);
|
||||||
const yearCol = await picker.getColumn('year');
|
const yearCol = columns.find(c => c.name === 'year');
|
||||||
|
|
||||||
let selectedYear: number = today.getFullYear();
|
let selectedYear: number = today.getFullYear();
|
||||||
if (yearCol) {
|
if (yearCol) {
|
||||||
@ -432,7 +427,7 @@ export class Datetime implements ComponentInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectedMonth = await this.validateColumn(picker,
|
const selectedMonth = this.validateColumn(columns,
|
||||||
'month', 1,
|
'month', 1,
|
||||||
minCompareVal, maxCompareVal,
|
minCompareVal, maxCompareVal,
|
||||||
[selectedYear, 0, 0, 0, 0],
|
[selectedYear, 0, 0, 0, 0],
|
||||||
@ -440,26 +435,28 @@ export class Datetime implements ComponentInterface {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const numDaysInMonth = daysInMonth(selectedMonth, selectedYear);
|
const numDaysInMonth = daysInMonth(selectedMonth, selectedYear);
|
||||||
const selectedDay = await this.validateColumn(picker,
|
const selectedDay = this.validateColumn(columns,
|
||||||
'day', 2,
|
'day', 2,
|
||||||
minCompareVal, maxCompareVal,
|
minCompareVal, maxCompareVal,
|
||||||
[selectedYear, selectedMonth, 0, 0, 0],
|
[selectedYear, selectedMonth, 0, 0, 0],
|
||||||
[selectedYear, selectedMonth, numDaysInMonth, 23, 59]
|
[selectedYear, selectedMonth, numDaysInMonth, 23, 59]
|
||||||
);
|
);
|
||||||
|
|
||||||
const selectedHour = await this.validateColumn(picker,
|
const selectedHour = this.validateColumn(columns,
|
||||||
'hour', 3,
|
'hour', 3,
|
||||||
minCompareVal, maxCompareVal,
|
minCompareVal, maxCompareVal,
|
||||||
[selectedYear, selectedMonth, selectedDay, 0, 0],
|
[selectedYear, selectedMonth, selectedDay, 0, 0],
|
||||||
[selectedYear, selectedMonth, selectedDay, 23, 59]
|
[selectedYear, selectedMonth, selectedDay, 23, 59]
|
||||||
);
|
);
|
||||||
|
|
||||||
await this.validateColumn(picker,
|
this.validateColumn(columns,
|
||||||
'minute', 4,
|
'minute', 4,
|
||||||
minCompareVal, maxCompareVal,
|
minCompareVal, maxCompareVal,
|
||||||
[selectedYear, selectedMonth, selectedDay, selectedHour, 0],
|
[selectedYear, selectedMonth, selectedDay, selectedHour, 0],
|
||||||
[selectedYear, selectedMonth, selectedDay, selectedHour, 59]
|
[selectedYear, selectedMonth, selectedDay, selectedHour, 59]
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return columns;
|
||||||
}
|
}
|
||||||
|
|
||||||
private calcMinMax() {
|
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> {
|
private validateColumn(columns: PickerColumn[], name: string, index: number, min: number, max: number, lowerBounds: number[], upperBounds: number[]): number {
|
||||||
const column = await picker.getColumn(name);
|
const column = columns.find(c => c.name === name);
|
||||||
if (!column) {
|
if (!column) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user