@effect-app/vue-components 3.0.0 → 3.0.1

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.
@@ -1,5 +1,5 @@
1
1
  import { Exit as c, Runtime as u } from "effect";
2
- import { dual as n, isFunction as m } from "./vue-components.es30.js";
2
+ import { dual as n, isFunction as m } from "./vue-components.es32.js";
3
3
  const i = Symbol.for("clone-trait"), a = n(2, (e, t) => i in e ? e[i](t) : Object.setPrototypeOf(t, Object.getPrototypeOf(e)));
4
4
  n(2, (e, t) => a(e, { ...e, ...m(t) ? t(e) : t }));
5
5
  const p = (e, t) => new Promise((o, s) => e.addObserver((r) => {
@@ -1,7 +1,7 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var a=document.createElement("style");if(a.appendChild(document.createTextNode('.v-enter-from[data-v-6b2bf87e],.v-leave-to[data-v-6b2bf87e]{max-height:0px;grid-template-rows:0fr;opacity:0}.v-enter-active[data-v-6b2bf87e],.v-leave-active[data-v-6b2bf87e]{display:grid;transition:all .15s}.v-enter-to[data-v-6b2bf87e],.v-leave-from[data-v-6b2bf87e]{grid-template-rows:1fr;max-height:50vh;opacity:1}.error-alert[data-v-6b2bf87e]{transition-behavior:allow-discrete;display:grid;overflow:hidden;min-height:0}.error-alert>*[data-v-6b2bf87e]{min-height:0}.error-list[data-v-6b2bf87e]{list-style-position:inside}.error-list [data-v-6b2bf87e]::marker{margin:0;padding:0}.error-alert-content[data-v-6b2bf87e]{background-color:var(--error-background, #fff5f5);color:var(--error-color, #c92a2a);padding:1em}.error-link[data-v-6b2bf87e]{font-weight:700;position:relative;color:var(--error-color, #c92a2a);cursor:pointer}.error-link[data-v-6b2bf87e]:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(from var(--error-color, #c92a2a) r g b / .5)}.text-h6[data-v-6b2bf87e]{font-weight:700;font-size:1.25em}.error-message[data-v-6b2bf87e]{font-style:italic}.error-item[data-v-6b2bf87e]{margin-bottom:.5em;overflow:hidden}.error-item>div[data-v-6b2bf87e]{float:right;width:100%;max-width:calc(100% - 1.5em)}.container[data-v-6b2bf87e]{display:flex;gap:1.5em}.container svg[data-v-6b2bf87e]{width:3em}.container .single-error[data-v-6b2bf87e]{display:inline-block}')),document.head.appendChild(a),window.customElements){const e=window.customElements.define;window.customElements.define=function(i,t){const r=t.prototype.connectedCallback;return t.prototype.connectedCallback=function(){if(r&&r.call(this),this.shadowRoot){const o=document.createElement("style");o.appendChild(document.createTextNode('.v-enter-from[data-v-6b2bf87e],.v-leave-to[data-v-6b2bf87e]{max-height:0px;grid-template-rows:0fr;opacity:0}.v-enter-active[data-v-6b2bf87e],.v-leave-active[data-v-6b2bf87e]{display:grid;transition:all .15s}.v-enter-to[data-v-6b2bf87e],.v-leave-from[data-v-6b2bf87e]{grid-template-rows:1fr;max-height:50vh;opacity:1}.error-alert[data-v-6b2bf87e]{transition-behavior:allow-discrete;display:grid;overflow:hidden;min-height:0}.error-alert>*[data-v-6b2bf87e]{min-height:0}.error-list[data-v-6b2bf87e]{list-style-position:inside}.error-list [data-v-6b2bf87e]::marker{margin:0;padding:0}.error-alert-content[data-v-6b2bf87e]{background-color:var(--error-background, #fff5f5);color:var(--error-color, #c92a2a);padding:1em}.error-link[data-v-6b2bf87e]{font-weight:700;position:relative;color:var(--error-color, #c92a2a);cursor:pointer}.error-link[data-v-6b2bf87e]:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:rgba(from var(--error-color, #c92a2a) r g b / .5)}.text-h6[data-v-6b2bf87e]{font-weight:700;font-size:1.25em}.error-message[data-v-6b2bf87e]{font-style:italic}.error-item[data-v-6b2bf87e]{margin-bottom:.5em;overflow:hidden}.error-item>div[data-v-6b2bf87e]{float:right;width:100%;max-width:calc(100% - 1.5em)}.container[data-v-6b2bf87e]{display:flex;gap:1.5em}.container svg[data-v-6b2bf87e]{width:3em}.container .single-error[data-v-6b2bf87e]{display:inline-block}')),this.shadowRoot.appendChild(o)}},e.call(window.customElements,i,t)}}}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
- import r from "./vue-components.es33.js";
2
+ import r from "./vue-components.es35.js";
3
3
 
4
- import o from "./vue-components.es35.js";
4
+ import o from "./vue-components.es37.js";
5
5
  const m = /* @__PURE__ */ o(r, [["__scopeId", "data-v-6b2bf87e"]]);
6
6
  export {
7
7
  m as default
@@ -1,7 +1,7 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var n=document.createElement("style");if(n.appendChild(document.createTextNode("fieldset[data-v-8c9cb27c]{display:contents}fieldset[disabled][data-v-8c9cb27c]>*{pointer-events:none}")),document.head.appendChild(n),window.customElements){const e=window.customElements.define;window.customElements.define=function(o,t){const d=t.prototype.connectedCallback;return t.prototype.connectedCallback=function(){if(d&&d.call(this),this.shadowRoot){const c=document.createElement("style");c.appendChild(document.createTextNode("fieldset[data-v-8c9cb27c]{display:contents}fieldset[disabled][data-v-8c9cb27c]>*{pointer-events:none}")),this.shadowRoot.appendChild(c)}},e.call(window.customElements,o,t)}}}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
- import o from "./vue-components.es36.js";
2
+ import o from "./vue-components.es38.js";
3
3
 
4
- import m from "./vue-components.es35.js";
4
+ import m from "./vue-components.es37.js";
5
5
  const a = /* @__PURE__ */ m(o, [["__scopeId", "data-v-8c9cb27c"]]);
6
6
  export {
7
7
  a as default
@@ -1,44 +1,194 @@
1
- const f = (c) => typeof c == "function", a = function(c, r) {
2
- switch (c) {
3
- case 0:
4
- case 1:
5
- throw new RangeError(`Invalid arity ${c}`);
6
- case 2:
7
- return function(n, t) {
8
- return arguments.length >= 2 ? r(n, t) : function(e) {
9
- return r(e, n);
10
- };
11
- };
12
- case 3:
13
- return function(n, t, e) {
14
- return arguments.length >= 3 ? r(n, t, e) : function(u) {
15
- return r(u, n, t);
16
- };
17
- };
18
- case 4:
19
- return function(n, t, e, u) {
20
- return arguments.length >= 4 ? r(n, t, e, u) : function(i) {
21
- return r(i, n, t, e);
22
- };
23
- };
24
- case 5:
25
- return function(n, t, e, u, i) {
26
- return arguments.length >= 5 ? r(n, t, e, u, i) : function(s) {
27
- return r(s, n, t, e, u);
28
- };
29
- };
30
- default:
31
- return function() {
32
- if (arguments.length >= c)
33
- return r.apply(this, arguments);
34
- const n = arguments;
35
- return function(t) {
36
- return r(t, ...n);
37
- };
38
- };
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",
6
+ props: {
7
+ inputProps: {},
8
+ field: {},
9
+ state: {}
10
+ },
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))
19
+ }, [
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
+ };
39
190
  }
40
- };
191
+ });
41
192
  export {
42
- a as dual,
43
- f as isFunction
193
+ w as default
44
194
  };
