Skip to content

Commit 939b492

Browse files
committed
Removed redundant data entry validation for number fields.
1 parent 9ac2176 commit 939b492

File tree

4 files changed

+15
-100
lines changed

4 files changed

+15
-100
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "angular2-json-schema-form",
3-
"version": "0.5.0-alpha.2",
3+
"version": "0.5.0-alpha.4",
44
"author": {
55
"name": "David Schnell-Davis",
66
"email": "[email protected]"

src/lib/src/framework-library/material-design-framework/material-number.component.ts

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,7 @@ import { getControl, inArray, isDefined } from '../../shared';
2323
[style.width]="'100%'"
2424
[type]="'number'"
2525
[value]="controlValue"
26-
(input)="updateValue($event)"
27-
(keydown)="validateInput($event)"
28-
(keyup)="validateNumber($event)">
26+
(input)="updateValue($event)">
2927
<span *ngIf="options?.fieldAddonLeft"
3028
md-prefix>{{options?.fieldAddonLeft}}</span>
3129
<span *ngIf="options?.fieldAddonRight"
@@ -36,7 +34,6 @@ import { getControl, inArray, isDefined } from '../../shared';
3634
align="end">{{options?.placeholder}}</md-hint>
3735
{{layoutNode?.type === 'range' ? controlValue : ''}}
3836
</md-form-field>`,
39-
styles: [`md-form-field { margin-top: 6px; }`],
4037
})
4138
export class MaterialNumberComponent implements OnInit {
4239
formControl: AbstractControl;
@@ -67,44 +64,4 @@ export class MaterialNumberComponent implements OnInit {
6764
updateValue(event) {
6865
this.jsf.updateValue(this, event.target.value);
6966
}
70-
71-
validateInput(event) {
72-
const val = event.target.value;
73-
if (/^Digit\d$/.test(event.code)) { return true; }
74-
if (/^Numpad\d$/.test(event.code)) { return true; }
75-
if (/^Arrow/.test(event.code)) { return true; }
76-
if (inArray(event.code,
77-
['Backspace', 'Delete', 'Enter', 'Escape', 'NumpadEnter', 'PrintScreen', 'Tab']
78-
)) { return true; }
79-
if (event.ctrlKey || event.altKey || event.metaKey) { return true; }
80-
if (this.allowDecimal && event.key === '.' && val.indexOf('.') === -1) { return true; }
81-
if (this.allowExponents) {
82-
const hasExponent = /e/i.test(val);
83-
if (/^e$/i.test(event.key) && !hasExponent && val) { return true; }
84-
if (event.key === '-') {
85-
const minusCount = (val.match(/\-/g) || []).length;
86-
if ((this.allowNegative || hasExponent) && !minusCount) { return true; }
87-
if (this.allowNegative && hasExponent && minusCount === 1) { return true; }
88-
}
89-
} else if (this.allowNegative && event.key === '-' && val.indexOf('-') === -1) {
90-
return true;
91-
}
92-
// TODO: Display feedback for rejected keystroke,
93-
// and clear feedback on next valid keystroke
94-
return false;
95-
}
96-
97-
validateNumber(event) {
98-
// TODO: This only works for input type=text - make it work for type=number
99-
// const val = event.target.value;
100-
// if (!isNaN(val) || val === '' || val === '.' || val === '-' || val === '-.' ||
101-
// (val.length > 1 && val.slice(-1).toLowerCase() === 'e') ||
102-
// (val.length > 2 && val.slice(-2).toLowerCase() === 'e-')
103-
// ) {
104-
// this.lastValidNumber = val;
105-
// } else {
106-
// // TODO: Display feedback for rejected key
107-
// this.jsf.getControl(this).setValue(this.lastValidNumber);
108-
// }
109-
}
11067
}

src/lib/src/framework-library/material-design-framework/material-slider.component.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,18 @@ import { getControl, inArray, isDefined } from '../../shared';
77
@Component({
88
selector: 'material-slider-widget',
99
template: `
10-
<md-slider #inputControl
11-
[(ngModel)]="controlValue"
12-
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
13-
[disabled]="controlDisabled"
14-
[id]="'control' + layoutNode?._id"
15-
[max]="options?.maximum"
16-
[min]="options?.minimum"
17-
[step]="options?.multipleOf || options?.step || 'any'"
18-
[style.width]="'100%'"
19-
[thumb-label]="true"
20-
[value]="controlValue"
21-
(change)="updateValue($event)"></md-slider>`,
22-
styles: [`md-form-field { margin-top: 6px; }`],
10+
<md-slider #inputControl
11+
[(ngModel)]="controlValue"
12+
[attr.aria-describedby]="'control' + layoutNode?._id + 'Status'"
13+
[disabled]="controlDisabled"
14+
[id]="'control' + layoutNode?._id"
15+
[max]="options?.maximum"
16+
[min]="options?.minimum"
17+
[step]="options?.multipleOf || options?.step || 'any'"
18+
[style.width]="'100%'"
19+
[thumb-label]="true"
20+
[value]="controlValue"
21+
(change)="updateValue($event)"></md-slider>`,
2322
})
2423
export class MaterialSliderComponent implements OnInit {
2524
formControl: AbstractControl;

src/lib/src/widget-library/number.component.ts

Lines changed: 1 addition & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,7 @@ import { getControl, inArray, isDefined } from '../shared';
3030
[title]="lastValidNumber"
3131
[type]="layoutNode?.type === 'range' ? 'range' : 'number'"
3232
[value]="controlValue"
33-
(input)="updateValue($event)"
34-
(keydown)="validateInput($event)"
35-
(keyup)="validateNumber($event)">
33+
(input)="updateValue($event)">
3634
{{layoutNode?.type === 'range' ? controlValue : ''}}
3735
</div>`,
3836
})
@@ -65,43 +63,4 @@ export class NumberComponent implements OnInit {
6563
updateValue(event) {
6664
this.jsf.updateValue(this, event.target.value);
6765
}
68-
69-
validateInput(event) {
70-
const val = event.target.value;
71-
if (/^Digit\d$/.test(event.code)) { return true; }
72-
if (/^Numpad\d$/.test(event.code)) { return true; }
73-
if (/^Arrow/.test(event.code)) { return true; }
74-
if (inArray(event.code, ['Backspace', 'Delete', 'Enter', 'Escape',
75-
'NumpadEnter', 'PrintScreen', 'Tab'])) { return true; }
76-
if (event.ctrlKey || event.altKey || event.metaKey) { return true; }
77-
if (this.allowDecimal && event.key === '.' && val.indexOf('.') === -1) { return true; }
78-
if (this.allowExponents) {
79-
const hasExponent = /e/i.test(val);
80-
if (/^e$/i.test(event.key) && !hasExponent && val) { return true; }
81-
if (event.key === '-') {
82-
const minusCount = (val.match(/\-/g) || []).length;
83-
if ((this.allowNegative || hasExponent) && !minusCount) { return true; }
84-
if (this.allowNegative && hasExponent && minusCount === 1) { return true; }
85-
}
86-
} else if (this.allowNegative && event.key === '-' && val.indexOf('-') === -1) {
87-
return true;
88-
}
89-
// TODO: Display feedback for rejected keystroke,
90-
// and clear feedback on next valid keystroke
91-
return false;
92-
}
93-
94-
validateNumber(event) {
95-
// TODO: This only works for input type=text - make it work for type=number
96-
const val = event.target.value;
97-
if (!isNaN(val) || val === '' || val === '.' || val === '-' || val === '-.' ||
98-
(val.length > 1 && val.slice(-1).toLowerCase() === 'e') ||
99-
(val.length > 2 && val.slice(-2).toLowerCase() === 'e-')
100-
) {
101-
this.lastValidNumber = val;
102-
} else {
103-
// TODO: Display feedback for rejected key
104-
this.jsf.getControl(this).setValue(this.lastValidNumber);
105-
}
106-
}
10766
}

0 commit comments

Comments
 (0)