@effect-app/vue-components 2.11.4 → 3.0.0
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/OmegaFormStuff.d.ts +0 -1
- package/dist/types/components/OmegaForm/useOmegaForm.d.ts +0 -1
- package/dist/vue-components.es10.js +101 -106
- package/dist/vue-components.es12.js +147 -154
- package/dist/vue-components.es17.js +1 -1
- package/dist/vue-components.es20.js +2 -2
- package/dist/vue-components.es21.js +2 -2
- package/dist/vue-components.es30.js +41 -191
- package/dist/vue-components.es31.js +4 -0
- package/dist/vue-components.es32.js +2 -42
- package/dist/vue-components.es33.js +111 -2
- package/dist/vue-components.es35.js +7 -111
- package/dist/vue-components.es36.js +34 -0
- package/dist/vue-components.es38.js +187 -27
- package/dist/vue-components.es40.js +1 -1
- package/dist/vue-components.es6.js +31 -28
- package/dist/vue-components.es7.js +1 -1
- package/dist/vue-components.es8.js +13 -13
- package/dist/vue-components.es9.js +9 -15
- package/package.json +1 -1
- package/src/components/OmegaForm/OmegaFormStuff.ts +7 -24
- package/src/components/OmegaForm/OmegaInput.vue +16 -5
- package/src/components/OmegaForm/OmegaTaggedUnion.vue +0 -1
- package/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +8 -16
- package/src/components/OmegaForm/useOmegaForm.ts +3 -16
- package/src/components/OmegaForm/useRegisterField.ts +1 -3
- package/dist/vue-components.es34.js +0 -4
- package/dist/vue-components.es37.js +0 -9
|
@@ -1,34 +1,194 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
__name: "OmegaWrapper",
|
|
1
|
+
import { defineComponent as k, resolveComponent as b, createElementBlock as v, openBlock as a, createBlock as n, createCommentVNode as u, resolveDynamicComponent as g, mergeProps as o, createSlots as d, withCtx as r, renderSlot as m, normalizeProps as s, guardReactiveProps as P, unref as C, Fragment as V, renderList as U } from "vue";
|
|
2
|
+
import { getInputType as c } from "./vue-components.es12.js";
|
|
3
|
+
const w = /* @__PURE__ */ k({
|
|
4
|
+
inheritAttrs: !1,
|
|
5
|
+
__name: "OmegaInputVuetify",
|
|
7
6
|
props: {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
inputProps: {},
|
|
8
|
+
field: {},
|
|
9
|
+
state: {}
|
|
11
10
|
},
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
return e.form.ignorePreventCloseEvents || p(() => e.form.useStore((t) => t.isDirty)), (t, r) => (u(), d("form", {
|
|
21
|
-
novalidate: "",
|
|
22
|
-
onSubmit: r[0] || (r[0] = f((v) => o.form.handleSubmit(), ["prevent", "stop"]))
|
|
23
|
-
}, [
|
|
24
|
-
l("fieldset", {
|
|
25
|
-
disabled: s(i) || o.disabled
|
|
11
|
+
emits: ["focus", "blur"],
|
|
12
|
+
setup(e) {
|
|
13
|
+
return (l, i) => {
|
|
14
|
+
const y = b("v-text-field"), p = b("v-textarea"), f = b("v-radio"), h = b("v-radio-group"), q = b("v-select"), $ = b("v-autocomplete");
|
|
15
|
+
return a(), v("div", {
|
|
16
|
+
class: "omega-input",
|
|
17
|
+
onFocusout: i[4] || (i[4] = (t) => l.$emit("blur", t)),
|
|
18
|
+
onFocusin: i[5] || (i[5] = (t) => l.$emit("focus", t))
|
|
26
19
|
}, [
|
|
27
|
-
a(
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
e.inputProps.type === "boolean" || e.inputProps.type === "switch" ? (a(), n(g(e.inputProps.type === "boolean" ? "v-checkbox" : "v-switch"), o({
|
|
21
|
+
key: 0,
|
|
22
|
+
id: e.inputProps.id,
|
|
23
|
+
name: e.field.name,
|
|
24
|
+
label: e.inputProps.label,
|
|
25
|
+
"error-messages": e.inputProps.errorMessages,
|
|
26
|
+
error: e.inputProps.error,
|
|
27
|
+
ripple: ""
|
|
28
|
+
}, l.$attrs, {
|
|
29
|
+
"model-value": e.state.value,
|
|
30
|
+
onChange: i[0] || (i[0] = (t) => e.field.handleChange(t.target.checked))
|
|
31
|
+
}), d({ _: 2 }, [
|
|
32
|
+
l.$slots.label ? {
|
|
33
|
+
name: "label",
|
|
34
|
+
fn: r(() => [
|
|
35
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
36
|
+
]),
|
|
37
|
+
key: "0"
|
|
38
|
+
} : void 0
|
|
39
|
+
]), 1040, ["id", "name", "label", "error-messages", "error", "model-value"])) : u("", !0),
|
|
40
|
+
e.inputProps.type === "email" || e.inputProps.type === "string" || e.inputProps.type === "password" || e.inputProps.type === "date" ? (a(), n(y, o({
|
|
41
|
+
key: 1,
|
|
42
|
+
id: e.inputProps.id,
|
|
43
|
+
required: e.inputProps.required,
|
|
44
|
+
"min-length": e.inputProps.minLength,
|
|
45
|
+
"max-length": e.inputProps.maxLength,
|
|
46
|
+
type: C(c)(e.inputProps.type),
|
|
47
|
+
name: e.field.name,
|
|
48
|
+
label: e.inputProps.label,
|
|
49
|
+
"error-messages": e.inputProps.errorMessages,
|
|
50
|
+
error: e.inputProps.error
|
|
51
|
+
}, l.$attrs, {
|
|
52
|
+
"model-value": e.state.value,
|
|
53
|
+
"onUpdate:modelValue": e.field.handleChange
|
|
54
|
+
}), d({ _: 2 }, [
|
|
55
|
+
l.$slots.label ? {
|
|
56
|
+
name: "label",
|
|
57
|
+
fn: r(() => [
|
|
58
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
59
|
+
]),
|
|
60
|
+
key: "0"
|
|
61
|
+
} : void 0
|
|
62
|
+
]), 1040, ["id", "required", "min-length", "max-length", "type", "name", "label", "error-messages", "error", "model-value", "onUpdate:modelValue"])) : u("", !0),
|
|
63
|
+
e.inputProps.type === "text" ? (a(), n(p, o({
|
|
64
|
+
key: 2,
|
|
65
|
+
id: e.inputProps.id,
|
|
66
|
+
required: e.inputProps.required,
|
|
67
|
+
"min-length": e.inputProps.minLength,
|
|
68
|
+
"max-length": e.inputProps.maxLength,
|
|
69
|
+
name: e.field.name,
|
|
70
|
+
label: e.inputProps.label,
|
|
71
|
+
"error-messages": e.inputProps.errorMessages,
|
|
72
|
+
error: e.inputProps.error
|
|
73
|
+
}, l.$attrs, {
|
|
74
|
+
"model-value": e.state.value,
|
|
75
|
+
"onUpdate:modelValue": e.field.handleChange
|
|
76
|
+
}), d({ _: 2 }, [
|
|
77
|
+
l.$slots.label ? {
|
|
78
|
+
name: "label",
|
|
79
|
+
fn: r(() => [
|
|
80
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
81
|
+
]),
|
|
82
|
+
key: "0"
|
|
83
|
+
} : void 0
|
|
84
|
+
]), 1040, ["id", "required", "min-length", "max-length", "name", "label", "error-messages", "error", "model-value", "onUpdate:modelValue"])) : u("", !0),
|
|
85
|
+
e.inputProps.type === "number" || e.inputProps.type === "range" ? (a(), n(g(e.inputProps.type === "range" ? "v-slider" : "v-text-field"), o({
|
|
86
|
+
key: 3,
|
|
87
|
+
id: e.inputProps.id,
|
|
88
|
+
required: e.inputProps.required,
|
|
89
|
+
min: e.inputProps.min,
|
|
90
|
+
max: e.inputProps.max,
|
|
91
|
+
type: e.inputProps.type,
|
|
92
|
+
name: e.field.name,
|
|
93
|
+
label: e.inputProps.label,
|
|
94
|
+
"error-messages": e.inputProps.errorMessages,
|
|
95
|
+
error: e.inputProps.error
|
|
96
|
+
}, l.$attrs, {
|
|
97
|
+
"model-value": e.state.value,
|
|
98
|
+
"onUpdate:modelValue": i[1] || (i[1] = (t) => {
|
|
99
|
+
t || t === 0 ? e.field.handleChange(Number(t)) : e.field.handleChange(void 0);
|
|
100
|
+
})
|
|
101
|
+
}), d({ _: 2 }, [
|
|
102
|
+
l.$slots.label ? {
|
|
103
|
+
name: "label",
|
|
104
|
+
fn: r(() => [
|
|
105
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
106
|
+
]),
|
|
107
|
+
key: "0"
|
|
108
|
+
} : void 0
|
|
109
|
+
]), 1040, ["id", "required", "min", "max", "type", "name", "label", "error-messages", "error", "model-value"])) : u("", !0),
|
|
110
|
+
e.inputProps.type === "radio" ? (a(), n(h, o({
|
|
111
|
+
key: 4,
|
|
112
|
+
id: e.inputProps.id,
|
|
113
|
+
name: e.field.name,
|
|
114
|
+
label: e.inputProps.label,
|
|
115
|
+
"error-messages": e.inputProps.errorMessages,
|
|
116
|
+
error: e.inputProps.error
|
|
117
|
+
}, l.$attrs, {
|
|
118
|
+
"model-value": e.state.value,
|
|
119
|
+
"onUpdate:modelValue": e.field.handleChange
|
|
120
|
+
}), d({
|
|
121
|
+
default: r(() => [
|
|
122
|
+
(a(!0), v(V, null, U(e.inputProps.options, (t) => (a(), n(f, {
|
|
123
|
+
key: t.value,
|
|
124
|
+
label: t.title,
|
|
125
|
+
value: t.value
|
|
126
|
+
}, null, 8, ["label", "value"]))), 128))
|
|
127
|
+
]),
|
|
128
|
+
_: 2
|
|
129
|
+
}, [
|
|
130
|
+
l.$slots.label ? {
|
|
131
|
+
name: "label",
|
|
132
|
+
fn: r(() => [
|
|
133
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
134
|
+
]),
|
|
135
|
+
key: "0"
|
|
136
|
+
} : void 0
|
|
137
|
+
]), 1040, ["id", "name", "label", "error-messages", "error", "model-value", "onUpdate:modelValue"])) : u("", !0),
|
|
138
|
+
e.inputProps.type === "select" || e.inputProps.type === "multiple" ? (a(), n(q, o({
|
|
139
|
+
key: 5,
|
|
140
|
+
id: e.inputProps.id,
|
|
141
|
+
clearable: e.inputProps.type === "select",
|
|
142
|
+
required: e.inputProps.required,
|
|
143
|
+
multiple: e.inputProps.type === "multiple",
|
|
144
|
+
chips: e.inputProps.type === "multiple",
|
|
145
|
+
name: e.field.name,
|
|
146
|
+
label: e.inputProps.label,
|
|
147
|
+
items: e.inputProps.options,
|
|
148
|
+
"error-messages": e.inputProps.errorMessages,
|
|
149
|
+
error: e.inputProps.error
|
|
150
|
+
}, l.$attrs, {
|
|
151
|
+
"model-value": e.state.value,
|
|
152
|
+
onClear: i[2] || (i[2] = (t) => e.field.handleChange(void 0)),
|
|
153
|
+
"onUpdate:modelValue": e.field.handleChange
|
|
154
|
+
}), d({ _: 2 }, [
|
|
155
|
+
l.$slots.label ? {
|
|
156
|
+
name: "label",
|
|
157
|
+
fn: r(() => [
|
|
158
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
159
|
+
]),
|
|
160
|
+
key: "0"
|
|
161
|
+
} : void 0
|
|
162
|
+
]), 1040, ["id", "clearable", "required", "multiple", "chips", "name", "label", "items", "error-messages", "error", "model-value", "onUpdate:modelValue"])) : u("", !0),
|
|
163
|
+
e.inputProps.type === "autocomplete" || e.inputProps.type === "autocompletemultiple" ? (a(), n($, o({
|
|
164
|
+
key: 6,
|
|
165
|
+
id: e.inputProps.id,
|
|
166
|
+
clearable: e.inputProps.type === "autocomplete",
|
|
167
|
+
multiple: e.inputProps.type === "autocompletemultiple",
|
|
168
|
+
required: e.inputProps.required,
|
|
169
|
+
name: e.field.name,
|
|
170
|
+
label: e.inputProps.label,
|
|
171
|
+
items: e.inputProps.options,
|
|
172
|
+
"error-messages": e.inputProps.errorMessages,
|
|
173
|
+
error: e.inputProps.error,
|
|
174
|
+
chips: e.inputProps.type === "autocompletemultiple"
|
|
175
|
+
}, l.$attrs, {
|
|
176
|
+
"model-value": e.state.value,
|
|
177
|
+
onClear: i[3] || (i[3] = (t) => e.field.handleChange(void 0)),
|
|
178
|
+
"onUpdate:modelValue": e.field.handleChange
|
|
179
|
+
}), d({ _: 2 }, [
|
|
180
|
+
l.$slots.label ? {
|
|
181
|
+
name: "label",
|
|
182
|
+
fn: r(() => [
|
|
183
|
+
m(l.$slots, "label", s(P({ required: e.inputProps.required, id: e.inputProps.id, label: e.inputProps.label })))
|
|
184
|
+
]),
|
|
185
|
+
key: "0"
|
|
186
|
+
} : void 0
|
|
187
|
+
]), 1040, ["id", "clearable", "multiple", "required", "name", "label", "items", "error-messages", "error", "chips", "model-value", "onUpdate:modelValue"])) : u("", !0)
|
|
188
|
+
], 32);
|
|
189
|
+
};
|
|
30
190
|
}
|
|
31
191
|
});
|
|
32
192
|
export {
|
|
33
|
-
|
|
193
|
+
w as default
|
|
34
194
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
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.
|
|
2
|
+
import o from "./vue-components.es38.js";
|
|
3
3
|
|
|
4
4
|
export {
|
|
5
5
|
o as default
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as F, computed as l, useAttrs as A, inject as M, createBlock as i, openBlock as f, resolveDynamicComponent as S, withCtx as u, createCommentVNode as w, mergeProps as I, unref as L, createSlots as P, renderSlot as c, normalizeProps as d, guardReactiveProps as v } from "vue";
|
|
2
2
|
import { useIntl as j } from "./vue-components.es3.js";
|
|
3
3
|
import { generateInputStandardSchemaFromFieldMeta as B } from "./vue-components.es12.js";
|
|
4
4
|
import E from "./vue-components.es7.js";
|
|
5
5
|
import { useErrorLabel as N } from "./vue-components.es10.js";
|
|
6
|
-
const V = /* @__PURE__ */
|
|
6
|
+
const V = /* @__PURE__ */ F({
|
|
7
7
|
inheritAttrs: !1,
|
|
8
8
|
__name: "OmegaInput",
|
|
9
9
|
props: {
|
|
@@ -13,49 +13,52 @@ const V = /* @__PURE__ */ M({
|
|
|
13
13
|
name: {},
|
|
14
14
|
inputClass: {}
|
|
15
15
|
},
|
|
16
|
-
setup(
|
|
17
|
-
const e =
|
|
16
|
+
setup(a) {
|
|
17
|
+
const e = a, n = l(() => e.name), p = A(), g = l(() => {
|
|
18
18
|
if (e.inputClass !== null)
|
|
19
|
-
return e.inputClass !== void 0 ? e.inputClass :
|
|
20
|
-
}),
|
|
19
|
+
return e.inputClass !== void 0 ? e.inputClass : p.class;
|
|
20
|
+
}), s = M(
|
|
21
21
|
"getMetaFromArray",
|
|
22
22
|
null
|
|
23
|
-
),
|
|
24
|
-
const t =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
), o = l(() => s?.value && s.value(e.name) ? s.value(n.value) : e.form.meta[n.value]), $ = l(() => {
|
|
24
|
+
const t = o.value;
|
|
25
|
+
if (!t) return n.value;
|
|
26
|
+
const r = t;
|
|
27
|
+
return `${n.value}-${r.type}-${r.minLength ?? ""}-${r.maxLength ?? ""}-${r.minimum ?? ""}-${r.maximum ?? ""}`;
|
|
28
|
+
}), { trans: C } = j(), b = l(() => {
|
|
29
|
+
if (!o.value)
|
|
28
30
|
throw console.log(e.name, Object.keys(e.form.meta), e.form.meta), new Error("Meta is undefined");
|
|
29
|
-
return B(
|
|
30
|
-
}),
|
|
31
|
-
return (t,
|
|
32
|
-
|
|
31
|
+
return B(o.value, C);
|
|
32
|
+
}), h = N(e.form);
|
|
33
|
+
return (t, r) => (f(), i(S(a.form.Field), {
|
|
34
|
+
key: $.value,
|
|
35
|
+
name: a.name,
|
|
33
36
|
validators: {
|
|
34
|
-
onChange:
|
|
35
|
-
...
|
|
37
|
+
onChange: b.value,
|
|
38
|
+
...a.validators
|
|
36
39
|
}
|
|
37
40
|
}, {
|
|
38
|
-
default:
|
|
39
|
-
|
|
41
|
+
default: u(({ field: y, state: k }) => [
|
|
42
|
+
o.value ? (f(), i(E, I({ key: 0 }, { ...t.$attrs, ...t.$props, inputClass: g.value }, {
|
|
40
43
|
field: y,
|
|
41
|
-
state:
|
|
42
|
-
register:
|
|
43
|
-
label:
|
|
44
|
-
meta:
|
|
44
|
+
state: k,
|
|
45
|
+
register: a.form.registerField,
|
|
46
|
+
label: a.label ?? L(h)(n.value),
|
|
47
|
+
meta: o.value
|
|
45
48
|
}), P({
|
|
46
|
-
default:
|
|
47
|
-
|
|
49
|
+
default: u((m) => [
|
|
50
|
+
c(t.$slots, "default", d(v(m)))
|
|
48
51
|
]),
|
|
49
52
|
_: 2
|
|
50
53
|
}, [
|
|
51
54
|
t.$slots.label ? {
|
|
52
55
|
name: "label",
|
|
53
|
-
fn:
|
|
54
|
-
|
|
56
|
+
fn: u((m) => [
|
|
57
|
+
c(t.$slots, "label", d(v(m)))
|
|
55
58
|
]),
|
|
56
59
|
key: "0"
|
|
57
60
|
} : void 0
|
|
58
|
-
]), 1040, ["field", "state", "register", "label", "meta"])) :
|
|
61
|
+
]), 1040, ["field", "state", "register", "label", "meta"])) : w("", !0)
|
|
59
62
|
]),
|
|
60
63
|
_: 3
|
|
61
64
|
}, 8, ["name", "validators"]));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
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
2
|
import { defineComponent as $, computed as n, getCurrentInstance as N, useAttrs as S, useSlots as k, useId as q, renderSlot as u, normalizeProps as s, guardReactiveProps as d, createElementVNode as B, normalizeClass as w, createBlock as I, createCommentVNode as L, unref as A, openBlock as F, mergeProps as O, createSlots as R, withCtx as V } from "vue";
|
|
3
3
|
import { useStore as z } from "@tanstack/vue-form";
|
|
4
|
-
import T from "./vue-components.
|
|
4
|
+
import T from "./vue-components.es38.js";
|
|
5
5
|
|
|
6
6
|
const H = /* @__PURE__ */ $({
|
|
7
7
|
inheritAttrs: !1,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as M, ref as C, computed as s, watch as b, provide as k, createBlock as F, openBlock as O, unref as f, withCtx as
|
|
1
|
+
import { defineComponent as M, ref as C, computed as s, watch as b, provide as k, createBlock as F, openBlock as O, unref as f, withCtx as c, renderSlot as o, createVNode as i, createCommentVNode as S, normalizeProps as g, guardReactiveProps as d, createSlots as V, renderList as w } from "vue";
|
|
2
2
|
import A from "./vue-components.es9.js";
|
|
3
3
|
const N = /* @__PURE__ */ M({
|
|
4
4
|
__name: "OmegaTaggedUnion",
|
|
@@ -10,28 +10,28 @@ const N = /* @__PURE__ */ M({
|
|
|
10
10
|
label: {}
|
|
11
11
|
},
|
|
12
12
|
setup(t) {
|
|
13
|
-
const n = t,
|
|
13
|
+
const n = t, r = C(null), v = s(() => n.name ? `${n.name}._tag` : "_tag"), $ = n.form.useStore((e) => e.values);
|
|
14
14
|
b(
|
|
15
|
-
() => v.value.split(".").reduce((
|
|
15
|
+
() => v.value.split(".").reduce((l, a) => l?.[a], $.value),
|
|
16
16
|
(e) => {
|
|
17
|
-
|
|
17
|
+
r.value = e ?? null;
|
|
18
18
|
},
|
|
19
19
|
{ immediate: !0 }
|
|
20
20
|
);
|
|
21
21
|
const y = s(() => {
|
|
22
|
-
const e =
|
|
22
|
+
const e = r.value;
|
|
23
23
|
return (a) => {
|
|
24
24
|
if (!e) return null;
|
|
25
|
-
const
|
|
26
|
-
return
|
|
25
|
+
const m = n.form.unionMeta[e];
|
|
26
|
+
return m ? m[a] ?? null : null;
|
|
27
27
|
};
|
|
28
28
|
});
|
|
29
|
-
return k("getMetaFromArray", y), (e,
|
|
29
|
+
return k("getMetaFromArray", y), (e, l) => (O(), F(f(t.form).Field, {
|
|
30
30
|
name: t.name ? `${t.name}._tag` : "_tag"
|
|
31
31
|
}, {
|
|
32
|
-
default:
|
|
32
|
+
default: c((a) => [
|
|
33
33
|
o(e.$slots, "OmegaCustomInput", g(d(a)), () => [
|
|
34
|
-
|
|
34
|
+
i(f(t.form).Input, {
|
|
35
35
|
name: t.name ? `${t.name}._tag` : "_tag",
|
|
36
36
|
label: t.label,
|
|
37
37
|
type: t.type ?? "select",
|
|
@@ -39,15 +39,15 @@ const N = /* @__PURE__ */ M({
|
|
|
39
39
|
}, null, 8, ["name", "label", "type", "options"])
|
|
40
40
|
]),
|
|
41
41
|
o(e.$slots, "default"),
|
|
42
|
-
|
|
42
|
+
i(A, {
|
|
43
43
|
field: a.field,
|
|
44
44
|
state: a.state.value,
|
|
45
45
|
name: t.name,
|
|
46
46
|
form: t.form
|
|
47
47
|
}, V({ _: 2 }, [
|
|
48
|
-
w(e.$slots, (
|
|
48
|
+
w(e.$slots, (m, u) => ({
|
|
49
49
|
name: u,
|
|
50
|
-
fn:
|
|
50
|
+
fn: c((h) => [
|
|
51
51
|
o(e.$slots, u, g(d(h)))
|
|
52
52
|
])
|
|
53
53
|
}))
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as m, watch as r, renderSlot as s, createCommentVNode as o, normalizeProps as i, mergeProps as f } from "vue";
|
|
2
|
+
const d = /* @__PURE__ */ m({
|
|
3
3
|
__name: "OmegaTaggedUnionInternal",
|
|
4
4
|
props: {
|
|
5
5
|
state: {},
|
|
@@ -8,20 +8,14 @@ const g = /* @__PURE__ */ s({
|
|
|
8
8
|
form: {}
|
|
9
9
|
},
|
|
10
10
|
setup(e) {
|
|
11
|
-
const a = e;
|
|
12
|
-
return
|
|
13
|
-
t === null && a.field.setValue(null), t !== n &&
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
a.form.reset(l), setTimeout(() => {
|
|
19
|
-
a.field.validate("change");
|
|
20
|
-
}, 0);
|
|
21
|
-
});
|
|
22
|
-
}, { immediate: !0 }), (t, n) => e.state ? o(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, f(u({ key: 0 }, { field: e.field, state: e.state }))) : r("", !0);
|
|
11
|
+
const a = e, l = a.form.useStore(({ values: t }) => t);
|
|
12
|
+
return r(() => a.state, (t, n) => {
|
|
13
|
+
t === null && a.field.setValue(null), t !== n && (a.form.reset(l.value), setTimeout(() => {
|
|
14
|
+
a.field.validate("change");
|
|
15
|
+
}, 0));
|
|
16
|
+
}, { immediate: !0 }), (t, n) => e.state ? s(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, i(f({ key: 0 }, { field: e.field, state: e.state }))) : o("", !0);
|
|
23
17
|
}
|
|
24
18
|
});
|
|
25
19
|
export {
|
|
26
|
-
|
|
20
|
+
d as default
|
|
27
21
|
};
|
package/package.json
CHANGED
|
@@ -356,7 +356,6 @@ export const createMeta = <T = any>(
|
|
|
356
356
|
|
|
357
357
|
if (property?._tag === "TypeLiteral" && "propertySignatures" in property) {
|
|
358
358
|
return createMeta<T>({
|
|
359
|
-
parent, // Pass parent to maintain the key prefix for nested structures
|
|
360
359
|
meta,
|
|
361
360
|
propertySignatures: property.propertySignatures
|
|
362
361
|
})
|
|
@@ -405,13 +404,7 @@ export const createMeta = <T = any>(
|
|
|
405
404
|
property: p.type,
|
|
406
405
|
meta: { required: isRequired, nullableOrUndefined }
|
|
407
406
|
})
|
|
408
|
-
|
|
409
|
-
// Otherwise assign as single FieldMeta
|
|
410
|
-
if (parentMeta && typeof parentMeta === "object" && !("type" in parentMeta)) {
|
|
411
|
-
Object.assign(acc, parentMeta)
|
|
412
|
-
} else {
|
|
413
|
-
acc[key as NestedKeyOf<T>] = parentMeta as FieldMeta
|
|
414
|
-
}
|
|
407
|
+
acc[key as NestedKeyOf<T>] = parentMeta as FieldMeta
|
|
415
408
|
}
|
|
416
409
|
|
|
417
410
|
// Process each non-null type and merge their metadata
|
|
@@ -708,17 +701,11 @@ const flattenMeta = <T>(meta: MetaRecord<T> | FieldMeta, parentKey: string = "")
|
|
|
708
701
|
|
|
709
702
|
const metadataFromAst = <From, To>(
|
|
710
703
|
schema: S.Schema<To, From, never>
|
|
711
|
-
): {
|
|
712
|
-
meta: MetaRecord<To>
|
|
713
|
-
defaultValues: Record<string, any>
|
|
714
|
-
unionMeta: Record<string, MetaRecord<To>>
|
|
715
|
-
unionDefaultValues: Record<string, Record<string, any>>
|
|
716
|
-
} => {
|
|
704
|
+
): { meta: MetaRecord<To>; defaultValues: Record<string, any>; unionMeta: Record<string, MetaRecord<To>> } => {
|
|
717
705
|
const ast = schema.ast
|
|
718
706
|
const newMeta: MetaRecord<To> = {}
|
|
719
707
|
const defaultValues: Record<string, any> = {}
|
|
720
708
|
const unionMeta: Record<string, MetaRecord<To>> = {}
|
|
721
|
-
const unionDefaultValues: Record<string, Record<string, any>> = {}
|
|
722
709
|
|
|
723
710
|
if (ast._tag === "Transformation" || ast._tag === "Refinement") {
|
|
724
711
|
return metadataFromAst(S.make(ast.from))
|
|
@@ -763,9 +750,6 @@ const metadataFromAst = <From, To>(
|
|
|
763
750
|
// Store per-tag metadata for reactive lookup
|
|
764
751
|
if (tagValue) {
|
|
765
752
|
unionMeta[tagValue] = flattenMeta<To>(memberMeta)
|
|
766
|
-
// Create default values for this tag's schema
|
|
767
|
-
const memberSchema = S.make(memberType)
|
|
768
|
-
unionDefaultValues[tagValue] = defaultsValueFromSchema(memberSchema as any)
|
|
769
753
|
}
|
|
770
754
|
|
|
771
755
|
// Merge into result (for backward compatibility)
|
|
@@ -782,7 +766,7 @@ const metadataFromAst = <From, To>(
|
|
|
782
766
|
} as FieldMeta
|
|
783
767
|
}
|
|
784
768
|
|
|
785
|
-
return { meta: newMeta, defaultValues, unionMeta
|
|
769
|
+
return { meta: newMeta, defaultValues, unionMeta }
|
|
786
770
|
}
|
|
787
771
|
}
|
|
788
772
|
|
|
@@ -792,7 +776,7 @@ const metadataFromAst = <From, To>(
|
|
|
792
776
|
})
|
|
793
777
|
|
|
794
778
|
if (Object.values(meta).every((value) => value && "type" in value)) {
|
|
795
|
-
return { meta: meta as MetaRecord<To>, defaultValues, unionMeta
|
|
779
|
+
return { meta: meta as MetaRecord<To>, defaultValues, unionMeta }
|
|
796
780
|
}
|
|
797
781
|
|
|
798
782
|
const flattenObject = (
|
|
@@ -812,7 +796,7 @@ const metadataFromAst = <From, To>(
|
|
|
812
796
|
flattenObject(meta)
|
|
813
797
|
}
|
|
814
798
|
|
|
815
|
-
return { meta: newMeta, defaultValues, unionMeta
|
|
799
|
+
return { meta: newMeta, defaultValues, unionMeta }
|
|
816
800
|
}
|
|
817
801
|
|
|
818
802
|
export const duplicateSchema = <From, To>(
|
|
@@ -827,11 +811,10 @@ export const generateMetaFromSchema = <From, To>(
|
|
|
827
811
|
schema: S.Schema<To, From, never>
|
|
828
812
|
meta: MetaRecord<To>
|
|
829
813
|
unionMeta: Record<string, MetaRecord<To>>
|
|
830
|
-
unionDefaultValues: Record<string, Record<string, any>>
|
|
831
814
|
} => {
|
|
832
|
-
const { meta,
|
|
815
|
+
const { meta, unionMeta } = metadataFromAst(schema)
|
|
833
816
|
|
|
834
|
-
return { schema, meta, unionMeta
|
|
817
|
+
return { schema, meta, unionMeta }
|
|
835
818
|
}
|
|
836
819
|
|
|
837
820
|
export const generateInputStandardSchemaFromFieldMeta = (
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<component
|
|
3
3
|
:is="form.Field"
|
|
4
|
+
:key="fieldKey"
|
|
4
5
|
:name="name"
|
|
5
6
|
:validators="{
|
|
6
7
|
onChange: schema,
|
|
@@ -75,12 +76,22 @@ const getMetaFromArray = inject<Ref<(name: string) => FieldMeta | null> | null>(
|
|
|
75
76
|
)
|
|
76
77
|
|
|
77
78
|
const meta = computed(() => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return fromArray
|
|
79
|
+
if (getMetaFromArray?.value && getMetaFromArray.value(props.name as DeepKeys<From>)) {
|
|
80
|
+
return getMetaFromArray.value(propsName.value)
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
|
|
82
|
+
return props.form.meta[propsName.value]
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
// Key to force Field re-mount when meta type changes (for TaggedUnion support)
|
|
86
|
+
const fieldKey = computed(() => {
|
|
87
|
+
const m = meta.value
|
|
88
|
+
if (!m) return propsName.value
|
|
89
|
+
// Include type and key constraints in the key so Field re-mounts when validation rules change
|
|
90
|
+
// Cast to any since not all FieldMeta variants have these properties
|
|
91
|
+
const fm = m as any
|
|
92
|
+
return `${propsName.value}-${fm.type}-${fm.minLength ?? ""}-${fm.maxLength ?? ""}-${fm.minimum ?? ""}-${
|
|
93
|
+
fm.maximum ?? ""
|
|
94
|
+
}`
|
|
84
95
|
})
|
|
85
96
|
|
|
86
97
|
// Call useIntl during setup to avoid issues when computed re-evaluates
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
generic="From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>, Name extends DeepKeys<From>"
|
|
13
13
|
>
|
|
14
14
|
import { type DeepKeys, type DeepValue } from "@tanstack/vue-form"
|
|
15
|
-
import {
|
|
15
|
+
import { watch } from "vue"
|
|
16
16
|
import { type OmegaFieldInternalApi } from "./InputProps"
|
|
17
17
|
import { type useOmegaForm } from "./useOmegaForm"
|
|
18
18
|
|
|
@@ -23,27 +23,19 @@ const props = defineProps<{
|
|
|
23
23
|
form: ReturnType<typeof useOmegaForm<From, To>>
|
|
24
24
|
}>()
|
|
25
25
|
|
|
26
|
+
const values = props.form.useStore(({ values }) => values)
|
|
27
|
+
|
|
26
28
|
// Watch for _tag changes
|
|
27
29
|
watch(() => props.state, (newTag, oldTag) => {
|
|
28
30
|
if (newTag === null) {
|
|
29
31
|
props.field.setValue(null as DeepValue<From, Name>)
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
if (newTag !== oldTag
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
// Merge: keep _tag from current values, but use tag defaults for other fields
|
|
38
|
-
const resetValues = {
|
|
39
|
-
...tagDefaults,
|
|
40
|
-
_tag: newTag
|
|
41
|
-
}
|
|
42
|
-
props.form.reset(resetValues as any)
|
|
43
|
-
setTimeout(() => {
|
|
44
|
-
props.field.validate("change")
|
|
45
|
-
}, 0)
|
|
46
|
-
})
|
|
34
|
+
if (newTag !== oldTag) {
|
|
35
|
+
props.form.reset(values.value)
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
props.field.validate("change")
|
|
38
|
+
}, 0)
|
|
47
39
|
}
|
|
48
40
|
}, { immediate: true })
|
|
49
41
|
</script>
|