@@ -1,4 +1,44 @@
1
- import f from "./vue-components.es19.js";
1
+ const f = (c) => typeof c == "function", a = function(c, r) {
2
+ switch (c) {
3
+ case 0:
4
+ case 1:
5
+ throw new RangeError(`Invalid arity ${c}`);
6
+ case 2:
7
+ return function(n, t) {
8
+ return arguments.length >= 2 ? r(n, t) : function(e) {
9
+ return r(e, n);
10
+ };
11
+ };
12
+ case 3:
13
+ return function(n, t, e) {
14
+ return arguments.length >= 3 ? r(n, t, e) : function(u) {
15
+ return r(u, n, t);
16
+ };
17
+ };
18
+ case 4:
19
+ return function(n, t, e, u) {
20
+ return arguments.length >= 4 ? r(n, t, e, u) : function(i) {
21
+ return r(i, n, t, e);
22
+ };
23
+ };
24
+ case 5:
25
+ return function(n, t, e, u, i) {
26
+ return arguments.length >= 5 ? r(n, t, e, u, i) : function(s) {
27
+ return r(s, n, t, e, u);
28
+ };
29
+ };
30
+ default:
31
+ return function() {
32
+ if (arguments.length >= c)
33
+ return r.apply(this, arguments);
34
+ const n = arguments;
35
+ return function(t) {
36
+ return r(t, ...n);
37
+ };
38
+ };
39
+ }
40
+ };
2
41
  export {
3
- f as default
42
+ a as dual,
43
+ f as isFunction
4
44
  };
