@flowerforce/flower-core 4.0.1-beta.0 → 4.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs.js +69 -81
- package/dist/index.esm.js +68 -80
- package/dist/src/interfaces/CoreInterface.d.ts +3 -3
- package/dist/src/interfaces/ReducerInterface.d.ts +20 -24
- package/dist/src/interfaces/SelectorsInterface.d.ts +17 -17
- package/dist/src/interfaces/Store.d.ts +1 -1
- package/dist/src/interfaces/UtilsInterface.d.ts +1 -1
- package/dist/src/rules-matcher/RulesMatcher.d.ts +1 -1
- package/dist/src/state-manager/state-functions/FlowerCoreMergedReducers.d.ts +2 -2
- package/dist/src/state-manager/state-functions/FlowerDataStateFunctions.d.ts +2 -13
- package/dist/src/state-manager/state-functions/index.d.ts +1 -1
- package/dist/src/state-manager/state-selectors/FlowerDataStateSelectors.d.ts +2 -0
- package/dist/src/state-manager/state-selectors/FlowerSelectorsMerged.d.ts +2 -2
- package/dist/src/state-manager/state-selectors/index.d.ts +2 -2
- package/dist/src/utils/FlowerCoreStateUtils.d.ts +1 -1
- package/dist/src/utils/FlowerDataCoreUtils.d.ts +2 -0
- package/dist/src/utils/index.d.ts +1 -1
- package/package.json +1 -1
- package/dist/src/state-manager/state-selectors/FlowerFormStateSelectors.d.ts +0 -2
- package/dist/src/utils/FlowerFormCoreUtils.d.ts +0 -2
package/dist/index.cjs.js
CHANGED
@@ -32,7 +32,7 @@ const devtoolState = {};
|
|
32
32
|
const FlowerStateUtils = {
|
33
33
|
getAllData: (state) => state &&
|
34
34
|
Object.entries(state ?? {}).reduce((acc, [k, v]) => ({ ...acc, [k]: v?.data ?? v }), {}),
|
35
|
-
|
35
|
+
selectFlowerDataNode: (name) => (state) => _get(state, name),
|
36
36
|
makeSelectCurrentNextRules: (name) => (state) => {
|
37
37
|
const nextRules = _get(state, [name, 'nextRules']);
|
38
38
|
const currentNodeId = FlowerStateUtils.makeSelectCurrentNodeId(name)(state);
|
@@ -44,20 +44,20 @@ const FlowerStateUtils = {
|
|
44
44
|
return _get(subState, ['current']) || startId;
|
45
45
|
},
|
46
46
|
makeSelectNodeErrors: (name) => (state) => {
|
47
|
-
const
|
48
|
-
return
|
47
|
+
const data = FlowerStateUtils.selectFlowerDataNode(name)(state);
|
48
|
+
return generateData(data);
|
49
49
|
}
|
50
50
|
};
|
51
|
-
const
|
52
|
-
const validationErrors =
|
51
|
+
const generateData = (data) => {
|
52
|
+
const validationErrors = data && data.errors;
|
53
53
|
const allErrors = Object.values(validationErrors || {});
|
54
54
|
return {
|
55
|
-
isSubmitted:
|
56
|
-
isDirty: Object.values(
|
57
|
-
hasFocus:
|
58
|
-
errors:
|
59
|
-
customErrors:
|
60
|
-
isValidating:
|
55
|
+
isSubmitted: data?.isSubmitted || false,
|
56
|
+
isDirty: Object.values(data?.dirty || {}).some(Boolean) || false,
|
57
|
+
hasFocus: data?.hasFocus,
|
58
|
+
errors: data?.errors,
|
59
|
+
customErrors: data?.customErrors,
|
60
|
+
isValidating: data?.isValidating,
|
61
61
|
isValid: allErrors.flat().length === 0
|
62
62
|
};
|
63
63
|
};
|
@@ -267,19 +267,19 @@ const operators = {
|
|
267
267
|
.some((c) => c instanceof RegExp ? c.test(a) : new RegExp(c, opt).test(a))
|
268
268
|
};
|
269
269
|
|
270
|
-
const rulesMatcher = (rules,
|
270
|
+
const rulesMatcher = (rules, dataValue = {}, apply = true, options) => {
|
271
271
|
if (!rules)
|
272
272
|
return [apply];
|
273
273
|
// if (typeof rules !== 'object' && !Array.isArray(rules)) {
|
274
274
|
// throw new Error('Rules accept only array or object');
|
275
275
|
// }
|
276
276
|
if (typeof rules === 'function') {
|
277
|
-
return [rules(
|
277
|
+
return [rules(dataValue) === apply];
|
278
278
|
}
|
279
279
|
const conditions = Array.isArray(rules)
|
280
280
|
? { $and: rules }
|
281
281
|
: rules;
|
282
|
-
const valid = rulesMatcherUtils.checkRule(conditions,
|
282
|
+
const valid = rulesMatcherUtils.checkRule(conditions, dataValue, options ?? {});
|
283
283
|
return [valid === apply];
|
284
284
|
};
|
285
285
|
|
@@ -406,7 +406,7 @@ const FlowUtils = {
|
|
406
406
|
})
|
407
407
|
};
|
408
408
|
|
409
|
-
const
|
409
|
+
const DataUtils = {
|
410
410
|
cleanPath: (name, char = '^') => _trimStart(name, char),
|
411
411
|
getPath: (idValue) => {
|
412
412
|
if (!idValue) {
|
@@ -420,9 +420,9 @@ const FormUtils = {
|
|
420
420
|
};
|
421
421
|
}
|
422
422
|
if (idValue.indexOf('^') === 0) {
|
423
|
-
const [
|
423
|
+
const [rootName, ...rest] = DataUtils.cleanPath(idValue).split('.');
|
424
424
|
return {
|
425
|
-
|
425
|
+
rootName,
|
426
426
|
path: rest
|
427
427
|
};
|
428
428
|
}
|
@@ -437,7 +437,7 @@ const FormUtils = {
|
|
437
437
|
*/
|
438
438
|
const CoreUtils = {
|
439
439
|
...FlowUtils,
|
440
|
-
...
|
440
|
+
...DataUtils
|
441
441
|
};
|
442
442
|
|
443
443
|
const { generateNodes, hasNode, makeObjectRules, generateRulesName, findValidRule } = CoreUtils;
|
@@ -674,75 +674,65 @@ const FlowerCoreBaseReducers = {
|
|
674
674
|
};
|
675
675
|
|
676
676
|
const { getPath } = CoreUtils;
|
677
|
-
/**
|
678
|
-
* formName => FlowerForm
|
679
|
-
* initialData => FlowerForm
|
680
|
-
* fieldName => FlowerField
|
681
|
-
* fieldValue => FlowerField
|
682
|
-
* errors => FlowerField
|
683
|
-
* customErrors => FlowerField
|
684
|
-
* fieldTouched => FlowerField
|
685
|
-
* fieldDirty => FlowerField
|
686
|
-
* fieldHasFocus => FlowerField
|
687
|
-
*/
|
688
677
|
const FlowerCoreDataReducers = {
|
689
|
-
|
690
|
-
|
678
|
+
setFormSubmitted: (state, { payload }) => {
|
679
|
+
const rootPath = typeof payload === 'string' ? payload : payload.rootName;
|
680
|
+
if (!_get(state, [rootPath])) {
|
691
681
|
return state;
|
692
682
|
}
|
693
|
-
_set(state,
|
683
|
+
_set(state, [rootPath, 'isSubmitted'], true);
|
694
684
|
return state;
|
695
685
|
},
|
696
|
-
|
697
|
-
_set(state, [payload.
|
686
|
+
addCustomDataErrors: (state, { payload }) => {
|
687
|
+
_set(state, [payload.rootName, 'customErrors', payload.id], payload.errors);
|
698
688
|
},
|
699
|
-
|
700
|
-
_set(state, [payload.
|
689
|
+
addDataErrors: (state, { payload }) => {
|
690
|
+
_set(state, [payload.rootName, 'errors', payload.id], payload.errors);
|
701
691
|
},
|
702
|
-
|
703
|
-
_unset(state, [payload.
|
704
|
-
_unset(state, [payload.
|
705
|
-
_unset(state, [payload.
|
692
|
+
removeDataErrors: (state, { payload }) => {
|
693
|
+
_unset(state, [payload.rootName, 'errors', payload.id]);
|
694
|
+
_unset(state, [payload.rootName, 'customErrors', payload.id]);
|
695
|
+
_unset(state, [payload.rootName, 'isValidating']);
|
706
696
|
},
|
707
|
-
|
708
|
-
_set(state, [payload.
|
697
|
+
fieldTouch: (state, { payload }) => {
|
698
|
+
_set(state, [payload.rootName, 'touches', payload.id], payload.touched);
|
709
699
|
},
|
710
|
-
|
711
|
-
_set(state, [payload.
|
700
|
+
fieldDirty: (state, { payload }) => {
|
701
|
+
_set(state, [payload.rootName, 'dirty', payload.id], payload.dirty);
|
712
702
|
},
|
713
|
-
|
703
|
+
fieldFocus: (state, { payload }) => {
|
714
704
|
if (!payload.focused) {
|
715
|
-
_unset(state, [payload.
|
705
|
+
_unset(state, [payload.rootName, 'hasFocus']);
|
716
706
|
return;
|
717
707
|
}
|
718
|
-
_set(state, [payload.
|
708
|
+
_set(state, [payload.rootName, 'hasFocus'], payload.id);
|
719
709
|
},
|
720
710
|
addData: (state, { payload }) => {
|
721
|
-
const prevData = _get(state, [payload.
|
722
|
-
_set(state, [payload.
|
711
|
+
const prevData = _get(state, [payload.rootName, 'data'], {});
|
712
|
+
_set(state, [payload.rootName, 'data'], { ...prevData, ...payload.value });
|
723
713
|
},
|
724
714
|
addDataByPath: (state, { payload }) => {
|
725
715
|
const { path: newpath } = getPath(payload.id);
|
726
716
|
if (payload.id && payload.id.length) {
|
727
|
-
_set(state, [payload.
|
717
|
+
_set(state, [payload.rootName, 'data', ...newpath], payload.value);
|
728
718
|
if (payload && payload.dirty) {
|
729
|
-
_set(state, [payload.
|
719
|
+
_set(state, [payload.rootName, 'dirty', payload.id], payload.dirty);
|
730
720
|
}
|
731
721
|
}
|
732
722
|
},
|
733
723
|
// TODO usato al momento solo il devtool
|
734
724
|
replaceData: /* istanbul ignore next */ (state, { payload }) => {
|
735
725
|
/* istanbul ignore next */
|
736
|
-
_set(state, [payload.
|
726
|
+
_set(state, [payload.rootName, 'data'], payload.value);
|
737
727
|
},
|
738
728
|
unsetData: (state, { payload }) => {
|
739
|
-
_unset(state, [payload.
|
729
|
+
_unset(state, [payload.rootName, 'data', ...payload.id]);
|
740
730
|
},
|
741
|
-
|
742
|
-
_set(state, [payload.
|
731
|
+
setIsDataValidating: (state, { payload }) => {
|
732
|
+
_set(state, [payload.rootName, 'isValidating'], payload.isValidating);
|
743
733
|
},
|
744
|
-
|
745
|
-
const touchedFields = _get(state, [
|
734
|
+
resetData: (state, { payload: { rootName, initialData } }) => {
|
735
|
+
const touchedFields = _get(state, [rootName, 'errors'], {});
|
746
736
|
const newStateData = initialData
|
747
737
|
? Object.keys(touchedFields).reduce((acc, key) => {
|
748
738
|
const { path } = getPath(key);
|
@@ -751,13 +741,13 @@ const FlowerCoreDataReducers = {
|
|
751
741
|
return acc;
|
752
742
|
}, {})
|
753
743
|
: {};
|
754
|
-
_set(state, [
|
755
|
-
_unset(state, [
|
756
|
-
_unset(state, [
|
757
|
-
_unset(state, [
|
744
|
+
_set(state, [rootName, 'data'], newStateData);
|
745
|
+
_unset(state, [rootName, 'touches']);
|
746
|
+
_unset(state, [rootName, 'dirty']);
|
747
|
+
_unset(state, [rootName, 'isSubmitted']);
|
758
748
|
},
|
759
|
-
|
760
|
-
_set(state, [
|
749
|
+
initData: (state, { payload: { rootName, initialData } }) => {
|
750
|
+
_set(state, [rootName, 'data'], initialData);
|
761
751
|
}
|
762
752
|
};
|
763
753
|
|
@@ -766,8 +756,6 @@ const FlowerCoreReducers = { ...FlowerCoreBaseReducers, ...FlowerCoreDataReducer
|
|
766
756
|
const FlowerCoreStateBaseSelectors = {
|
767
757
|
selectGlobal: (state) => state && state[exports.REDUCER_NAME.FLOWER_FLOW],
|
768
758
|
selectFlower: (name) => (state) => _get(state, [name]),
|
769
|
-
// selectFlowerFormNode: (id) => (state) =>
|
770
|
-
// _get(state, [REDUCER_NAME.FLOWER_DATA, id]),
|
771
759
|
selectFlowerHistory: (flower) => _get(flower, ['history'], []),
|
772
760
|
makeSelectNodesIds: (flower) => _get(flower, ['nodes']),
|
773
761
|
makeSelectStartNodeId: (flower) => _get(flower, ['startId']),
|
@@ -796,24 +784,24 @@ const FlowerCoreStateBaseSelectors = {
|
|
796
784
|
|
797
785
|
const FlowerCoreStateDataSelectors = {
|
798
786
|
selectGlobalReducerByName: (name) => (state) => state[name] ?? state[exports.REDUCER_NAME.FLOWER_DATA][name],
|
799
|
-
|
787
|
+
selectGlobalData: (state) => {
|
800
788
|
return state && state[exports.REDUCER_NAME.FLOWER_DATA];
|
801
789
|
},
|
802
790
|
// getDataByFlow: (flower) => _get(flower, 'data') ?? {},
|
803
791
|
getDataFromState: (id) => (data) => (id === '*' ? data : _get(data, id)),
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
return
|
808
|
-
},
|
809
|
-
|
810
|
-
makeSelectNodeErrors:
|
811
|
-
makeSelectFieldError: (name, id, validate) => (
|
812
|
-
const customErrors = Object.entries((
|
792
|
+
makeSelectNodeDataSubmitted: (data) => data && data.isSubmitted,
|
793
|
+
makeSelectNodeDataFieldTouched: (id) => (data) => data && data.touches && data.touches[id],
|
794
|
+
makeSelectNodeDataFieldFocused: (id) => (data) => {
|
795
|
+
return data && data.hasFocus === id ? id : undefined;
|
796
|
+
},
|
797
|
+
makeSelectNodeDataFieldDirty: (id) => (data) => data && data.dirty && data.dirty[id],
|
798
|
+
makeSelectNodeErrors: generateData,
|
799
|
+
makeSelectFieldError: (name, id, validate) => (globalData, data) => {
|
800
|
+
const customErrors = Object.entries((data && data.customErrors) || {})
|
813
801
|
.filter(([k]) => k === id)
|
814
802
|
.map(([, v]) => v)
|
815
803
|
.flat();
|
816
|
-
if (!validate || !
|
804
|
+
if (!validate || !globalData)
|
817
805
|
return [];
|
818
806
|
const errors = validate.filter((rule) => {
|
819
807
|
if (!rule)
|
@@ -821,7 +809,7 @@ const FlowerCoreStateDataSelectors = {
|
|
821
809
|
if (!rule.rules)
|
822
810
|
return true;
|
823
811
|
const transformSelf = CoreUtils.mapKeysDeepLodash(rule.rules, (v, key) => key === '$self' ? id : key);
|
824
|
-
const [hasError] = rulesMatcher(transformSelf,
|
812
|
+
const [hasError] = rulesMatcher(transformSelf, globalData, false, {
|
825
813
|
prefix: name
|
826
814
|
});
|
827
815
|
return hasError;
|
@@ -829,8 +817,8 @@ const FlowerCoreStateDataSelectors = {
|
|
829
817
|
const result = errors.map((r) => (r && r.message) || 'error');
|
830
818
|
return [...customErrors, ...(result.length === 0 ? [] : result)];
|
831
819
|
},
|
832
|
-
selectorRulesDisabled: (id, rules, keys, flowName, value) => (
|
833
|
-
const newState = { ...
|
820
|
+
selectorRulesDisabled: (id, rules, keys, flowName, value) => (globalData, data) => {
|
821
|
+
const newState = { ...globalData, ...value, $data: data, $form: data };
|
834
822
|
const state = Object.assign(newState, id ? { $self: _get(newState, [flowName, ...id.split('.')]) } : {});
|
835
823
|
if (!rules)
|
836
824
|
return false;
|
@@ -856,6 +844,7 @@ const FlowerCoreStateSelectors = {
|
|
856
844
|
};
|
857
845
|
|
858
846
|
exports.CoreUtils = CoreUtils;
|
847
|
+
exports.DataUtils = DataUtils;
|
859
848
|
exports.Emitter = Emitter;
|
860
849
|
exports.FlowUtils = FlowUtils;
|
861
850
|
exports.FlowerCoreBaseReducers = FlowerCoreBaseReducers;
|
@@ -865,9 +854,8 @@ exports.FlowerCoreStateBaseSelectors = FlowerCoreStateBaseSelectors;
|
|
865
854
|
exports.FlowerCoreStateDataSelectors = FlowerCoreStateDataSelectors;
|
866
855
|
exports.FlowerCoreStateSelectors = FlowerCoreStateSelectors;
|
867
856
|
exports.FlowerStateUtils = FlowerStateUtils;
|
868
|
-
exports.FormUtils = FormUtils;
|
869
|
-
exports.createFormData = createFormData;
|
870
857
|
exports.devtoolState = devtoolState;
|
871
858
|
exports.flattenRules = flattenRules;
|
859
|
+
exports.generateData = generateData;
|
872
860
|
exports.rulesMatcher = rulesMatcher;
|
873
861
|
exports.rulesMatcherUtils = rulesMatcherUtils;
|
package/dist/index.esm.js
CHANGED
@@ -30,7 +30,7 @@ const devtoolState = {};
|
|
30
30
|
const FlowerStateUtils = {
|
31
31
|
getAllData: (state) => state &&
|
32
32
|
Object.entries(state ?? {}).reduce((acc, [k, v]) => ({ ...acc, [k]: v?.data ?? v }), {}),
|
33
|
-
|
33
|
+
selectFlowerDataNode: (name) => (state) => _get(state, name),
|
34
34
|
makeSelectCurrentNextRules: (name) => (state) => {
|
35
35
|
const nextRules = _get(state, [name, 'nextRules']);
|
36
36
|
const currentNodeId = FlowerStateUtils.makeSelectCurrentNodeId(name)(state);
|
@@ -42,20 +42,20 @@ const FlowerStateUtils = {
|
|
42
42
|
return _get(subState, ['current']) || startId;
|
43
43
|
},
|
44
44
|
makeSelectNodeErrors: (name) => (state) => {
|
45
|
-
const
|
46
|
-
return
|
45
|
+
const data = FlowerStateUtils.selectFlowerDataNode(name)(state);
|
46
|
+
return generateData(data);
|
47
47
|
}
|
48
48
|
};
|
49
|
-
const
|
50
|
-
const validationErrors =
|
49
|
+
const generateData = (data) => {
|
50
|
+
const validationErrors = data && data.errors;
|
51
51
|
const allErrors = Object.values(validationErrors || {});
|
52
52
|
return {
|
53
|
-
isSubmitted:
|
54
|
-
isDirty: Object.values(
|
55
|
-
hasFocus:
|
56
|
-
errors:
|
57
|
-
customErrors:
|
58
|
-
isValidating:
|
53
|
+
isSubmitted: data?.isSubmitted || false,
|
54
|
+
isDirty: Object.values(data?.dirty || {}).some(Boolean) || false,
|
55
|
+
hasFocus: data?.hasFocus,
|
56
|
+
errors: data?.errors,
|
57
|
+
customErrors: data?.customErrors,
|
58
|
+
isValidating: data?.isValidating,
|
59
59
|
isValid: allErrors.flat().length === 0
|
60
60
|
};
|
61
61
|
};
|
@@ -265,19 +265,19 @@ const operators = {
|
|
265
265
|
.some((c) => c instanceof RegExp ? c.test(a) : new RegExp(c, opt).test(a))
|
266
266
|
};
|
267
267
|
|
268
|
-
const rulesMatcher = (rules,
|
268
|
+
const rulesMatcher = (rules, dataValue = {}, apply = true, options) => {
|
269
269
|
if (!rules)
|
270
270
|
return [apply];
|
271
271
|
// if (typeof rules !== 'object' && !Array.isArray(rules)) {
|
272
272
|
// throw new Error('Rules accept only array or object');
|
273
273
|
// }
|
274
274
|
if (typeof rules === 'function') {
|
275
|
-
return [rules(
|
275
|
+
return [rules(dataValue) === apply];
|
276
276
|
}
|
277
277
|
const conditions = Array.isArray(rules)
|
278
278
|
? { $and: rules }
|
279
279
|
: rules;
|
280
|
-
const valid = rulesMatcherUtils.checkRule(conditions,
|
280
|
+
const valid = rulesMatcherUtils.checkRule(conditions, dataValue, options ?? {});
|
281
281
|
return [valid === apply];
|
282
282
|
};
|
283
283
|
|
@@ -404,7 +404,7 @@ const FlowUtils = {
|
|
404
404
|
})
|
405
405
|
};
|
406
406
|
|
407
|
-
const
|
407
|
+
const DataUtils = {
|
408
408
|
cleanPath: (name, char = '^') => _trimStart(name, char),
|
409
409
|
getPath: (idValue) => {
|
410
410
|
if (!idValue) {
|
@@ -418,9 +418,9 @@ const FormUtils = {
|
|
418
418
|
};
|
419
419
|
}
|
420
420
|
if (idValue.indexOf('^') === 0) {
|
421
|
-
const [
|
421
|
+
const [rootName, ...rest] = DataUtils.cleanPath(idValue).split('.');
|
422
422
|
return {
|
423
|
-
|
423
|
+
rootName,
|
424
424
|
path: rest
|
425
425
|
};
|
426
426
|
}
|
@@ -435,7 +435,7 @@ const FormUtils = {
|
|
435
435
|
*/
|
436
436
|
const CoreUtils = {
|
437
437
|
...FlowUtils,
|
438
|
-
...
|
438
|
+
...DataUtils
|
439
439
|
};
|
440
440
|
|
441
441
|
const { generateNodes, hasNode, makeObjectRules, generateRulesName, findValidRule } = CoreUtils;
|
@@ -672,75 +672,65 @@ const FlowerCoreBaseReducers = {
|
|
672
672
|
};
|
673
673
|
|
674
674
|
const { getPath } = CoreUtils;
|
675
|
-
/**
|
676
|
-
* formName => FlowerForm
|
677
|
-
* initialData => FlowerForm
|
678
|
-
* fieldName => FlowerField
|
679
|
-
* fieldValue => FlowerField
|
680
|
-
* errors => FlowerField
|
681
|
-
* customErrors => FlowerField
|
682
|
-
* fieldTouched => FlowerField
|
683
|
-
* fieldDirty => FlowerField
|
684
|
-
* fieldHasFocus => FlowerField
|
685
|
-
*/
|
686
675
|
const FlowerCoreDataReducers = {
|
687
|
-
|
688
|
-
|
676
|
+
setFormSubmitted: (state, { payload }) => {
|
677
|
+
const rootPath = typeof payload === 'string' ? payload : payload.rootName;
|
678
|
+
if (!_get(state, [rootPath])) {
|
689
679
|
return state;
|
690
680
|
}
|
691
|
-
_set(state,
|
681
|
+
_set(state, [rootPath, 'isSubmitted'], true);
|
692
682
|
return state;
|
693
683
|
},
|
694
|
-
|
695
|
-
_set(state, [payload.
|
684
|
+
addCustomDataErrors: (state, { payload }) => {
|
685
|
+
_set(state, [payload.rootName, 'customErrors', payload.id], payload.errors);
|
696
686
|
},
|
697
|
-
|
698
|
-
_set(state, [payload.
|
687
|
+
addDataErrors: (state, { payload }) => {
|
688
|
+
_set(state, [payload.rootName, 'errors', payload.id], payload.errors);
|
699
689
|
},
|
700
|
-
|
701
|
-
_unset(state, [payload.
|
702
|
-
_unset(state, [payload.
|
703
|
-
_unset(state, [payload.
|
690
|
+
removeDataErrors: (state, { payload }) => {
|
691
|
+
_unset(state, [payload.rootName, 'errors', payload.id]);
|
692
|
+
_unset(state, [payload.rootName, 'customErrors', payload.id]);
|
693
|
+
_unset(state, [payload.rootName, 'isValidating']);
|
704
694
|
},
|
705
|
-
|
706
|
-
_set(state, [payload.
|
695
|
+
fieldTouch: (state, { payload }) => {
|
696
|
+
_set(state, [payload.rootName, 'touches', payload.id], payload.touched);
|
707
697
|
},
|
708
|
-
|
709
|
-
_set(state, [payload.
|
698
|
+
fieldDirty: (state, { payload }) => {
|
699
|
+
_set(state, [payload.rootName, 'dirty', payload.id], payload.dirty);
|
710
700
|
},
|
711
|
-
|
701
|
+
fieldFocus: (state, { payload }) => {
|
712
702
|
if (!payload.focused) {
|
713
|
-
_unset(state, [payload.
|
703
|
+
_unset(state, [payload.rootName, 'hasFocus']);
|
714
704
|
return;
|
715
705
|
}
|
716
|
-
_set(state, [payload.
|
706
|
+
_set(state, [payload.rootName, 'hasFocus'], payload.id);
|
717
707
|
},
|
718
708
|
addData: (state, { payload }) => {
|
719
|
-
const prevData = _get(state, [payload.
|
720
|
-
_set(state, [payload.
|
709
|
+
const prevData = _get(state, [payload.rootName, 'data'], {});
|
710
|
+
_set(state, [payload.rootName, 'data'], { ...prevData, ...payload.value });
|
721
711
|
},
|
722
712
|
addDataByPath: (state, { payload }) => {
|
723
713
|
const { path: newpath } = getPath(payload.id);
|
724
714
|
if (payload.id && payload.id.length) {
|
725
|
-
_set(state, [payload.
|
715
|
+
_set(state, [payload.rootName, 'data', ...newpath], payload.value);
|
726
716
|
if (payload && payload.dirty) {
|
727
|
-
_set(state, [payload.
|
717
|
+
_set(state, [payload.rootName, 'dirty', payload.id], payload.dirty);
|
728
718
|
}
|
729
719
|
}
|
730
720
|
},
|
731
721
|
// TODO usato al momento solo il devtool
|
732
722
|
replaceData: /* istanbul ignore next */ (state, { payload }) => {
|
733
723
|
/* istanbul ignore next */
|
734
|
-
_set(state, [payload.
|
724
|
+
_set(state, [payload.rootName, 'data'], payload.value);
|
735
725
|
},
|
736
726
|
unsetData: (state, { payload }) => {
|
737
|
-
_unset(state, [payload.
|
727
|
+
_unset(state, [payload.rootName, 'data', ...payload.id]);
|
738
728
|
},
|
739
|
-
|
740
|
-
_set(state, [payload.
|
729
|
+
setIsDataValidating: (state, { payload }) => {
|
730
|
+
_set(state, [payload.rootName, 'isValidating'], payload.isValidating);
|
741
731
|
},
|
742
|
-
|
743
|
-
const touchedFields = _get(state, [
|
732
|
+
resetData: (state, { payload: { rootName, initialData } }) => {
|
733
|
+
const touchedFields = _get(state, [rootName, 'errors'], {});
|
744
734
|
const newStateData = initialData
|
745
735
|
? Object.keys(touchedFields).reduce((acc, key) => {
|
746
736
|
const { path } = getPath(key);
|
@@ -749,13 +739,13 @@ const FlowerCoreDataReducers = {
|
|
749
739
|
return acc;
|
750
740
|
}, {})
|
751
741
|
: {};
|
752
|
-
_set(state, [
|
753
|
-
_unset(state, [
|
754
|
-
_unset(state, [
|
755
|
-
_unset(state, [
|
742
|
+
_set(state, [rootName, 'data'], newStateData);
|
743
|
+
_unset(state, [rootName, 'touches']);
|
744
|
+
_unset(state, [rootName, 'dirty']);
|
745
|
+
_unset(state, [rootName, 'isSubmitted']);
|
756
746
|
},
|
757
|
-
|
758
|
-
_set(state, [
|
747
|
+
initData: (state, { payload: { rootName, initialData } }) => {
|
748
|
+
_set(state, [rootName, 'data'], initialData);
|
759
749
|
}
|
760
750
|
};
|
761
751
|
|
@@ -764,8 +754,6 @@ const FlowerCoreReducers = { ...FlowerCoreBaseReducers, ...FlowerCoreDataReducer
|
|
764
754
|
const FlowerCoreStateBaseSelectors = {
|
765
755
|
selectGlobal: (state) => state && state[REDUCER_NAME.FLOWER_FLOW],
|
766
756
|
selectFlower: (name) => (state) => _get(state, [name]),
|
767
|
-
// selectFlowerFormNode: (id) => (state) =>
|
768
|
-
// _get(state, [REDUCER_NAME.FLOWER_DATA, id]),
|
769
757
|
selectFlowerHistory: (flower) => _get(flower, ['history'], []),
|
770
758
|
makeSelectNodesIds: (flower) => _get(flower, ['nodes']),
|
771
759
|
makeSelectStartNodeId: (flower) => _get(flower, ['startId']),
|
@@ -794,24 +782,24 @@ const FlowerCoreStateBaseSelectors = {
|
|
794
782
|
|
795
783
|
const FlowerCoreStateDataSelectors = {
|
796
784
|
selectGlobalReducerByName: (name) => (state) => state[name] ?? state[REDUCER_NAME.FLOWER_DATA][name],
|
797
|
-
|
785
|
+
selectGlobalData: (state) => {
|
798
786
|
return state && state[REDUCER_NAME.FLOWER_DATA];
|
799
787
|
},
|
800
788
|
// getDataByFlow: (flower) => _get(flower, 'data') ?? {},
|
801
789
|
getDataFromState: (id) => (data) => (id === '*' ? data : _get(data, id)),
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
return
|
806
|
-
},
|
807
|
-
|
808
|
-
makeSelectNodeErrors:
|
809
|
-
makeSelectFieldError: (name, id, validate) => (
|
810
|
-
const customErrors = Object.entries((
|
790
|
+
makeSelectNodeDataSubmitted: (data) => data && data.isSubmitted,
|
791
|
+
makeSelectNodeDataFieldTouched: (id) => (data) => data && data.touches && data.touches[id],
|
792
|
+
makeSelectNodeDataFieldFocused: (id) => (data) => {
|
793
|
+
return data && data.hasFocus === id ? id : undefined;
|
794
|
+
},
|
795
|
+
makeSelectNodeDataFieldDirty: (id) => (data) => data && data.dirty && data.dirty[id],
|
796
|
+
makeSelectNodeErrors: generateData,
|
797
|
+
makeSelectFieldError: (name, id, validate) => (globalData, data) => {
|
798
|
+
const customErrors = Object.entries((data && data.customErrors) || {})
|
811
799
|
.filter(([k]) => k === id)
|
812
800
|
.map(([, v]) => v)
|
813
801
|
.flat();
|
814
|
-
if (!validate || !
|
802
|
+
if (!validate || !globalData)
|
815
803
|
return [];
|
816
804
|
const errors = validate.filter((rule) => {
|
817
805
|
if (!rule)
|
@@ -819,7 +807,7 @@ const FlowerCoreStateDataSelectors = {
|
|
819
807
|
if (!rule.rules)
|
820
808
|
return true;
|
821
809
|
const transformSelf = CoreUtils.mapKeysDeepLodash(rule.rules, (v, key) => key === '$self' ? id : key);
|
822
|
-
const [hasError] = rulesMatcher(transformSelf,
|
810
|
+
const [hasError] = rulesMatcher(transformSelf, globalData, false, {
|
823
811
|
prefix: name
|
824
812
|
});
|
825
813
|
return hasError;
|
@@ -827,8 +815,8 @@ const FlowerCoreStateDataSelectors = {
|
|
827
815
|
const result = errors.map((r) => (r && r.message) || 'error');
|
828
816
|
return [...customErrors, ...(result.length === 0 ? [] : result)];
|
829
817
|
},
|
830
|
-
selectorRulesDisabled: (id, rules, keys, flowName, value) => (
|
831
|
-
const newState = { ...
|
818
|
+
selectorRulesDisabled: (id, rules, keys, flowName, value) => (globalData, data) => {
|
819
|
+
const newState = { ...globalData, ...value, $data: data, $form: data };
|
832
820
|
const state = Object.assign(newState, id ? { $self: _get(newState, [flowName, ...id.split('.')]) } : {});
|
833
821
|
if (!rules)
|
834
822
|
return false;
|
@@ -853,4 +841,4 @@ const FlowerCoreStateSelectors = {
|
|
853
841
|
...FlowerCoreStateDataSelectors
|
854
842
|
};
|
855
843
|
|
856
|
-
export { CoreUtils, Emitter, FlowUtils, FlowerCoreBaseReducers, FlowerCoreDataReducers, FlowerCoreReducers, FlowerCoreStateBaseSelectors, FlowerCoreStateDataSelectors, FlowerCoreStateSelectors, FlowerStateUtils,
|
844
|
+
export { CoreUtils, DataUtils, Emitter, FlowUtils, FlowerCoreBaseReducers, FlowerCoreDataReducers, FlowerCoreReducers, FlowerCoreStateBaseSelectors, FlowerCoreStateDataSelectors, FlowerCoreStateSelectors, FlowerStateUtils, REDUCER_NAME, devtoolState, flattenRules, generateData, rulesMatcher, rulesMatcherUtils };
|
@@ -76,7 +76,7 @@ export type RulesObject<T> = RulesValuesType<T> | {
|
|
76
76
|
export type CleanPath = (name: string, char?: string) => string;
|
77
77
|
export type GetPath = (idValue?: string) => {
|
78
78
|
path: string | string[];
|
79
|
-
|
79
|
+
rootName?: string;
|
80
80
|
};
|
81
81
|
export type AllEqual = (...args: Array<number | string | boolean>[]) => boolean;
|
82
82
|
export type FindValidRule<T = Rules<RulesObject<any>>> = (nextRules: {
|
@@ -201,7 +201,7 @@ export interface FlowUtilitiesFunctions {
|
|
201
201
|
*/
|
202
202
|
findValidRule: FindValidRule;
|
203
203
|
}
|
204
|
-
export interface
|
204
|
+
export interface DataUtilitiesFunctions {
|
205
205
|
/**
|
206
206
|
* Removes specified characters from the beginning of a string (default char -> '^').
|
207
207
|
* @param name
|
@@ -218,6 +218,6 @@ export interface FormUtilitiesFunctions {
|
|
218
218
|
*/
|
219
219
|
getPath: GetPath;
|
220
220
|
}
|
221
|
-
export interface CoreUtilitiesFunctions extends
|
221
|
+
export interface CoreUtilitiesFunctions extends DataUtilitiesFunctions, FlowUtilitiesFunctions {
|
222
222
|
}
|
223
223
|
export {};
|
@@ -5,13 +5,6 @@ export type ActionWithPayload<T> = {
|
|
5
5
|
payload: T;
|
6
6
|
};
|
7
7
|
type ReducerFunctionSign<T extends object, R> = (state: Record<string, Flower<T>>, action: ActionWithPayload<R>) => Record<string, Flower<T>> | void;
|
8
|
-
type FormReducerFunctionSign<T extends object, R = object> = (state: Record<string, T>, action: ActionWithPayload<{
|
9
|
-
formName: string;
|
10
|
-
} & R>) => Record<string, T> | void;
|
11
|
-
export type ActionsTypes = 'historyAdd' | 'historyPrevToNode' | 'setFormTouched' | 'forceAddHistory' | 'historyPop' | 'restoreHistory' | 'replaceNode' | 'initializeFromNode' | 'forceResetHistory' | 'destroy' | 'initNodes' | 'setCurrentNode' | 'formAddErrors' | 'formRemoveErrors' | 'addData' | 'addDataByPath' | 'replaceData' | 'unsetData' | 'setFormIsValidating' | 'resetForm' | 'formFieldTouch' | 'formFieldFocus' | 'node' | 'prevToNode' | 'next' | 'prev' | 'reset';
|
12
|
-
/**
|
13
|
-
* These functions are Redux reducers used in a Flux architecture for managing state transitions and updates in a Flower application.
|
14
|
-
*/
|
15
8
|
export type CoreReducersFunctions<T extends Record<string, any> = Record<string, Flower<Record<string, any>>>> = {
|
16
9
|
/**
|
17
10
|
* @param state
|
@@ -242,7 +235,10 @@ export type CoreReducersFunctions<T extends Record<string, any> = Record<string,
|
|
242
235
|
*/
|
243
236
|
>;
|
244
237
|
};
|
245
|
-
|
238
|
+
type DataReducerFunctionSign<T extends object, R = object> = (state: Record<string, T>, action: ActionWithPayload<{
|
239
|
+
rootName: string;
|
240
|
+
} & R>) => Record<string, T> | void;
|
241
|
+
export type DataReducersFunctions<T extends Record<string, any> = Record<string, Record<string, any>>> = {
|
246
242
|
/**
|
247
243
|
* @param state
|
248
244
|
* @param action
|
@@ -251,7 +247,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
251
247
|
*
|
252
248
|
* @returns state
|
253
249
|
*/
|
254
|
-
|
250
|
+
setFormSubmitted: DataReducerFunctionSign<T>;
|
255
251
|
/**
|
256
252
|
* @param state
|
257
253
|
* @param action
|
@@ -260,7 +256,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
260
256
|
*
|
261
257
|
* @returns state
|
262
258
|
*/
|
263
|
-
|
259
|
+
addCustomDataErrors: DataReducerFunctionSign<T, {
|
264
260
|
id: string;
|
265
261
|
errors: string[];
|
266
262
|
}>;
|
@@ -272,7 +268,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
272
268
|
*
|
273
269
|
* @returns state
|
274
270
|
*/
|
275
|
-
|
271
|
+
addDataErrors: DataReducerFunctionSign<T, {
|
276
272
|
id: string;
|
277
273
|
errors: {
|
278
274
|
[x: string]: string[];
|
@@ -286,7 +282,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
286
282
|
*
|
287
283
|
* @returns state
|
288
284
|
*/
|
289
|
-
|
285
|
+
fieldDirty: DataReducerFunctionSign<T, {
|
290
286
|
id: string;
|
291
287
|
dirty?: boolean;
|
292
288
|
}>;
|
@@ -298,7 +294,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
298
294
|
*
|
299
295
|
* @returns state
|
300
296
|
*/
|
301
|
-
|
297
|
+
fieldTouch: DataReducerFunctionSign<T, {
|
302
298
|
id: string;
|
303
299
|
touched?: boolean;
|
304
300
|
}>;
|
@@ -310,7 +306,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
310
306
|
*
|
311
307
|
* @returns state
|
312
308
|
*/
|
313
|
-
|
309
|
+
fieldFocus: DataReducerFunctionSign<T, {
|
314
310
|
id: string;
|
315
311
|
focused?: boolean;
|
316
312
|
}>;
|
@@ -322,7 +318,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
322
318
|
*
|
323
319
|
* @returns state
|
324
320
|
*/
|
325
|
-
|
321
|
+
removeDataErrors: DataReducerFunctionSign<T, {
|
326
322
|
id: string;
|
327
323
|
}>;
|
328
324
|
/**
|
@@ -333,7 +329,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
333
329
|
*
|
334
330
|
* @returns state
|
335
331
|
*/
|
336
|
-
addData:
|
332
|
+
addData: DataReducerFunctionSign<T, {
|
337
333
|
value: T;
|
338
334
|
}>;
|
339
335
|
/**
|
@@ -344,7 +340,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
344
340
|
*
|
345
341
|
* @returns state
|
346
342
|
*/
|
347
|
-
addDataByPath:
|
343
|
+
addDataByPath: DataReducerFunctionSign<T, {
|
348
344
|
id: string;
|
349
345
|
value: T | string;
|
350
346
|
dirty?: boolean;
|
@@ -357,7 +353,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
357
353
|
*
|
358
354
|
* @returns state
|
359
355
|
*/
|
360
|
-
replaceData:
|
356
|
+
replaceData: DataReducerFunctionSign<T, {
|
361
357
|
value: T;
|
362
358
|
}>;
|
363
359
|
/**
|
@@ -368,7 +364,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
368
364
|
*
|
369
365
|
* @returns state
|
370
366
|
*/
|
371
|
-
unsetData:
|
367
|
+
unsetData: DataReducerFunctionSign<T, {
|
372
368
|
id: string[] | string;
|
373
369
|
}>;
|
374
370
|
/**
|
@@ -379,7 +375,7 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
379
375
|
*
|
380
376
|
* @returns state
|
381
377
|
*/
|
382
|
-
|
378
|
+
setIsDataValidating: DataReducerFunctionSign<T, {
|
383
379
|
isValidating?: boolean;
|
384
380
|
}>;
|
385
381
|
/**
|
@@ -390,8 +386,8 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
390
386
|
*
|
391
387
|
* @returns state
|
392
388
|
*/
|
393
|
-
|
394
|
-
|
389
|
+
resetData: DataReducerFunctionSign<T, {
|
390
|
+
rootName: string;
|
395
391
|
initialData?: Record<string, any>;
|
396
392
|
}>;
|
397
393
|
/**
|
@@ -402,8 +398,8 @@ export type FormReducersFunctions<T extends Record<string, any> = Record<string,
|
|
402
398
|
*
|
403
399
|
* @returns state
|
404
400
|
*/
|
405
|
-
|
406
|
-
|
401
|
+
initData: DataReducerFunctionSign<T, {
|
402
|
+
rootName: string;
|
407
403
|
initialData: Record<string, any>;
|
408
404
|
}>;
|
409
405
|
};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { REDUCER_NAME } from '../constants';
|
2
2
|
import { RulesObject } from './CoreInterface';
|
3
|
-
import { Flower,
|
3
|
+
import { Flower, Data, INode } from './Store';
|
4
4
|
export interface IFlowerSelectors {
|
5
5
|
/**
|
6
6
|
* @param state
|
@@ -57,7 +57,7 @@ export interface IFlowerSelectors {
|
|
57
57
|
[x: string]: Partial<INode>;
|
58
58
|
}, current: Flower<T>['current']): boolean;
|
59
59
|
}
|
60
|
-
export interface
|
60
|
+
export interface IDataSelectors {
|
61
61
|
/**
|
62
62
|
* @param state
|
63
63
|
* @returns
|
@@ -67,18 +67,18 @@ export interface IFormSelectors {
|
|
67
67
|
* @param state
|
68
68
|
* @returns
|
69
69
|
*/
|
70
|
-
|
70
|
+
selectGlobalData<T extends Record<string, any>>(state: {
|
71
71
|
[REDUCER_NAME.FLOWER_DATA]: {
|
72
|
-
[x: string]:
|
72
|
+
[x: string]: Data<T>;
|
73
73
|
};
|
74
74
|
}): {
|
75
|
-
[x: string]:
|
75
|
+
[x: string]: Data<T>;
|
76
76
|
};
|
77
77
|
/**
|
78
|
-
* @param
|
78
|
+
* @param data
|
79
79
|
* @returns
|
80
80
|
*/
|
81
|
-
makeSelectNodeErrors<T extends Record<string, any>>(
|
81
|
+
makeSelectNodeErrors<T extends Record<string, any>>(data: Data<T> | undefined): {
|
82
82
|
isSubmitted: boolean;
|
83
83
|
isDirty: boolean;
|
84
84
|
hasFocus: string | undefined;
|
@@ -88,30 +88,30 @@ export interface IFormSelectors {
|
|
88
88
|
isValidating?: boolean;
|
89
89
|
};
|
90
90
|
/**
|
91
|
-
* @param
|
91
|
+
* @param data
|
92
92
|
* @returns
|
93
93
|
*/
|
94
|
-
|
94
|
+
makeSelectNodeDataFieldTouched<T extends Record<string, any>>(id: string): (data: Data<T> | undefined) => boolean | undefined;
|
95
95
|
/**
|
96
|
-
* @param
|
96
|
+
* @param data
|
97
97
|
* @returns
|
98
98
|
*/
|
99
|
-
|
99
|
+
makeSelectNodeDataFieldFocused<T extends Record<string, any>>(id: string): (data: Data<T> | undefined) => string | undefined;
|
100
100
|
/**
|
101
|
-
* @param
|
101
|
+
* @param data
|
102
102
|
* @returns
|
103
103
|
*/
|
104
|
-
|
104
|
+
makeSelectNodeDataFieldDirty<T extends Record<string, any>>(id: string): (data: Data<T> | undefined) => boolean | undefined;
|
105
105
|
/**
|
106
106
|
* @param id
|
107
107
|
* @returns
|
108
108
|
*/
|
109
109
|
getDataFromState<T extends Record<string, any>>(id: string | string[]): (data: T) => Partial<T>;
|
110
110
|
/**
|
111
|
-
* @param
|
111
|
+
* @param data
|
112
112
|
* @returns
|
113
113
|
*/
|
114
|
-
|
114
|
+
makeSelectNodeDataSubmitted<T extends Record<string, any>>(data: Data<T>): boolean | undefined;
|
115
115
|
/**
|
116
116
|
* @param name
|
117
117
|
* @param id
|
@@ -121,7 +121,7 @@ export interface IFormSelectors {
|
|
121
121
|
makeSelectFieldError<T extends Record<string, any>>(name: string, id: string, validate: {
|
122
122
|
rules?: RulesObject<any>;
|
123
123
|
message?: string;
|
124
|
-
}[] | null): (
|
124
|
+
}[] | null): (globalData: T | undefined, data: Data<T>) => Array<string>;
|
125
125
|
/**
|
126
126
|
* @param id
|
127
127
|
* @param rules
|
@@ -130,5 +130,5 @@ export interface IFormSelectors {
|
|
130
130
|
* @param value
|
131
131
|
* @returns
|
132
132
|
*/
|
133
|
-
selectorRulesDisabled<T extends Record<string, any>>(id: string, rules: any, keys: string[] | null, flowName: string, value: any): (
|
133
|
+
selectorRulesDisabled<T extends Record<string, any>>(id: string, rules: any, keys: string[] | null, flowName: string, value: any): (globalData: T | undefined, data: Data<T>) => boolean;
|
134
134
|
}
|
@@ -17,7 +17,7 @@ export interface INode {
|
|
17
17
|
retain?: boolean;
|
18
18
|
disabled?: boolean;
|
19
19
|
}
|
20
|
-
export type
|
20
|
+
export type Data<T extends Record<string, unknown>> = {
|
21
21
|
isSubmitted?: boolean;
|
22
22
|
isDirty?: boolean;
|
23
23
|
hasFocus?: string;
|
@@ -14,7 +14,7 @@ export interface CoreStateUtils {
|
|
14
14
|
* Selects the form node with a specific ID from a given flow.
|
15
15
|
* It returns a selector function that accepts the state as an argument and retrieves the form node
|
16
16
|
*/
|
17
|
-
|
17
|
+
selectFlowerDataNode<T extends object>(name: string): (state: T) => Record<string, any>;
|
18
18
|
/**
|
19
19
|
*
|
20
20
|
* @param name
|
@@ -1,2 +1,2 @@
|
|
1
1
|
import { FunctionRule } from '../interfaces';
|
2
|
-
export declare const rulesMatcher: (rules?: Record<string, any> | Record<string, any>[] | FunctionRule,
|
2
|
+
export declare const rulesMatcher: (rules?: Record<string, any> | Record<string, any>[] | FunctionRule, dataValue?: Record<string, any>, apply?: boolean, options?: Record<string, any>) => boolean[];
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import { CoreReducersFunctions,
|
2
|
-
export declare const FlowerCoreReducers:
|
1
|
+
import { CoreReducersFunctions, DataReducersFunctions } from '../../interfaces';
|
2
|
+
export declare const FlowerCoreReducers: DataReducersFunctions & CoreReducersFunctions;
|
@@ -1,13 +1,2 @@
|
|
1
|
-
import {
|
2
|
-
|
3
|
-
* formName => FlowerForm
|
4
|
-
* initialData => FlowerForm
|
5
|
-
* fieldName => FlowerField
|
6
|
-
* fieldValue => FlowerField
|
7
|
-
* errors => FlowerField
|
8
|
-
* customErrors => FlowerField
|
9
|
-
* fieldTouched => FlowerField
|
10
|
-
* fieldDirty => FlowerField
|
11
|
-
* fieldHasFocus => FlowerField
|
12
|
-
*/
|
13
|
-
export declare const FlowerCoreDataReducers: FormReducersFunctions;
|
1
|
+
import { DataReducersFunctions } from '../../interfaces/ReducerInterface';
|
2
|
+
export declare const FlowerCoreDataReducers: DataReducersFunctions;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export type { CoreReducersFunctions,
|
1
|
+
export type { CoreReducersFunctions, DataReducersFunctions } from '../../interfaces';
|
2
2
|
export { FlowerCoreBaseReducers } from './FlowerCoreStateFunctions';
|
3
3
|
export { FlowerCoreDataReducers } from './FlowerDataStateFunctions';
|
4
4
|
export { FlowerCoreReducers } from './FlowerCoreMergedReducers';
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import { IFlowerSelectors,
|
2
|
-
export declare const FlowerCoreStateSelectors: IFlowerSelectors &
|
1
|
+
import { IFlowerSelectors, IDataSelectors } from '../../interfaces';
|
2
|
+
export declare const FlowerCoreStateSelectors: IFlowerSelectors & IDataSelectors;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
export type { IFlowerSelectors,
|
1
|
+
export type { IFlowerSelectors, IDataSelectors } from '../../interfaces';
|
2
2
|
export { FlowerCoreStateBaseSelectors } from './FlowerCoreStateSelectors';
|
3
|
-
export { FlowerCoreStateDataSelectors } from './
|
3
|
+
export { FlowerCoreStateDataSelectors } from './FlowerDataStateSelectors';
|
4
4
|
export { FlowerCoreStateSelectors } from './FlowerSelectorsMerged';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { CoreStateUtils } from '../interfaces/UtilsInterface';
|
2
2
|
export declare const FlowerStateUtils: CoreStateUtils;
|
3
|
-
export declare const
|
3
|
+
export declare const generateData: (data: Record<string, any>) => {
|
4
4
|
isSubmitted: any;
|
5
5
|
isDirty: boolean;
|
6
6
|
hasFocus: any;
|
package/package.json
CHANGED