123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import { createVNode as _createVNode } from "vue";
- // Composables
- import { makeComponentProps } from "../../composables/component.mjs";
- import { createForm, makeFormProps } from "../../composables/form.mjs";
- import { forwardRefs } from "../../composables/forwardRefs.mjs"; // Utilities
- import { ref } from 'vue';
- import { genericComponent, propsFactory, useRender } from "../../util/index.mjs"; // 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, _ref) {
- let {
- slots,
- emit
- } = _ref;
- 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(_ref2 => {
- let {
- valid
- } = _ref2;
- if (valid) {
- formRef.value?.submit();
- }
- });
- }
- e.preventDefault();
- }
- useRender(() => _createVNode("form", {
- "ref": formRef,
- "class": ['v-form', props.class],
- "style": props.style,
- "novalidate": true,
- "onReset": onReset,
- "onSubmit": onSubmit
- }, [slots.default?.(form)]));
- return forwardRefs(form, formRef);
- }
- });
- //# sourceMappingURL=VForm.mjs.map
|