@@ -1,113 +1,4 @@
1
- import { defineComponent as _, getCurrentInstance as B, computed as V, createBlock as i, openBlock as e, Transition as x, withCtx as u, createElementBlock as o, createCommentVNode as p, renderSlot as g, normalizeProps as b, guardReactiveProps as I, resolveDynamicComponent as h, unref as d, normalizeClass as v, createElementVNode as n, toDisplayString as a, Fragment as w, renderList as y, createTextVNode as C } from "vue";
2
- import { useIntl as L } from "./vue-components.es3.js";
3
- const M = {
4
- key: 0,
5
- class: "error-alert"
6
- }, j = { class: "container" }, D = {
7
- key: 0,
8
- viewBox: "0 0 24 24",
9
- fill: "none",
10
- xmlns: "http://www.w3.org/2000/svg"
11
- }, N = { class: "text-h6" }, z = {
12
- key: 0,
13
- class: "error-list"
14
- }, G = ["for"], H = { key: 1 }, T = /* @__PURE__ */ _({
15
- __name: "OmegaErrorsInternal",
16
- props: {
17
- generalErrors: {},
18
- errors: {},
19
- hideErrorDetails: { type: Boolean }
20
- },
21
- setup(l) {
22
- const c = B()?.appContext.components.VAlert, k = l, { trans: E } = L(), m = V(() => k.generalErrors ? k.generalErrors.filter((s) => !!s).flatMap(
23
- (s) => Object.values(s).filter((t) => !!t).flatMap(
24
- (t) => t.filter(
25
- (r) => !!r?.message
26
- ).map((r) => r.message)
27
- )
28
- ) : []);
29
- return (s, t) => (e(), i(x, null, {
30
- default: u(() => [
31
- l.errors.length || m.value.length ? (e(), o("div", M, [
32
- g(s.$slots, "default", b(I({ errors: l.errors, showedGeneralErrors: m.value })), () => [
33
- (e(), i(h(d(c) ? "v-alert" : "div"), {
34
- class: v([d(c) ? "mb-4" : "error-alert-content", "mb-4"]),
35
- type: "error",
36
- variant: "tonal",
37
- role: "alert",
38
- "aria-live": "polite"
39
- }, {
40
- default: u(() => [
41
- n("div", j, [
42
- g(s.$slots, "icon", {}, () => [
43
- d(c) ? p("", !0) : (e(), o("svg", D, [...t[0] || (t[0] = [
44
- n("path", {
45
- d: "M16 2H8L2 8V16L8 22H16L22 16V8L16 2Z",
46
- stroke: "currentColor",
47
- "stroke-width": "2",
48
- "stroke-linecap": "round",
49
- "stroke-linejoin": "round"
50
- }, null, -1),
51
- n("path", {
52
- d: "M12 8V12",
53
- stroke: "currentColor",
54
- "stroke-width": "2",
55
- "stroke-linecap": "round",
56
- "stroke-linejoin": "round"
57
- }, null, -1),
58
- n("path", {
59
- d: "M12 16.0195V16",
60
- stroke: "currentColor",
61
- "stroke-width": "2",
62
- "stroke-linecap": "round",
63
- "stroke-linejoin": "round"
64
- }, null, -1)
65
- ])]))
66
- ], !0),
67
- n("div", null, [
68
- n("div", N, a(d(E)("form.includes_error")) + ": ", 1),
69
- l.errors.length ? (e(), o("ul", z, [
70
- (e(!0), o(w, null, y(l.errors, (r) => (e(), o("li", {
71
- key: r.inputId,
72
- class: "error-item"
73
- }, [
74
- n("div", null, [
75
- n("label", {
76
- for: r.inputId,
77
- class: "error-link"
78
- }, a(r.label), 9, G),
79
- t[1] || (t[1] = C(" " + a(" ") + " ", -1)),
80
- l.hideErrorDetails ? p("", !0) : (e(), o("div", {
81
- key: 0,
82
- class: v(["error-message", r.errors.length < 2 && "single-error"])
83
- }, [
84
- (e(), i(h(r.errors.length > 1 ? "ul" : "div"), { class: "error-list" }, {
85
- default: u(() => [
86
- (e(!0), o(w, null, y(r.errors, (f) => (e(), i(h(r.errors.length > 1 ? "li" : "span"), { key: f }, {
87
- default: u(() => [
88
- C(a(f), 1)
89
- ]),
90
- _: 2
91
- }, 1024))), 128))
92
- ]),
93
- _: 2
94
- }, 1024))
95
- ], 2))
96
- ])
97
- ]))), 128))
98
- ])) : (e(), o("span", H, a(m.value[0]), 1))
99
- ])
100
- ])
101
- ]),
102
- _: 3
103
- }, 8, ["class"]))
104
- ], !0)
105
- ])) : p("", !0)
106
- ]),
107
- _: 3
108
- }));
109
- }
110
- });
1
+ import f from "./vue-components.es18.js";
111
2
  export {
112
- T as default
3
+ f as default
113
4
  };
