import { Form } from "@formily/core";
import React from "react";

/**
 * 滚动到错误的表达项
 */
export function scrollErrorFormItem() {
  document.querySelector(".ant-form-item-has-error")?.scrollIntoView({
    behavior: "smooth",
    block: "center",
    inline: "nearest",
  });
}

/**
 * 提交数据
 * @param form
 * @param valuesCallback
 */
export function generateFormData(
  form: Form | React.MutableRefObject<Form | undefined>,
  valuesCallback: (values: JSONObject) => void
) {
  if ((form as React.MutableRefObject<Form>).current) {
    form = (form as React.MutableRefObject<Form>).current;
  }
  (form as Form)
    ?.validate()
    .then(() => {
      valuesCallback((form as Form)?.values);
    })
    .catch(() => {
      scrollErrorFormItem();
    });
}
