| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | 
							- import { createVNode as _createVNode } from "vue";
 
- import { defineComponent } from "vue";
 
- import { FORM_KEY, truthProp, numericProp, preventDefault, createNamespace } from "../utils/index.mjs";
 
- import { useChildren } from "@vant/use";
 
- import { useExpose } from "../composables/use-expose.mjs";
 
- const [name, bem] = createNamespace("form");
 
- const formProps = {
 
-   colon: Boolean,
 
-   disabled: Boolean,
 
-   readonly: Boolean,
 
-   showError: Boolean,
 
-   labelWidth: numericProp,
 
-   labelAlign: String,
 
-   inputAlign: String,
 
-   scrollToError: Boolean,
 
-   validateFirst: Boolean,
 
-   submitOnEnter: truthProp,
 
-   showErrorMessage: truthProp,
 
-   errorMessageAlign: String,
 
-   validateTrigger: {
 
-     type: [String, Array],
 
-     default: "onBlur"
 
-   }
 
- };
 
- var stdin_default = defineComponent({
 
-   name,
 
-   props: formProps,
 
-   emits: ["submit", "failed"],
 
-   setup(props, {
 
-     emit,
 
-     slots
 
-   }) {
 
-     const {
 
-       children,
 
-       linkChildren
 
-     } = useChildren(FORM_KEY);
 
-     const getFieldsByNames = (names) => {
 
-       if (names) {
 
-         return children.filter((field) => names.includes(field.name));
 
-       }
 
-       return children;
 
-     };
 
-     const validateSeq = (names) => new Promise((resolve, reject) => {
 
-       const errors = [];
 
-       const fields = getFieldsByNames(names);
 
-       fields.reduce((promise, field) => promise.then(() => {
 
-         if (!errors.length) {
 
-           return field.validate().then((error) => {
 
-             if (error) {
 
-               errors.push(error);
 
-             }
 
-           });
 
-         }
 
-       }), Promise.resolve()).then(() => {
 
-         if (errors.length) {
 
-           reject(errors);
 
-         } else {
 
-           resolve();
 
-         }
 
-       });
 
-     });
 
-     const validateAll = (names) => new Promise((resolve, reject) => {
 
-       const fields = getFieldsByNames(names);
 
-       Promise.all(fields.map((item) => item.validate())).then((errors) => {
 
-         errors = errors.filter(Boolean);
 
-         if (errors.length) {
 
-           reject(errors);
 
-         } else {
 
-           resolve();
 
-         }
 
-       });
 
-     });
 
-     const validateField = (name2) => {
 
-       const matched = children.find((item) => item.name === name2);
 
-       if (matched) {
 
-         return new Promise((resolve, reject) => {
 
-           matched.validate().then((error) => {
 
-             if (error) {
 
-               reject(error);
 
-             } else {
 
-               resolve();
 
-             }
 
-           });
 
-         });
 
-       }
 
-       return Promise.reject();
 
-     };
 
-     const validate = (name2) => {
 
-       if (typeof name2 === "string") {
 
-         return validateField(name2);
 
-       }
 
-       return props.validateFirst ? validateSeq(name2) : validateAll(name2);
 
-     };
 
-     const resetValidation = (name2) => {
 
-       if (typeof name2 === "string") {
 
-         name2 = [name2];
 
-       }
 
-       const fields = getFieldsByNames(name2);
 
-       fields.forEach((item) => {
 
-         item.resetValidation();
 
-       });
 
-     };
 
-     const getValidationStatus = () => children.reduce((form, field) => {
 
-       form[field.name] = field.getValidationStatus();
 
-       return form;
 
-     }, {});
 
-     const scrollToField = (name2, options) => {
 
-       children.some((item) => {
 
-         if (item.name === name2) {
 
-           item.$el.scrollIntoView(options);
 
-           return true;
 
-         }
 
-         return false;
 
-       });
 
-     };
 
-     const getValues = () => children.reduce((form, field) => {
 
-       form[field.name] = field.formValue.value;
 
-       return form;
 
-     }, {});
 
-     const submit = () => {
 
-       const values = getValues();
 
-       validate().then(() => emit("submit", values)).catch((errors) => {
 
-         emit("failed", {
 
-           values,
 
-           errors
 
-         });
 
-         if (props.scrollToError && errors[0].name) {
 
-           scrollToField(errors[0].name);
 
-         }
 
-       });
 
-     };
 
-     const onSubmit = (event) => {
 
-       preventDefault(event);
 
-       submit();
 
-     };
 
-     linkChildren({
 
-       props
 
-     });
 
-     useExpose({
 
-       submit,
 
-       validate,
 
-       getValues,
 
-       scrollToField,
 
-       resetValidation,
 
-       getValidationStatus
 
-     });
 
-     return () => {
 
-       var _a;
 
-       return _createVNode("form", {
 
-         "class": bem(),
 
-         "onSubmit": onSubmit
 
-       }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);
 
-     };
 
-   }
 
- });
 
- export {
 
-   stdin_default as default
 
- };
 
 
  |