@@ -0,0 +1,4 @@
1
+ import f from "./vue-components.es19.js";
2
+ export {
3
+ f as default
4
+ };
@@ -1,9 +1,113 @@
1
- const s = (t, e) => {
2
- const o = t.__vccOpts || t;
3
- for (const [r, c] of e)
4
- o[r] = c;
5
- return o;
6
- };
1
+ import { defineComponent as _, getCurrentInstance as B, computed as V, createBlock as i, openBlock as e, Transition as x, withCtx as u, createElementBlock as o, createCommentVNode as p, renderSlot as g, normalizeProps as b, guardReactiveProps as I, resolveDynamicComponent as h, unref as d, normalizeClass as v, createElementVNode as n, toDisplayString as a, Fragment as w, renderList as y, createTextVNode as C } from "vue";
2
+ import { useIntl as L } from "./vue-components.es3.js";
3
+ const M = {
4
+ key: 0,
5
+ class: "error-alert"
6
+ }, j = { class: "container" }, D = {
7
+ key: 0,
8
+ viewBox: "0 0 24 24",
9
+ fill: "none",
10
+ xmlns: "http://www.w3.org/2000/svg"
11
+ }, N = { class: "text-h6" }, z = {
12
+ key: 0,
13
+ class: "error-list"
14
+ }, G = ["for"], H = { key: 1 }, T = /* @__PURE__ */ _({
15
+ __name: "OmegaErrorsInternal",
16
+ props: {
17
+ generalErrors: {},
18
+ errors: {},
19
+ hideErrorDetails: { type: Boolean }
20
+ },
21
+ setup(l) {
22
+ const c = B()?.appContext.components.VAlert, k = l, { trans: E } = L(), m = V(() => k.generalErrors ? k.generalErrors.filter((s) => !!s).flatMap(
23
+ (s) => Object.values(s).filter((t) => !!t).flatMap(
24
+ (t) => t.filter(
25
+ (r) => !!r?.message
26
+ ).map((r) => r.message)
27
+ )
28
+ ) : []);
29
+ return (s, t) => (e(), i(x, null, {
30
+ default: u(() => [
31
+ l.errors.length || m.value.length ? (e(), o("div", M, [
32
+ g(s.$slots, "default", b(I({ errors: l.errors, showedGeneralErrors: m.value })), () => [
33
+ (e(), i(h(d(c) ? "v-alert" : "div"), {
34
+ class: v([d(c) ? "mb-4" : "error-alert-content", "mb-4"]),
35
+ type: "error",
36
+ variant: "tonal",
37
+ role: "alert",
38
+ "aria-live": "polite"
39
+ }, {
40
+ default: u(() => [
41
+ n("div", j, [
42
+ g(s.$slots, "icon", {}, () => [
43
+ d(c) ? p("", !0) : (e(), o("svg", D, [...t[0] || (t[0] = [
44
+ n("path", {
45
+ d: "M16 2H8L2 8V16L8 22H16L22 16V8L16 2Z",
46
+ stroke: "currentColor",
47
+ "stroke-width": "2",
48
+ "stroke-linecap": "round",
49
+ "stroke-linejoin": "round"
50
+ }, null, -1),
51
+ n("path", {
52
+ d: "M12 8V12",
53
+ stroke: "currentColor",
54
+ "stroke-width": "2",
55
+ "stroke-linecap": "round",
56
+ "stroke-linejoin": "round"
57
+ }, null, -1),
58
+ n("path", {
59
+ d: "M12 16.0195V16",
60
+ stroke: "currentColor",
61
+ "stroke-width": "2",
62
+ "stroke-linecap": "round",
63
+ "stroke-linejoin": "round"
64
+ }, null, -1)
65
+ ])]))
66
+ ], !0),
67
+ n("div", null, [
68
+ n("div", N, a(d(E)("form.includes_error")) + ": ", 1),
69
+ l.errors.length ? (e(), o("ul", z, [
70
+ (e(!0), o(w, null, y(l.errors, (r) => (e(), o("li", {
71
+ key: r.inputId,
72
+ class: "error-item"
73
+ }, [
74
+ n("div", null, [
75
+ n("label", {
76
+ for: r.inputId,
77
+ class: "error-link"
78
+ }, a(r.label), 9, G),
79
+ t[1] || (t[1] = C(" " + a(" ") + " ", -1)),
80
+ l.hideErrorDetails ? p("", !0) : (e(), o("div", {
81
+ key: 0,
82
+ class: v(["error-message", r.errors.length < 2 && "single-error"])
83
+ }, [
84
+ (e(), i(h(r.errors.length > 1 ? "ul" : "div"), { class: "error-list" }, {
85
+ default: u(() => [
86
+ (e(!0), o(w, null, y(r.errors, (f) => (e(), i(h(r.errors.length > 1 ? "li" : "span"), { key: f }, {
87
+ default: u(() => [
88
+ C(a(f), 1)
89
+ ]),
90
+ _: 2
91
+ }, 1024))), 128))
92
+ ]),
93
+ _: 2
94
+ }, 1024))
95
+ ], 2))
96
+ ])
97
+ ]))), 128))
98
+ ])) : (e(), o("span", H, a(m.value[0]), 1))
99
+ ])
100
+ ])
101
+ ]),
102
+ _: 3
103
+ }, 8, ["class"]))
104
+ ], !0)
105
+ ])) : p("", !0)
106
+ ]),
107
+ _: 3
108
+ }));
109
+ }
110
+ });
7
111
  export {
8
- s as default
112
+ T as default
9
113
  };
