@effect-app/vue-components 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,6 +1,6 @@
1
1
  import { defineComponent as v, mergeModels as C, useModel as k, useSlots as V, computed as _, resolveComponent as g, createBlock as y, openBlock as B, unref as a, createSlots as E, withCtx as u, renderSlot as d, renderList as M, normalizeProps as S, guardReactiveProps as w } from "vue";
2
2
  import { useOnClose as L } from "./vue-components.es11.js";
3
- import { onMountedWithCleanup as h } from "./vue-components.es16.js";
3
+ import { onMountedWithCleanup as h } from "./vue-components.es29.js";
4
4
  const z = /* @__PURE__ */ v({
5
5
  __name: "Dialog",
6
6
  props: /* @__PURE__ */ C({
@@ -1,8 +1,8 @@
1
- import { defineComponent as F, computed as o, useAttrs as $, inject as k, createBlock as u, openBlock as i, resolveDynamicComponent as A, withCtx as m, createCommentVNode as M, mergeProps as S, unref as w, createSlots as I, renderSlot as f, normalizeProps as c, guardReactiveProps as d } from "vue";
2
- import { useIntl as P } from "./vue-components.es3.js";
3
- import { generateInputStandardSchemaFromFieldMeta as j } from "./vue-components.es12.js";
4
- import B from "./vue-components.es7.js";
5
- import { useErrorLabel as E } from "./vue-components.es10.js";
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
+ import { useIntl as j } from "./vue-components.es3.js";
3
+ import { generateInputStandardSchemaFromFieldMeta as B } from "./vue-components.es12.js";
4
+ import E from "./vue-components.es7.js";
5
+ import { useErrorLabel as N } from "./vue-components.es10.js";
6
6
  const V = /* @__PURE__ */ F({
7
7
  inheritAttrs: !1,
8
8
  __name: "OmegaInput",
@@ -13,46 +13,52 @@ const V = /* @__PURE__ */ F({
13
13
  name: {},
14
14
  inputClass: {}
15
15
  },
16
- setup(t) {
17
- const e = t, l = o(() => e.name), v = $(), 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 : v.class;
20
- }), n = k(
19
+ return e.inputClass !== void 0 ? e.inputClass : p.class;
20
+ }), s = M(
21
21
  "getMetaFromArray",
22
22
  null
23
- ), r = o(() => n?.value && n.value(e.name) ? n.value(l.value) : e.form.meta[l.value]), { trans: g } = P(), C = o(() => {
24
- if (!r.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)
25
30
  throw console.log(e.name, Object.keys(e.form.meta), e.form.meta), new Error("Meta is undefined");
26
- return j(r.value, g);
27
- }), b = E(e.form);
28
- return (a, N) => (i(), u(A(t.form.Field), {
29
- name: t.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,
30
36
  validators: {
31
- onChange: C.value,
32
- ...t.validators
37
+ onChange: b.value,
38
+ ...a.validators
33
39
  }
34
40
  }, {
35
- default: m(({ field: h, state: y }) => [
36
- r.value ? (i(), u(B, S({ key: 0 }, { ...a.$attrs, ...a.$props, inputClass: p.value }, {
37
- field: h,
38
- state: y,
39
- register: t.form.registerField,
40
- label: t.label ?? w(b)(l.value),
41
- meta: r.value
42
- }), I({
43
- default: m((s) => [
44
- f(a.$slots, "default", c(d(s)))
41
+ default: u(({ field: y, state: k }) => [
42
+ o.value ? (f(), i(E, I({ key: 0 }, { ...t.$attrs, ...t.$props, inputClass: g.value }, {
43
+ field: y,
44
+ state: k,
45
+ register: a.form.registerField,
46
+ label: a.label ?? L(h)(n.value),
47
+ meta: o.value
48
+ }), P({
49
+ default: u((m) => [
50
+ c(t.$slots, "default", d(v(m)))
45
51
  ]),
46
52
  _: 2
47
53
  }, [
48
- a.$slots.label ? {
54
+ t.$slots.label ? {
49
55
  name: "label",
50
- fn: m((s) => [
51
- f(a.$slots, "label", c(d(s)))
56
+ fn: u((m) => [
57
+ c(t.$slots, "label", d(v(m)))
52
58
  ]),
53
59
  key: "0"
54
60
  } : void 0
55
- ]), 1040, ["field", "state", "register", "label", "meta"])) : M("", !0)
61
+ ]), 1040, ["field", "state", "register", "label", "meta"])) : w("", !0)
56
62
  ]),
57
63
  _: 3
58
64
  }, 8, ["name", "validators"]));
@@ -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 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
3
  import { useStore as f } 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__ */ N({
7
7
  inheritAttrs: !1,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^3.19.3",
@@ -1,6 +1,7 @@
1
1
  <template>
2
2
  <component
3
3
  :is="form.Field"
4
+ :key="fieldKey"
4
5
  :name="name"
5
6
  :validators="{
6
7
  onChange: schema,
@@ -81,6 +82,18 @@ const meta = computed(() => {
81
82
  return props.form.meta[propsName.value]
82
83
  })
83
84
 
85
+ // Key to force Field re-mount when meta type changes (for TaggedUnion support)
86
+ const fieldKey = computed(() => {
87
+ const m = meta.value
88
+ if (!m) return propsName.value
89
+ // Include type and key constraints in the key so Field re-mounts when validation rules change
90
+ // Cast to any since not all FieldMeta variants have these properties
91
+ const fm = m as any
92
+ return `${propsName.value}-${fm.type}-${fm.minLength ?? ""}-${fm.maxLength ?? ""}-${fm.minimum ?? ""}-${
93
+ fm.maximum ?? ""
94
+ }`
95
+ })
96
+
84
97
  // Call useIntl during setup to avoid issues when computed re-evaluates
85
98
  const { trans } = useIntl()
86
99
 
@@ -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
- };