Skip to content

Commit 9008284

Browse files
committed
Bump version to 2.0.1 and update dist files
1 parent a0b73e7 commit 9008284

File tree

5 files changed

+80
-20
lines changed

5 files changed

+80
-20
lines changed

dist/react-json-form.cjs

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,22 @@ function capitalize(string) {
486486
if (!string) return '';
487487
return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();
488488
}
489+
function convertType(value, to) {
490+
if (typeof value === to) return value;
491+
492+
if (to === 'number' || to === 'integer') {
493+
if (typeof value === 'string') {
494+
value = value.trim();
495+
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
496+
} else if (typeof value === 'boolean') {
497+
value = value === true ? 1 : 0;
498+
}
499+
} else if (to === 'boolean') {
500+
if (value === 'false' || value === false) value = false;else value = true;
501+
}
502+
503+
return value;
504+
}
489505
function getVerboseName(name) {
490506
if (name === undefined || name === null) return '';
491507
name = name.replace(/_/g, ' ');
@@ -630,7 +646,10 @@ class FormMultiSelectInput extends React__default["default"].Component {
630646
if (e.target.checked) {
631647
value.push(e.target.value);
632648
} else {
633-
value = value.filter(item => item !== e.target.value);
649+
value = value.filter(item => {
650+
if (typeof item !== this.props.valueType) convertType(item, this.props.valueType);
651+
return item !== e.target.value;
652+
});
634653
}
635654

636655
let event = {
@@ -1548,11 +1567,11 @@ function handleChange(e, fieldType, callback) {
15481567
value = e.target.value;
15491568
}
15501569

1551-
if (fieldType === 'number' || fieldType === 'integer') {
1552-
value = value.trim();
1553-
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
1554-
} else if (fieldType === 'boolean') {
1555-
if (value === 'false' || value === false) value = false;else value = true;
1570+
if (Array.isArray(value)) {
1571+
/* multiselect widget values are arrays */
1572+
value = value.map(item => convertType(item, fieldType));
1573+
} else {
1574+
value = convertType(value, fieldType);
15561575
}
15571576

15581577
callback(e.target.name, value);
@@ -1634,6 +1653,7 @@ function FormField(props) {
16341653
break;
16351654

16361655
case 'multiselect':
1656+
inputProps.valueType = props.schema.type;
16371657
InputField = FormMultiSelectInput;
16381658
break;
16391659

dist/react-json-form.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/react-json-form.modern.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,22 @@ function capitalize(string) {
480480
if (!string) return '';
481481
return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();
482482
}
483+
function convertType(value, to) {
484+
if (typeof value === to) return value;
485+
486+
if (to === 'number' || to === 'integer') {
487+
if (typeof value === 'string') {
488+
value = value.trim();
489+
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
490+
} else if (typeof value === 'boolean') {
491+
value = value === true ? 1 : 0;
492+
}
493+
} else if (to === 'boolean') {
494+
if (value === 'false' || value === false) value = false;else value = true;
495+
}
496+
497+
return value;
498+
}
483499
function getVerboseName(name) {
484500
if (name === undefined || name === null) return '';
485501
name = name.replace(/_/g, ' ');
@@ -624,7 +640,10 @@ class FormMultiSelectInput extends React$1.Component {
624640
if (e.target.checked) {
625641
value.push(e.target.value);
626642
} else {
627-
value = value.filter(item => item !== e.target.value);
643+
value = value.filter(item => {
644+
if (typeof item !== this.props.valueType) convertType(item, this.props.valueType);
645+
return item !== e.target.value;
646+
});
628647
}
629648

630649
let event = {
@@ -1542,11 +1561,11 @@ function handleChange(e, fieldType, callback) {
15421561
value = e.target.value;
15431562
}
15441563

1545-
if (fieldType === 'number' || fieldType === 'integer') {
1546-
value = value.trim();
1547-
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
1548-
} else if (fieldType === 'boolean') {
1549-
if (value === 'false' || value === false) value = false;else value = true;
1564+
if (Array.isArray(value)) {
1565+
/* multiselect widget values are arrays */
1566+
value = value.map(item => convertType(item, fieldType));
1567+
} else {
1568+
value = convertType(value, fieldType);
15501569
}
15511570

15521571
callback(e.target.name, value);
@@ -1628,6 +1647,7 @@ function FormField(props) {
16281647
break;
16291648

16301649
case 'multiselect':
1650+
inputProps.valueType = props.schema.type;
16311651
InputField = FormMultiSelectInput;
16321652
break;
16331653

dist/react-json-form.module.js

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,22 @@ function capitalize(string) {
480480
if (!string) return '';
481481
return string.charAt(0).toUpperCase() + string.substr(1).toLowerCase();
482482
}
483+
function convertType(value, to) {
484+
if (typeof value === to) return value;
485+
486+
if (to === 'number' || to === 'integer') {
487+
if (typeof value === 'string') {
488+
value = value.trim();
489+
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
490+
} else if (typeof value === 'boolean') {
491+
value = value === true ? 1 : 0;
492+
}
493+
} else if (to === 'boolean') {
494+
if (value === 'false' || value === false) value = false;else value = true;
495+
}
496+
497+
return value;
498+
}
483499
function getVerboseName(name) {
484500
if (name === undefined || name === null) return '';
485501
name = name.replace(/_/g, ' ');
@@ -624,7 +640,10 @@ class FormMultiSelectInput extends React$1.Component {
624640
if (e.target.checked) {
625641
value.push(e.target.value);
626642
} else {
627-
value = value.filter(item => item !== e.target.value);
643+
value = value.filter(item => {
644+
if (typeof item !== this.props.valueType) convertType(item, this.props.valueType);
645+
return item !== e.target.value;
646+
});
628647
}
629648

630649
let event = {
@@ -1542,11 +1561,11 @@ function handleChange(e, fieldType, callback) {
15421561
value = e.target.value;
15431562
}
15441563

1545-
if (fieldType === 'number' || fieldType === 'integer') {
1546-
value = value.trim();
1547-
if (value === '') value = null;else if (!isNaN(Number(value))) value = Number(value);
1548-
} else if (fieldType === 'boolean') {
1549-
if (value === 'false' || value === false) value = false;else value = true;
1564+
if (Array.isArray(value)) {
1565+
/* multiselect widget values are arrays */
1566+
value = value.map(item => convertType(item, fieldType));
1567+
} else {
1568+
value = convertType(value, fieldType);
15501569
}
15511570

15521571
callback(e.target.name, value);
@@ -1628,6 +1647,7 @@ function FormField(props) {
16281647
break;
16291648

16301649
case 'multiselect':
1650+
inputProps.valueType = props.schema.type;
16311651
InputField = FormMultiSelectInput;
16321652
break;
16331653

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@bhch/react-json-form",
3-
"version": "2.0.0",
3+
"version": "2.0.1",
44
"description": "Create forms using JSON Schema",
55
"publishConfig": {
66
"access": "public"

0 commit comments

Comments
 (0)