@@ -0,0 +1,9 @@
1
+ const s = (t, e) => {
2
+ const o = t.__vccOpts || t;
3
+ for (const [r, c] of e)
4
+ o[r] = c;
5
+ return o;
6
+ };
7
+ export {
8
+ s as default
9
+ };
@@ -1,194 +1,34 @@
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",
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
- inputProps: {},
8
- field: {},
9
- state: {}
8
+ form: {},
9
+ disabled: { type: Boolean },
10
+ subscribe: {}
10
11
  },
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))
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
- 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
- };
27
+ a(t.$slots, "default", { subscribedValues: s(n) }, void 0, !0)
28
+ ], 8, S)
29
+ ], 32));
190
30
  }
191
31
  });
192
32
  export {
193
- w as default
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.es38.js";
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 $, 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
- import { useStore as z } from "@tanstack/vue-form";
4
- import T from "./vue-components.es38.js";
2
+ import { defineComponent as N, computed as n, getCurrentInstance as k, useAttrs as q, useSlots as B, useId as S, renderSlot as d, normalizeProps as s, guardReactiveProps as p, createElementVNode as w, normalizeClass as F, createBlock as I, createCommentVNode as L, unref as A, openBlock as O, mergeProps as R, createSlots as V, withCtx as z } from "vue";
3
+ import { useStore as f } from "@tanstack/vue-form";
4
+ import T from "./vue-components.es30.js";
5
5
 
6
- const H = /* @__PURE__ */ $({
6
+ const H = /* @__PURE__ */ N({
7
7
  inheritAttrs: !1,
8
8
  __name: "OmegaInternalInput",
9
9
  props: {
@@ -18,25 +18,27 @@ const H = /* @__PURE__ */ $({
18
18
  register: {},
19
19
  options: { default: void 0 }
20
20
  },
21
- setup(p) {
22
- const e = p, l = n(() => e.required ?? e?.meta?.required), f = N()?.appContext.components.VTextField, c = S(), g = k(), v = n(() => {
23
- const { class: t, ...a } = c;
21
+ setup(c) {
22
+ const e = c, l = n(() => e.required ?? e?.meta?.required), g = k()?.appContext.components.VTextField, v = q(), y = B(), h = n(() => {
23
+ const { class: t, ...a } = v;
24
24
  return a;
25
- }), i = q(), y = e.field, h = z(y.store, (t) => t), b = n(() => e.type ? e.type : e.meta?.type === "string" ? e.meta.format === "email" ? "email" : "string" : e.meta?.type || "unknown");
25
+ }), i = S(), o = e.field;
26
+ f(o.store, (t) => t);
27
+ const b = f(o.form.store, (t) => t.fieldMeta), C = n(() => e.type ? e.type : e.meta?.type === "string" ? e.meta.format === "email" ? "email" : "string" : e.meta?.type || "unknown");
26
28
  e.register(n(() => ({ name: e.field.name, label: e.label, id: i })));
27
- const C = n(() => h.value.meta.errors ?? []), o = n(
29
+ const x = n(() => b.value[e.field.name]?.errors ?? []), m = n(
28
30
  () => (
29
31
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30
- C.value.map((t) => t?.message).filter(Boolean)
32
+ x.value.map((t) => t?.message).filter(Boolean)
31
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
+ ), M = (t) => t == null || t === !1 || t === "" || Number.isNaN(t), _ = (t) => {
35
+ M(t) && e.meta?.type !== "boolean" && e.meta?.nullableOrUndefined ? e.field.handleChange(
34
36
  e.meta.nullableOrUndefined === "undefined" ? void 0 : null
35
37
  ) : e.field.handleChange(t), e.field.setMeta((a) => ({ ...a, errorMap: { ...a.errorMap, onSubmit: void 0 } }));
36
- }, M = (t) => {
38
+ }, P = (t) => {
37
39
  const a = {
38
- get(E, P, W) {
39
- return P === "handleChange" ? _ : Reflect.get(...arguments);
40
+ get(E, $, W) {
41
+ return $ === "handleChange" ? _ : Reflect.get(...arguments);
40
42
  }
41
43
  };
42
44
  return new Proxy(t, a);
@@ -48,26 +50,26 @@ const H = /* @__PURE__ */ $({
48
50
  maxLength: e.meta?.type === "string" && e.meta?.maxLength,
49
51
  max: e.meta?.type === "number" && (e.meta?.maximum ?? (typeof e.meta?.exclusiveMaximum == "number" && e.meta.exclusiveMaximum - 1)),
50
52
  min: e.meta?.type === "number" && (e.meta?.minimum ?? (typeof e.meta?.exclusiveMinimum == "number" && e.meta.exclusiveMinimum + 1)),
51
- errorMessages: o.value,
52
- error: !!o.value.length,
53
- type: b.value,
53
+ errorMessages: m.value,
54
+ error: !!m.value.length,
55
+ type: C.value,
54
56
  // Only add asterisk if label slot is not provided (slot has full control)
55
- label: g.label ? e.label : `${e.label}${l.value ? " *" : ""}`,
57
+ label: y.label ? e.label : `${e.label}${l.value ? " *" : ""}`,
56
58
  options: e.options,
57
59
  inputClass: e.inputClass
58
60
  },
59
61
  state: e.state,
60
- field: M(e.field)
62
+ field: P(e.field)
61
63
  }));
62
- return (t, a) => u(t.$slots, "default", s(d({ ...r.value.inputProps, field: r.value.field, state: r.value.state })), () => [
63
- B("div", {
64
- class: w(t.$attrs.class)
64
+ return (t, a) => d(t.$slots, "default", s(p({ ...r.value.inputProps, field: r.value.field, state: r.value.state })), () => [
65
+ w("div", {
66
+ class: F(t.$attrs.class)
65
67
  }, [
66
- A(f) ? (F(), I(T, s(O({ key: 0 }, { ...v.value, ...r.value, class: e.inputClass })), R({ _: 2 }, [
68
+ A(g) ? (O(), I(T, s(R({ key: 0 }, { ...h.value, ...r.value, class: e.inputClass })), V({ _: 2 }, [
67
69
  t.$slots.label ? {
68
70
  name: "label",
69
- fn: V((m) => [
70
- u(t.$slots, "label", s(d(m)))
71
+ fn: z((u) => [
72
+ d(t.$slots, "label", s(p(u)))
71
73
  ]),
72
74
  key: "0"
73
75
  } : void 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^3.19.3",
@@ -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
- "effect-app": "3.15.1",
57
- "@effect-app/vue": "2.93.6"
56
+ "@effect-app/vue": "2.93.6",
57
+ "effect-app": "3.15.1"
58
58
  },
59
59
  "scripts": {
60
60
  "build": "pnpm build:run",
@@ -84,6 +84,9 @@ const fieldApi = props.field
84
84
 
85
85
  const fieldState = useStore(fieldApi.store, (state) => state)
86
86
 
87
+ // Get errors from form-level fieldMeta (persists across Field re-mounts)
88
+ const formFieldMeta = useStore(fieldApi.form.store, (state) => state.fieldMeta)
89
+
87
90
  const fieldType = computed(() => {
88
91
  if (props.type) return props.type
89
92
  if (props.meta?.type === "string") {
@@ -95,8 +98,12 @@ const fieldType = computed(() => {
95
98
 
96
99
  props.register(computed(() => ({ name: props.field.name, label: props.label, id })))
97
100
 
98
- // workaround strange tanstack form issue where the errors key becomes undefined ???
99
- const _errors = computed(() => fieldState.value.meta.errors ?? [])
101
+ // Get errors from form-level fieldMeta instead of field-level state
102
+ // This ensures errors persist when Field components re-mount due to :key changes
103
+ const _errors = computed(() => {
104
+ const fieldMeta = formFieldMeta.value[props.field.name] as any
105
+ return fieldMeta?.errors ?? []
106
+ })
100
107
  const errors = computed(() =>
101
108
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
102
109
  _errors.value.map((e: any) => e?.message).filter(Boolean)
@@ -1,4 +0,0 @@
1
- import f from "./vue-components.es18.js";
2
- export {
3
- f as default
4
- };
@@ -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
- };