Skip to content

Commit 32d0be9

Browse files
committed
Change checkEmpty to return bool
1 parent 72f0060 commit 32d0be9

File tree

4 files changed

+41
-28
lines changed

4 files changed

+41
-28
lines changed

packages/react-form-renderer/demo/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const App = () => (
2727
initialValues={{
2828
text_box_1: 'hue'
2929
}}
30-
deletedValue={null}
30+
deletedValue={'bla'}
3131
layoutMapper={layoutMapper}
3232
formFieldsMapper={formFieldsMapper}
3333
onSubmit={console.log}

packages/react-form-renderer/src/form-renderer/enhanced-on-change.js

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,34 +48,29 @@ const convertType = (dataType, value) => ({
4848
*/
4949
const checkEmpty = value => {
5050
if (typeof value === 'number') {
51-
return value;
51+
return false;
5252
}
5353

5454
if (typeof value === 'string' && value.length > 0) {
55-
return value;
55+
return false;
5656
}
5757

5858
if (!isEmpty(value)) {
59-
return value;
59+
return false;
6060
}
6161

62-
return undefined;
62+
return true;
6363
};
6464

6565
/**
6666
* Casts input value into selected data type
67-
* @param {FieldDataTypes} dataType intended data type of output value
68-
* @param {Function} onChange original function to be modified
69-
* @param {Any} initial initial value of field
70-
* @param {Any} value value to be type casted
71-
* @param {...any} args rest of orininal function arguments
7267
*/
73-
const enhancedOnChange = (dataType, onChange, initial, deletedValue, value, ...args) => {
68+
const enhancedOnChange = ({ dataType, onChange, initial, deletedValue, dirty, ...rest }, value, ...args) => {
7469
const sanitizedValue = sanitizeValue(value);
7570
const result = Array.isArray(sanitizedValue)
7671
? sanitizedValue.map(item => convertType(dataType, sanitizeValue(item)))
7772
: convertType(dataType, sanitizedValue);
78-
if (typeof checkEmpty(result) === 'undefined' && typeof initial !== 'undefined') {
73+
if (checkEmpty(result) && typeof initial !== 'undefined') {
7974
return onChange(deletedValue, ...args);
8075
}
8176

packages/react-form-renderer/src/form-renderer/field-provider.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,13 @@ class FieldProvider extends Component{
2929
input={{
3030
...input,
3131
onChange: (...args) => {
32-
enhancedOnChange(dataType, onChange, fieldsProps.meta.initial, this.props.formOptions.deletedValue, ...args);
32+
enhancedOnChange({
33+
...fieldsProps.meta,
34+
dataType,
35+
onChange,
36+
deletedValue: this.props.formOptions.deletedValue,
37+
}, ...args);
38+
// enhancedOnChange(dataType, onChange, fieldsProps.meta.initial, this.props.formOptions.deletedValue, ...args);
3339
},
3440
}}
3541
/>
@@ -41,7 +47,13 @@ class FieldProvider extends Component{
4147
...fieldsProps,
4248
input: {
4349
...input,
44-
onChange: (...args) => enhancedOnChange(dataType, onChange, fieldsProps.meta.initial, this.props.formOptions.deletedValue, ...args),
50+
onChange: (...args) =>
51+
enhancedOnChange({
52+
...fieldsProps.meta,
53+
dataType,
54+
onChange,
55+
deletedValue: this.props.formOptions.deletedValue,
56+
}, ...args),
4557
},
4658
}) } />;
4759
}
@@ -53,7 +65,13 @@ class FieldProvider extends Component{
5365
Children.only(
5466
<ChildComponent
5567
{ ...fieldsProps }
56-
input={{ ...input, onChange: (...args) => enhancedOnChange(dataType, onChange, fieldsProps.meta.initial, this.props.formOptions.deletedValue, ...args) }}
68+
input={{ ...input, onChange: (...args) =>
69+
enhancedOnChange({
70+
...fieldsProps.meta,
71+
dataType,
72+
onChange,
73+
deletedValue: this.props.formOptions.deletedValue,
74+
}, ...args) }}
5775
/>
5876
) }
5977
</Field>

packages/react-form-renderer/src/tests/form-renderer/enhanced-on-change.test.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import enhancedOnChange from '../../form-renderer/enhanced-on-change';
22

33
describe('#enhancedOnChange', () => {
44
const deletedValue = 'this is deleted value';
5-
const initialValue = 'some initial value';
5+
const initial = 'some initial value';
66
it('should return value directly if event is not passed', () => {
77
const value = 'foo';
8-
expect(enhancedOnChange(undefined, value => value, undefined, deletedValue, value)).toEqual('foo');
8+
expect(enhancedOnChange({ onChange: value => value, deletedValue }, value)).toEqual('foo');
99
});
1010

1111
it('should return value from event if input is of type checkbox', () => {
@@ -16,7 +16,7 @@ describe('#enhancedOnChange', () => {
1616
checked: false,
1717
},
1818
};
19-
expect(enhancedOnChange(undefined, value => value, undefined, deletedValue, value)).toEqual(false);
19+
expect(enhancedOnChange({ onChange: value => value, deletedValue }, value)).toEqual(false);
2020
});
2121

2222
it('should return value from event', () => {
@@ -26,49 +26,49 @@ describe('#enhancedOnChange', () => {
2626
checked: 'not me',
2727
},
2828
};
29-
expect(enhancedOnChange(undefined, value => value, undefined, deletedValue, value)).toEqual('Me');
29+
expect(enhancedOnChange({ onChange: value => value, deletedValue }, value)).toEqual('Me');
3030
});
3131

3232
it('should correctly convert array datatype from strings to integers', () => {
3333
const value = [ '1', '2', 3 ];
34-
expect(enhancedOnChange('integer', value => value, undefined, deletedValue, value)).toEqual([ 1, 2, 3 ]);
34+
expect(enhancedOnChange({ dataType: 'integer', onChange: value => value, deletedValue }, value)).toEqual([ 1, 2, 3 ]);
3535
});
3636

3737
describe('#setting delete value', () => {
3838
it('should not set any delete value after sending empty value', () => {
3939
const value = undefined;
40-
expect(enhancedOnChange(undefined, value => value, undefined, deletedValue, value)).toEqual(undefined);
40+
expect(enhancedOnChange({ onChange: value => value, deletedValue }, value)).toEqual(undefined);
4141
});
4242

4343
it('should set delete value after sending empty string value', () => {
4444
const value = undefined;
45-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(deletedValue);
46-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, '')).toEqual(deletedValue);
45+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(deletedValue);
46+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, '')).toEqual(deletedValue);
4747
});
4848

4949
it('should not set delete value after sending number 0', () => {
5050
const value = 0;
51-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(value);
51+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(value);
5252
});
5353

5454
it('should set delete value after sending empty array', () => {
5555
const value = [];
56-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(deletedValue);
56+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(deletedValue);
5757
});
5858

5959
it('should set delete value after sending empty object', () => {
6060
const value = {};
61-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(deletedValue);
61+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(deletedValue);
6262
});
6363

6464
it('should not set delete value after sending array', () => {
6565
const value = [ 1, 2, 'foo' ];
66-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(value);
66+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(value);
6767
});
6868

6969
it('should not set delete value after sending object', () => {
7070
const value = { foo: 'bar' };
71-
expect(enhancedOnChange(undefined, value => value, initialValue, deletedValue, value)).toEqual(value);
71+
expect(enhancedOnChange({ onChange: value => value, initial, deletedValue }, value)).toEqual(value);
7272
});
7373
});
7474
});

0 commit comments

Comments
 (0)