@effect-app/vue-components 2.4.7 → 2.4.9
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/dist/types/components/OmegaForm/OmegaArray.vue.d.ts +2 -2
- package/dist/types/components/OmegaForm/OmegaAutoGen.vue.d.ts +5 -5
- package/dist/types/components/OmegaForm/OmegaFormInput.vue.d.ts +1 -1
- package/dist/types/components/OmegaForm/OmegaFormStuff.d.ts +14 -11
- package/dist/types/components/OmegaForm/OmegaInput.vue.d.ts +2 -3
- package/dist/types/components/OmegaForm/useOmegaForm.d.ts +71 -94
- package/dist/vue-components.es10.js +140 -126
- package/dist/vue-components.es36.js +1 -1
- package/dist/vue-components.es52.js +4 -11
- package/dist/vue-components.es53.js +11 -4
- package/package.json +1 -1
- package/src/components/OmegaForm/OmegaArray.vue +2 -3
- package/src/components/OmegaForm/OmegaAutoGen.vue +5 -6
- package/src/components/OmegaForm/OmegaFormInput.vue +2 -3
- package/src/components/OmegaForm/OmegaFormStuff.ts +12 -16
- package/src/components/OmegaForm/OmegaInput.vue +2 -3
- package/src/components/OmegaForm/useOmegaForm.ts +225 -362
|
@@ -1,57 +1,48 @@
|
|
|
1
|
-
import { useForm as
|
|
2
|
-
import { Data as
|
|
3
|
-
import { runtimeFiberAsPromise as
|
|
4
|
-
import { isObject as
|
|
5
|
-
import { computed as
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import { generateMetaFromSchema as
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
import
|
|
13
|
-
import { trace as
|
|
14
|
-
import { context as
|
|
15
|
-
class
|
|
1
|
+
import { useForm as Z } from "@tanstack/vue-form";
|
|
2
|
+
import { Data as G, S as W, Effect as l, Fiber as N, Option as A, Array as g } from "effect-app";
|
|
3
|
+
import { runtimeFiberAsPromise as Q } from "./vue-components.es16.js";
|
|
4
|
+
import { isObject as X } from "./vue-components.es17.js";
|
|
5
|
+
import { computed as V, onUnmounted as $, onMounted as Y, onBeforeUnmount as C, watch as R, ref as ee, h as b } from "vue";
|
|
6
|
+
import re from "./vue-components.es18.js";
|
|
7
|
+
import te from "./vue-components.es19.js";
|
|
8
|
+
import se from "./vue-components.es20.js";
|
|
9
|
+
import { generateMetaFromSchema as ne } from "./vue-components.es12.js";
|
|
10
|
+
import oe from "./vue-components.es6.js";
|
|
11
|
+
import ie from "./vue-components.es8.js";
|
|
12
|
+
import ae from "./vue-components.es21.js";
|
|
13
|
+
import { trace as x } from "./vue-components.es22.js";
|
|
14
|
+
import { context as L } from "./vue-components.es23.js";
|
|
15
|
+
class le extends G.TaggedError("FormErrors") {
|
|
16
16
|
}
|
|
17
|
-
const
|
|
18
|
-
return {
|
|
19
|
-
render() {
|
|
20
|
-
return B(i, {
|
|
21
|
-
form: c,
|
|
22
|
-
...this.$attrs
|
|
23
|
-
}, this.$slots);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
}, oe = (c) => function(i) {
|
|
17
|
+
const ce = (m) => function(i) {
|
|
27
18
|
return {
|
|
28
19
|
setup() {
|
|
29
|
-
const { fieldMap:
|
|
30
|
-
const
|
|
31
|
-
Object.entries(
|
|
20
|
+
const { fieldMap: h, form: v } = m, d = v.useStore((c) => c.errors), f = v.useStore((c) => c.fieldMeta), F = v.useStore((c) => c.errorMap), M = V(() => {
|
|
21
|
+
const c = g.filterMap(
|
|
22
|
+
Object.entries(f.value),
|
|
32
23
|
([j, o]) => {
|
|
33
|
-
const
|
|
34
|
-
if (!
|
|
35
|
-
const a =
|
|
36
|
-
return a ?
|
|
24
|
+
const w = o.errors ?? [];
|
|
25
|
+
if (!w.length) return A.none();
|
|
26
|
+
const a = h.value.get(j);
|
|
27
|
+
return a ? A.some({
|
|
37
28
|
label: a.label,
|
|
38
29
|
inputId: a.id,
|
|
39
30
|
// Only show the first error
|
|
40
|
-
errors: [
|
|
41
|
-
}) :
|
|
31
|
+
errors: [w[0]?.message].filter(Boolean)
|
|
32
|
+
}) : A.none();
|
|
42
33
|
}
|
|
43
34
|
), O = [];
|
|
44
35
|
if (F.value.onSubmit) {
|
|
45
36
|
for (const [j, o] of Object.entries(F.value.onSubmit))
|
|
46
37
|
if (g.isArray(o) && o.length)
|
|
47
|
-
for (const
|
|
48
|
-
const a =
|
|
38
|
+
for (const w of o) {
|
|
39
|
+
const a = w;
|
|
49
40
|
if (a?.path && g.isArray(a.path) && a.path.length) {
|
|
50
|
-
const
|
|
51
|
-
if (!
|
|
41
|
+
const y = a.path.join(".");
|
|
42
|
+
if (!h.value.has(y)) {
|
|
52
43
|
O.push({
|
|
53
|
-
label:
|
|
54
|
-
inputId:
|
|
44
|
+
label: y,
|
|
45
|
+
inputId: y,
|
|
55
46
|
errors: [a.message].filter(Boolean)
|
|
56
47
|
});
|
|
57
48
|
break;
|
|
@@ -59,183 +50,206 @@ const E = (c) => function(i) {
|
|
|
59
50
|
}
|
|
60
51
|
}
|
|
61
52
|
}
|
|
62
|
-
return [...
|
|
53
|
+
return [...c, ...O];
|
|
63
54
|
});
|
|
64
55
|
return {
|
|
65
|
-
generalErrors:
|
|
56
|
+
generalErrors: d,
|
|
66
57
|
errors: M
|
|
67
58
|
};
|
|
68
59
|
},
|
|
69
|
-
render({ errors:
|
|
70
|
-
return
|
|
71
|
-
errors:
|
|
60
|
+
render({ errors: h, generalErrors: v }) {
|
|
61
|
+
return b(i, {
|
|
62
|
+
errors: h,
|
|
72
63
|
generalErrors: v,
|
|
73
64
|
...this.$attrs
|
|
74
65
|
}, this.$slots);
|
|
75
66
|
}
|
|
76
67
|
};
|
|
77
|
-
},
|
|
78
|
-
if (!
|
|
79
|
-
const
|
|
68
|
+
}, Oe = (m, p, i) => {
|
|
69
|
+
if (!m) throw new Error("Schema is required");
|
|
70
|
+
const h = W.standardSchemaV1(m), v = W.decode(m), { meta: d } = ne(m), f = V(() => {
|
|
80
71
|
if (i?.persistency?.id)
|
|
81
72
|
return i.persistency.id;
|
|
82
|
-
const e = window.location.pathname, r = Object.keys(
|
|
73
|
+
const e = window.location.pathname, r = Object.keys(d);
|
|
83
74
|
return `${e}-${r.join("-")}`;
|
|
84
75
|
}), F = () => {
|
|
85
76
|
const e = new URLSearchParams(window.location.search);
|
|
86
|
-
e.delete(
|
|
77
|
+
e.delete(f.value);
|
|
87
78
|
const r = new URL(window.location.href);
|
|
88
79
|
r.search = e.toString(), window.history.replaceState({}, "", r.toString());
|
|
89
80
|
};
|
|
90
81
|
function M(e, r) {
|
|
91
|
-
for (const
|
|
92
|
-
r[
|
|
82
|
+
for (const s in r)
|
|
83
|
+
r[s] && X(r[s]) ? (e[s] || (e[s] = {}), M(e[s], r[s])) : e[s] = r[s];
|
|
93
84
|
return e;
|
|
94
85
|
}
|
|
95
|
-
const
|
|
86
|
+
const c = (e) => {
|
|
96
87
|
const r = { ...e };
|
|
97
|
-
for (const
|
|
98
|
-
const
|
|
99
|
-
|
|
88
|
+
for (const s in d) {
|
|
89
|
+
const n = d[s], t = r[s], E = (t == null || t === !1 || t === "" || Number.isNaN(t)) && t !== !1 && t !== 0;
|
|
90
|
+
n && !n.required && n.nullableOrUndefined && n.type !== "boolean" && (t === void 0 || E) && (r[s] = n.nullableOrUndefined === "undefined" ? void 0 : null);
|
|
100
91
|
}
|
|
101
92
|
return r;
|
|
102
|
-
}, O =
|
|
103
|
-
const e =
|
|
93
|
+
}, O = V(() => {
|
|
94
|
+
const e = p?.defaultValues ? c(p.defaultValues) : void 0;
|
|
104
95
|
if (e && !i?.persistency?.overrideDefaultValues)
|
|
105
96
|
return e;
|
|
106
97
|
let r;
|
|
107
|
-
const
|
|
108
|
-
if (!
|
|
109
|
-
if (
|
|
98
|
+
const s = i?.persistency;
|
|
99
|
+
if (!s?.policies || s.policies.length === 0) return {};
|
|
100
|
+
if (s.policies.includes("querystring"))
|
|
110
101
|
try {
|
|
111
|
-
const t = new URLSearchParams(window.location.search).get(
|
|
102
|
+
const t = new URLSearchParams(window.location.search).get(f.value);
|
|
112
103
|
F(), t && (r = JSON.parse(t));
|
|
113
|
-
} catch (
|
|
114
|
-
console.error(
|
|
104
|
+
} catch (n) {
|
|
105
|
+
console.error(n);
|
|
115
106
|
}
|
|
116
107
|
if (
|
|
117
108
|
// query string has higher priority than local/session storage
|
|
118
|
-
!r && (
|
|
109
|
+
!r && (s.policies.includes("local") || s.policies.includes("session"))
|
|
119
110
|
) {
|
|
120
|
-
const
|
|
121
|
-
if (
|
|
111
|
+
const n = s.policies.includes("local") ? localStorage : sessionStorage;
|
|
112
|
+
if (n)
|
|
122
113
|
try {
|
|
123
114
|
const t = JSON.parse(
|
|
124
|
-
|
|
115
|
+
n.getItem(f.value) || "{}"
|
|
125
116
|
);
|
|
126
|
-
|
|
117
|
+
n.removeItem(f.value), r = t;
|
|
127
118
|
} catch (t) {
|
|
128
119
|
console.error(t);
|
|
129
120
|
}
|
|
130
121
|
}
|
|
131
122
|
return r ??= {}, e ? M(e, r) : r;
|
|
132
|
-
}), j = (e, r) => e ?
|
|
133
|
-
...
|
|
123
|
+
}), j = (e, r) => e ? L.with(x.setSpan(L.active(), e), r) : r(), o = Z({
|
|
124
|
+
...p,
|
|
134
125
|
validators: {
|
|
135
|
-
onSubmit:
|
|
136
|
-
...
|
|
126
|
+
onSubmit: h,
|
|
127
|
+
...p?.validators || {}
|
|
137
128
|
},
|
|
138
|
-
onSubmit:
|
|
139
|
-
const
|
|
129
|
+
onSubmit: p?.onSubmit ? ({ formApi: e, meta: r, value: s }) => j(r?.currentSpan, async () => {
|
|
130
|
+
const n = await l.runPromise(v(s)), t = p.onSubmit({
|
|
140
131
|
formApi: e,
|
|
141
132
|
meta: r,
|
|
142
|
-
value:
|
|
133
|
+
value: n
|
|
143
134
|
});
|
|
144
|
-
return N.isFiber(t) && N.isRuntimeFiber(t) ? await
|
|
135
|
+
return N.isFiber(t) && N.isRuntimeFiber(t) ? await Q(t) : l.isEffect(t) ? await l.runPromise(
|
|
145
136
|
t.pipe(
|
|
146
137
|
// meta?.currentSpan
|
|
147
138
|
// ? Effect.withParentSpan(meta.currentSpan)
|
|
148
139
|
// : (_) => _,
|
|
149
|
-
l.flatMap((
|
|
140
|
+
l.flatMap((u) => N.join(u))
|
|
150
141
|
)
|
|
151
142
|
) : t;
|
|
152
143
|
}) : void 0,
|
|
153
144
|
defaultValues: O.value
|
|
154
|
-
}),
|
|
155
|
-
Object.keys(
|
|
145
|
+
}), w = () => {
|
|
146
|
+
Object.keys(d).forEach((e) => {
|
|
156
147
|
o.setFieldValue(e, void 0);
|
|
157
148
|
});
|
|
158
|
-
}, a = (e) => e.reduce((r,
|
|
159
|
-
const
|
|
160
|
-
return
|
|
161
|
-
}, {}),
|
|
149
|
+
}, a = (e) => e.reduce((r, s) => {
|
|
150
|
+
const n = s.split(".");
|
|
151
|
+
return n.reduce((t, u, E) => (E === n.length - 1 ? t[u] = o.getFieldValue(s) : t[u] = t[u] ?? {}, t[u]), r), r;
|
|
152
|
+
}, {}), y = (e) => {
|
|
162
153
|
if (e) {
|
|
163
154
|
if (g.isArray(e.keys))
|
|
164
155
|
return a(e.keys);
|
|
165
156
|
if (g.isArray(e.banKeys)) {
|
|
166
|
-
const r = Object.keys(
|
|
157
|
+
const r = Object.keys(d).filter((s) => e.banKeys?.includes(s));
|
|
167
158
|
return a(r);
|
|
168
159
|
}
|
|
169
160
|
return o.store.state.values;
|
|
170
161
|
}
|
|
171
|
-
},
|
|
162
|
+
}, P = () => {
|
|
172
163
|
const e = i?.persistency;
|
|
173
164
|
if (!(!e?.policies || e.policies.length === 0) && (e.policies.includes("local") || e.policies.includes("session"))) {
|
|
174
165
|
const r = e.policies.includes("local") ? localStorage : sessionStorage;
|
|
175
166
|
if (!r) return;
|
|
176
|
-
const
|
|
177
|
-
return r.setItem(
|
|
167
|
+
const s = y(e);
|
|
168
|
+
return r.setItem(f.value, JSON.stringify(s));
|
|
178
169
|
}
|
|
179
|
-
},
|
|
170
|
+
}, I = () => {
|
|
180
171
|
const e = i?.persistency;
|
|
181
172
|
if (!(!e?.policies || e.policies.length === 0) && e.policies.includes("querystring")) {
|
|
182
|
-
const r =
|
|
183
|
-
|
|
184
|
-
const
|
|
185
|
-
|
|
173
|
+
const r = y(e), s = new URLSearchParams(window.location.search);
|
|
174
|
+
s.set(f.value, JSON.stringify(r));
|
|
175
|
+
const n = new URL(window.location.href);
|
|
176
|
+
n.search = s.toString(), window.history.replaceState({}, "", n.toString());
|
|
186
177
|
}
|
|
187
|
-
},
|
|
178
|
+
}, _ = (e) => {
|
|
188
179
|
o.store.state.isDirty && e.preventDefault();
|
|
189
180
|
};
|
|
190
|
-
if (
|
|
191
|
-
window.addEventListener("beforeunload",
|
|
192
|
-
}),
|
|
193
|
-
window.removeEventListener("beforeunload",
|
|
181
|
+
if ($(P), Y(() => {
|
|
182
|
+
window.addEventListener("beforeunload", P), window.addEventListener("blur", I), i?.preventWindowExit && i.preventWindowExit !== "nope" && window.addEventListener("beforeunload", _);
|
|
183
|
+
}), C(() => {
|
|
184
|
+
window.removeEventListener("beforeunload", P), window.removeEventListener("blur", I), i?.preventWindowExit && i.preventWindowExit !== "nope" && window.removeEventListener("beforeunload", _);
|
|
194
185
|
}), i?.preventWindowExit === "prevent-and-reset") {
|
|
195
|
-
const e = o.useStore((t) => t.isSubmitting), r = o.useStore((t) => t.submissionAttempts),
|
|
196
|
-
|
|
197
|
-
|
|
186
|
+
const e = o.useStore((t) => t.isSubmitting), r = o.useStore((t) => t.submissionAttempts), s = o.useStore((t) => t.canSubmit), n = o.useStore((t) => t.values);
|
|
187
|
+
R([e, r], ([t, u], [E]) => {
|
|
188
|
+
E && !t && u > 0 && s.value && o.reset(n.value);
|
|
198
189
|
});
|
|
199
190
|
}
|
|
200
|
-
const
|
|
191
|
+
const D = (e) => l.currentSpan.pipe(
|
|
201
192
|
l.option,
|
|
202
193
|
l.flatMap(
|
|
203
|
-
(r) => l.promise(() => o.handleSubmit(
|
|
194
|
+
(r) => l.promise(() => o.handleSubmit(A.isSome(r) ? { currentSpan: r.value, ...e } : e))
|
|
204
195
|
)
|
|
205
|
-
),
|
|
196
|
+
), B = (e) => e?.checkErrors ? D(e?.meta).pipe(l.flatMap(l.fnUntraced(function* () {
|
|
206
197
|
const r = o.getAllErrors();
|
|
207
198
|
if (Object.keys(r.fields).length || r.form.errors.length)
|
|
208
|
-
return yield* new
|
|
209
|
-
}))) :
|
|
199
|
+
return yield* new le({ form: r.form, fields: r.fields });
|
|
200
|
+
}))) : D(e?.meta), q = o.handleSubmit, U = ee(/* @__PURE__ */ new Map()), S = Object.assign(o, {
|
|
210
201
|
i18nNamespace: i?.i18nNamespace,
|
|
211
202
|
ignorePreventCloseEvents: i?.ignorePreventCloseEvents,
|
|
212
|
-
meta:
|
|
213
|
-
clear:
|
|
203
|
+
meta: d,
|
|
204
|
+
clear: w,
|
|
214
205
|
handleSubmit: (e) => {
|
|
215
|
-
const r =
|
|
216
|
-
return
|
|
206
|
+
const r = x.getSpan(L.active());
|
|
207
|
+
return q({ currentSpan: r, ...e });
|
|
217
208
|
},
|
|
218
209
|
// /** @experimental */
|
|
219
|
-
handleSubmitEffect:
|
|
210
|
+
handleSubmitEffect: B,
|
|
220
211
|
registerField: (e) => {
|
|
221
|
-
|
|
212
|
+
R(e, (r) => U.value.set(r.name, { label: r.label, id: r.id }), { immediate: !0 }), $(() => U.value.delete(e.value.name));
|
|
222
213
|
}
|
|
223
|
-
}),
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
214
|
+
}), k = { form: S, fieldMap: U }, J = (e, r) => {
|
|
215
|
+
const s = i?.input ?? oe;
|
|
216
|
+
return b(s, {
|
|
217
|
+
...e,
|
|
218
|
+
form: S,
|
|
219
|
+
...r?.attrs
|
|
220
|
+
}, r?.slots);
|
|
221
|
+
}, z = (e, r) => b(ce(k)(se), {
|
|
222
|
+
...e,
|
|
223
|
+
...r?.attrs
|
|
224
|
+
}, r?.slots), K = (e, r) => b(ie, {
|
|
225
|
+
...e,
|
|
226
|
+
form: S,
|
|
227
|
+
...r?.attrs
|
|
228
|
+
}, r?.slots), T = (e, r) => b(re, {
|
|
229
|
+
...e,
|
|
230
|
+
form: S,
|
|
231
|
+
...r?.attrs
|
|
232
|
+
}, r?.slots), H = (e, r) => b(te, {
|
|
233
|
+
...e,
|
|
234
|
+
form: S,
|
|
235
|
+
...r?.attrs
|
|
236
|
+
}, r?.slots);
|
|
237
|
+
return Object.assign(S, {
|
|
238
|
+
errorContext: k,
|
|
239
|
+
Form: (e, r) => b(ae, {
|
|
240
|
+
...e,
|
|
241
|
+
form: S,
|
|
242
|
+
...r?.attrs
|
|
243
|
+
}, r?.slots),
|
|
244
|
+
Input: J,
|
|
245
|
+
TaggedUnion: K,
|
|
232
246
|
Field: o.Field,
|
|
233
|
-
Errors:
|
|
234
|
-
Array:
|
|
235
|
-
AutoGen:
|
|
247
|
+
Errors: z,
|
|
248
|
+
Array: T,
|
|
249
|
+
AutoGen: H
|
|
236
250
|
});
|
|
237
251
|
};
|
|
238
252
|
export {
|
|
239
|
-
|
|
240
|
-
|
|
253
|
+
le as FormErrors,
|
|
254
|
+
Oe as useOmegaForm
|
|
241
255
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent as m, createElementBlock as d, openBlock as u, withModifiers as f, createElementVNode as l, unref as s, renderSlot as a } from "vue";
|
|
2
2
|
import { useStore as b } from "@tanstack/vue-form";
|
|
3
3
|
import { usePreventClose as p } from "./vue-components.es11.js";
|
|
4
|
-
import { getOmegaStore as c } from "./vue-components.
|
|
4
|
+
import { getOmegaStore as c } from "./vue-components.es53.js";
|
|
5
5
|
const S = ["disabled"], V = /* @__PURE__ */ m({
|
|
6
6
|
__name: "OmegaWrapper",
|
|
7
7
|
props: {
|
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
return f(() => t ? u(o.store, (n) => {
|
|
5
|
-
const r = {};
|
|
6
|
-
for (const e of t)
|
|
7
|
-
r[e] = n[e];
|
|
8
|
-
return r;
|
|
9
|
-
}).value : {});
|
|
10
|
-
}
|
|
1
|
+
(function(){"use strict";try{if(typeof document<"u"){var i=document.createElement("style");if(i.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),document.head.appendChild(i),window.customElements){const e=window.customElements.define;window.customElements.define=function(s,t){const n=t.prototype.connectedCallback;return t.prototype.connectedCallback=function(){if(n&&n.call(this),this.shadowRoot){const a=document.createElement("style");a.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),this.shadowRoot.appendChild(a)}},e.call(window.customElements,s,t)}}}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
|
|
2
|
+
import o from "./vue-components.es38.js";
|
|
3
|
+
|
|
11
4
|
export {
|
|
12
|
-
|
|
5
|
+
o as default
|
|
13
6
|
};
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { useStore as u } from "@tanstack/vue-form";
|
|
2
|
+
import { computed as f } from "vue";
|
|
3
|
+
function c(o, t) {
|
|
4
|
+
return f(() => t ? u(o.store, (n) => {
|
|
5
|
+
const r = {};
|
|
6
|
+
for (const e of t)
|
|
7
|
+
r[e] = n[e];
|
|
8
|
+
return r;
|
|
9
|
+
}).value : {});
|
|
10
|
+
}
|
|
4
11
|
export {
|
|
5
|
-
|
|
12
|
+
c as getOmegaStore
|
|
6
13
|
};
|
package/package.json
CHANGED
|
@@ -45,15 +45,14 @@
|
|
|
45
45
|
generic="
|
|
46
46
|
// dprint ignore - somehow with 120 chars, this becomes a mess. should report it.
|
|
47
47
|
From extends Record<PropertyKey, any>,
|
|
48
|
-
To extends Record<PropertyKey, any
|
|
49
|
-
Name extends DeepKeys<From>
|
|
48
|
+
To extends Record<PropertyKey, any>
|
|
50
49
|
"
|
|
51
50
|
>
|
|
52
51
|
import { type DeepKeys } from "@tanstack/vue-form"
|
|
53
52
|
import { computed, onMounted, provide } from "vue"
|
|
54
53
|
import { type OmegaArrayProps } from "./OmegaFormStuff"
|
|
55
54
|
|
|
56
|
-
const props = defineProps<OmegaArrayProps<From, To
|
|
55
|
+
const props = defineProps<OmegaArrayProps<From, To>>()
|
|
57
56
|
|
|
58
57
|
defineOptions({
|
|
59
58
|
inheritAttrs: false
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
:child="{ name, label, ...attrs }"
|
|
5
5
|
>
|
|
6
6
|
<form.Input
|
|
7
|
-
:name="name
|
|
7
|
+
:name="name"
|
|
8
8
|
:label="label"
|
|
9
9
|
v-bind="attrs"
|
|
10
10
|
/>
|
|
@@ -16,16 +16,15 @@
|
|
|
16
16
|
lang="ts"
|
|
17
17
|
generic="
|
|
18
18
|
From extends Record<PropertyKey, string>,
|
|
19
|
-
To extends Record<PropertyKey, string
|
|
20
|
-
Name extends DeepKeys<From>
|
|
19
|
+
To extends Record<PropertyKey, string>
|
|
21
20
|
"
|
|
22
21
|
>
|
|
23
22
|
import { type DeepKeys } from "@tanstack/vue-form"
|
|
24
23
|
import { Array as A, Order, pipe } from "effect-app"
|
|
25
24
|
import { computed } from "vue"
|
|
26
|
-
import { type FieldMeta, type
|
|
25
|
+
import { type FieldMeta, type OmegaAutoGenMeta, type OmegaInputProps } from "./OmegaFormStuff"
|
|
27
26
|
|
|
28
|
-
type NewMeta = OmegaAutoGenMeta<From, To
|
|
27
|
+
type NewMeta = OmegaAutoGenMeta<From, To>
|
|
29
28
|
|
|
30
29
|
const mapObject = <K extends string, A, B>(fn: (value: A, key: K) => B) => (obj: Record<K, A>): Record<K, B> =>
|
|
31
30
|
Object.fromEntries(
|
|
@@ -52,7 +51,7 @@ const filterMapRecord =
|
|
|
52
51
|
)
|
|
53
52
|
|
|
54
53
|
const props = defineProps<{
|
|
55
|
-
form: OmegaInputProps<From, To
|
|
54
|
+
form: OmegaInputProps<From, To>["form"]
|
|
56
55
|
pick?: DeepKeys<From>[]
|
|
57
56
|
omit?: DeepKeys<From>[]
|
|
58
57
|
labelMap?: (key: DeepKeys<From>) => string | undefined
|
|
@@ -27,8 +27,7 @@ import { OmegaFormKey } from "./useOmegaForm"
|
|
|
27
27
|
|
|
28
28
|
const form = inject(OmegaFormKey) as unknown as OmegaInputProps<
|
|
29
29
|
From,
|
|
30
|
-
To
|
|
31
|
-
Name
|
|
30
|
+
To
|
|
32
31
|
>["form"]
|
|
33
32
|
|
|
34
33
|
if (!form) {
|
|
@@ -36,7 +35,7 @@ if (!form) {
|
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
defineProps<
|
|
39
|
-
BaseProps<From
|
|
38
|
+
BaseProps<From> & DefaultTypeProps
|
|
40
39
|
>()
|
|
41
40
|
|
|
42
41
|
defineSlots<{
|
|
@@ -17,19 +17,19 @@ export type FieldPath<T> = unknown extends T ? string
|
|
|
17
17
|
// technically we cannot have primitive at the root
|
|
18
18
|
: T extends string | boolean | number | null | undefined | symbol | bigint ? ""
|
|
19
19
|
// technically we cannot have array at the root
|
|
20
|
-
: T extends ReadonlyArray<infer U> ? FieldPath_<U, `[${number}]
|
|
20
|
+
: T extends ReadonlyArray<infer U> ? Compute<FieldPath_<U, `[${number}]`>>
|
|
21
21
|
: {
|
|
22
|
-
[K in keyof T]: FieldPath_<T[K], `${K & string}
|
|
22
|
+
[K in keyof T]: Compute<FieldPath_<T[K], `${K & string}`>>
|
|
23
23
|
}[keyof T]
|
|
24
24
|
|
|
25
25
|
export type FieldPath_<T, Path extends string> = unknown extends T ? string
|
|
26
26
|
: T extends string | boolean | number | null | undefined | symbol | bigint ? Path
|
|
27
|
-
: T extends ReadonlyArray<infer U> ? FieldPath_<U, `${Path}[${number}]
|
|
27
|
+
: T extends ReadonlyArray<infer U> ? Compute<FieldPath_<U, `${Path}[${number}]`>> | Path
|
|
28
28
|
: {
|
|
29
|
-
[K in keyof T]: FieldPath_<T[K], `${Path}.${K & string}
|
|
29
|
+
[K in keyof T]: Compute<FieldPath_<T[K], `${Path}.${K & string}`>>
|
|
30
30
|
}[keyof T]
|
|
31
31
|
|
|
32
|
-
export type BaseProps<From, TName extends FieldPath<From>> = {
|
|
32
|
+
export type BaseProps<From, TName extends FieldPath<From> = FieldPath<From>> = {
|
|
33
33
|
/**
|
|
34
34
|
* Will fallback to i18n when not specified.
|
|
35
35
|
* Can also be provided via #label slot for custom HTML labels.
|
|
@@ -64,34 +64,31 @@ export type DefaultTypeProps = {
|
|
|
64
64
|
|
|
65
65
|
export type OmegaInputPropsBase<
|
|
66
66
|
From extends Record<PropertyKey, any>,
|
|
67
|
-
To extends Record<PropertyKey, any
|
|
68
|
-
Name extends DeepKeys<From>
|
|
67
|
+
To extends Record<PropertyKey, any>
|
|
69
68
|
> = {
|
|
70
69
|
form: OF<From, To> & {
|
|
71
70
|
meta: MetaRecord<From>
|
|
72
71
|
i18nNamespace?: string
|
|
73
72
|
}
|
|
74
|
-
} & BaseProps<From
|
|
73
|
+
} & BaseProps<From>
|
|
75
74
|
|
|
76
75
|
export type OmegaInputProps<
|
|
77
76
|
From extends Record<PropertyKey, any>,
|
|
78
77
|
To extends Record<PropertyKey, any>,
|
|
79
|
-
Name extends DeepKeys<From>,
|
|
80
78
|
TypeProps = DefaultTypeProps
|
|
81
79
|
> = {
|
|
82
80
|
form: OmegaFormReturn<From, To, TypeProps> & {
|
|
83
81
|
meta: MetaRecord<From>
|
|
84
82
|
i18nNamespace?: string
|
|
85
83
|
}
|
|
86
|
-
} & BaseProps<From
|
|
84
|
+
} & BaseProps<From>
|
|
87
85
|
|
|
88
86
|
export type OmegaArrayProps<
|
|
89
87
|
From extends Record<PropertyKey, any>,
|
|
90
|
-
To extends Record<PropertyKey, any
|
|
91
|
-
Name extends DeepKeys<From>
|
|
88
|
+
To extends Record<PropertyKey, any>
|
|
92
89
|
> =
|
|
93
90
|
& Omit<
|
|
94
|
-
OmegaInputProps<From, To
|
|
91
|
+
OmegaInputProps<From, To>,
|
|
95
92
|
"validators" | "options" | "label" | "type" | "items" | "name"
|
|
96
93
|
>
|
|
97
94
|
& {
|
|
@@ -889,9 +886,8 @@ export const nullableInput = <A, I, R>(
|
|
|
889
886
|
|
|
890
887
|
export type OmegaAutoGenMeta<
|
|
891
888
|
From extends Record<PropertyKey, any>,
|
|
892
|
-
To extends Record<PropertyKey, any
|
|
893
|
-
|
|
894
|
-
> = Omit<OmegaInputProps<From, To, Name>, "form">
|
|
889
|
+
To extends Record<PropertyKey, any>
|
|
890
|
+
> = Omit<OmegaInputProps<From, To>, "form">
|
|
895
891
|
|
|
896
892
|
const supportedInputs = [
|
|
897
893
|
"button",
|
|
@@ -40,8 +40,7 @@
|
|
|
40
40
|
generic="
|
|
41
41
|
// dprint ignore - somehow with 120 chars, this becomes a mess. should report it.
|
|
42
42
|
From extends Record<PropertyKey, any>,
|
|
43
|
-
To extends Record<PropertyKey, any
|
|
44
|
-
Name extends DeepKeys<From>
|
|
43
|
+
To extends Record<PropertyKey, any>
|
|
45
44
|
"
|
|
46
45
|
>
|
|
47
46
|
import { type DeepKeys } from "@tanstack/vue-form"
|
|
@@ -50,7 +49,7 @@ import { useIntl } from "../../utils"
|
|
|
50
49
|
import { type FieldMeta, generateInputStandardSchemaFromFieldMeta, type OmegaInputPropsBase } from "./OmegaFormStuff"
|
|
51
50
|
import OmegaInternalInput from "./OmegaInternalInput.vue"
|
|
52
51
|
|
|
53
|
-
const props = defineProps<OmegaInputPropsBase<From, To
|
|
52
|
+
const props = defineProps<OmegaInputPropsBase<From, To>>()
|
|
54
53
|
|
|
55
54
|
// downgrade to *as* DeepKeys<From> to avoid useless and possible infinite recursion in TS
|
|
56
55
|
const propsName = computed(() => props.name as DeepKeys<From>)
|