fix(datetime): respect time limits in hours and minutes

fixes #6850
This commit is contained in:
Manu Mtz.-Almeida
2017-03-15 23:30:08 +01:00
parent e191321193
commit afd99baba0
5 changed files with 220 additions and 200 deletions

View File

@@ -14,15 +14,14 @@ describe('DateTime', () => {
datetime.max = '2001-12-15';
datetime.min = '2000-01-15';
datetime.pickerFormat = 'MM DD YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
columns[0].selectedIndex = 0; // January
columns[1].selectedIndex = 0; // January 1st
columns[2].selectedIndex = 1; // January 1st, 2000
datetime.validate(picker);
datetime.validate();
expect(columns[1].options[0].disabled).toEqual(true);
expect(columns[1].options[13].disabled).toEqual(true);
@@ -31,7 +30,7 @@ describe('DateTime', () => {
columns[0].selectedIndex = 11; // December
columns[2].selectedIndex = 0; // December 1st, 2001
datetime.validate(picker);
datetime.validate();
expect(columns[0].options[11].disabled).toEqual(false);
@@ -44,15 +43,14 @@ describe('DateTime', () => {
datetime.max = '2010-11-15';
datetime.min = '2000-02-15';
datetime.pickerFormat = 'MM DD YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
columns[0].selectedIndex = 1; // February
columns[1].selectedIndex = 0; // February 1st
columns[2].selectedIndex = columns[2].options.length - 1; // February 1st, 2000
datetime.validate(picker);
datetime.validate();
expect(columns[0].options[0].disabled).toEqual(true);
expect(columns[0].options[1].disabled).toEqual(false);
@@ -60,7 +58,7 @@ describe('DateTime', () => {
columns[2].selectedIndex = 0; // December 1st, 2010
datetime.validate(picker);
datetime.validate();
expect(columns[0].options[0].disabled).toEqual(false);
expect(columns[0].options[10].disabled).toEqual(false);
@@ -72,22 +70,21 @@ describe('DateTime', () => {
datetime.min = '2000-01-01';
datetime.pickerFormat = 'MM DD YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
columns[0].selectedIndex = 0; // January
columns[1].selectedIndex = 0; // January 1st
columns[2].selectedIndex = 0; // January 1st, 2010
datetime.validate(picker);
datetime.validate();
for (var i = 0; i < 31; i++) {
expect(columns[1].options[i].disabled).toEqual(false);
}
columns[0].selectedIndex = 1; // February
datetime.validate(picker);
datetime.validate();
for (var i = 0; i < 28; i++) {
expect(columns[1].options[i].disabled).toEqual(false);
@@ -97,7 +94,7 @@ describe('DateTime', () => {
expect(columns[1].options[30].disabled).toEqual(true);
columns[0].selectedIndex = 3; // April
datetime.validate(picker);
datetime.validate();
for (var i = 0; i < 30; i++) {
expect(columns[1].options[i].disabled).toEqual(false);
@@ -112,8 +109,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'MM DD YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
@@ -122,7 +118,7 @@ describe('DateTime', () => {
expect(columns[2].options.length).toEqual(2); // years
columns[0].selectedIndex = 1; // July
datetime.validate(picker);
datetime.validate();
// Months
for (var i = 0; i < columns[0].options.length; i++) {
@@ -135,7 +131,7 @@ describe('DateTime', () => {
}
columns[0].selectedIndex = 0; // June
datetime.validate(picker);
datetime.validate();
expect(columns[1].options[12].disabled).toEqual(true);
});
@@ -175,8 +171,7 @@ describe('DateTime', () => {
datetime.ngAfterContentInit();
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(3);
@@ -191,8 +186,7 @@ describe('DateTime', () => {
datetime.displayFormat = 'YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(1);
@@ -205,8 +199,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(1);
@@ -219,8 +212,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'MMM YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(2);
@@ -235,8 +227,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'MMMM YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(2);
@@ -249,8 +240,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'DDDD D M YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(3);
@@ -263,8 +253,7 @@ describe('DateTime', () => {
datetime.pickerFormat = 'DDDD M YYYY';
datetime.setValue('1994-12-15T13:47:20.789Z');
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(3);
@@ -278,8 +267,7 @@ describe('DateTime', () => {
datetime.min = '2000-01-01';
datetime.pickerFormat = 'MM DD YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(3);
@@ -301,8 +289,7 @@ describe('DateTime', () => {
datetime.min = '2000-01-01';
datetime.pickerFormat = 'YYYY';
var picker = new Picker(mockApp());
datetime.generate(picker);
datetime.generate();
var columns = picker.getColumns();
expect(columns.length).toEqual(1);
@@ -639,9 +626,11 @@ describe('DateTime', () => {
});
var datetime: DateTime;
var picker: Picker;
beforeEach(() => {
datetime = new DateTime(new Form(), mockConfig(), mockElementRef(), mockRenderer(), null, <PickerController>{});
datetime._picker = picker = new Picker(mockApp());
});
console.warn = function(){};

View File

@@ -55,4 +55,17 @@
></ion-datetime>
</ion-item>
<ion-item>
<ion-label>
displayFormat="HH:mm"
min="01:20"
max="13:45"
</ion-label>
<ion-datetime
displayFormat="HH:mm"
min="01:20"
max="13:45"
></ion-datetime>
</ion-item>
</ion-content>