@cjdevstudios/bumblevue-forms 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +22 -0
- package/README.md +1 -0
- package/form/BaseForm.vue +42 -0
- package/form/Form.vue +54 -0
- package/form/index.d.ts +339 -0
- package/form/index.mjs +115 -0
- package/form/index.mjs.map +1 -0
- package/form/package.json +11 -0
- package/form/style/index.d.ts +17 -0
- package/form/style/index.mjs +12 -0
- package/form/style/index.mjs.map +1 -0
- package/form/style/package.json +6 -0
- package/formfield/BaseFormField.vue +54 -0
- package/formfield/FormField.vue +51 -0
- package/formfield/index.d.ts +224 -0
- package/formfield/index.mjs +122 -0
- package/formfield/index.mjs.map +1 -0
- package/formfield/package.json +11 -0
- package/formfield/style/index.d.ts +17 -0
- package/formfield/style/index.mjs +12 -0
- package/formfield/style/index.mjs.map +1 -0
- package/formfield/style/package.json +6 -0
- package/index.d.ts +11 -0
- package/index.mjs +9 -0
- package/index.mjs.map +1 -0
- package/package.json +50 -0
- package/resolvers/joi/index.d.ts +1 -0
- package/resolvers/joi/index.mjs +2 -0
- package/resolvers/joi/index.mjs.map +1 -0
- package/resolvers/joi/package.json +5 -0
- package/resolvers/superstruct/index.d.ts +1 -0
- package/resolvers/superstruct/index.mjs +2 -0
- package/resolvers/superstruct/index.mjs.map +1 -0
- package/resolvers/superstruct/package.json +5 -0
- package/resolvers/valibot/index.d.ts +1 -0
- package/resolvers/valibot/index.mjs +2 -0
- package/resolvers/valibot/index.mjs.map +1 -0
- package/resolvers/valibot/package.json +5 -0
- package/resolvers/yup/index.d.ts +1 -0
- package/resolvers/yup/index.mjs +2 -0
- package/resolvers/yup/index.mjs.map +1 -0
- package/resolvers/yup/package.json +5 -0
- package/resolvers/zod/index.d.ts +1 -0
- package/resolvers/zod/index.mjs +2 -0
- package/resolvers/zod/index.mjs.map +1 -0
- package/resolvers/zod/package.json +5 -0
- package/types.d.ts +9 -0
- package/useform/index.d.ts +73 -0
- package/useform/index.mjs +420 -0
- package/useform/index.mjs.map +1 -0
- package/useform/package.json +5 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from '@primeuix/forms/resolvers/zod';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/types.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* From primevue/passthrough/index.d.ts
|
|
3
|
+
*/
|
|
4
|
+
export declare type PassThroughMergePropsType = ((...args: any) => object | undefined) | boolean | undefined;
|
|
5
|
+
|
|
6
|
+
export interface PassThroughOptions {
|
|
7
|
+
mergeSections?: boolean | undefined;
|
|
8
|
+
mergeProps?: PassThroughMergePropsType;
|
|
9
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export interface useFormFieldState {
|
|
2
|
+
value: any;
|
|
3
|
+
touched: boolean;
|
|
4
|
+
dirty: boolean;
|
|
5
|
+
pristine: boolean;
|
|
6
|
+
valid: boolean;
|
|
7
|
+
invalid: boolean;
|
|
8
|
+
error: any;
|
|
9
|
+
errors: any[];
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface useFormFieldOptions {
|
|
13
|
+
initialValue?: any;
|
|
14
|
+
props?: Record<string, any> | ((state: useFormFieldState) => Record<string, any>);
|
|
15
|
+
validateOnBlur?: boolean;
|
|
16
|
+
validateOnValueUpdate?: boolean;
|
|
17
|
+
resolver?: (options: { values: any; value: any; name: string }) => Promise<Record<string, any>> | Record<string, any> | undefined;
|
|
18
|
+
onBlur?: (event: Event) => void;
|
|
19
|
+
onInput?: (event: Event | any) => void;
|
|
20
|
+
onChange?: (event: Event | any) => void;
|
|
21
|
+
onInvalid?: (errors: any[]) => void;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface useFormFieldProps {
|
|
26
|
+
name: string;
|
|
27
|
+
onBlur: (event: Event) => void;
|
|
28
|
+
onInput: (event: Event | any) => void;
|
|
29
|
+
onChange: (event: Event | any) => void;
|
|
30
|
+
onInvalid: (errors: any[]) => void;
|
|
31
|
+
[key: string]: any;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface useFormFieldInstance {
|
|
35
|
+
props: useFormFieldProps;
|
|
36
|
+
states: useFormFieldState;
|
|
37
|
+
options?: useFormFieldOptions;
|
|
38
|
+
_watcher: {
|
|
39
|
+
stop: () => void;
|
|
40
|
+
pause: () => void;
|
|
41
|
+
resume: () => void;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface useFormReturn {
|
|
46
|
+
defineField: (field: string, options?: useFormFieldOptions) => { state: useFormFieldState; props: useFormFieldProps };
|
|
47
|
+
setFieldValue: (field: string, value: any) => void;
|
|
48
|
+
getFieldState: (field: string) => useFormFieldState | undefined;
|
|
49
|
+
handleSubmit: (event: any) => any;
|
|
50
|
+
handleReset: (event: any) => any;
|
|
51
|
+
validate: (field: string) => any;
|
|
52
|
+
setValues: (values: Record<string, any>) => void;
|
|
53
|
+
reset: () => void;
|
|
54
|
+
valid: boolean;
|
|
55
|
+
states: Record<string, useFormFieldState>;
|
|
56
|
+
fields: Record<string, useFormFieldInstance>;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface useFormResolverOptions {
|
|
60
|
+
values: Record<string, any>;
|
|
61
|
+
names: string[] | undefined;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export interface useFormOptions {
|
|
65
|
+
resolver?: (e: useFormResolverOptions) => Promise<Record<string, any>> | Record<string, any> | undefined;
|
|
66
|
+
initialValues?: Record<string, any> | undefined;
|
|
67
|
+
validateOnValueUpdate?: boolean | string[];
|
|
68
|
+
validateOnBlur?: boolean | string[];
|
|
69
|
+
validateOnMount?: boolean | string[];
|
|
70
|
+
validateOnSubmit?: boolean | string[];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export declare function useForm(options: useFormOptions): useFormReturn;
|
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
import { resolve, isNotEmpty, isArray, mergeKeys, isEmpty } from '@primeuix/utils';
|
|
2
|
+
import { reactive, computed, mergeProps, getCurrentInstance, onMounted, nextTick, ref, watch, toValue } from 'vue';
|
|
3
|
+
|
|
4
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
5
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; }
|
|
8
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
9
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
10
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = true, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), true), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
11
|
+
function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
12
|
+
function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
13
|
+
function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
14
|
+
function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
|
|
15
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
16
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
17
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
18
|
+
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = true, o = false; try { if (i = (t = t.call(r)).next, 0 === l) ; else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = true, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
|
|
19
|
+
function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
|
|
20
|
+
function tryOnMounted(fn) {
|
|
21
|
+
var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
22
|
+
if (getCurrentInstance()) onMounted(fn);else if (sync) fn();else nextTick(fn);
|
|
23
|
+
}
|
|
24
|
+
function watchPausable(source, callback, options) {
|
|
25
|
+
var isActive = ref(true);
|
|
26
|
+
var stop = watch(source, function (newValue, oldValue) {
|
|
27
|
+
if (!isActive.value) return;
|
|
28
|
+
callback(newValue, oldValue);
|
|
29
|
+
}, options);
|
|
30
|
+
return {
|
|
31
|
+
stop: stop,
|
|
32
|
+
pause: function pause() {
|
|
33
|
+
isActive.value = false;
|
|
34
|
+
},
|
|
35
|
+
resume: function resume() {
|
|
36
|
+
isActive.value = true;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// @todo: move to utils
|
|
42
|
+
function groupKeys(obj) {
|
|
43
|
+
return Object.entries(obj).reduce(function (result, _ref) {
|
|
44
|
+
var _ref2 = _slicedToArray(_ref, 2),
|
|
45
|
+
key = _ref2[0],
|
|
46
|
+
value = _ref2[1];
|
|
47
|
+
/* eslint-disable-next-line no-useless-escape */
|
|
48
|
+
key.split(/[\.\[\]]+/).filter(Boolean).reduce(function (acc, curr, idx, arr) {
|
|
49
|
+
var _acc$curr;
|
|
50
|
+
return (_acc$curr = acc[curr]) !== null && _acc$curr !== void 0 ? _acc$curr : acc[curr] = isNaN(arr[idx + 1]) ? idx === arr.length - 1 ? value : {} : [];
|
|
51
|
+
}, result);
|
|
52
|
+
return result;
|
|
53
|
+
}, {});
|
|
54
|
+
}
|
|
55
|
+
function getValueByPath(obj, path) {
|
|
56
|
+
if (!obj || !path) {
|
|
57
|
+
// short circuit if there is nothing to resolve
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
var value = obj[path];
|
|
62
|
+
if (isNotEmpty(value)) return value;
|
|
63
|
+
} catch (_unused) {
|
|
64
|
+
// do nothing and continue to other methods to resolve path data
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* eslint-disable-next-line no-useless-escape */
|
|
68
|
+
var keys = path.split(/[\.\[\]]+/).filter(Boolean);
|
|
69
|
+
return keys.reduce(function (acc, key) {
|
|
70
|
+
return acc && acc[key] !== undefined ? acc[key] : undefined;
|
|
71
|
+
}, obj);
|
|
72
|
+
}
|
|
73
|
+
var useForm = function useForm() {
|
|
74
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
75
|
+
var _states = reactive({});
|
|
76
|
+
var fields = reactive({});
|
|
77
|
+
var valid = computed(function () {
|
|
78
|
+
return Object.values(_states).every(function (field) {
|
|
79
|
+
return !field.invalid;
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
var states = computed(function () {
|
|
83
|
+
return groupKeys(_states);
|
|
84
|
+
});
|
|
85
|
+
var getInitialState = function getInitialState(field, initialValue) {
|
|
86
|
+
return {
|
|
87
|
+
value: initialValue !== null && initialValue !== void 0 ? initialValue : getValueByPath(options.initialValues, field),
|
|
88
|
+
touched: false,
|
|
89
|
+
dirty: false,
|
|
90
|
+
pristine: true,
|
|
91
|
+
valid: true,
|
|
92
|
+
invalid: false,
|
|
93
|
+
error: null,
|
|
94
|
+
errors: []
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
var isFieldValidate = function isFieldValidate(field, validateOn) {
|
|
98
|
+
var value = resolve(validateOn, field);
|
|
99
|
+
return value === true || isArray(value) && value.includes(field);
|
|
100
|
+
};
|
|
101
|
+
var validateOn = /*#__PURE__*/function () {
|
|
102
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(option, defaultValue) {
|
|
103
|
+
var _options$option;
|
|
104
|
+
var results, fieldArr, _t, _t2;
|
|
105
|
+
return _regenerator().w(function (_context) {
|
|
106
|
+
while (1) switch (_context.n) {
|
|
107
|
+
case 0:
|
|
108
|
+
results = {};
|
|
109
|
+
if (!isArray(options[option])) {
|
|
110
|
+
_context.n = 2;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
_context.n = 1;
|
|
114
|
+
return validate(options[option]);
|
|
115
|
+
case 1:
|
|
116
|
+
results = _context.v;
|
|
117
|
+
_context.n = 4;
|
|
118
|
+
break;
|
|
119
|
+
case 2:
|
|
120
|
+
_t = (_options$option = options[option]) !== null && _options$option !== void 0 ? _options$option : defaultValue;
|
|
121
|
+
if (!_t) {
|
|
122
|
+
_context.n = 4;
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
_context.n = 3;
|
|
126
|
+
return validate();
|
|
127
|
+
case 3:
|
|
128
|
+
results = _context.v;
|
|
129
|
+
case 4:
|
|
130
|
+
fieldArr = Object.keys(fields).filter(function (field) {
|
|
131
|
+
var _fields$field;
|
|
132
|
+
return (_fields$field = fields[field]) === null || _fields$field === void 0 || (_fields$field = _fields$field.options) === null || _fields$field === void 0 ? void 0 : _fields$field[option];
|
|
133
|
+
}) || [];
|
|
134
|
+
_t2 = isNotEmpty(fieldArr);
|
|
135
|
+
if (!_t2) {
|
|
136
|
+
_context.n = 6;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
_context.n = 5;
|
|
140
|
+
return validate(fieldArr);
|
|
141
|
+
case 5:
|
|
142
|
+
results = _context.v;
|
|
143
|
+
case 6:
|
|
144
|
+
return _context.a(2, results);
|
|
145
|
+
}
|
|
146
|
+
}, _callee);
|
|
147
|
+
}));
|
|
148
|
+
return function validateOn(_x, _x2) {
|
|
149
|
+
return _ref3.apply(this, arguments);
|
|
150
|
+
};
|
|
151
|
+
}();
|
|
152
|
+
var validateFieldOn = function validateFieldOn(field, fieldOptions, option, defaultValue) {
|
|
153
|
+
var _fieldOptions$option, _options$option2;
|
|
154
|
+
((_fieldOptions$option = fieldOptions === null || fieldOptions === void 0 ? void 0 : fieldOptions[option]) !== null && _fieldOptions$option !== void 0 ? _fieldOptions$option : isFieldValidate(field, (_options$option2 = options[option]) !== null && _options$option2 !== void 0 ? _options$option2 : defaultValue)) && validate(field);
|
|
155
|
+
};
|
|
156
|
+
var defineField = function defineField(field, fieldOptions) {
|
|
157
|
+
var _fields$field2, _resolve;
|
|
158
|
+
if (!field) {
|
|
159
|
+
//console.warn('The `name` attribute is required for the field definition.');
|
|
160
|
+
|
|
161
|
+
return []; // prevent errors
|
|
162
|
+
}
|
|
163
|
+
(_fields$field2 = fields[field]) === null || _fields$field2 === void 0 || _fields$field2._watcher.stop();
|
|
164
|
+
_states[field] || (_states[field] = getInitialState(field, fieldOptions === null || fieldOptions === void 0 ? void 0 : fieldOptions.initialValue));
|
|
165
|
+
var props = mergeProps((_resolve = resolve(fieldOptions, _states[field])) === null || _resolve === void 0 ? void 0 : _resolve.props, resolve(fieldOptions === null || fieldOptions === void 0 ? void 0 : fieldOptions.props, _states[field]), {
|
|
166
|
+
name: field,
|
|
167
|
+
onBlur: function onBlur() {
|
|
168
|
+
_states[field].touched = true;
|
|
169
|
+
validateFieldOn(field, fieldOptions, 'validateOnBlur');
|
|
170
|
+
},
|
|
171
|
+
onInput: function onInput(event) {
|
|
172
|
+
_states[field].value = event && Object.hasOwn(event, 'value') ? event.value : event.target.value;
|
|
173
|
+
},
|
|
174
|
+
onChange: function onChange(event) {
|
|
175
|
+
_states[field].value = event && Object.hasOwn(event, 'value') ? event.value : event.target.type === 'checkbox' || event.target.type === 'radio' ? event.target.checked : event.target.value;
|
|
176
|
+
},
|
|
177
|
+
onInvalid: function onInvalid(errors) {
|
|
178
|
+
var _errors$;
|
|
179
|
+
_states[field].invalid = true;
|
|
180
|
+
_states[field].errors = errors;
|
|
181
|
+
_states[field].error = (_errors$ = errors === null || errors === void 0 ? void 0 : errors[0]) !== null && _errors$ !== void 0 ? _errors$ : null;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
var _watcher = watchPausable(function () {
|
|
185
|
+
return _states[field].value;
|
|
186
|
+
}, function (newValue, oldValue) {
|
|
187
|
+
if (_states[field].pristine) {
|
|
188
|
+
_states[field].pristine = false;
|
|
189
|
+
}
|
|
190
|
+
if (newValue !== oldValue) {
|
|
191
|
+
_states[field].dirty = true;
|
|
192
|
+
}
|
|
193
|
+
validateFieldOn(field, fieldOptions, 'validateOnValueUpdate', true);
|
|
194
|
+
});
|
|
195
|
+
fields[field] = {
|
|
196
|
+
props: props,
|
|
197
|
+
states: _states[field],
|
|
198
|
+
options: fieldOptions,
|
|
199
|
+
_watcher: _watcher
|
|
200
|
+
};
|
|
201
|
+
return [_states[field], props];
|
|
202
|
+
};
|
|
203
|
+
var handleSubmit = function handleSubmit(callback) {
|
|
204
|
+
return /*#__PURE__*/function () {
|
|
205
|
+
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(event) {
|
|
206
|
+
var results;
|
|
207
|
+
return _regenerator().w(function (_context2) {
|
|
208
|
+
while (1) switch (_context2.n) {
|
|
209
|
+
case 0:
|
|
210
|
+
_context2.n = 1;
|
|
211
|
+
return validateOn('validateOnSubmit', true);
|
|
212
|
+
case 1:
|
|
213
|
+
results = _context2.v;
|
|
214
|
+
return _context2.a(2, callback(_objectSpread({
|
|
215
|
+
originalEvent: event,
|
|
216
|
+
valid: toValue(valid),
|
|
217
|
+
states: toValue(states),
|
|
218
|
+
reset: reset
|
|
219
|
+
}, results)));
|
|
220
|
+
}
|
|
221
|
+
}, _callee2);
|
|
222
|
+
}));
|
|
223
|
+
return function (_x3) {
|
|
224
|
+
return _ref4.apply(this, arguments);
|
|
225
|
+
};
|
|
226
|
+
}();
|
|
227
|
+
};
|
|
228
|
+
var handleReset = function handleReset(callback) {
|
|
229
|
+
return /*#__PURE__*/function () {
|
|
230
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(event) {
|
|
231
|
+
return _regenerator().w(function (_context3) {
|
|
232
|
+
while (1) switch (_context3.n) {
|
|
233
|
+
case 0:
|
|
234
|
+
reset();
|
|
235
|
+
return _context3.a(2, callback({
|
|
236
|
+
originalEvent: event
|
|
237
|
+
}));
|
|
238
|
+
}
|
|
239
|
+
}, _callee3);
|
|
240
|
+
}));
|
|
241
|
+
return function (_x4) {
|
|
242
|
+
return _ref5.apply(this, arguments);
|
|
243
|
+
};
|
|
244
|
+
}();
|
|
245
|
+
};
|
|
246
|
+
var validate = /*#__PURE__*/function () {
|
|
247
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(field) {
|
|
248
|
+
var _yield$options$resolv, _options$resolver, _result, _result$errors;
|
|
249
|
+
var resolverOptions, _ref9, names, values, result, flattenFields, _i, _Object$entries, _Object$entries$_i, fieldName, fieldInst, _fieldInst$options, _getValueByPath, _errors$2, fieldResolver, _yield$fieldResolver, fieldValue, fieldResult, errors, _t3, _t4, _t5, _t6, _t7, _t8;
|
|
250
|
+
return _regenerator().w(function (_context4) {
|
|
251
|
+
while (1) switch (_context4.n) {
|
|
252
|
+
case 0:
|
|
253
|
+
resolverOptions = Object.entries(_states).reduce(function (acc, _ref7) {
|
|
254
|
+
var _ref8 = _slicedToArray(_ref7, 2),
|
|
255
|
+
key = _ref8[0],
|
|
256
|
+
val = _ref8[1];
|
|
257
|
+
acc.names.push(key);
|
|
258
|
+
acc.values[key] = val.value;
|
|
259
|
+
return acc;
|
|
260
|
+
}, {
|
|
261
|
+
names: [],
|
|
262
|
+
values: {}
|
|
263
|
+
});
|
|
264
|
+
_ref9 = [resolverOptions.names, groupKeys(resolverOptions.values)], names = _ref9[0], values = _ref9[1];
|
|
265
|
+
_context4.n = 1;
|
|
266
|
+
return (_options$resolver = options.resolver) === null || _options$resolver === void 0 ? void 0 : _options$resolver.call(options, {
|
|
267
|
+
names: names,
|
|
268
|
+
values: values
|
|
269
|
+
});
|
|
270
|
+
case 1:
|
|
271
|
+
_t4 = _yield$options$resolv = _context4.v;
|
|
272
|
+
_t3 = _t4 !== null;
|
|
273
|
+
if (!_t3) {
|
|
274
|
+
_context4.n = 2;
|
|
275
|
+
break;
|
|
276
|
+
}
|
|
277
|
+
_t3 = _yield$options$resolv !== void 0;
|
|
278
|
+
case 2:
|
|
279
|
+
if (!_t3) {
|
|
280
|
+
_context4.n = 3;
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
_t5 = _yield$options$resolv;
|
|
284
|
+
_context4.n = 4;
|
|
285
|
+
break;
|
|
286
|
+
case 3:
|
|
287
|
+
_t5 = {
|
|
288
|
+
values: values
|
|
289
|
+
};
|
|
290
|
+
case 4:
|
|
291
|
+
result = _t5;
|
|
292
|
+
(_result$errors = (_result = result).errors) !== null && _result$errors !== void 0 ? _result$errors : _result.errors = {};
|
|
293
|
+
flattenFields = [field].flat();
|
|
294
|
+
_i = 0, _Object$entries = Object.entries(fields);
|
|
295
|
+
case 5:
|
|
296
|
+
if (!(_i < _Object$entries.length)) {
|
|
297
|
+
_context4.n = 12;
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
_Object$entries$_i = _slicedToArray(_Object$entries[_i], 2), fieldName = _Object$entries$_i[0], fieldInst = _Object$entries$_i[1];
|
|
301
|
+
if (!(flattenFields.includes(fieldName) || !field || isEmpty(result.errors))) {
|
|
302
|
+
_context4.n = 11;
|
|
303
|
+
break;
|
|
304
|
+
}
|
|
305
|
+
fieldResolver = (_fieldInst$options = fieldInst.options) === null || _fieldInst$options === void 0 ? void 0 : _fieldInst$options.resolver;
|
|
306
|
+
if (!fieldResolver) {
|
|
307
|
+
_context4.n = 10;
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
fieldValue = fieldInst.states.value;
|
|
311
|
+
_context4.n = 6;
|
|
312
|
+
return fieldResolver({
|
|
313
|
+
values: fieldValue,
|
|
314
|
+
value: fieldValue,
|
|
315
|
+
name: fieldName
|
|
316
|
+
});
|
|
317
|
+
case 6:
|
|
318
|
+
_t7 = _yield$fieldResolver = _context4.v;
|
|
319
|
+
_t6 = _t7 !== null;
|
|
320
|
+
if (!_t6) {
|
|
321
|
+
_context4.n = 7;
|
|
322
|
+
break;
|
|
323
|
+
}
|
|
324
|
+
_t6 = _yield$fieldResolver !== void 0;
|
|
325
|
+
case 7:
|
|
326
|
+
if (!_t6) {
|
|
327
|
+
_context4.n = 8;
|
|
328
|
+
break;
|
|
329
|
+
}
|
|
330
|
+
_t8 = _yield$fieldResolver;
|
|
331
|
+
_context4.n = 9;
|
|
332
|
+
break;
|
|
333
|
+
case 8:
|
|
334
|
+
_t8 = {
|
|
335
|
+
values: fieldValue
|
|
336
|
+
};
|
|
337
|
+
case 9:
|
|
338
|
+
fieldResult = _t8;
|
|
339
|
+
isArray(fieldResult.errors) && (fieldResult.errors = _defineProperty({}, fieldName, fieldResult.errors));
|
|
340
|
+
result = mergeKeys(result, fieldResult);
|
|
341
|
+
case 10:
|
|
342
|
+
errors = (_getValueByPath = getValueByPath(result.errors, fieldName)) !== null && _getValueByPath !== void 0 ? _getValueByPath : []; //const value = result.values?.[fieldName] ?? _states[sField].value;
|
|
343
|
+
_states[fieldName].invalid = errors.length > 0;
|
|
344
|
+
_states[fieldName].valid = !_states[fieldName].invalid;
|
|
345
|
+
_states[fieldName].errors = errors;
|
|
346
|
+
_states[fieldName].error = (_errors$2 = errors === null || errors === void 0 ? void 0 : errors[0]) !== null && _errors$2 !== void 0 ? _errors$2 : null;
|
|
347
|
+
//states[fieldName].value = value;
|
|
348
|
+
case 11:
|
|
349
|
+
_i++;
|
|
350
|
+
_context4.n = 5;
|
|
351
|
+
break;
|
|
352
|
+
case 12:
|
|
353
|
+
return _context4.a(2, _objectSpread(_objectSpread({}, result), {}, {
|
|
354
|
+
errors: groupKeys(result.errors)
|
|
355
|
+
}));
|
|
356
|
+
}
|
|
357
|
+
}, _callee4);
|
|
358
|
+
}));
|
|
359
|
+
return function validate(_x5) {
|
|
360
|
+
return _ref6.apply(this, arguments);
|
|
361
|
+
};
|
|
362
|
+
}();
|
|
363
|
+
var reset = function reset() {
|
|
364
|
+
Object.keys(_states).forEach(/*#__PURE__*/function () {
|
|
365
|
+
var _ref0 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(field) {
|
|
366
|
+
var _fields$field3;
|
|
367
|
+
var watcher;
|
|
368
|
+
return _regenerator().w(function (_context5) {
|
|
369
|
+
while (1) switch (_context5.n) {
|
|
370
|
+
case 0:
|
|
371
|
+
watcher = fields[field]._watcher;
|
|
372
|
+
watcher.pause();
|
|
373
|
+
fields[field].states = _states[field] = getInitialState(field, (_fields$field3 = fields[field]) === null || _fields$field3 === void 0 || (_fields$field3 = _fields$field3.options) === null || _fields$field3 === void 0 ? void 0 : _fields$field3.initialValue);
|
|
374
|
+
_context5.n = 1;
|
|
375
|
+
return nextTick();
|
|
376
|
+
case 1:
|
|
377
|
+
watcher.resume();
|
|
378
|
+
case 2:
|
|
379
|
+
return _context5.a(2);
|
|
380
|
+
}
|
|
381
|
+
}, _callee5);
|
|
382
|
+
}));
|
|
383
|
+
return function (_x6) {
|
|
384
|
+
return _ref0.apply(this, arguments);
|
|
385
|
+
};
|
|
386
|
+
}());
|
|
387
|
+
};
|
|
388
|
+
var setFieldValue = function setFieldValue(field, value) {
|
|
389
|
+
if (_states[field] !== undefined) _states[field].value = value;
|
|
390
|
+
};
|
|
391
|
+
var getFieldState = function getFieldState(field) {
|
|
392
|
+
var _fields$field4;
|
|
393
|
+
return (_fields$field4 = fields[field]) === null || _fields$field4 === void 0 ? void 0 : _fields$field4.states;
|
|
394
|
+
};
|
|
395
|
+
var setValues = function setValues(values) {
|
|
396
|
+
Object.keys(values).forEach(function (field) {
|
|
397
|
+
return setFieldValue(field, values[field]);
|
|
398
|
+
});
|
|
399
|
+
};
|
|
400
|
+
var validateOnMounted = function validateOnMounted() {
|
|
401
|
+
validateOn('validateOnMount');
|
|
402
|
+
};
|
|
403
|
+
tryOnMounted(validateOnMounted);
|
|
404
|
+
return {
|
|
405
|
+
defineField: defineField,
|
|
406
|
+
setFieldValue: setFieldValue,
|
|
407
|
+
getFieldState: getFieldState,
|
|
408
|
+
handleSubmit: handleSubmit,
|
|
409
|
+
handleReset: handleReset,
|
|
410
|
+
validate: validate,
|
|
411
|
+
setValues: setValues,
|
|
412
|
+
reset: reset,
|
|
413
|
+
valid: valid,
|
|
414
|
+
states: states,
|
|
415
|
+
fields: fields
|
|
416
|
+
};
|
|
417
|
+
};
|
|
418
|
+
|
|
419
|
+
export { useForm };
|
|
420
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../src/useform/index.js"],"sourcesContent":["import { isArray, isEmpty, isNotEmpty, mergeKeys, resolve } from '@primeuix/utils';\nimport { computed, getCurrentInstance, mergeProps, nextTick, onMounted, reactive, ref, toValue, watch } from 'vue';\n\nfunction tryOnMounted(fn, sync = true) {\n if (getCurrentInstance()) onMounted(fn);\n else if (sync) fn();\n else nextTick(fn);\n}\n\nfunction watchPausable(source, callback, options) {\n const isActive = ref(true);\n\n const stop = watch(\n source,\n (newValue, oldValue) => {\n if (!isActive.value) return;\n callback(newValue, oldValue);\n },\n options\n );\n\n return {\n stop,\n pause: () => {\n isActive.value = false;\n },\n resume: () => {\n isActive.value = true;\n }\n };\n}\n\n// @todo: move to utils\nfunction groupKeys(obj) {\n return Object.entries(obj).reduce((result, [key, value]) => {\n /* eslint-disable-next-line no-useless-escape */\n key.split(/[\\.\\[\\]]+/)\n .filter(Boolean)\n .reduce((acc, curr, idx, arr) => (acc[curr] ??= isNaN(arr[idx + 1]) ? (idx === arr.length - 1 ? value : {}) : []), result);\n\n return result;\n }, {});\n}\n\nfunction getValueByPath(obj, path) {\n if (!obj || !path) {\n // short circuit if there is nothing to resolve\n return null;\n }\n\n try {\n const value = obj[path];\n\n if (isNotEmpty(value)) return value;\n } catch {\n // do nothing and continue to other methods to resolve path data\n }\n\n /* eslint-disable-next-line no-useless-escape */\n const keys = path.split(/[\\.\\[\\]]+/).filter(Boolean);\n\n return keys.reduce((acc, key) => (acc && acc[key] !== undefined ? acc[key] : undefined), obj);\n}\n\nexport const useForm = (options = {}) => {\n const _states = reactive({});\n const fields = reactive({});\n const valid = computed(() => Object.values(_states).every((field) => !field.invalid));\n const states = computed(() => groupKeys(_states));\n\n const getInitialState = (field, initialValue) => {\n return {\n value: initialValue ?? getValueByPath(options.initialValues, field),\n touched: false,\n dirty: false,\n pristine: true,\n valid: true,\n invalid: false,\n error: null,\n errors: []\n };\n };\n\n const isFieldValidate = (field, validateOn) => {\n const value = resolve(validateOn, field);\n\n return value === true || (isArray(value) && value.includes(field));\n };\n\n const validateOn = async (option, defaultValue) => {\n let results = {};\n\n isArray(options[option]) ? (results = await validate(options[option])) : (options[option] ?? defaultValue) && (results = await validate());\n const fieldArr = Object.keys(fields).filter((field) => fields[field]?.options?.[option]) || [];\n\n isNotEmpty(fieldArr) && (results = await validate(fieldArr));\n\n return results;\n };\n\n const validateFieldOn = (field, fieldOptions, option, defaultValue) => {\n (fieldOptions?.[option] ?? isFieldValidate(field, options[option] ?? defaultValue)) && validate(field);\n };\n\n const defineField = (field, fieldOptions) => {\n if (!field) {\n //console.warn('The `name` attribute is required for the field definition.');\n\n return []; // prevent errors\n }\n\n fields[field]?._watcher.stop();\n\n _states[field] ||= getInitialState(field, fieldOptions?.initialValue);\n\n const props = mergeProps(resolve(fieldOptions, _states[field])?.props, resolve(fieldOptions?.props, _states[field]), {\n name: field,\n onBlur: () => {\n _states[field].touched = true;\n validateFieldOn(field, fieldOptions, 'validateOnBlur');\n },\n onInput: (event) => {\n _states[field].value = event && Object.hasOwn(event, 'value') ? event.value : event.target.value;\n },\n onChange: (event) => {\n _states[field].value = event && Object.hasOwn(event, 'value') ? event.value : event.target.type === 'checkbox' || event.target.type === 'radio' ? event.target.checked : event.target.value;\n },\n onInvalid: (errors) => {\n _states[field].invalid = true;\n _states[field].errors = errors;\n _states[field].error = errors?.[0] ?? null;\n }\n });\n\n const _watcher = watchPausable(\n () => _states[field].value,\n (newValue, oldValue) => {\n if (_states[field].pristine) {\n _states[field].pristine = false;\n }\n\n if (newValue !== oldValue) {\n _states[field].dirty = true;\n }\n\n validateFieldOn(field, fieldOptions, 'validateOnValueUpdate', true);\n }\n );\n\n fields[field] = { props, states: _states[field], options: fieldOptions, _watcher };\n\n return [_states[field], props];\n };\n\n const handleSubmit = (callback) => {\n return async (event) => {\n const results = await validateOn('validateOnSubmit', true);\n\n return callback({\n originalEvent: event,\n valid: toValue(valid),\n states: toValue(states),\n reset,\n ...results\n });\n };\n };\n\n const handleReset = (callback) => {\n return async (event) => {\n reset();\n\n return callback({\n originalEvent: event\n });\n };\n };\n\n const validate = async (field) => {\n const resolverOptions = Object.entries(_states).reduce(\n (acc, [key, val]) => {\n acc.names.push(key);\n acc.values[key] = val.value;\n\n return acc;\n },\n { names: [], values: {} }\n );\n\n const [names, values] = [resolverOptions.names, groupKeys(resolverOptions.values)];\n\n let result = (await options.resolver?.({ names, values })) ?? { values };\n\n result.errors ??= {};\n\n const flattenFields = [field].flat();\n\n for (const [fieldName, fieldInst] of Object.entries(fields)) {\n if (flattenFields.includes(fieldName) || !field || isEmpty(result.errors)) {\n const fieldResolver = fieldInst.options?.resolver;\n\n if (fieldResolver) {\n const fieldValue = fieldInst.states.value;\n const fieldResult = (await fieldResolver({ values: fieldValue, value: fieldValue, name: fieldName })) ?? { values: fieldValue };\n\n isArray(fieldResult.errors) && (fieldResult.errors = { [fieldName]: fieldResult.errors });\n\n result = mergeKeys(result, fieldResult);\n }\n\n const errors = getValueByPath(result.errors, fieldName) ?? [];\n\n //const value = result.values?.[fieldName] ?? _states[sField].value;\n _states[fieldName].invalid = errors.length > 0;\n _states[fieldName].valid = !_states[fieldName].invalid;\n _states[fieldName].errors = errors;\n _states[fieldName].error = errors?.[0] ?? null;\n //states[fieldName].value = value;\n }\n }\n\n return {\n ...result,\n errors: groupKeys(result.errors)\n };\n };\n\n const reset = () => {\n Object.keys(_states).forEach(async (field) => {\n const watcher = fields[field]._watcher;\n\n watcher.pause();\n fields[field].states = _states[field] = getInitialState(field, fields[field]?.options?.initialValue);\n await nextTick();\n watcher.resume();\n });\n };\n\n const setFieldValue = (field, value) => {\n if (_states[field] !== undefined) _states[field].value = value;\n };\n\n const getFieldState = (field) => {\n return fields[field]?.states;\n };\n\n const setValues = (values) => {\n Object.keys(values).forEach((field) => setFieldValue(field, values[field]));\n };\n\n const validateOnMounted = () => {\n validateOn('validateOnMount');\n };\n\n tryOnMounted(validateOnMounted);\n\n return {\n defineField,\n setFieldValue,\n getFieldState,\n handleSubmit,\n handleReset,\n validate,\n setValues,\n reset,\n valid,\n states,\n fields\n };\n};\n"],"names":["e","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","length","l","TypeError","call","done","value","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_regeneratorDefine","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_arrayLikeToArray","toString","slice","constructor","name","Array","from","test","next","push","isArray","tryOnMounted","fn","sync","undefined","getCurrentInstance","onMounted","nextTick","watchPausable","source","callback","options","isActive","ref","stop","watch","newValue","oldValue","pause","resume","groupKeys","obj","entries","reduce","result","_ref","_ref2","key","split","filter","Boolean","acc","curr","idx","arr","_acc$curr","isNaN","getValueByPath","path","isNotEmpty","_unused","keys","useForm","_states","reactive","fields","valid","computed","values","every","field","invalid","states","getInitialState","initialValue","initialValues","touched","dirty","pristine","error","errors","isFieldValidate","validateOn","includes","_ref3","_callee","option","defaultValue","_options$option","results","fieldArr","_t","_t2","_context","validate","_fields$field","_x","_x2","validateFieldOn","fieldOptions","_fieldOptions$option","_options$option2","defineField","_fields$field2","_resolve","_watcher","props","mergeProps","onBlur","onInput","event","hasOwn","target","onChange","type","checked","onInvalid","_errors$","handleSubmit","_ref4","_callee2","_context2","_objectSpread","originalEvent","toValue","reset","_x3","handleReset","_ref5","_callee3","_context3","_x4","_ref6","_callee4","_yield$options$resolv","_options$resolver","_result","_result$errors","resolverOptions","_ref9","names","flattenFields","_i","_Object$entries","_Object$entries$_i","fieldName","fieldInst","_fieldInst$options","_getValueByPath","_errors$2","fieldResolver","_yield$fieldResolver","fieldValue","fieldResult","_t3","_t4","_t5","_t6","_t7","_t8","_context4","_ref7","_ref8","val","resolver","flat","isEmpty","_defineProperty","mergeKeys","_x5","forEach","_ref0","_callee5","_fields$field3","watcher","_context5","_x6","setFieldValue","getFieldState","_fields$field4","setValues","validateOnMounted"],"mappings":"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"}
|