@effect-app/vue-components 2.7.0 → 2.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,7 +1,7 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var i=document.createElement("style");if(i.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),document.head.appendChild(i),window.customElements){const e=window.customElements.define;window.customElements.define=function(s,t){const n=t.prototype.connectedCallback;return t.prototype.connectedCallback=function(){if(n&&n.call(this),this.shadowRoot){const a=document.createElement("style");a.appendChild(document.createTextNode(".omega-input .v-input__details:has(.v-messages:empty){grid-template-rows:0fr;transition:all .2s}.omega-input .v-messages:empty{min-height:0}.omega-input .v-input__details:has(.v-messages){transition:all .2s;overflow:hidden;min-height:0;display:grid;grid-template-rows:1fr}.omega-input .v-messages{transition:all .2s}.omega-input .v-messages>*{transition-duration:0s!important}.omega-input [role=alert]:has(.v-messages:empty){padding:0}.omega-input .v-btn{cursor:pointer;width:auto;appearance:none;box-shadow:none;display:block;min-width:auto;height:auto;padding:.5em .5em .5em 1em}")),this.shadowRoot.appendChild(a)}},e.call(window.customElements,s,t)}}}}catch(e){console.error("vite-plugin-css-injected-by-js",e)}})();
2
2
  import { defineComponent as $, computed as n, getCurrentInstance as N, useAttrs as S, useSlots as k, useId as q, renderSlot as u, normalizeProps as s, guardReactiveProps as d, createElementVNode as B, normalizeClass as w, createBlock as I, createCommentVNode as L, unref as A, openBlock as F, mergeProps as O, createSlots as R, withCtx as V } from "vue";
3
3
  import { useStore as z } from "@tanstack/vue-form";
4
- import T from "./vue-components.es38.js";
4
+ import T from "./vue-components.es30.js";
5
5
 
