Skip to content

Commit 1740496

Browse files
committed
RxProps: Uses "get" interface instead of "getFieldProp"
1 parent fbfc26c commit 1740496

File tree

11 files changed

+38
-32
lines changed

11 files changed

+38
-32
lines changed

examples/reactive-props/DelegatedSubscription.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export default class RxPropsDelegatedSubscription extends React.Component {
1414
name="firstName"
1515
label="Fisrt name"
1616
hint="Required when `lastName` has value"
17-
required={({ getFieldProp }) => {
18-
return !!getFieldProp(['lastName', 'value']);
17+
required={({ get }) => {
18+
return !!get(['lastName', 'value']);
1919
}} />
2020
<Input
2121
name="lastName"

examples/reactive-props/DynamicRequired.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ export default class RxPropsDynamicRequired extends React.Component {
1818
name="lastName"
1919
label="Last name"
2020
hint="Required when `firstName` has value"
21-
required={({ getFieldProp }) => {
22-
return !!getFieldProp(['firstName', 'value']);
21+
required={({ get }) => {
22+
return !!get(['firstName', 'value']);
2323
}} />
2424

2525
<Button>Submit</Button>

examples/reactive-props/Interdependent.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@ export default class RxPropsInterdependent extends React.Component {
1414
name="firstName"
1515
label="First name"
1616
hint="Required when `lastName` has value"
17-
required={({ getFieldProp }) => {
18-
return !!getFieldProp(['lastName', 'value']);
17+
required={({ get }) => {
18+
return !!get(['lastName', 'value']);
1919
}} />
2020
<Input
2121
name="lastName"
2222
label="Last name"
2323
hint="Required when `firstName` has value"
24-
required={({ getFieldProp }) => {
25-
return !!getFieldProp(['firstName', 'value']);
24+
required={({ get }) => {
25+
return !!get(['firstName', 'value']);
2626
}} />
2727

2828
<Button>Submit</Button>

examples/reactive-props/SingleTarget.jsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ export default class RxPropsSingleTarget extends React.Component {
1414
name="firstName"
1515
label="First name"
1616
hint="Required when `lastName` has value"
17-
required={({ getFieldProp }) => {
18-
return !!getFieldProp(['lastName', 'value']);
17+
required={({ get }) => {
18+
return !!get(['lastName', 'value']);
1919
}} />
2020
<Input
2121
name="lastName"
@@ -24,8 +24,8 @@ export default class RxPropsSingleTarget extends React.Component {
2424
name="fieldThree"
2525
label="Some field three"
2626
hint="Required when `lastName` has value"
27-
required={({ getFieldProp }) => {
28-
return !!getFieldProp(['lastName', 'value'])
27+
required={({ get }) => {
28+
return !!get(['lastName', 'value'])
2929
}} />
3030
<Button>Submit</Button>
3131
</Form>

examples/validation/SyncValidation/Form.props.rules.jsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ const rules = {
1313
const { ref: { props } } = fieldProps;
1414
return (value !== 'foo');
1515
},
16-
fieldTwo: ({ value, getFieldProp }) => {
17-
return (value === getFieldProp(['fieldOne', 'value']));
16+
fieldTwo: ({ value, get }) => {
17+
return (value === get(['fieldOne', 'value']));
1818
}
1919
}
2020
};

src/utils/fieldUtils/createPropGetter.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
/**
2-
* Generates a field prop getter function.
2+
* A thunk to generate a field prop getter function.
33
* The latter is used for reactive props implementation and allows to flush
44
* field prop references into a single source using a callback function.
55
* @param {Map} fields
66
* @param {Function} callback
7+
* @returns {Function} A field prop getter function.
78
*/
89
export default function createPropGetter(fields, callback) {
910
return (propPath) => {
11+
/**
12+
* Getting the value is an internal procedure operating with Immutable fields.
13+
* This logic is not affected by the "withImmutable" option.
14+
*/
1015
const propValue = fields.getIn(propPath);
1116

1217
if (callback) {

src/utils/fieldUtils/validateSync.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ export default function validateSync({ fieldProps, fields, form }) {
9090
const resolverArgs = {
9191
[valuePropName]: value,
9292
fieldProps,
93-
getFieldProp: createPropGetter(fields),
93+
get: createPropGetter(fields),
9494
fields,
9595
form
9696
};

src/utils/flushFieldRefs.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import createPropGetter from './fieldUtils/createPropGetter';
1010
export default function flushFieldRefs(method, methodArgs) {
1111
const { fields, form } = methodArgs;
1212
const refs = [];
13-
const getFieldProp = createPropGetter(fields, propPath => refs.push(propPath));
13+
const fieldPropGetter = createPropGetter(fields, propRefPath => refs.push(propRefPath));
1414

1515
const initialValue = dispatch(method, {
1616
...methodArgs,
17-
getFieldProp
17+
get: fieldPropGetter
1818
}, form.context);
1919

2020
return { refs, initialValue };

src/utils/rxUtils/createRulesSubscriptions.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ import makeObservable from './makeObservable';
22
import flushFieldRefs from '../flushFieldRefs';
33
import getFieldRules from '../formUtils/getFieldRules';
44

5-
//
6-
// TODO
7-
// Change rule subscriptions according to new "getFieldProp" API
8-
//
9-
5+
/**
6+
* Creates an observable for each validation rule which referenced other fields' props.
7+
* @param {Map} fieldProps
8+
* @param {Map} fields
9+
* @param {Object} form
10+
*/
1011
export default function createRulesSubscriptions({ fieldProps, fields, form }) {
1112
const { rxRules } = form.state;
1213
const value = fieldProps.get(fieldProps.get('valuePropName'));

src/utils/rxUtils/createSubscriptions.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export default function createSubscriptions({ fieldProps, fields, form }) {
2323
const nextPropValue = resolver({
2424
fieldProps: fieldProps.toJS(),
2525
fields: nextFields.toJS(),
26-
getFieldProp: createPropGetter(nextFields),
26+
get: createPropGetter(nextFields),
2727
form
2828
}, form.context);
2929

0 commit comments

Comments
 (0)