x-ui-design 0.4.42 → 0.4.43
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/hooks/useForm.d.ts +1 -1
- package/dist/esm/types/types/form.d.ts +1 -0
- package/dist/index.esm.js +23 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +23 -12
- package/dist/index.js.map +1 -1
- package/lib/components/Form/Form.tsx +5 -1
- package/lib/hooks/useForm.ts +26 -12
- package/lib/types/form.ts +1 -0
- package/package.json +1 -1
- package/src/app/page.tsx +5 -3
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RuleTypes } from '../types';
|
|
2
2
|
import type { FieldData, FormInstance } from '../types/form';
|
|
3
|
-
declare const useForm: (initialValues?: Record<string, RuleTypes>, onFieldsChange?: (changedFields: FieldData[]) => void, onValuesChange?: (changedValues: Record<string, RuleTypes>, allValues: Record<string, RuleTypes>) => void, scrollToFirstError?: boolean) => FormInstance;
|
|
3
|
+
declare const useForm: (initialValues?: Record<string, RuleTypes>, onFieldsChange?: (changedFields: FieldData[]) => void, onValuesChange?: (changedValues: Record<string, RuleTypes>, allValues: Record<string, RuleTypes>) => void, scrollToFirstError?: boolean, onFinish?: ((values: Record<string, RuleTypes>) => void) | undefined) => FormInstance;
|
|
4
4
|
export { useForm };
|
|
@@ -107,5 +107,6 @@ export interface FormInstance {
|
|
|
107
107
|
scrollToFirstError?: boolean;
|
|
108
108
|
isReseting: boolean;
|
|
109
109
|
setOnFieldsChange?: (onFieldsChange?: (changedFields: FieldData[]) => void) => void;
|
|
110
|
+
setOnFinish?: (onFinish?: ((values: Record<string, RuleTypes>) => void) | undefined) => void;
|
|
110
111
|
setOnValuesChange?: (onValuesChange?: (changedValues: Record<string, RuleTypes>, allValues: Record<string, RuleTypes>) => void) => void;
|
|
111
112
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -598,14 +598,15 @@ const SpinerIcon = () => /*#__PURE__*/React.createElement("svg", {
|
|
|
598
598
|
d: "M988 548c-19.9 0-36-16.1-36-36 0-59.4-11.6-117-34.6-171.3a440.45 440.45 0 00-94.3-139.9 437.71 437.71 0 00-139.9-94.3C629 83.6 571.4 72 512 72c-19.9 0-36-16.1-36-36s16.1-36 36-36c69.1 0 136.2 13.5 199.3 40.3C772.3 66 827 103 874 150c47 47 83.9 101.8 109.7 162.7 26.7 63.1 40.2 130.2 40.2 199.3.1 19.9-16 36-35.9 36z"
|
|
599
599
|
}));
|
|
600
600
|
|
|
601
|
-
const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFirstError) => {
|
|
601
|
+
const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFirstError, onFinish) => {
|
|
602
602
|
const touchedFieldsRef = useRef(new Set());
|
|
603
603
|
const rulesRef = useRef({});
|
|
604
604
|
const warningsRef = useRef({});
|
|
605
605
|
const _scrollToFirstError = useRef(scrollToFirstError);
|
|
606
|
-
const
|
|
607
|
-
|
|
608
|
-
onValuesChange
|
|
606
|
+
const formHandlersRef = useRef({
|
|
607
|
+
onFinish,
|
|
608
|
+
onValuesChange,
|
|
609
|
+
onFieldsChange
|
|
609
610
|
});
|
|
610
611
|
const formRef = useRef({
|
|
611
612
|
...initialValues
|
|
@@ -663,13 +664,13 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
663
664
|
const allValues = getFieldsValue();
|
|
664
665
|
fieldSubscribers.current[name]?.forEach(callback => callback(value));
|
|
665
666
|
formSubscribers.current.forEach(callback => callback(allValues));
|
|
666
|
-
if (
|
|
667
|
-
|
|
667
|
+
if (formHandlersRef.current.onValuesChange) {
|
|
668
|
+
formHandlersRef.current.onValuesChange({
|
|
668
669
|
[name]: value
|
|
669
670
|
}, allValues);
|
|
670
671
|
}
|
|
671
|
-
if (
|
|
672
|
-
|
|
672
|
+
if (formHandlersRef.current.onFieldsChange) {
|
|
673
|
+
formHandlersRef.current.onFieldsChange([{
|
|
673
674
|
name,
|
|
674
675
|
value
|
|
675
676
|
}]);
|
|
@@ -789,7 +790,10 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
789
790
|
}
|
|
790
791
|
async function submit() {
|
|
791
792
|
setScrollToFirstError(true);
|
|
792
|
-
return (await validateFields()) ?
|
|
793
|
+
return (await validateFields()) ? (() => {
|
|
794
|
+
formHandlersRef.current.onFinish?.(formRef.current);
|
|
795
|
+
return formRef.current;
|
|
796
|
+
})() : undefined;
|
|
793
797
|
}
|
|
794
798
|
function subscribeToField(name, callback) {
|
|
795
799
|
if (!fieldSubscribers.current[name]) {
|
|
@@ -819,10 +823,13 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
819
823
|
_scrollToFirstError.current = value;
|
|
820
824
|
}
|
|
821
825
|
function setOnFieldsChange(onFieldsChange) {
|
|
822
|
-
|
|
826
|
+
formHandlersRef.current.onFieldsChange = onFieldsChange;
|
|
823
827
|
}
|
|
824
828
|
function setOnValuesChange(onValuesChange) {
|
|
825
|
-
|
|
829
|
+
formHandlersRef.current.onValuesChange = onValuesChange;
|
|
830
|
+
}
|
|
831
|
+
function setOnFinish(onFinish) {
|
|
832
|
+
formHandlersRef.current.onFinish = onFinish;
|
|
826
833
|
}
|
|
827
834
|
const formInstance = {
|
|
828
835
|
submit,
|
|
@@ -849,6 +856,7 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
|
|
|
849
856
|
setScrollToFirstError,
|
|
850
857
|
scrollToFirstError,
|
|
851
858
|
isReseting,
|
|
859
|
+
setOnFinish,
|
|
852
860
|
setOnFieldsChange,
|
|
853
861
|
setOnValuesChange
|
|
854
862
|
};
|
|
@@ -1164,7 +1172,10 @@ const Form$1 = ({
|
|
|
1164
1172
|
if (onValuesChange) {
|
|
1165
1173
|
formInstance.setOnValuesChange?.(onValuesChange);
|
|
1166
1174
|
}
|
|
1167
|
-
|
|
1175
|
+
if (onFinish) {
|
|
1176
|
+
formInstance.setOnFinish?.(onFinish);
|
|
1177
|
+
}
|
|
1178
|
+
}, [formInstance, onFieldsChange, onValuesChange, onFinish]);
|
|
1168
1179
|
const injectPropsIntoFinalLeaf = child => {
|
|
1169
1180
|
if (! /*#__PURE__*/isValidElement(child)) {
|
|
1170
1181
|
return child;
|