UNPKG

vuetify

Version:

Vue Material Component Framework

80 lines 2.27 kB
import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, createElementVNode as _createElementVNode } from "vue"; // Composables import { makeComponentProps } from "../../composables/component.js"; import { createForm, makeFormProps } from "../../composables/form.js"; import { forwardRefs } from "../../composables/forwardRefs.js"; // Utilities import { ref } from 'vue'; import { genericComponent, propsFactory, useRender } from "../../util/index.js"; // Types export const makeVFormProps = propsFactory({ ...makeComponentProps(), ...makeFormProps() }, 'VForm'); export const VForm = genericComponent()({ name: 'VForm', props: makeVFormProps(), emits: { 'update:modelValue': val => true, submit: e => true }, setup(props, { slots, emit }) { const form = createForm(props); const formRef = ref(); function onReset(e) { e.preventDefault(); form.reset(); } function onSubmit(_e) { const e = _e; const ready = form.validate(); e.then = ready.then.bind(ready); e.catch = ready.catch.bind(ready); e.finally = ready.finally.bind(ready); emit('submit', e); if (!e.defaultPrevented) { ready.then(({ valid }) => { if (valid) { formRef.value?.submit(); } }); } e.preventDefault(); } useRender(() => _createElementVNode("form", { "ref": formRef, "class": _normalizeClass(['v-form', props.class]), "style": _normalizeStyle(props.style), "novalidate": true, "onReset": onReset, "onSubmit": onSubmit }, [slots.default?.({ get errors() { return form.errors.value; }, get isDisabled() { return form.isDisabled.value; }, get isReadonly() { return form.isReadonly.value; }, get isValidating() { return form.isValidating.value; }, get isValid() { return form.isValid.value; }, get items() { return form.items.value; }, validate: form.validate, reset: form.reset, resetValidation: form.resetValidation })])); return forwardRefs(form, formRef); } }); //# sourceMappingURL=VForm.js.map