x-ui-design 0.4.34 → 0.4.36
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/esm/types/types/form.d.ts +4 -2
- package/dist/index.esm.js +24 -10
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +24 -10
- package/dist/index.js.map +1 -1
- package/lib/components/Form/Form.tsx +3 -2
- package/lib/components/Form/Item/Item.tsx +1 -1
- package/lib/hooks/useForm.ts +34 -6
- package/lib/types/form.ts +34 -18
- package/package.json +1 -1
- package/src/app/page.tsx +28 -9
|
@@ -74,7 +74,7 @@ export interface FormItemChildComponentProps {
|
|
|
74
74
|
error: boolean;
|
|
75
75
|
fieldValue: RuleTypes;
|
|
76
76
|
value: RuleType;
|
|
77
|
-
setFieldValue: (name: string, value: RuleType) => void;
|
|
77
|
+
setFieldValue: (name: string, value: RuleType, errors?: string[], reset?: boolean | null | undefined, touch?: boolean) => void;
|
|
78
78
|
onChange?: (e: SyntheticBaseEvent, option?: OptionProps) => void;
|
|
79
79
|
size?: SizeType;
|
|
80
80
|
normalize?: (value: RuleType, prevValue: RuleType, allValues: RuleType) => RuleType;
|
|
@@ -87,7 +87,7 @@ export interface FormInstance {
|
|
|
87
87
|
resetFields: (nameList?: string[], showError?: boolean | null) => void;
|
|
88
88
|
getFieldError: (name: string) => string[];
|
|
89
89
|
registerField: (name: string, rules?: RuleObject[]) => void;
|
|
90
|
-
setFieldValue: (name: string, value: RuleTypes) => void;
|
|
90
|
+
setFieldValue: (name: string, value: RuleTypes, errors?: string[], reset?: boolean | null | undefined, touch?: boolean) => void;
|
|
91
91
|
getFieldValue: (name: string) => RuleTypes;
|
|
92
92
|
validateFields: (nameList?: string[]) => Promise<boolean>;
|
|
93
93
|
setFieldsValue: (values: Partial<Record<string, RuleTypes>>, reset?: boolean | null | undefined) => void;
|
|
@@ -106,4 +106,6 @@ export interface FormInstance {
|
|
|
106
106
|
setScrollToFirstError: (value: boolean) => void;
|
|
107
107
|
scrollToFirstError?: boolean;
|
|
108
108
|
isReseting: boolean;
|
|
109
|
+
setOnFieldsChange?: (onFieldsChange?: (changedFields: FieldData[]) => void) => void;
|
|
110
|
+
setOnValuesChange?: (onValuesChange?: (changedValues: Record<string, RuleTypes>, allValues: Record<string, RuleTypes>) => void) => void;
|
|
109
111
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -603,6 +603,10 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
603
603
|
const rulesRef = useRef({});
|
|
604
604
|
const warningsRef = useRef({});
|
|
605
605
|
const _scrollToFirstError = useRef(scrollToFirstError);
|
|
606
|
+
const onChangeRef = useRef({
|
|
607
|
+
onFieldsChange,
|
|
608
|
+
onValuesChange
|
|
609
|
+
});
|
|
606
610
|
const formRef = useRef({
|
|
607
611
|
...initialValues
|
|
608
612
|
});
|
|
@@ -640,12 +644,14 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
640
644
|
errors: err
|
|
641
645
|
}));
|
|
642
646
|
}
|
|
643
|
-
function setFieldValue(name, value, errors, reset = undefined) {
|
|
647
|
+
function setFieldValue(name, value, errors, reset = undefined, touch) {
|
|
644
648
|
if (!reset && reset !== null && ([undefined, null].includes(value) || formRef.current[name] === value)) {
|
|
645
649
|
return;
|
|
646
650
|
}
|
|
647
651
|
formRef.current[name] = value;
|
|
648
|
-
|
|
652
|
+
if (touch) {
|
|
653
|
+
touchedFieldsRef.current.add(name);
|
|
654
|
+
}
|
|
649
655
|
if (reset === null) {
|
|
650
656
|
setErrors({
|
|
651
657
|
[name]: []
|
|
@@ -657,13 +663,13 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
657
663
|
const allValues = getFieldsValue();
|
|
658
664
|
fieldSubscribers.current[name]?.forEach(callback => callback(value));
|
|
659
665
|
formSubscribers.current.forEach(callback => callback(allValues));
|
|
660
|
-
if (onValuesChange) {
|
|
661
|
-
onValuesChange({
|
|
666
|
+
if (onChangeRef.current.onValuesChange) {
|
|
667
|
+
onChangeRef.current.onValuesChange({
|
|
662
668
|
[name]: value
|
|
663
669
|
}, allValues);
|
|
664
670
|
}
|
|
665
|
-
if (onFieldsChange) {
|
|
666
|
-
onFieldsChange([{
|
|
671
|
+
if (onChangeRef.current.onFieldsChange) {
|
|
672
|
+
onChangeRef.current.onFieldsChange([{
|
|
667
673
|
name,
|
|
668
674
|
value
|
|
669
675
|
}]);
|
|
@@ -812,6 +818,12 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
812
818
|
function setScrollToFirstError(value) {
|
|
813
819
|
_scrollToFirstError.current = value;
|
|
814
820
|
}
|
|
821
|
+
function setOnFieldsChange(onFieldsChange) {
|
|
822
|
+
onChangeRef.current.onFieldsChange = onFieldsChange;
|
|
823
|
+
}
|
|
824
|
+
function setOnValuesChange(onValuesChange) {
|
|
825
|
+
onChangeRef.current.onValuesChange = onValuesChange;
|
|
826
|
+
}
|
|
815
827
|
const formInstance = {
|
|
816
828
|
submit,
|
|
817
829
|
setFields,
|
|
@@ -836,7 +848,9 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
836
848
|
subscribeToFields,
|
|
837
849
|
setScrollToFirstError,
|
|
838
850
|
scrollToFirstError,
|
|
839
|
-
isReseting
|
|
851
|
+
isReseting,
|
|
852
|
+
setOnFieldsChange,
|
|
853
|
+
setOnValuesChange
|
|
840
854
|
};
|
|
841
855
|
return formInstance;
|
|
842
856
|
};
|
|
@@ -1070,7 +1084,7 @@ const FormItemChildComponent = ({
|
|
|
1070
1084
|
return;
|
|
1071
1085
|
}
|
|
1072
1086
|
}
|
|
1073
|
-
setFieldValue(name, rawValue);
|
|
1087
|
+
setFieldValue(name, rawValue, undefined, undefined, true);
|
|
1074
1088
|
onChange?.(e, option);
|
|
1075
1089
|
};
|
|
1076
1090
|
const injectPropsIntoFinalLeaf = child => {
|
|
@@ -1142,10 +1156,10 @@ const Form$1 = ({
|
|
|
1142
1156
|
const childrenList = useMemo(() => flattenChildren(children), [children]);
|
|
1143
1157
|
useEffect(() => {
|
|
1144
1158
|
if (onFieldsChange) {
|
|
1145
|
-
formInstance.onFieldsChange
|
|
1159
|
+
formInstance.setOnFieldsChange?.(onFieldsChange);
|
|
1146
1160
|
}
|
|
1147
1161
|
if (onValuesChange) {
|
|
1148
|
-
formInstance.onValuesChange
|
|
1162
|
+
formInstance.setOnValuesChange?.(onValuesChange);
|
|
1149
1163
|
}
|
|
1150
1164
|
}, [formInstance, onFieldsChange, onValuesChange]);
|
|
1151
1165
|
const injectPropsIntoFinalLeaf = child => {
|