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.
@@ -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 onChangeRef = useRef({
607
- onFieldsChange,
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 (onChangeRef.current.onValuesChange) {
667
- onChangeRef.current.onValuesChange({
667
+ if (formHandlersRef.current.onValuesChange) {
668
+ formHandlersRef.current.onValuesChange({
668
669
  [name]: value
669
670
  }, allValues);
670
671
  }
671
- if (onChangeRef.current.onFieldsChange) {
672
- onChangeRef.current.onFieldsChange([{
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()) ? formRef.current : undefined;
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
- onChangeRef.current.onFieldsChange = onFieldsChange;
826
+ formHandlersRef.current.onFieldsChange = onFieldsChange;
823
827
  }
824
828
  function setOnValuesChange(onValuesChange) {
825
- onChangeRef.current.onValuesChange = onValuesChange;
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
- }, [formInstance, onFieldsChange, onValuesChange]);
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;