Skip to content

Commit fa5b0a3

Browse files
committed
Fix #11: Use null for blank integer value
1 parent 95c2045 commit fa5b0a3

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

src/components/form.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ export function FormInput({label, help_text, error, inputRef, ...props}) {
1111
if (inputRef)
1212
props.ref = inputRef;
1313

14+
if (props.type === 'number' && props.value === null)
15+
props.value = '';
16+
1417
return (
1518
<div>
1619
{label && <label>{label}</label>}

src/data.js

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ export function getBlankObject(schema) {
1818
keys[key] = getBlankObject(value);
1919
else if (type === 'boolean')
2020
keys[key] = false;
21-
else // string, numbe, integer, etc.
21+
else if (type === 'integer' || type === 'number')
22+
keys[key] = null;
23+
else // string etc.
2224
keys[key] = '';
2325
}
2426

@@ -41,7 +43,9 @@ export function getBlankArray(schema) {
4143
items.push(getBlankObject(schema.items));
4244
else if (type === 'boolean')
4345
items.push(false);
44-
else // string, number, integer, etc.
46+
else if (type === 'integer' || type === 'number')
47+
items.push(null);
48+
else // string, etc.
4549
items.push('');
4650

4751
return items;
@@ -62,7 +66,9 @@ export function getBlankData(schema) {
6266
return getBlankObject(schema);
6367
else if (type === 'boolean')
6468
return false;
65-
else // string, number, integer, etc.
69+
else if (type === 'integer' || type === 'number')
70+
return null;
71+
else // string, etc.
6672
return '';
6773
}
6874

@@ -86,6 +92,10 @@ function getSyncedArray(data, schema) {
8692
} else if (type === 'object') {
8793
newData[i] = getSyncedObject(item, schema.items);
8894
}
95+
else {
96+
if ((type === 'integer' || type === 'number') && item === '')
97+
newData[i] = null;
98+
}
8999
}
90100

91101
return newData;
@@ -116,15 +126,21 @@ function getSyncedObject(data, schema) {
116126
newData[key] = getSyncedObject({}, schemaValue);
117127
else if (type === 'boolean')
118128
newData[key] = false;
129+
else if (type === 'integer' || type === 'number')
130+
newData[key] = null;
119131
else
120132
newData[key] = '';
121133
} else {
122134
if (type === 'array')
123135
newData[key] = getSyncedArray(data[key], schemaValue);
124136
else if (type === 'object')
125137
newData[key] = getSyncedObject(data[key], schemaValue);
126-
else
127-
newData[key] = data[key];
138+
else {
139+
if ((type === 'integer' || type === 'number') && data[key] === '')
140+
newData[key] = null;
141+
else
142+
newData[key] = data[key];
143+
}
128144
}
129145

130146
}

src/ui.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ function handleChange(e, fieldType, callback) {
1616

1717
if (fieldType === 'number' || fieldType === 'integer') {
1818
value = value.trim();
19-
if (value !== '' && !isNaN(Number(value)))
19+
if (value === '')
20+
value = null;
21+
else if (!isNaN(Number(value)))
2022
value = Number(value);
2123
} else if (fieldType === 'boolean') {
2224
if (value === 'false' || value === false)

0 commit comments

Comments
 (0)