@effect-app/vue-components 2.7.1 → 2.7.3
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 +6 -6
- package/dist/types/components/OmegaForm/OmegaTaggedUnionInternal.vue.d.ts +2 -0
- package/dist/vue-components.es10.js +193 -194
- package/dist/vue-components.es17.js +1 -1
- package/dist/vue-components.es18.js +1 -1
- package/dist/vue-components.es21.js +2 -2
- package/dist/vue-components.es22.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 +8 -7
- package/dist/vue-components.es9.js +10 -9
- package/package.json +1 -1
- package/src/components/OmegaForm/OmegaTaggedUnion.vue +2 -1
- package/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +5 -0
- package/src/components/OmegaForm/useOmegaForm.ts +41 -42
- 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,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as d, createBlock as u, openBlock as g, unref as l, withCtx as o, renderSlot as n, createVNode as
|
|
1
|
+
import { defineComponent as d, createBlock as u, openBlock as g, unref as l, withCtx as o, renderSlot as n, createVNode as f, createCommentVNode as c, normalizeProps as r, guardReactiveProps as s, createSlots as $, renderList as y } from "vue";
|
|
2
2
|
import C from "./vue-components.es9.js";
|
|
3
3
|
const h = /* @__PURE__ */ d({
|
|
4
4
|
__name: "OmegaTaggedUnion",
|
|
@@ -14,8 +14,8 @@ const h = /* @__PURE__ */ d({
|
|
|
14
14
|
name: e.name ? `${e.name}._tag` : "_tag"
|
|
15
15
|
}, {
|
|
16
16
|
default: o((t) => [
|
|
17
|
-
n(a.$slots, "OmegaCustomInput", s(
|
|
18
|
-
|
|
17
|
+
n(a.$slots, "OmegaCustomInput", r(s(t)), () => [
|
|
18
|
+
f(l(e.form).Input, {
|
|
19
19
|
name: e.name ? `${e.name}._tag` : "_tag",
|
|
20
20
|
label: e.label,
|
|
21
21
|
type: e.type ?? "select",
|
|
@@ -23,18 +23,19 @@ const h = /* @__PURE__ */ d({
|
|
|
23
23
|
}, null, 8, ["name", "label", "type", "options"])
|
|
24
24
|
]),
|
|
25
25
|
n(a.$slots, "default"),
|
|
26
|
-
|
|
26
|
+
f(C, {
|
|
27
27
|
field: t.field,
|
|
28
28
|
state: t.state.value,
|
|
29
|
-
name: e.name
|
|
29
|
+
name: e.name,
|
|
30
|
+
form: e.form
|
|
30
31
|
}, $({ _: 2 }, [
|
|
31
32
|
y(a.$slots, (k, m) => ({
|
|
32
33
|
name: m,
|
|
33
34
|
fn: o((i) => [
|
|
34
|
-
n(a.$slots, m, s(
|
|
35
|
+
n(a.$slots, m, r(s(i)))
|
|
35
36
|
])
|
|
36
37
|
}))
|
|
37
|
-
]), 1032, ["field", "state", "name"]),
|
|
38
|
+
]), 1032, ["field", "state", "name", "form"]),
|
|
38
39
|
t.state.value ? n(a.$slots, "OmegaCommon", { key: 0 }) : c("", !0)
|
|
39
40
|
]),
|
|
40
41
|
_: 3
|
|
@@ -1,20 +1,21 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
const
|
|
1
|
+
import { defineComponent as s, watch as m, renderSlot as o, createCommentVNode as r, normalizeProps as f, mergeProps as i } from "vue";
|
|
2
|
+
const d = /* @__PURE__ */ s({
|
|
3
3
|
__name: "OmegaTaggedUnionInternal",
|
|
4
4
|
props: {
|
|
5
5
|
state: {},
|
|
6
6
|
field: {},
|
|
7
|
-
name: {}
|
|
7
|
+
name: {},
|
|
8
|
+
form: {}
|
|
8
9
|
},
|
|
9
10
|
setup(e) {
|
|
10
|
-
const a = e;
|
|
11
|
-
return
|
|
12
|
-
t === null && a.field.setValue(null), t !== n && setTimeout(() => {
|
|
11
|
+
const a = e, l = a.form.useStore(({ values: t }) => t);
|
|
12
|
+
return m(() => a.state, (t, n) => {
|
|
13
|
+
t === null && a.field.setValue(null), t !== n && (a.form.reset(l.value), setTimeout(() => {
|
|
13
14
|
a.field.validate("change");
|
|
14
|
-
}, 0);
|
|
15
|
-
}), (t, n) => e.state ?
|
|
15
|
+
}, 0));
|
|
16
|
+
}), (t, n) => e.state ? o(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, f(i({ key: 0 }, { field: e.field, state: e.state }))) : r("", !0);
|
|
16
17
|
}
|
|
17
18
|
});
|
|
18
19
|
export {
|
|
19
|
-
|
|
20
|
+
d as default
|
|
20
21
|
};
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@ defineProps<{
|
|
|
23
23
|
</script>
|
|
24
24
|
|
|
25
25
|
<template>
|
|
26
|
-
<form.Field :name="
|
|
26
|
+
<form.Field :name="name ? `${name}._tag` : '_tag'">
|
|
27
27
|
<template #default="inputProps">
|
|
28
28
|
<slot
|
|
29
29
|
name="OmegaCustomInput"
|
|
@@ -41,6 +41,7 @@ defineProps<{
|
|
|
41
41
|
:field="inputProps.field as any"
|
|
42
42
|
:state="inputProps.state.value"
|
|
43
43
|
:name="name"
|
|
44
|
+
:form="form"
|
|
44
45
|
>
|
|
45
46
|
<template
|
|
46
47
|
v-for="(_, slotname) in $slots"
|
|
@@ -18,19 +18,24 @@
|
|
|
18
18
|
import { type DeepKeys, type DeepValue } from "@tanstack/vue-form"
|
|
19
19
|
import { watch } from "vue"
|
|
20
20
|
import { type OmegaFieldInternalApi } from "./InputProps"
|
|
21
|
+
import { type useOmegaForm } from "./useOmegaForm"
|
|
21
22
|
|
|
22
23
|
const props = defineProps<{
|
|
23
24
|
state: DeepValue<From, Name>
|
|
24
25
|
field: OmegaFieldInternalApi<From, Name>
|
|
25
26
|
name?: DeepKeys<From>
|
|
27
|
+
form: ReturnType<typeof useOmegaForm<From, To>>
|
|
26
28
|
}>()
|
|
27
29
|
|
|
30
|
+
const values = props.form.useStore(({ values }) => values)
|
|
31
|
+
|
|
28
32
|
// Watch for _tag changes
|
|
29
33
|
watch(() => props.state, (newTag, oldTag) => {
|
|
30
34
|
if (newTag === null) {
|
|
31
35
|
props.field.setValue(null as DeepValue<From, Name>)
|
|
32
36
|
}
|
|
33
37
|
if (newTag !== oldTag) {
|
|
38
|
+
props.form.reset(values.value)
|
|
34
39
|
setTimeout(() => {
|
|
35
40
|
props.field.validate("change")
|
|
36
41
|
}, 0)
|
|
@@ -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
|
}
|
|
@@ -895,46 +911,15 @@ export const useOmegaForm = <
|
|
|
895
911
|
}
|
|
896
912
|
|
|
897
913
|
const defaultValues = computed(() => {
|
|
898
|
-
// Normalize tanstack default values at the beginning
|
|
899
|
-
const normalizedTanstackDefaults = extractSchemaDefaults(
|
|
900
|
-
normalizeDefaultValues(
|
|
901
|
-
tanstackFormOptions?.defaultValues
|
|
902
|
-
)
|
|
903
|
-
)
|
|
904
|
-
|
|
905
|
-
if (
|
|
906
|
-
normalizedTanstackDefaults
|
|
907
|
-
&& !omegaConfig?.persistency?.overrideDefaultValues
|
|
908
|
-
) {
|
|
909
|
-
// defaultValues from tanstack are not partial,
|
|
910
|
-
// so if ovverrideDefaultValues is false we return the normalized values
|
|
911
|
-
return normalizedTanstackDefaults
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
// we are here because there are no default values from tankstack
|
|
915
|
-
// or because omegaConfig?.persistency?.overrideDefaultValues is true
|
|
916
|
-
|
|
917
914
|
// will contain what we get from querystring or local/session storage
|
|
918
915
|
let defValuesPatch
|
|
919
916
|
|
|
920
917
|
const persistency = omegaConfig?.persistency
|
|
921
|
-
if (!persistency?.policies || persistency.policies.length === 0) return {}
|
|
922
|
-
if (persistency.policies.includes("querystring")) {
|
|
923
|
-
try {
|
|
924
|
-
const params = new URLSearchParams(window.location.search)
|
|
925
|
-
const value = params.get(persistencyKey.value)
|
|
926
|
-
clearUrlParams()
|
|
927
|
-
if (value) {
|
|
928
|
-
defValuesPatch = JSON.parse(value)
|
|
929
|
-
}
|
|
930
|
-
} catch (error) {
|
|
931
|
-
console.error(error)
|
|
932
|
-
}
|
|
933
|
-
}
|
|
934
918
|
|
|
935
919
|
if (
|
|
936
920
|
// query string has higher priority than local/session storage
|
|
937
|
-
|
|
921
|
+
persistency?.policies
|
|
922
|
+
&& !defValuesPatch
|
|
938
923
|
&& (persistency.policies.includes("local")
|
|
939
924
|
|| persistency.policies.includes("session"))
|
|
940
925
|
) {
|
|
@@ -953,16 +938,30 @@ export const useOmegaForm = <
|
|
|
953
938
|
}
|
|
954
939
|
}
|
|
955
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
|
+
}
|
|
956
953
|
|
|
957
954
|
// to be sure we have a valid object at the end of the gathering process
|
|
958
|
-
defValuesPatch ??=
|
|
955
|
+
defValuesPatch ??= {}
|
|
959
956
|
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
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
|
+
)
|
|
966
965
|
})
|
|
967
966
|
|
|
968
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
|
-
};
|