UNPKG

@oiij/naive-ui

Version:

Som Composable Functions And Components for Vue 3

84 lines (82 loc) 2.61 kB
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs'); const __vueuse_core = require_rolldown_runtime.__toESM(require("@vueuse/core")); const vue = require_rolldown_runtime.__toESM(require("vue")); //#region src/composables/useNaiveForm.ts function isObject(value) { return typeof value === "object" && value !== null && !Array.isArray(value); } function clearObjectValues(obj, rules) { const { string: _string = "", number: _number = null, boolean: _boolean = false } = rules ?? {}; if (Array.isArray(obj)) { obj.length = 0; return obj; } if (typeof obj === "object" && obj !== null) { for (const key in obj) if (Object.prototype.hasOwnProperty.call(obj, key)) obj[key] = clearObjectValues(obj[key], rules); return obj; } if (typeof obj === "string") return _string; if (typeof obj === "number") return _number; if (typeof obj === "boolean") return _boolean; return obj; } function deepMerge(target = {}, source = {}) { for (const key in source) if (Object.prototype.hasOwnProperty.call(source, key)) { const sourceValue = source[key]; const targetValue = target[key]; if (isObject(sourceValue) && isObject(targetValue)) deepMerge(targetValue, sourceValue); else target[key] = sourceValue; } return target; } function useNaiveForm(value, options) { const { rules, clearRules } = options ?? {}; const cacheValue = structuredClone((0, vue.toRaw)((0, vue.toValue)(value))); const formValue = (0, vue.ref)((0, vue.toValue)(value ?? {})); const formRules = rules; const formRef = (0, vue.ref)(); const formProps = { ref: formRef, model: (0, vue.reactive)(formValue.value), rules: formRules }; const onValidatedEvent = (0, __vueuse_core.createEventHook)(); function validate() { return new Promise((resolve, reject) => { if (!formRef.value) return reject(/* @__PURE__ */ new Error("useNaiveForm: formRef is not found.")); formRef.value.validate().then((res) => { onValidatedEvent.trigger((0, vue.toRaw)((0, vue.toValue)(formValue))); return resolve(res); }).catch(reject); }); } function resetValidation() { formRef.value?.restoreValidation(); } function clear() { clearObjectValues(formValue.value, clearRules); } function resetForm() { clear(); const _cacheValue = structuredClone(cacheValue); deepMerge(formValue.value, _cacheValue); } function reset() { resetValidation(); resetForm(); } return { formRef, formValue, formRules, formProps, validate, resetValidation, resetForm, reset, clear, onValidated: onValidatedEvent.on }; } //#endregion exports.useNaiveForm = useNaiveForm;