x-ui-design 0.4.75 → 0.4.76

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.
@@ -87,7 +87,7 @@ export interface FormInstance {
87
87
  setFields: (fields: FieldData[]) => void;
88
88
  resetFields: (nameList?: string[], showError?: boolean | null) => void;
89
89
  getFieldError: (name: string) => string[];
90
- registerField: (name: string, rules?: RuleObject[], remove?: boolean) => void;
90
+ registerField: (name: string, rules?: RuleObject[], remove?: boolean, fieldRef?: FieldInstancesRef) => void;
91
91
  setFieldValue: (name: string, value: RuleTypes, errors?: string[], reset?: boolean | null | undefined, touch?: boolean) => void;
92
92
  getFieldValue: (name: string) => RuleTypes;
93
93
  validateFields: (nameList?: string[]) => Promise<boolean>;
package/dist/index.esm.js CHANGED
@@ -710,7 +710,7 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
710
710
  function isFieldValidating(name) {
711
711
  return !!name;
712
712
  }
713
- function registerField(name, rules = [], remove = false) {
713
+ function registerField(name, rules = [], remove = false, fieldRef) {
714
714
  if (remove) {
715
715
  delete formRef.current[stepRef.current]?.[name];
716
716
  delete rulesRef.current[name];
@@ -719,6 +719,9 @@ const useForm = (initialValues = {}, onFieldsChange, onValuesChange, scrollToFir
719
719
  formRef.current[stepRef.current][name] = initialValues?.[name];
720
720
  }
721
721
  rulesRef.current[name] = rules;
722
+ if (fieldRef) {
723
+ fieldInstancesRef.current[name] = fieldRef;
724
+ }
722
725
  }
723
726
  }
724
727
  async function validateField(name) {
@@ -986,6 +989,7 @@ const FormItem$1 = ({
986
989
  }) => {
987
990
  const formContext = useContext(FormContext);
988
991
  const errorRef = useRef(null);
992
+ const fieldRef = useRef(null);
989
993
  if (!formContext) {
990
994
  throw new Error('FormItem must be used within a Form');
991
995
  }
@@ -1002,10 +1006,10 @@ const FormItem$1 = ({
1002
1006
  const childrenList = useMemo(() => flattenChildren(children), [children]);
1003
1007
  useEffect(() => {
1004
1008
  if (name && !getFieldInstance(name)) {
1005
- registerField(name, rules);
1009
+ registerField(name, rules, false, fieldRef.current ?? undefined);
1006
1010
  }
1007
1011
  // eslint-disable-next-line react-hooks/exhaustive-deps
1008
- }, [name, rules]);
1012
+ }, [name, rules, fieldRef.current]);
1009
1013
  // eslint-disable-next-line react-hooks/exhaustive-deps
1010
1014
  useEffect(() => () => registerField(name, undefined, true), [name]);
1011
1015
  useEffect(() => {
@@ -1027,6 +1031,17 @@ const FormItem$1 = ({
1027
1031
  }, [dependencies, name]);
1028
1032
  const isRequired = useMemo(() => rules.some(rule => rule.required), [rules]);
1029
1033
  const errorMessage = getFieldError(name)?.[0];
1034
+ const mergeRefs = elementRef => {
1035
+ return el => {
1036
+ fieldRef.current = el;
1037
+ if (typeof elementRef === 'function') {
1038
+ elementRef(el);
1039
+ } else if (elementRef && typeof elementRef === 'object') {
1040
+ // @ts-ignore
1041
+ elementRef.current = el;
1042
+ }
1043
+ };
1044
+ };
1030
1045
  return /*#__PURE__*/React.createElement("div", {
1031
1046
  style: style,
1032
1047
  className: clsx([`${prefixCls}`, {
@@ -1049,7 +1064,11 @@ const FormItem$1 = ({
1049
1064
  ...childProps
1050
1065
  } = child.props;
1051
1066
  const fieldValue = value ?? getFieldValue(name) ?? initialValue;
1052
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(FormItemChildComponent, _extends({}, props, {
1067
+ return /*#__PURE__*/React.createElement("div", {
1068
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
1069
+ // @ts-expect-error
1070
+ ref: mergeRefs(child.ref)
1071
+ }, /*#__PURE__*/React.createElement(FormItemChildComponent, _extends({}, props, {
1053
1072
  key: `${key}_${isReseting}`,
1054
1073
  name: name,
1055
1074
  child: child,