{"version":3,"file":"BS7pW7LS.js","sources":["../../../../node_modules/quasar/src/components/form/QForm.js"],"sourcesContent":["import { h, ref, onActivated, onDeactivated, onMounted, getCurrentInstance, nextTick, provide } from 'vue'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { stopAndPrevent } from '../../utils/event/event.js'\nimport { addFocusFn } from '../../utils/private.focus/focus-manager.js'\nimport { hSlot } from '../../utils/private.render/render.js'\nimport { formKey } from '../../utils/private.symbols/symbols.js'\nimport { vmIsDestroyed } from '../../utils/private.vm/vm.js'\n\nexport default createComponent({\n name: 'QForm',\n\n props: {\n autofocus: Boolean,\n noErrorFocus: Boolean,\n noResetFocus: Boolean,\n greedy: Boolean,\n\n onSubmit: Function\n },\n\n emits: [ 'reset', 'validationSuccess', 'validationError' ],\n\n setup (props, { slots, emit }) {\n const vm = getCurrentInstance()\n const rootRef = ref(null)\n\n let validateIndex = 0\n const registeredComponents = []\n\n function validate (shouldFocus) {\n const focus = typeof shouldFocus === 'boolean'\n ? shouldFocus\n : props.noErrorFocus !== true\n\n const index = ++validateIndex\n\n const emitEvent = (res, ref) => {\n emit(`validation${ res === true ? 'Success' : 'Error' }`, ref)\n }\n\n const validateComponent = comp => {\n const valid = comp.validate()\n\n return typeof valid.then === 'function'\n ? valid.then(\n valid => ({ valid, comp }),\n err => ({ valid: false, comp, err })\n )\n : Promise.resolve({ valid, comp })\n }\n\n const errorsPromise = props.greedy === true\n ? Promise\n .all(registeredComponents.map(validateComponent))\n .then(res => res.filter(r => r.valid !== true))\n : registeredComponents\n .reduce(\n (acc, comp) => acc.then(() => {\n return validateComponent(comp).then(r => {\n if (r.valid === false) { return Promise.reject(r) }\n })\n }),\n Promise.resolve()\n )\n .catch(error => [ error ])\n\n return errorsPromise.then(errors => {\n if (errors === void 0 || errors.length === 0) {\n index === validateIndex && emitEvent(true)\n return true\n }\n\n // if not outdated already\n if (index === validateIndex) {\n const { comp, err } = errors[ 0 ]\n\n err !== void 0 && console.error(err)\n emitEvent(false, comp)\n\n if (focus === true) {\n // Try to focus first mounted and active component\n const activeError = errors.find(({ comp }) => (\n typeof comp.focus === 'function'\n && vmIsDestroyed(comp.$) === false\n ))\n\n if (activeError !== void 0) {\n activeError.comp.focus()\n }\n }\n }\n\n return false\n })\n }\n\n function resetValidation () {\n validateIndex++\n\n registeredComponents.forEach(comp => {\n typeof comp.resetValidation === 'function' && comp.resetValidation()\n })\n }\n\n function submit (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n const index = validateIndex + 1\n\n validate().then(val => {\n // if not outdated && validation succeeded\n if (index === validateIndex && val === true) {\n if (props.onSubmit !== void 0) {\n emit('submit', evt)\n }\n else if (evt !== void 0 && evt.target !== void 0 && typeof evt.target.submit === 'function') {\n evt.target.submit()\n }\n }\n })\n }\n\n function reset (evt) {\n evt !== void 0 && stopAndPrevent(evt)\n\n emit('reset')\n\n nextTick(() => { // allow userland to reset values before\n resetValidation()\n if (props.autofocus === true && props.noResetFocus !== true) {\n focus()\n }\n })\n }\n\n function focus () {\n addFocusFn(() => {\n if (rootRef.value === null) return\n\n const target = rootRef.value.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]')\n || rootRef.value.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]')\n || rootRef.value.querySelector('[autofocus], [data-autofocus]')\n || Array.prototype.find.call(rootRef.value.querySelectorAll('[tabindex]'), el => el.tabIndex !== -1)\n\n target !== null && target !== void 0 && target.focus({ preventScroll: true })\n })\n }\n\n provide(formKey, {\n bindComponent (vmProxy) {\n registeredComponents.push(vmProxy)\n },\n\n unbindComponent (vmProxy) {\n const index = registeredComponents.indexOf(vmProxy)\n if (index !== -1) {\n registeredComponents.splice(index, 1)\n }\n }\n })\n\n let shouldActivate = false\n\n onDeactivated(() => {\n shouldActivate = true\n })\n\n onActivated(() => {\n shouldActivate === true && props.autofocus === true && focus()\n })\n\n onMounted(() => {\n props.autofocus === true && focus()\n })\n\n // expose public methods\n Object.assign(vm.proxy, {\n validate,\n resetValidation,\n submit,\n reset,\n focus,\n getValidationComponents: () => registeredComponents\n })\n\n return () => h('form', {\n class: 'q-form',\n ref: rootRef,\n onSubmit: submit,\n onReset: reset\n }, hSlot(slots.default))\n }\n})\n"],"names":["__nuxt_component_4","createComponent","props","slots","emit","vm","getCurrentInstance","rootRef","ref","validateIndex","registeredComponents","validate","shouldFocus","focus","index","emitEvent","res","validateComponent","comp","valid","err","r","acc","error","errors","activeError","vmIsDestroyed","resetValidation","submit","evt","stopAndPrevent","val","reset","nextTick","addFocusFn","target","el","provide","formKey","vmProxy","shouldActivate","onDeactivated","onActivated","onMounted","h","hSlot"],"mappings":"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","x_google_ignoreList":[0]}