6
6
  const H = /* @__PURE__ */ $({
7
7
  inheritAttrs: !1,
@@ -1,6 +1,6 @@
1
- import { defineComponent as s, createElementBlock as f, openBlock as d, Fragment as c, renderSlot as n, createVNode as a, unref as o, withCtx as r, createCommentVNode as g, createSlots as $, renderList as y, normalizeProps as b, guardReactiveProps as p } from "vue";
1
+ import { defineComponent as d, createBlock as u, openBlock as g, unref as l, withCtx as o, renderSlot as n, createVNode as r, createCommentVNode as c, normalizeProps as s, guardReactiveProps as f, createSlots as $, renderList as y } from "vue";
2
2
  import C from "./vue-components.es9.js";
3
- const F = /* @__PURE__ */ s({
3
+ const h = /* @__PURE__ */ d({
4
4
  __name: "OmegaTaggedUnion",
5
5
  props: {
6
6
  name: {},
@@ -10,38 +10,37 @@ const F = /* @__PURE__ */ s({
10
10
  label: {}
11
11
  },
12
12
  setup(e) {
13
- return (t, k) => (d(), f(c, null, [
14
- n(t.$slots, "OmegaCustomInput", {}, () => [
15
- a(o(e.form).Input, {
16
- name: e.name ? `${e.name}._tag` : "_tag",
17
- label: e.label,
18
- type: e.type ?? "select",
19
- options: e.options
20
- }, null, 8, ["name", "label", "type", "options"])
21
- ]),
22
- a(o(e.form).Field, {
23
- name: e.name ?? ""
24
- }, {
25
- default: r(({ field: u, state: m }) => [
26
- m.value ? n(t.$slots, "default", { key: 0 }) : g("", !0),
27
- a(C, {
28
- field: u,
29
- state: m.value,
30
- name: e.name
31
- }, $({ _: 2 }, [
32
- y(t.$slots, (v, l) => ({
33
- name: l,
34
- fn: r((i) => [
35
- n(t.$slots, l, b(p(i)))
36
- ])
37
- }))
38
- ]), 1032, ["field", "state", "name"])
13
+ return (a, b) => (g(), u(l(e.form).Field, {
14
+ name: e.name ? `${e.name}._tag` : "_tag"
15
+ }, {
16
+ default: o((t) => [
17
+ n(a.$slots, "OmegaCustomInput", s(f(t)), () => [
18
+ r(l(e.form).Input, {
19
+ name: e.name ? `${e.name}._tag` : "_tag",
20
+ label: e.label,
21
+ type: e.type ?? "select",
22
+ options: e.options
23
+ }, null, 8, ["name", "label", "type", "options"])
39
24
  ]),
40
- _: 3
41
- }, 8, ["name"])
42
- ], 64));
25
+ n(a.$slots, "default"),
26
+ r(C, {
27
+ field: t.field,
28
+ state: t.state.value,
29
+ name: e.name
30
+ }, $({ _: 2 }, [
31
+ y(a.$slots, (k, m) => ({
32
+ name: m,
33
+ fn: o((i) => [
34
+ n(a.$slots, m, s(f(i)))
35
+ ])
36
+ }))
37
+ ]), 1032, ["field", "state", "name"]),
38
+ t.state.value ? n(a.$slots, "OmegaCommon", { key: 0 }) : c("", !0)
39
+ ]),
40
+ _: 3
41
+ }, 8, ["name"]));
43
42
  }
44
43
  });
45
44
  export {
46
- F as default
45
+ h as default
47
46
  };
@@ -8,11 +8,11 @@ const f = /* @__PURE__ */ l({
8
8
  },
9
9
  setup(e) {
10
10
  const a = e;
11
- return i(() => a.state?._tag, (t, n) => {
11
+ return i(() => a.state, (t, n) => {
12
12
  t === null && a.field.setValue(null), t !== n && setTimeout(() => {
13
13
  a.field.validate("change");
14
14
  }, 0);
15
- }), (t, n) => e.state?._tag ? m(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state?._tag}`, o(r({ key: 0 }, { field: e.field, state: e.state }))) : s("", !0);
15
+ }), (t, n) => e.state ? m(t.$slots, `${e.name ? `${e.name}.` : ""}${e.state}`, o(r({ key: 0 }, { field: e.field, state: e.state }))) : s("", !0);
16
16
  }
17
17
  });
18
18
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^3.18.0",
@@ -23,20 +23,23 @@ defineProps<{
23
23
  </script>
24
24
 
25
25
  <template>
26
- <slot name="OmegaCustomInput">
27
- <form.Input
28
- :name="(name ? `${name}._tag` : '_tag') as FieldPath<From>"
29
- :label="label"
30
- :type="type ?? 'select'"
31
- :options="options"
32
- />
33
- </slot>
34
- <form.Field :name="(name ?? '') as any">
35
- <template #default="{ field, state }">
36
- <slot v-if="state.value" />
26
+ <form.Field :name="(name ? `${name}._tag` : '_tag') as any">
27
+ <template #default="inputProps">
28
+ <slot
29
+ name="OmegaCustomInput"
30
+ v-bind="inputProps"
31
+ >
32
+ <form.Input
33
+ :name="(name ? `${name}._tag` : '_tag') as FieldPath<From>"
34
+ :label="label"
35
+ :type="type ?? 'select'"
36
+ :options="options"
37
+ />
38
+ </slot>
39
+ <slot />
37
40
  <OmegaTaggedUnionInternal
38
- :field="field as any"
39
- :state="state.value"
41
+ :field="inputProps.field as any"
42
+ :state="inputProps.state.value"
40
43
  :name="name"
41
44
  >
42
45
  <template
@@ -49,6 +52,10 @@ defineProps<{
49
52
  />
50
53
  </template>
51
54
  </OmegaTaggedUnionInternal>
55
+ <slot
56
+ v-if="inputProps.state.value"
57
+ name="OmegaCommon"
58
+ />
52
59
  </template>
53
60
  </form.Field>
54
61
  </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <slot
3
- v-if="state?._tag"
4
- :name="`${name ? `${name}.` : ''}${state?._tag}`"
3
+ v-if="state"
4
+ :name="`${name ? `${name}.` : ''}${state}`"
5
5
  v-bind="{ field, state }"
6
6
  />
7
7
  </template>
@@ -26,7 +26,7 @@ const props = defineProps<{
26
26
  }>()
27
27
 
28
28
  // Watch for _tag changes
29
- watch(() => props.state?._tag, (newTag, oldTag) => {
29
+ watch(() => props.state, (newTag, oldTag) => {
30
30
  if (newTag === null) {
31
31
  props.field.setValue(null as DeepValue<From, Name>)
32
32
  }
@@ -762,10 +762,26 @@ export const useOmegaForm = <
762
762
  if (!values) return undefined
763
763
  const normalized: any = { ...values }
764
764
 
765
+ // Helper to get nested value from object using dot notation
766
+ const getNestedValue = (obj: any, path: string) => {
767
+ return path.split(".").reduce((current, key) => current?.[key], obj)
768
+ }
769
+
770
+ // Helper to set nested value in object using dot notation
771
+ const setNestedValue = (obj: any, path: string, value: any) => {
772
+ const parts = path.split(".")
773
+ const last = parts.pop()!
774
+ const target = parts.reduce((current, key) => {
775
+ if (!current[key]) current[key] = {}
776
+ return current[key]
777
+ }, obj)
778
+ target[last] = value
779
+ }
780
+
765
781
  // Process all fields in the schema metadata
766
782
  for (const key in meta) {
767
783
  const fieldMeta = meta[key as keyof typeof meta]
768
- const value = normalized[key]
784
+ const value = getNestedValue(normalized, key)
769
785
 
770
786
  // Check if the value is falsy (but not boolean false or zero)
771
787
  const isFalsyButNotZero = value == null || value === false || value === "" || Number.isNaN(value)
@@ -779,7 +795,7 @@ export const useOmegaForm = <
779
795
  ) {
780
796
  // If value is missing or falsy, set to null or undefined based on schema
781
797
  if (value === undefined || isFalsy) {
782
- normalized[key] = fieldMeta.nullableOrUndefined === "undefined" ? undefined : null
798
+ setNestedValue(normalized, key, fieldMeta.nullableOrUndefined === "undefined" ? undefined : null)
783
799
  }
784
800
  }
785
801
  }
@@ -791,11 +807,27 @@ export const useOmegaForm = <
791
807
  const extractDefaultsFromAST = (schemaObj: any): any => {
792
808
  const result: Record<string, any> = {}
793
809
 
794
- // Check if this schema is a union
795
- if (schemaObj?.members && Array.isArray(schemaObj.members)) {
810
+ // If this schema has a .make() method (like ExtendedClass), use it to get complete defaults
811
+ // This is more reliable than manually extracting fields, especially for classes
812
+ if (typeof schemaObj?.make === "function") {
813
+ try {
814
+ const instance = schemaObj.make({})
815
+ // For ExtendedClass, the instance is already in the correct encoded format
816
+ return instance
817
+ } catch {
818
+ // If make() fails, fall through to manual extraction
819
+ }
820
+ }
821
+
822
+ // Check if this schema is a union - check both direct property and AST
823
+ const unionMembers = schemaObj?.members
824
+ || (schemaObj?.ast?._tag === "Union" && schemaObj.ast.types
825
+ ? schemaObj.ast.types.map((t: any) => S.make(t))
826
+ : null)
827
+ if (unionMembers && Array.isArray(unionMembers)) {
796
828
  // For unions, we try to find the first member that has a complete set of defaults
797
829
  // Priority is given to members with default values for discriminator fields
798
- for (const member of schemaObj.members) {
830
+ for (const member of unionMembers as any[]) {
799
831
  const memberDefaults = extractDefaultsFromAST(member)
800
832
  if (Object.keys(memberDefaults).length > 0) {
801
833
  // Check if this member has a default value for a discriminator field (like _tag)
@@ -879,46 +911,15 @@ export const useOmegaForm = <
879
911
  }
880
912
 
881
913
  const defaultValues = computed(() => {
882
- // Normalize tanstack default values at the beginning
883
- const normalizedTanstackDefaults = extractSchemaDefaults(
884
- normalizeDefaultValues(
885
- tanstackFormOptions?.defaultValues
886
- )
887
- )
888
-
889
- if (
890
- normalizedTanstackDefaults
891
- && !omegaConfig?.persistency?.overrideDefaultValues
892
- ) {
893
- // defaultValues from tanstack are not partial,
894
- // so if ovverrideDefaultValues is false we return the normalized values
895
- return normalizedTanstackDefaults
896
- }
897
-
898
- // we are here because there are no default values from tankstack
899
- // or because omegaConfig?.persistency?.overrideDefaultValues is true
900
-
901
914
  // will contain what we get from querystring or local/session storage
902
915
  let defValuesPatch
903
916
 
904
917
  const persistency = omegaConfig?.persistency
905
- if (!persistency?.policies || persistency.policies.length === 0) return {}
906
- if (persistency.policies.includes("querystring")) {
907
- try {
908
- const params = new URLSearchParams(window.location.search)
909
- const value = params.get(persistencyKey.value)
910
- clearUrlParams()
911
- if (value) {
912
- defValuesPatch = JSON.parse(value)
913
- }
914
- } catch (error) {
915
- console.error(error)
916
- }
917
- }
918
918
 
919
919
  if (
920
920
  // query string has higher priority than local/session storage
921
- !defValuesPatch
921
+ persistency?.policies
922
+ && !defValuesPatch
922
923
  && (persistency.policies.includes("local")
923
924
  || persistency.policies.includes("session"))
924
925
  ) {
@@ -937,16 +938,30 @@ export const useOmegaForm = <
937
938
  }
938
939
  }
939
940
  }
941
+ if (persistency?.policies && persistency.policies.includes("querystring")) {
942
+ try {
943
+ const params = new URLSearchParams(window.location.search)
944
+ const value = params.get(persistencyKey.value)
945
+ clearUrlParams()
946
+ if (value) {
947
+ defValuesPatch = deepMerge(defValuesPatch || {}, JSON.parse(value))
948
+ }
949
+ } catch (error) {
950
+ console.error(error)
951
+ }
952
+ }
940
953
 
941
954
  // to be sure we have a valid object at the end of the gathering process
942
- defValuesPatch ??= extractSchemaDefaults({})
955
+ defValuesPatch ??= {}
943
956
 
944
- if (!normalizedTanstackDefaults) {
945
- // we just return what we gathered from the query/storage
946
- return defValuesPatch
947
- } else {
948
- return deepMerge(normalizedTanstackDefaults, defValuesPatch)
949
- }
957
+ // we just return what we gathered from the query/storage
958
+ return extractSchemaDefaults(
959
+ normalizeDefaultValues(
960
+ omegaConfig?.persistency?.overrideDefaultValues
961
+ ? deepMerge(tanstackFormOptions?.defaultValues || {}, defValuesPatch)
962
+ : deepMerge(defValuesPatch, tanstackFormOptions?.defaultValues || {})
963
+ )
964
+ )
950
965
  })
951
966
 
952
967
  const wrapWithSpan = (span: api.Span | undefined, toWrap: () => any) => {
@@ -1,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
- };