@effect-app/vue-components 2.11.5 → 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,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
- import { defineComponent as M, computed as o, useAttrs as $, inject as k, createBlock as m, openBlock as i, resolveDynamicComponent as A, withCtx as s, createCommentVNode as S, mergeProps as w, unref as I, createSlots as P, renderSlot as u, normalizeProps as f, guardReactiveProps as c } from "vue";
1
+ import { defineComponent as F, computed as l, useAttrs as A, inject as M, createBlock as i, openBlock as f, resolveDynamicComponent as S, withCtx as u, createCommentVNode as w, mergeProps as I, unref as L, createSlots as P, renderSlot as c, normalizeProps as d, guardReactiveProps as v } from "vue";
2
2
  import { useIntl as j } from "./vue-components.es3.js";
3
3
  import { generateInputStandardSchemaFromFieldMeta as B } from "./vue-components.es12.js";
4
4
  import E from "./vue-components.es7.js";
5
5
  import { useErrorLabel as N } from "./vue-components.es10.js";
6
- const V = /* @__PURE__ */ M({
6
+ const V = /* @__PURE__ */ F({
7
7
  inheritAttrs: !1,
8
8
  __name: "OmegaInput",
9
9
  props: {
@@ -13,49 +13,52 @@ const V = /* @__PURE__ */ M({
13
13
  name: {},
14
14
  inputClass: {}
15
15
  },
16
- setup(r) {
17
- const e = r, l = o(() => e.name), d = $(), p = o(() => {
16
+ setup(a) {
17
+ const e = a, n = l(() => e.name), p = A(), g = l(() => {
18
18
  if (e.inputClass !== null)
19
- return e.inputClass !== void 0 ? e.inputClass : d.class;
20
- }), v = k(
19
+ return e.inputClass !== void 0 ? e.inputClass : p.class;
20
+ }), s = M(
21
21
  "getMetaFromArray",
22
22
  null
23
- ), a = o(() => {
24
- const t = v?.value?.(e.name);
25
- return t || e.form.meta[l.value];
26
- }), { trans: g } = j(), C = o(() => {
27
- if (!a.value)
23
+ ), o = l(() => s?.value && s.value(e.name) ? s.value(n.value) : e.form.meta[n.value]), $ = l(() => {
24
+ const t = o.value;
25
+ if (!t) return n.value;
26
+ const r = t;
27
+ return `${n.value}-${r.type}-${r.minLength ?? ""}-${r.maxLength ?? ""}-${r.minimum ?? ""}-${r.maximum ?? ""}`;
28
+ }), { trans: C } = j(), b = l(() => {
29
+ if (!o.value)
28
30
  throw console.log(e.name, Object.keys(e.form.meta), e.form.meta), new Error("Meta is undefined");
29
- return B(a.value, g);
30
- }), b = N(e.form);
31
- return (t, h) => (i(), m(A(r.form.Field), {
32
- name: r.name,
31
+ return B(o.value, C);
32
+ }), h = N(e.form);
33
+ return (t, r) => (f(), i(S(a.form.Field), {
34
+ key: $.value,
35
+ name: a.name,
33
36
  validators: {
34
- onChange: C.value,
35
- ...r.validators
37
+ onChange: b.value,
38
+ ...a.validators
36
39
  }
37
40
  }, {
38
- default: s(({ field: y, state: F }) => [
39
- a.value ? (i(), m(E, w({ key: 0 }, { ...t.$attrs, ...t.$props, inputClass: p.value }, {
41
+ default: u(({ field: y, state: k }) => [
42
+ o.value ? (f(), i(E, I({ key: 0 }, { ...t.$attrs, ...t.$props, inputClass: g.value }, {
40
43
  field: y,
41
- state: F,
42
- register: r.form.registerField,
43
- label: r.label ?? I(b)(l.value),
44
- meta: a.value
44
+ state: k,
45
+ register: a.form.registerField,
46
+ label: a.label ?? L(h)(n.value),
47
+ meta: o.value
45
48
  }), P({
46
- default: s((n) => [
47
- u(t.$slots, "default", f(c(n)))
49
+ default: u((m) => [
50
+ c(t.$slots, "default", d(v(m)))
48
51
  ]),
49
52
  _: 2
50
53
  }, [
51
54
  t.$slots.label ? {
52
55
  name: "label",
53
- fn: s((n) => [
54
- u(t.$slots, "label", f(c(n)))
56
+ fn: u((m) => [
57
+ c(t.$slots, "label", d(v(m)))
55
58
  ]),
56
59
  key: "0"
57
60
  } : void 0
58
- ]), 1040, ["field", "state", "register", "label", "meta"])) : S("", !0)
61
+ ]), 1040, ["field", "state", "register", "label", "meta"])) : w("", !0)
59
62
  ]),
60
63
  _: 3
61
64
  }, 8, ["name", "validators"]));
@@ -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
@@ -1,4 +1,4 @@
1
- import { defineComponent as M, ref as C, computed as s, watch as b, provide as k, createBlock as F, openBlock as O, unref as f, withCtx as i, renderSlot as o, createVNode as c, createCommentVNode as S, normalizeProps as g, guardReactiveProps as d, createSlots as V, renderList as w } from "vue";
1
+ import { defineComponent as M, ref as C, computed as s, watch as b, provide as k, createBlock as F, openBlock as O, unref as f, withCtx as c, renderSlot as o, createVNode as i, createCommentVNode as S, normalizeProps as g, guardReactiveProps as d, createSlots as V, renderList as w } from "vue";
2
2
  import A from "./vue-components.es9.js";
3
3
  const N = /* @__PURE__ */ M({
4
4
  __name: "OmegaTaggedUnion",
@@ -10,28 +10,28 @@ const N = /* @__PURE__ */ M({
10
10
  label: {}
11
11
  },
12
12
  setup(t) {
13
- const n = t, m = C(null), v = s(() => n.name ? `${n.name}._tag` : "_tag"), $ = n.form.useStore((e) => e.values);
13
+ const n = t, r = C(null), v = s(() => n.name ? `${n.name}._tag` : "_tag"), $ = n.form.useStore((e) => e.values);
14
14
  b(
15
- () => v.value.split(".").reduce((r, a) => r?.[a], $.value),
15
+ () => v.value.split(".").reduce((l, a) => l?.[a], $.value),
16
16
  (e) => {
17
- m.value = e ?? null;
17
+ r.value = e ?? null;
18
18
  },
19
19
  { immediate: !0 }
20
20
  );
21
21
  const y = s(() => {
22
- const e = m.value;
22
+ const e = r.value;
23
23
  return (a) => {
24
24
  if (!e) return null;
25
- const l = n.form.unionMeta[e];
26
- return l ? l[a] ?? null : null;
25
+ const m = n.form.unionMeta[e];
26
+ return m ? m[a] ?? null : null;
27
27
  };
28
28
  });
29
- return k("getMetaFromArray", y), (e, r) => (O(), F(f(t.form).Field, {
29
+ return k("getMetaFromArray", y), (e, l) => (O(), F(f(t.form).Field, {
30
30
  name: t.name ? `${t.name}._tag` : "_tag"
31
31
  }, {
32
- default: i((a) => [
32
+ default: c((a) => [
33
33
  o(e.$slots, "OmegaCustomInput", g(d(a)), () => [
34
- c(f(t.form).Input, {
34
+ i(f(t.form).Input, {
35
35
  name: t.name ? `${t.name}._tag` : "_tag",
36
36
  label: t.label,
37
37
  type: t.type ?? "select",
@@ -39,15 +39,15 @@ const N = /* @__PURE__ */ M({
39
39
  }, null, 8, ["name", "label", "type", "options"])
40
40
  ]),
41
41
  o(e.$slots, "default"),
42
- c(A, {
42
+ i(A, {
43
43
  field: a.field,
44
44
  state: a.state.value,
45
45
  name: t.name,
46
46
  form: t.form
47
47
  }, V({ _: 2 }, [
48
- w(e.$slots, (l, u) => ({
48
+ w(e.$slots, (m, u) => ({
49
49
  name: u,
50
- fn: i((h) => [
50
+ fn: c((h) => [
51
51
  o(e.$slots, u, g(d(h)))
52
52
  ])
53
53
  }))
@@ -1,5 +1,5 @@
1
- import { defineComponent as r, watch as m, nextTick as o, renderSlot as u, createCommentVNode as i, normalizeProps as f, mergeProps as c } from "vue";
2
- const $ = /* @__PURE__ */ r({
1
+ import { defineComponent as m, watch as r, renderSlot as s, createCommentVNode as o, normalizeProps as i, mergeProps as f } from "vue";
2
+ const d = /* @__PURE__ */ m({
3
3
  __name: "OmegaTaggedUnionInternal",
4
4
  props: {
5
5
  state: {},
@@ -8,21 +8,14 @@ const $ = /* @__PURE__ */ r({
8
8
  form: {}
9
9
  },
10
10
  setup(e) {
11
- const a = e;
12
- return m(() => a.state, (t, n) => {
13
- t === null && a.field.setValue(null), t !== n && t && o(() => {
14
- const s = a.form.unionDefaultValues?.[t] ?? {}, l = {
15
- ...a.form.state.values,
16
- ...s,
17
- _tag: t
18
- };
19
- a.form.reset(l), setTimeout(() => {
20
- a.field.validate("change");
21
- }, 0);
22
- });
23
- }, { immediate: !0 }), (t, n) => e.state ? u(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, f(c({ key: 0 }, { field: e.field, state: e.state }))) : i("", !0);
11
+ const a = e, l = a.form.useStore(({ values: t }) => t);
12
+ return r(() => a.state, (t, n) => {
13
+ t === null && a.field.setValue(null), t !== n && (a.form.reset(l.value), setTimeout(() => {
14
+ a.field.validate("change");
15
+ }, 0));
16
+ }, { immediate: !0 }), (t, n) => e.state ? s(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, i(f({ key: 0 }, { field: e.field, state: e.state }))) : o("", !0);
24
17
  }
25
18
  });
26
19
  export {
27
- $ as default
20
+ d as default
28
21
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "2.11.5",
3
+ "version": "3.0.1",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^3.19.3",
@@ -356,7 +356,6 @@ export const createMeta = <T = any>(
356
356
 
357
357
  if (property?._tag === "TypeLiteral" && "propertySignatures" in property) {
358
358
  return createMeta<T>({
359
- parent, // Pass parent to maintain the key prefix for nested structures
360
359
  meta,
361
360
  propertySignatures: property.propertySignatures
362
361
  })
@@ -405,13 +404,7 @@ export const createMeta = <T = any>(
405
404
  property: p.type,
406
405
  meta: { required: isRequired, nullableOrUndefined }
407
406
  })
408
- // If parentMeta is a MetaRecord (nested structure from ExtendedClass), merge it
409
- // Otherwise assign as single FieldMeta
410
- if (parentMeta && typeof parentMeta === "object" && !("type" in parentMeta)) {
411
- Object.assign(acc, parentMeta)
412
- } else {
413
- acc[key as NestedKeyOf<T>] = parentMeta as FieldMeta
414
- }
407
+ acc[key as NestedKeyOf<T>] = parentMeta as FieldMeta
415
408
  }
416
409
 
417
410
  // Process each non-null type and merge their metadata
@@ -708,17 +701,11 @@ const flattenMeta = <T>(meta: MetaRecord<T> | FieldMeta, parentKey: string = "")
708
701
 
709
702
  const metadataFromAst = <From, To>(
710
703
  schema: S.Schema<To, From, never>
711
- ): {
712
- meta: MetaRecord<To>
713
- defaultValues: Record<string, any>
714
- unionMeta: Record<string, MetaRecord<To>>
715
- unionDefaultValues: Record<string, Record<string, any>>
716
- } => {
704
+ ): { meta: MetaRecord<To>; defaultValues: Record<string, any>; unionMeta: Record<string, MetaRecord<To>> } => {
717
705
  const ast = schema.ast
718
706
  const newMeta: MetaRecord<To> = {}
719
707
  const defaultValues: Record<string, any> = {}
720
708
  const unionMeta: Record<string, MetaRecord<To>> = {}
721
- const unionDefaultValues: Record<string, Record<string, any>> = {}
722
709
 
723
710
  if (ast._tag === "Transformation" || ast._tag === "Refinement") {
724
711
  return metadataFromAst(S.make(ast.from))
@@ -763,9 +750,6 @@ const metadataFromAst = <From, To>(
763
750
  // Store per-tag metadata for reactive lookup
764
751
  if (tagValue) {
765
752
  unionMeta[tagValue] = flattenMeta<To>(memberMeta)
766
- // Create default values for this tag's schema
767
- const memberSchema = S.make(memberType)
768
- unionDefaultValues[tagValue] = defaultsValueFromSchema(memberSchema as any)
769
753
  }
770
754
 
771
755
  // Merge into result (for backward compatibility)
@@ -782,7 +766,7 @@ const metadataFromAst = <From, To>(
782
766
  } as FieldMeta
783
767
  }
784
768
 
785
- return { meta: newMeta, defaultValues, unionMeta, unionDefaultValues }
769
+ return { meta: newMeta, defaultValues, unionMeta }
786
770
  }
787
771
  }
788
772
 
@@ -792,7 +776,7 @@ const metadataFromAst = <From, To>(
792
776
  })
793
777
 
794
778
  if (Object.values(meta).every((value) => value && "type" in value)) {
795
- return { meta: meta as MetaRecord<To>, defaultValues, unionMeta, unionDefaultValues }
779
+ return { meta: meta as MetaRecord<To>, defaultValues, unionMeta }
796
780
  }
797
781
 
798
782
  const flattenObject = (
@@ -812,7 +796,7 @@ const metadataFromAst = <From, To>(
812
796
  flattenObject(meta)
813
797
  }
814
798
 
815
- return { meta: newMeta, defaultValues, unionMeta, unionDefaultValues }
799
+ return { meta: newMeta, defaultValues, unionMeta }
816
800
  }
817
801
 
818
802
  export const duplicateSchema = <From, To>(
@@ -827,11 +811,10 @@ export const generateMetaFromSchema = <From, To>(
827
811
  schema: S.Schema<To, From, never>
828
812
  meta: MetaRecord<To>
829
813
  unionMeta: Record<string, MetaRecord<To>>
830
- unionDefaultValues: Record<string, Record<string, any>>
831
814
  } => {
832
- const { meta, unionDefaultValues, unionMeta } = metadataFromAst(schema)
815
+ const { meta, unionMeta } = metadataFromAst(schema)
833
816
 
834
- return { schema, meta, unionMeta, unionDefaultValues }
817
+ return { schema, meta, unionMeta }
835
818
  }
836
819
 
837
820
  export const generateInputStandardSchemaFromFieldMeta = (