@effect-app/vue-components 2.7.0 → 2.7.2
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/OmegaTaggedUnion.vue.d.ts +14 -3
- package/dist/types/components/OmegaForm/OmegaTaggedUnionInternal.vue.d.ts +2 -2
- package/dist/vue-components.es10.js +192 -187
- package/dist/vue-components.es16.js +1 -1
- 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 +191 -41
- package/dist/vue-components.es32.js +42 -2
- package/dist/vue-components.es33.js +2 -89
- package/dist/vue-components.es34.js +4 -0
- package/dist/vue-components.es35.js +89 -7
- package/dist/vue-components.es37.js +9 -0
- package/dist/vue-components.es38.js +27 -187
- package/dist/vue-components.es40.js +1 -1
- package/dist/vue-components.es7.js +1 -1
- package/dist/vue-components.es8.js +31 -32
- package/dist/vue-components.es9.js +2 -2
- package/package.json +1 -1
- package/src/components/OmegaForm/OmegaTaggedUnion.vue +20 -13
- package/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +3 -3
- package/src/components/OmegaForm/useOmegaForm.ts +60 -45
- package/dist/vue-components.es31.js +0 -4
- package/dist/vue-components.es36.js +0 -34
|
@@ -1,194 +1,34 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
+
import { useStore as b } from "@tanstack/vue-form";
|
|
3
|
+
import { usePreventClose as p } from "./vue-components.es11.js";
|
|
4
|
+
import { getOmegaStore as c } from "./vue-components.es53.js";
|
|
5
|
+
const S = ["disabled"], V = /* @__PURE__ */ m({
|
|
6
|
+
__name: "OmegaWrapper",
|
|
6
7
|
props: {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
form: {},
|
|
9
|
+
disabled: { type: Boolean },
|
|
10
|
+
subscribe: {}
|
|
10
11
|
},
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
setup(o) {
|
|
13
|
+
const e = o, i = b(
|
|
14
|
+
e.form.store,
|
|
15
|
+
(t) => t.isSubmitting
|
|
16
|
+
), n = c(
|
|
17
|
+
e.form,
|
|
18
|
+
e.subscribe
|
|
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
|
|
19
26
|
}, [
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
-
};
|
|
27
|
+
a(t.$slots, "default", { subscribedValues: s(n) }, void 0, !0)
|
|
28
|
+
], 8, S)
|
|
29
|
+
], 32));
|
|
190
30
|
}
|
|
191
31
|
});
|
|
192
32
|
export {
|
|
193
|
-
|
|
33
|
+
V as default
|
|
194
34
|
};
|
|
@@ -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.es30.js";
|
|
3
3
|
|
|
4
4
|
export {
|
|
5
5
|
o as default
|
|
@@ -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.es30.js";
|
|
5
5
|
|
|
6
6
|
const H = /* @__PURE__ */ $({
|
|
7
7
|
inheritAttrs: !1,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent as
|
|
1
|
+
import { defineComponent as d, createBlock as u, openBlock as g, unref as l, withCtx as o, renderSlot as n, createVNode as r, createCommentVNode as c, normalizeProps as s, guardReactiveProps as f, createSlots as $, renderList as y } from "vue";
|
|
2
2
|
import C from "./vue-components.es9.js";
|
|
3
|
-
const
|
|
3
|
+
const h = /* @__PURE__ */ d({
|
|
4
4
|
__name: "OmegaTaggedUnion",
|
|
5
5
|
props: {
|
|
6
6
|
name: {},
|
|
@@ -10,38 +10,37 @@ const F = /* @__PURE__ */ s({
|
|
|
10
10
|
label: {}
|
|
11
11
|
},
|
|
12
12
|
setup(e) {
|
|
13
|
-
return (
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}, {
|
|
25
|
-
default: r(({ field: u, state: m }) => [
|
|
26
|
-
m.value ? n(t.$slots, "default", { key: 0 }) : g("", !0),
|
|
27
|
-
a(C, {
|
|
28
|
-
field: u,
|
|
29
|
-
state: m.value,
|
|
30
|
-
name: e.name
|
|
31
|
-
}, $({ _: 2 }, [
|
|
32
|
-
y(t.$slots, (v, l) => ({
|
|
33
|
-
name: l,
|
|
34
|
-
fn: r((i) => [
|
|
35
|
-
n(t.$slots, l, b(p(i)))
|
|
36
|
-
])
|
|
37
|
-
}))
|
|
38
|
-
]), 1032, ["field", "state", "name"])
|
|
13
|
+
return (a, b) => (g(), u(l(e.form).Field, {
|
|
14
|
+
name: e.name ? `${e.name}._tag` : "_tag"
|
|
15
|
+
}, {
|
|
16
|
+
default: o((t) => [
|
|
17
|
+
n(a.$slots, "OmegaCustomInput", s(f(t)), () => [
|
|
18
|
+
r(l(e.form).Input, {
|
|
19
|
+
name: e.name ? `${e.name}._tag` : "_tag",
|
|
20
|
+
label: e.label,
|
|
21
|
+
type: e.type ?? "select",
|
|
22
|
+
options: e.options
|
|
23
|
+
}, null, 8, ["name", "label", "type", "options"])
|
|
39
24
|
]),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
25
|
+
n(a.$slots, "default"),
|
|
26
|
+
r(C, {
|
|
27
|
+
field: t.field,
|
|
28
|
+
state: t.state.value,
|
|
29
|
+
name: e.name
|
|
30
|
+
}, $({ _: 2 }, [
|
|
31
|
+
y(a.$slots, (k, m) => ({
|
|
32
|
+
name: m,
|
|
33
|
+
fn: o((i) => [
|
|
34
|
+
n(a.$slots, m, s(f(i)))
|
|
35
|
+
])
|
|
36
|
+
}))
|
|
37
|
+
]), 1032, ["field", "state", "name"]),
|
|
38
|
+
t.state.value ? n(a.$slots, "OmegaCommon", { key: 0 }) : c("", !0)
|
|
39
|
+
]),
|
|
40
|
+
_: 3
|
|
41
|
+
}, 8, ["name"]));
|
|
43
42
|
}
|
|
44
43
|
});
|
|
45
44
|
export {
|
|
46
|
-
|
|
45
|
+
h as default
|
|
47
46
|
};
|
|
@@ -8,11 +8,11 @@ const f = /* @__PURE__ */ l({
|
|
|
8
8
|
},
|
|
9
9
|
setup(e) {
|
|
10
10
|
const a = e;
|
|
11
|
-
return i(() => a.state
|
|
11
|
+
return i(() => a.state, (t, n) => {
|
|
12
12
|
t === null && a.field.setValue(null), t !== n && setTimeout(() => {
|
|
13
13
|
a.field.validate("change");
|
|
14
14
|
}, 0);
|
|
15
|
-
}), (t, n) => e.state
|
|
15
|
+
}), (t, n) => e.state ? m(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, o(r({ key: 0 }, { field: e.field, state: e.state }))) : s("", !0);
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
export {
|
package/package.json
CHANGED
|
@@ -23,20 +23,23 @@ defineProps<{
|
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<template>
|
|
26
|
-
<
|
|
27
|
-
<
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
26
|
+
<form.Field :name="(name ? `${name}._tag` : '_tag') as any">
|
|
27
|
+
<template #default="inputProps">
|
|
28
|
+
<slot
|
|
29
|
+
name="OmegaCustomInput"
|
|
30
|
+
v-bind="inputProps"
|
|
31
|
+
>
|
|
32
|
+
<form.Input
|
|
33
|
+
:name="(name ? `${name}._tag` : '_tag') as FieldPath<From>"
|
|
34
|
+
:label="label"
|
|
35
|
+
:type="type ?? 'select'"
|
|
36
|
+
:options="options"
|
|
37
|
+
/>
|
|
38
|
+
</slot>
|
|
39
|
+
<slot />
|
|
37
40
|
<OmegaTaggedUnionInternal
|
|
38
|
-
:field="field as any"
|
|
39
|
-
:state="state.value"
|
|
41
|
+
:field="inputProps.field as any"
|
|
42
|
+
:state="inputProps.state.value"
|
|
40
43
|
:name="name"
|
|
41
44
|
>
|
|
42
45
|
<template
|
|
@@ -49,6 +52,10 @@ defineProps<{
|
|
|
49
52
|
/>
|
|
50
53
|
</template>
|
|
51
54
|
</OmegaTaggedUnionInternal>
|
|
55
|
+
<slot
|
|
56
|
+
v-if="inputProps.state.value"
|
|
57
|
+
name="OmegaCommon"
|
|
58
|
+
/>
|
|
52
59
|
</template>
|
|
53
60
|
</form.Field>
|
|
54
61
|
</template>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<slot
|
|
3
|
-
v-if="state
|
|
4
|
-
:name="`${name ? `${name}.` : ''}${state
|
|
3
|
+
v-if="state"
|
|
4
|
+
:name="`${name ? `${name}.` : ''}${state}`"
|
|
5
5
|
v-bind="{ field, state }"
|
|
6
6
|
/>
|
|
7
7
|
</template>
|
|
@@ -26,7 +26,7 @@ const props = defineProps<{
|
|
|
26
26
|
}>()
|
|
27
27
|
|
|
28
28
|
// Watch for _tag changes
|
|
29
|
-
watch(() => props.state
|
|
29
|
+
watch(() => props.state, (newTag, oldTag) => {
|
|
30
30
|
if (newTag === null) {
|
|
31
31
|
props.field.setValue(null as DeepValue<From, Name>)
|
|
32
32
|
}
|
|
@@ -762,10 +762,26 @@ export const useOmegaForm = <
|
|
|
762
762
|
if (!values) return undefined
|
|
763
763
|
const normalized: any = { ...values }
|
|
764
764
|
|
|
765
|
+
// Helper to get nested value from object using dot notation
|
|
766
|
+
const getNestedValue = (obj: any, path: string) => {
|
|
767
|
+
return path.split(".").reduce((current, key) => current?.[key], obj)
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// Helper to set nested value in object using dot notation
|
|
771
|
+
const setNestedValue = (obj: any, path: string, value: any) => {
|
|
772
|
+
const parts = path.split(".")
|
|
773
|
+
const last = parts.pop()!
|
|
774
|
+
const target = parts.reduce((current, key) => {
|
|
775
|
+
if (!current[key]) current[key] = {}
|
|
776
|
+
return current[key]
|
|
777
|
+
}, obj)
|
|
778
|
+
target[last] = value
|
|
779
|
+
}
|
|
780
|
+
|
|
765
781
|
// Process all fields in the schema metadata
|
|
766
782
|
for (const key in meta) {
|
|
767
783
|
const fieldMeta = meta[key as keyof typeof meta]
|
|
768
|
-
const value = normalized
|
|
784
|
+
const value = getNestedValue(normalized, key)
|
|
769
785
|
|
|
770
786
|
// Check if the value is falsy (but not boolean false or zero)
|
|
771
787
|
const isFalsyButNotZero = value == null || value === false || value === "" || Number.isNaN(value)
|
|
@@ -779,7 +795,7 @@ export const useOmegaForm = <
|
|
|
779
795
|
) {
|
|
780
796
|
// If value is missing or falsy, set to null or undefined based on schema
|
|
781
797
|
if (value === undefined || isFalsy) {
|
|
782
|
-
normalized
|
|
798
|
+
setNestedValue(normalized, key, fieldMeta.nullableOrUndefined === "undefined" ? undefined : null)
|
|
783
799
|
}
|
|
784
800
|
}
|
|
785
801
|
}
|
|
@@ -791,11 +807,27 @@ export const useOmegaForm = <
|
|
|
791
807
|
const extractDefaultsFromAST = (schemaObj: any): any => {
|
|
792
808
|
const result: Record<string, any> = {}
|
|
793
809
|
|
|
794
|
-
//
|
|
795
|
-
|
|
810
|
+
// If this schema has a .make() method (like ExtendedClass), use it to get complete defaults
|
|
811
|
+
// This is more reliable than manually extracting fields, especially for classes
|
|
812
|
+
if (typeof schemaObj?.make === "function") {
|
|
813
|
+
try {
|
|
814
|
+
const instance = schemaObj.make({})
|
|
815
|
+
// For ExtendedClass, the instance is already in the correct encoded format
|
|
816
|
+
return instance
|
|
817
|
+
} catch {
|
|
818
|
+
// If make() fails, fall through to manual extraction
|
|
819
|
+
}
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
// Check if this schema is a union - check both direct property and AST
|
|
823
|
+
const unionMembers = schemaObj?.members
|
|
824
|
+
|| (schemaObj?.ast?._tag === "Union" && schemaObj.ast.types
|
|
825
|
+
? schemaObj.ast.types.map((t: any) => S.make(t))
|
|
826
|
+
: null)
|
|
827
|
+
if (unionMembers && Array.isArray(unionMembers)) {
|
|
796
828
|
// For unions, we try to find the first member that has a complete set of defaults
|
|
797
829
|
// Priority is given to members with default values for discriminator fields
|
|
798
|
-
for (const member of
|
|
830
|
+
for (const member of unionMembers as any[]) {
|
|
799
831
|
const memberDefaults = extractDefaultsFromAST(member)
|
|
800
832
|
if (Object.keys(memberDefaults).length > 0) {
|
|
801
833
|
// Check if this member has a default value for a discriminator field (like _tag)
|
|
@@ -879,46 +911,15 @@ export const useOmegaForm = <
|
|
|
879
911
|
}
|
|
880
912
|
|
|
881
913
|
const defaultValues = computed(() => {
|
|
882
|
-
// Normalize tanstack default values at the beginning
|
|
883
|
-
const normalizedTanstackDefaults = extractSchemaDefaults(
|
|
884
|
-
normalizeDefaultValues(
|
|
885
|
-
tanstackFormOptions?.defaultValues
|
|
886
|
-
)
|
|
887
|
-
)
|
|
888
|
-
|
|
889
|
-
if (
|
|
890
|
-
normalizedTanstackDefaults
|
|
891
|
-
&& !omegaConfig?.persistency?.overrideDefaultValues
|
|
892
|
-
) {
|
|
893
|
-
// defaultValues from tanstack are not partial,
|
|
894
|
-
// so if ovverrideDefaultValues is false we return the normalized values
|
|
895
|
-
return normalizedTanstackDefaults
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
// we are here because there are no default values from tankstack
|
|
899
|
-
// or because omegaConfig?.persistency?.overrideDefaultValues is true
|
|
900
|
-
|
|
901
914
|
// will contain what we get from querystring or local/session storage
|
|
902
915
|
let defValuesPatch
|
|
903
916
|
|
|
904
917
|
const persistency = omegaConfig?.persistency
|
|
905
|
-
if (!persistency?.policies || persistency.policies.length === 0) return {}
|
|
906
|
-
if (persistency.policies.includes("querystring")) {
|
|
907
|
-
try {
|
|
908
|
-
const params = new URLSearchParams(window.location.search)
|
|
909
|
-
const value = params.get(persistencyKey.value)
|
|
910
|
-
clearUrlParams()
|
|
911
|
-
if (value) {
|
|
912
|
-
defValuesPatch = JSON.parse(value)
|
|
913
|
-
}
|
|
914
|
-
} catch (error) {
|
|
915
|
-
console.error(error)
|
|
916
|
-
}
|
|
917
|
-
}
|
|
918
918
|
|
|
919
919
|
if (
|
|
920
920
|
// query string has higher priority than local/session storage
|
|
921
|
-
|
|
921
|
+
persistency?.policies
|
|
922
|
+
&& !defValuesPatch
|
|
922
923
|
&& (persistency.policies.includes("local")
|
|
923
924
|
|| persistency.policies.includes("session"))
|
|
924
925
|
) {
|
|
@@ -937,16 +938,30 @@ export const useOmegaForm = <
|
|
|
937
938
|
}
|
|
938
939
|
}
|
|
939
940
|
}
|
|
941
|
+
if (persistency?.policies && persistency.policies.includes("querystring")) {
|
|
942
|
+
try {
|
|
943
|
+
const params = new URLSearchParams(window.location.search)
|
|
944
|
+
const value = params.get(persistencyKey.value)
|
|
945
|
+
clearUrlParams()
|
|
946
|
+
if (value) {
|
|
947
|
+
defValuesPatch = deepMerge(defValuesPatch || {}, JSON.parse(value))
|
|
948
|
+
}
|
|
949
|
+
} catch (error) {
|
|
950
|
+
console.error(error)
|
|
951
|
+
}
|
|
952
|
+
}
|
|
940
953
|
|
|
941
954
|
// to be sure we have a valid object at the end of the gathering process
|
|
942
|
-
defValuesPatch ??=
|
|
955
|
+
defValuesPatch ??= {}
|
|
943
956
|
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
957
|
+
// we just return what we gathered from the query/storage
|
|
958
|
+
return extractSchemaDefaults(
|
|
959
|
+
normalizeDefaultValues(
|
|
960
|
+
omegaConfig?.persistency?.overrideDefaultValues
|
|
961
|
+
? deepMerge(tanstackFormOptions?.defaultValues || {}, defValuesPatch)
|
|
962
|
+
: deepMerge(defValuesPatch, tanstackFormOptions?.defaultValues || {})
|
|
963
|
+
)
|
|
964
|
+
)
|
|
950
965
|
})
|
|
951
966
|
|
|
952
967
|
const wrapWithSpan = (span: api.Span | undefined, toWrap: () => any) => {
|
|
@@ -1,34 +0,0 @@
|
|
|
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
|
-
import { useStore as b } from "@tanstack/vue-form";
|
|
3
|
-
import { usePreventClose as p } from "./vue-components.es11.js";
|
|
4
|
-
import { getOmegaStore as c } from "./vue-components.es53.js";
|
|
5
|
-
const S = ["disabled"], V = /* @__PURE__ */ m({
|
|
6
|
-
__name: "OmegaWrapper",
|
|
7
|
-
props: {
|
|
8
|
-
form: {},
|
|
9
|
-
disabled: { type: Boolean },
|
|
10
|
-
subscribe: {}
|
|
11
|
-
},
|
|
12
|
-
setup(o) {
|
|
13
|
-
const e = o, i = b(
|
|
14
|
-
e.form.store,
|
|
15
|
-
(t) => t.isSubmitting
|
|
16
|
-
), n = c(
|
|
17
|
-
e.form,
|
|
18
|
-
e.subscribe
|
|
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
|
|
26
|
-
}, [
|
|
27
|
-
a(t.$slots, "default", { subscribedValues: s(n) }, void 0, !0)
|
|
28
|
-
], 8, S)
|
|
29
|
-
], 32));
|
|
30
|
-
}
|
|
31
|
-
});
|
|
32
|
-
export {
|
|
33
|
-
V as default
|
|
34
|
-
};
|