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.
@@ -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
- touchedFieldsRef.current.add(name);
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 = onFieldsChange;
1159
+ formInstance.setOnFieldsChange?.(onFieldsChange);
1146
1160
  }
1147
1161
  if (onValuesChange) {
1148
- formInstance.onValuesChange = onValuesChange;
1162
+ formInstance.setOnValuesChange?.(onValuesChange);
1149
1163
  }
1150
1164
  }, [formInstance, onFieldsChange, onValuesChange]);
1151
1165
  const injectPropsIntoFinalLeaf = child => {