@effect-app/vue-components 2.4.12 → 2.6.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 +1 -1
- package/dist/vue-components.es10.js +123 -115
- package/dist/vue-components.es12.js +14 -14
- 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 +14 -14
- package/package.json +3 -3
- package/src/components/OmegaForm/OmegaFormStuff.ts +9 -8
- package/src/components/OmegaForm/OmegaInternalInput.vue +2 -2
- package/src/components/OmegaForm/useOmegaForm.ts +17 -5
- 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,9 +1,9 @@
|
|
|
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 { defineComponent as
|
|
2
|
+
import { defineComponent as M, computed as n, getCurrentInstance as N, useAttrs as S, useSlots as k, useId as q, renderSlot as m, 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
|
-
const H = /* @__PURE__ */
|
|
6
|
+
const H = /* @__PURE__ */ M({
|
|
7
7
|
inheritAttrs: !1,
|
|
8
8
|
__name: "OmegaInternalInput",
|
|
9
9
|
props: {
|
|
@@ -19,24 +19,24 @@ const H = /* @__PURE__ */ N({
|
|
|
19
19
|
options: { default: void 0 }
|
|
20
20
|
},
|
|
21
21
|
setup(p) {
|
|
22
|
-
const e = p, l = n(() => e.required ?? e?.meta?.required), f =
|
|
22
|
+
const e = p, l = n(() => e.required ?? e?.meta?.required), f = N()?.appContext.components.VTextField, c = S(), g = k(), v = n(() => {
|
|
23
23
|
const { class: t, ...a } = c;
|
|
24
24
|
return a;
|
|
25
|
-
}), o =
|
|
25
|
+
}), o = q(), h = e.field, y = z(h.store, (t) => t), b = n(() => e.type ? e.type : e.meta?.type === "string" ? e.meta.format === "email" ? "email" : "string" : e.meta?.type || "unknown");
|
|
26
26
|
e.register(n(() => ({ name: e.field.name, label: e.label, id: o })));
|
|
27
27
|
const C = n(() => y.value.meta.errors ?? []), i = n(
|
|
28
28
|
() => (
|
|
29
29
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
30
30
|
C.value.map((t) => t?.message).filter(Boolean)
|
|
31
31
|
)
|
|
32
|
-
),
|
|
33
|
-
|
|
32
|
+
), x = (t) => t == null || t === !1 || t === "" || Number.isNaN(t), _ = (t) => {
|
|
33
|
+
x(t) && e.meta?.type !== "boolean" && e.meta?.nullableOrUndefined ? e.field.handleChange(
|
|
34
34
|
e.meta.nullableOrUndefined === "undefined" ? void 0 : null
|
|
35
35
|
) : e.field.handleChange(t), e.field.setMeta((a) => ({ ...a, errorMap: { ...a.errorMap, onSubmit: void 0 } }));
|
|
36
36
|
}, P = (t) => {
|
|
37
37
|
const a = {
|
|
38
38
|
get(E, $, W) {
|
|
39
|
-
return $ === "handleChange" ?
|
|
39
|
+
return $ === "handleChange" ? _ : Reflect.get(...arguments);
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
return new Proxy(t, a);
|
|
@@ -46,8 +46,8 @@ const H = /* @__PURE__ */ N({
|
|
|
46
46
|
required: l.value,
|
|
47
47
|
minLength: e.meta?.type === "string" && e.meta?.minLength,
|
|
48
48
|
maxLength: e.meta?.type === "string" && e.meta?.maxLength,
|
|
49
|
-
max: e.meta?.type === "number" && e.meta?.maximum,
|
|
50
|
-
min: e.meta?.type === "number" && e.meta?.minimum,
|
|
49
|
+
max: e.meta?.type === "number" && (e.meta?.maximum || e.meta?.exclusiveMaximum),
|
|
50
|
+
min: e.meta?.type === "number" && (e.meta?.minimum || e.meta?.exclusiveMinimum),
|
|
51
51
|
errorMessages: i.value,
|
|
52
52
|
error: !!i.value.length,
|
|
53
53
|
type: b.value,
|
|
@@ -60,10 +60,10 @@ const H = /* @__PURE__ */ N({
|
|
|
60
60
|
field: P(e.field)
|
|
61
61
|
}));
|
|
62
62
|
return (t, a) => m(t.$slots, "default", s(d({ ...r.value.inputProps, field: r.value.field, state: r.value.state })), () => [
|
|
63
|
-
|
|
64
|
-
class:
|
|
63
|
+
B("div", {
|
|
64
|
+
class: w(t.$attrs.class)
|
|
65
65
|
}, [
|
|
66
|
-
A(f) ? (F(),
|
|
66
|
+
A(f) ? (F(), I(T, s(O({ key: 0 }, { ...v.value, ...r.value, class: e.inputClass })), R({ _: 2 }, [
|
|
67
67
|
t.$slots.label ? {
|
|
68
68
|
name: "label",
|
|
69
69
|
fn: V((u) => [
|
|
@@ -71,7 +71,7 @@ const H = /* @__PURE__ */ N({
|
|
|
71
71
|
]),
|
|
72
72
|
key: "0"
|
|
73
73
|
} : void 0
|
|
74
|
-
]), 1040)) :
|
|
74
|
+
]), 1040)) : L("", !0)
|
|
75
75
|
], 2)
|
|
76
76
|
]);
|
|
77
77
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@effect-app/vue-components",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.0",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@mdi/js": "^7.4.47",
|
|
6
6
|
"effect": "^3.18.0",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"highlight.js": "^11.11.1",
|
|
54
54
|
"mitt": "^3.0.1",
|
|
55
55
|
"vue3-highlightjs": "^1.0.5",
|
|
56
|
-
"
|
|
57
|
-
"effect-app": "
|
|
56
|
+
"effect-app": "3.12.0",
|
|
57
|
+
"@effect-app/vue": "2.92.2"
|
|
58
58
|
},
|
|
59
59
|
"scripts": {
|
|
60
60
|
"build": "pnpm build:run",
|
|
@@ -115,6 +115,7 @@ export type TypeOverride =
|
|
|
115
115
|
| "range"
|
|
116
116
|
| "password"
|
|
117
117
|
| "email"
|
|
118
|
+
| "date"
|
|
118
119
|
|
|
119
120
|
export interface OmegaError {
|
|
120
121
|
label: string
|
|
@@ -771,7 +772,7 @@ export const generateInputStandardSchemaFromFieldMeta = (
|
|
|
771
772
|
})
|
|
772
773
|
}
|
|
773
774
|
|
|
774
|
-
if (meta.maxLength) {
|
|
775
|
+
if (typeof meta.maxLength === "number") {
|
|
775
776
|
schema = schema.pipe(S.maxLength(meta.maxLength)).annotations({
|
|
776
777
|
message: () =>
|
|
777
778
|
trans("validation.string.maxLength", {
|
|
@@ -779,7 +780,7 @@ export const generateInputStandardSchemaFromFieldMeta = (
|
|
|
779
780
|
})
|
|
780
781
|
})
|
|
781
782
|
}
|
|
782
|
-
if (meta.minLength) {
|
|
783
|
+
if (typeof meta.minLength === "number") {
|
|
783
784
|
schema = schema.pipe(S.minLength(meta.minLength)).annotations({
|
|
784
785
|
message: () =>
|
|
785
786
|
trans("validation.string.minLength", {
|
|
@@ -799,16 +800,16 @@ export const generateInputStandardSchemaFromFieldMeta = (
|
|
|
799
800
|
message: () => trans("validation.empty")
|
|
800
801
|
})
|
|
801
802
|
}
|
|
802
|
-
if (meta.minimum) {
|
|
803
|
+
if (typeof meta.minimum === "number") {
|
|
803
804
|
schema = schema.pipe(S.greaterThanOrEqualTo(meta.minimum)).annotations({
|
|
804
805
|
message: () =>
|
|
805
|
-
trans("validation.number.min", {
|
|
806
|
+
trans(meta.minimum === 0 ? "validation.number.positive" : "validation.number.min", {
|
|
806
807
|
minimum: meta.minimum,
|
|
807
808
|
isExclusive: true
|
|
808
809
|
})
|
|
809
810
|
})
|
|
810
811
|
}
|
|
811
|
-
if (meta.maximum) {
|
|
812
|
+
if (typeof meta.maximum === "number") {
|
|
812
813
|
schema = schema.pipe(S.lessThanOrEqualTo(meta.maximum)).annotations({
|
|
813
814
|
message: () =>
|
|
814
815
|
trans("validation.number.max", {
|
|
@@ -817,16 +818,16 @@ export const generateInputStandardSchemaFromFieldMeta = (
|
|
|
817
818
|
})
|
|
818
819
|
})
|
|
819
820
|
}
|
|
820
|
-
if (meta.exclusiveMinimum) {
|
|
821
|
+
if (typeof meta.exclusiveMinimum === "number") {
|
|
821
822
|
schema = schema.pipe(S.greaterThan(meta.exclusiveMinimum)).annotations({
|
|
822
823
|
message: () =>
|
|
823
|
-
trans("validation.number.min", {
|
|
824
|
+
trans(meta.exclusiveMinimum === 0 ? "validation.number.positive" : "validation.number.min", {
|
|
824
825
|
minimum: meta.exclusiveMinimum,
|
|
825
826
|
isExclusive: false
|
|
826
827
|
})
|
|
827
828
|
})
|
|
828
829
|
}
|
|
829
|
-
if (meta.exclusiveMaximum) {
|
|
830
|
+
if (typeof meta.exclusiveMaximum === "number") {
|
|
830
831
|
schema = schema.pipe(S.lessThan(meta.exclusiveMaximum)).annotations({
|
|
831
832
|
message: () =>
|
|
832
833
|
trans("validation.number.max", {
|
|
@@ -154,8 +154,8 @@ const inputProps: ComputedRef<InputProps<From, Name>> = computed(() => ({
|
|
|
154
154
|
required: isRequired.value,
|
|
155
155
|
minLength: props.meta?.type === "string" && props.meta?.minLength,
|
|
156
156
|
maxLength: props.meta?.type === "string" && props.meta?.maxLength,
|
|
157
|
-
max: props.meta?.type === "number" && props.meta?.maximum,
|
|
158
|
-
min: props.meta?.type === "number" && props.meta?.minimum,
|
|
157
|
+
max: props.meta?.type === "number" && (props.meta?.maximum || props.meta?.exclusiveMaximum),
|
|
158
|
+
min: props.meta?.type === "number" && (props.meta?.minimum || props.meta?.exclusiveMinimum),
|
|
159
159
|
errorMessages: errors.value,
|
|
160
160
|
error: !!errors.value.length,
|
|
161
161
|
type: fieldType.value,
|
|
@@ -677,7 +677,8 @@ export const useOmegaForm = <
|
|
|
677
677
|
// Normalize default values based on schema metadata
|
|
678
678
|
// Convert empty strings to null/undefined for nullable fields
|
|
679
679
|
// Also initialize missing nullable fields with null/undefined
|
|
680
|
-
const normalizeDefaultValues = (values
|
|
680
|
+
const normalizeDefaultValues = (values?: Partial<From>): Partial<From> | undefined => {
|
|
681
|
+
if (!values) return undefined
|
|
681
682
|
const normalized: any = { ...values }
|
|
682
683
|
|
|
683
684
|
// Process all fields in the schema metadata
|
|
@@ -705,11 +706,22 @@ export const useOmegaForm = <
|
|
|
705
706
|
return normalized
|
|
706
707
|
}
|
|
707
708
|
|
|
709
|
+
// Extract default values from schema constructors (e.g., withDefaultConstructor)
|
|
710
|
+
const extractSchemaDefaults = (defaultValues: Partial<From> = {}) => {
|
|
711
|
+
try {
|
|
712
|
+
// Note: Partial schemas don't have .make() method yet (https://github.com/Effect-TS/effect/issues/4222)
|
|
713
|
+
if ("make" in schema && typeof (schema as any).make === "function") {
|
|
714
|
+
return (schema as any).make(defaultValues, { disableValidation: true })
|
|
715
|
+
}
|
|
716
|
+
} catch (error) {
|
|
717
|
+
console.warn("Could not extract schema constructor defaults:", error)
|
|
718
|
+
return {}
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
|
|
708
722
|
const defaultValues = computed(() => {
|
|
709
723
|
// Normalize tanstack default values at the beginning
|
|
710
|
-
const normalizedTanstackDefaults = tanstackFormOptions?.defaultValues
|
|
711
|
-
? normalizeDefaultValues(tanstackFormOptions.defaultValues)
|
|
712
|
-
: undefined
|
|
724
|
+
const normalizedTanstackDefaults = extractSchemaDefaults(normalizeDefaultValues(tanstackFormOptions?.defaultValues))
|
|
713
725
|
|
|
714
726
|
if (
|
|
715
727
|
normalizedTanstackDefaults
|
|
@@ -764,7 +776,7 @@ export const useOmegaForm = <
|
|
|
764
776
|
}
|
|
765
777
|
|
|
766
778
|
// to be sure we have a valid object at the end of the gathering process
|
|
767
|
-
defValuesPatch ??= {}
|
|
779
|
+
defValuesPatch ??= extractSchemaDefaults({})
|
|
768
780
|
|
|
769
781
|
if (!normalizedTanstackDefaults) {
|
|
770
782
|
// we just return what we gathered from the query/storage
|
|
@@ -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
|
-
};
|