@effect-app/vue-components 4.0.0-beta.24 → 4.0.0-beta.240

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.
Files changed (198) hide show
  1. package/README.md +13 -9
  2. package/dist/reset.css +39 -38
  3. package/dist/types/components/CommandButton.vue.d.ts +6 -4
  4. package/dist/types/components/OmegaForm/InputProps.d.ts +1 -1
  5. package/dist/types/components/OmegaForm/OmegaArray.vue.d.ts +1 -1
  6. package/dist/types/components/OmegaForm/OmegaAutoGen.vue.d.ts +2 -2
  7. package/dist/types/components/OmegaForm/OmegaErrorsInternal.vue.d.ts +1 -1
  8. package/dist/types/components/OmegaForm/OmegaFormInput.vue.d.ts +1 -1
  9. package/dist/types/components/OmegaForm/OmegaInput.vue.d.ts +1 -1
  10. package/dist/types/components/OmegaForm/OmegaInternalInput.vue.d.ts +2 -1
  11. package/dist/types/components/OmegaForm/OmegaTaggedUnion.vue.d.ts +2 -2
  12. package/dist/types/components/OmegaForm/OmegaTaggedUnionInternal.vue.d.ts +3 -3
  13. package/dist/types/components/OmegaForm/OmegaWrapper.vue.d.ts +1 -1
  14. package/dist/types/components/OmegaForm/createUseFormWithCustomInput.d.ts +2 -2
  15. package/dist/types/components/OmegaForm/errors.d.ts +33 -0
  16. package/dist/types/components/OmegaForm/getOmegaStore.d.ts +1 -1
  17. package/dist/types/components/OmegaForm/hocs.d.ts +3 -0
  18. package/dist/types/components/OmegaForm/index.d.ts +13 -3
  19. package/dist/types/components/OmegaForm/inputs.d.ts +4 -0
  20. package/dist/types/components/OmegaForm/meta/checks.d.ts +4 -0
  21. package/dist/types/components/OmegaForm/meta/createMeta.d.ts +33 -0
  22. package/dist/types/components/OmegaForm/meta/defaults.d.ts +21 -0
  23. package/dist/types/components/OmegaForm/meta/redacted.d.ts +2 -0
  24. package/dist/types/components/OmegaForm/meta/types.d.ts +56 -0
  25. package/dist/types/components/OmegaForm/meta/walker.d.ts +18 -0
  26. package/dist/types/components/OmegaForm/persistency.d.ts +58 -0
  27. package/dist/types/components/OmegaForm/submit.d.ts +60 -0
  28. package/dist/types/components/OmegaForm/types.d.ts +289 -0
  29. package/dist/types/components/OmegaForm/useOmegaForm.d.ts +7 -213
  30. package/dist/types/components/OmegaForm/validation/localized.d.ts +10 -0
  31. package/dist/types/index.d.ts +0 -1
  32. package/dist/types/utils/index.d.ts +8 -8
  33. package/dist/vue-components.es.js +29 -44
  34. package/dist/vue-components10.es.js +5 -0
  35. package/dist/vue-components11.es.js +20 -0
  36. package/dist/vue-components12.es.js +49 -0
  37. package/dist/vue-components13.es.js +128 -0
  38. package/dist/vue-components14.es.js +65 -0
  39. package/dist/vue-components15.es.js +114 -0
  40. package/dist/vue-components16.es.js +22 -0
  41. package/dist/vue-components17.es.js +5 -0
  42. package/dist/vue-components18.es.js +80 -0
  43. package/dist/vue-components19.es.js +93 -0
  44. package/dist/vue-components2.es.js +11 -0
  45. package/dist/vue-components20.es.js +73 -0
  46. package/dist/vue-components21.es.js +12 -0
  47. package/dist/vue-components22.es.js +56 -0
  48. package/dist/vue-components23.es.js +5 -0
  49. package/dist/vue-components24.es.js +44 -0
  50. package/dist/vue-components25.es.js +5 -0
  51. package/dist/vue-components26.es.js +84 -0
  52. package/dist/vue-components28.es.js +8 -0
  53. package/dist/vue-components29.es.js +9 -0
  54. package/dist/vue-components3.es.js +86 -0
  55. package/dist/vue-components30.es.js +269 -0
  56. package/dist/vue-components32.es.js +8 -0
  57. package/dist/vue-components33.es.js +73 -0
  58. package/dist/vue-components34.es.js +5 -0
  59. package/dist/vue-components35.es.js +52 -0
  60. package/dist/vue-components36.es.js +5 -0
  61. package/dist/vue-components37.es.js +24 -0
  62. package/dist/vue-components38.es.js +5 -0
  63. package/dist/vue-components39.es.js +59 -0
  64. package/dist/vue-components4.es.js +5 -0
  65. package/dist/vue-components40.es.js +5 -0
  66. package/dist/vue-components41.es.js +12 -0
  67. package/dist/vue-components42.es.js +22 -0
  68. package/dist/vue-components44.es.js +9 -0
  69. package/dist/vue-components45.es.js +4 -0
  70. package/dist/vue-components46.es.js +38 -0
  71. package/dist/vue-components47.es.js +27 -0
  72. package/dist/vue-components48.es.js +28 -0
  73. package/dist/vue-components49.es.js +7 -0
  74. package/dist/vue-components5.es.js +24 -0
  75. package/dist/vue-components50.es.js +18 -0
  76. package/dist/vue-components51.es.js +36 -0
  77. package/dist/vue-components52.es.js +18 -0
  78. package/dist/vue-components53.es.js +21 -0
  79. package/dist/vue-components54.es.js +30 -0
  80. package/dist/vue-components55.es.js +7 -0
  81. package/dist/vue-components56.es.js +9 -0
  82. package/dist/vue-components57.es.js +38 -0
  83. package/dist/vue-components58.es.js +25 -0
  84. package/dist/vue-components59.es.js +128 -0
  85. package/dist/vue-components6.es.js +13 -0
  86. package/dist/vue-components60.es.js +24 -0
  87. package/dist/vue-components61.es.js +21 -0
  88. package/dist/vue-components62.es.js +9 -0
  89. package/dist/vue-components63.es.js +19 -0
  90. package/dist/vue-components64.es.js +5 -0
  91. package/dist/vue-components65.es.js +29 -0
  92. package/dist/vue-components66.es.js +5 -0
  93. package/dist/vue-components67.es.js +43 -0
  94. package/dist/vue-components68.es.js +100 -0
  95. package/dist/vue-components69.es.js +33 -0
  96. package/dist/vue-components7.es.js +13 -0
  97. package/dist/vue-components70.es.js +19 -0
  98. package/dist/vue-components71.es.js +48 -0
  99. package/dist/vue-components8.es.js +35 -0
  100. package/dist/vue-components9.es.js +47 -0
  101. package/package.json +30 -30
  102. package/src/components/CommandButton.vue +55 -7
  103. package/src/components/OmegaForm/InputProps.ts +1 -1
  104. package/src/components/OmegaForm/OmegaArray.vue +8 -9
  105. package/src/components/OmegaForm/OmegaAutoGen.vue +3 -2
  106. package/src/components/OmegaForm/OmegaErrorsInternal.vue +1 -1
  107. package/src/components/OmegaForm/OmegaFormInput.vue +1 -1
  108. package/src/components/OmegaForm/OmegaInput.vue +15 -38
  109. package/src/components/OmegaForm/OmegaInputVuetify.vue +5 -2
  110. package/src/components/OmegaForm/OmegaInternalInput.vue +17 -5
  111. package/src/components/OmegaForm/OmegaTaggedUnion.vue +10 -3
  112. package/src/components/OmegaForm/OmegaTaggedUnionInternal.vue +6 -6
  113. package/src/components/OmegaForm/OmegaWrapper.vue +1 -1
  114. package/src/components/OmegaForm/blockDialog.ts +18 -6
  115. package/src/components/OmegaForm/createUseFormWithCustomInput.ts +2 -1
  116. package/src/components/OmegaForm/errors.ts +136 -0
  117. package/src/components/OmegaForm/getOmegaStore.ts +1 -1
  118. package/src/components/OmegaForm/hocs.ts +19 -0
  119. package/src/components/OmegaForm/index.ts +16 -4
  120. package/src/components/OmegaForm/inputs.ts +22 -0
  121. package/src/components/OmegaForm/meta/checks.ts +82 -0
  122. package/src/components/OmegaForm/meta/createMeta.ts +140 -0
  123. package/src/components/OmegaForm/meta/defaults.ts +261 -0
  124. package/src/components/OmegaForm/meta/redacted.ts +66 -0
  125. package/src/components/OmegaForm/meta/types.ts +78 -0
  126. package/src/components/OmegaForm/meta/walker.ts +248 -0
  127. package/src/components/OmegaForm/persistency.ts +247 -0
  128. package/src/components/OmegaForm/submit.ts +131 -0
  129. package/src/components/OmegaForm/types.ts +759 -0
  130. package/src/components/OmegaForm/useOmegaForm.ts +99 -893
  131. package/src/components/OmegaForm/useRegisterField.ts +1 -1
  132. package/src/components/OmegaForm/validation/localized.ts +203 -0
  133. package/src/index.ts +0 -1
  134. package/src/reset.css +39 -38
  135. package/src/utils/index.ts +11 -8
  136. package/dist/types/components/OmegaForm/OmegaFormStuff.d.ts +0 -159
  137. package/dist/types/constants/index.d.ts +0 -1
  138. package/dist/vue-components.es10.js +0 -239
  139. package/dist/vue-components.es11.js +0 -32
  140. package/dist/vue-components.es12.js +0 -503
  141. package/dist/vue-components.es13.js +0 -49
  142. package/dist/vue-components.es14.js +0 -4
  143. package/dist/vue-components.es15.js +0 -4
  144. package/dist/vue-components.es16.js +0 -6
  145. package/dist/vue-components.es17.js +0 -13
  146. package/dist/vue-components.es18.js +0 -57
  147. package/dist/vue-components.es19.js +0 -56
  148. package/dist/vue-components.es2.js +0 -30
  149. package/dist/vue-components.es20.js +0 -8
  150. package/dist/vue-components.es21.js +0 -8
  151. package/dist/vue-components.es22.js +0 -5
  152. package/dist/vue-components.es23.js +0 -5
  153. package/dist/vue-components.es24.js +0 -4
  154. package/dist/vue-components.es25.js +0 -4
  155. package/dist/vue-components.es26.js +0 -4
  156. package/dist/vue-components.es27.js +0 -4
  157. package/dist/vue-components.es28.js +0 -19
  158. package/dist/vue-components.es29.js +0 -13
  159. package/dist/vue-components.es3.js +0 -17
  160. package/dist/vue-components.es30.js +0 -31
  161. package/dist/vue-components.es31.js +0 -6
  162. package/dist/vue-components.es32.js +0 -4
  163. package/dist/vue-components.es33.js +0 -4
  164. package/dist/vue-components.es34.js +0 -113
  165. package/dist/vue-components.es36.js +0 -9
  166. package/dist/vue-components.es37.js +0 -34
  167. package/dist/vue-components.es39.js +0 -194
  168. package/dist/vue-components.es4.js +0 -52
  169. package/dist/vue-components.es41.js +0 -6
  170. package/dist/vue-components.es42.js +0 -25
  171. package/dist/vue-components.es43.js +0 -7
  172. package/dist/vue-components.es44.js +0 -23
  173. package/dist/vue-components.es45.js +0 -32
  174. package/dist/vue-components.es46.js +0 -24
  175. package/dist/vue-components.es47.js +0 -14
  176. package/dist/vue-components.es48.js +0 -7
  177. package/dist/vue-components.es49.js +0 -21
  178. package/dist/vue-components.es5.js +0 -52
  179. package/dist/vue-components.es50.js +0 -11
  180. package/dist/vue-components.es51.js +0 -33
  181. package/dist/vue-components.es52.js +0 -50
  182. package/dist/vue-components.es53.js +0 -28
  183. package/dist/vue-components.es54.js +0 -13
  184. package/dist/vue-components.es55.js +0 -67
  185. package/dist/vue-components.es56.js +0 -58
  186. package/dist/vue-components.es57.js +0 -19
  187. package/dist/vue-components.es58.js +0 -35
  188. package/dist/vue-components.es59.js +0 -31
  189. package/dist/vue-components.es6.js +0 -69
  190. package/dist/vue-components.es60.js +0 -44
  191. package/dist/vue-components.es61.js +0 -4
  192. package/dist/vue-components.es62.js +0 -46
  193. package/dist/vue-components.es63.js +0 -4
  194. package/dist/vue-components.es7.js +0 -83
  195. package/dist/vue-components.es8.js +0 -63
  196. package/dist/vue-components.es9.js +0 -21
  197. package/src/components/OmegaForm/OmegaFormStuff.ts +0 -1276
  198. package/src/constants/index.ts +0 -1
@@ -0,0 +1,100 @@
1
+ import { useIntl as e } from "./vue-components6.es.js";
2
+ import { generateMetaFromSchema as t, unwrapDeclaration as n } from "./vue-components14.es.js";
3
+ import { defaultsValueFromSchema as r, fillNestedDefaults as i } from "./vue-components15.es.js";
4
+ import { toFormSchema as a } from "./vue-components16.es.js";
5
+ import { usePersistency as o } from "./vue-components18.es.js";
6
+ import { annotateLiteralUnionMessages as s, toLocalizedStandardSchemaV1 as c } from "./vue-components19.es.js";
7
+ import { eHoc as l, makeFieldMap as u } from "./vue-components20.es.js";
8
+ import { fHoc as d } from "./vue-components21.es.js";
9
+ import f from "./vue-components23.es.js";
10
+ import p from "./vue-components25.es.js";
11
+ import m from "./vue-components29.es.js";
12
+ import h from "./vue-components36.es.js";
13
+ import g from "./vue-components40.es.js";
14
+ import _ from "./vue-components44.es.js";
15
+ import { makeSubmitHandlers as v, wrapOnSubmit as y } from "./vue-components67.es.js";
16
+ import { watch as b } from "vue";
17
+ import * as x from "effect-app/Schema";
18
+ import { revalidateLogic as S, useForm as C } from "@tanstack/vue-form";
19
+ import * as w from "effect-app/Context";
20
+ import { makeRunPromise as T } from "@effect-app/vue/runtime";
21
+ //#region src/components/OmegaForm/useOmegaForm.ts
22
+ var E = Symbol("OmegaForm"), D = T(w.empty()), O = (w, T, E) => {
23
+ if (!w) throw Error("Schema is required");
24
+ let { trans: O } = e(), k = a(w), A = s(k, O), j = n(k.ast), M = (e) => i(j, e), N = c(A, O), P = {
25
+ ...N,
26
+ "~standard": {
27
+ ...N["~standard"],
28
+ validate: (e) => N["~standard"].validate(M(e))
29
+ }
30
+ }, F = x.decodeUnknownEffectConcurrently(k), I = (e) => F(M(e)), { meta: L, unionMeta: R } = t(k), z = { form: void 0 }, B = o({
31
+ meta: L,
32
+ persistency: E?.persistency,
33
+ preventWindowExit: E?.preventWindowExit,
34
+ defaultValuesPriority: E?.defaultValuesPriority,
35
+ tanstackDefaultValues: T?.defaultValues,
36
+ schemaDefaultValues: () => r(w),
37
+ getForm: () => z.form
38
+ }), V = C({
39
+ ...T,
40
+ validationLogic: S(),
41
+ validators: {
42
+ onDynamic: P,
43
+ ...T?.validators
44
+ },
45
+ onSubmit: y(T?.onSubmit, I, D),
46
+ defaultValues: B.defaultValues.value
47
+ });
48
+ z.form = V;
49
+ let H = () => {
50
+ let e = V.state.values, t = i(j, e);
51
+ if (t === e || !t || typeof t != "object") return;
52
+ let n = e, r = t;
53
+ for (let e of Object.keys(r)) if (r[e] !== n[e]) {
54
+ let t = e;
55
+ V.setFieldValue(t, r[e], {
56
+ dontUpdateMeta: !0,
57
+ dontValidate: !0
58
+ });
59
+ }
60
+ }, U = () => {
61
+ Object.keys(L).forEach((e) => {
62
+ V.setFieldValue(e, void 0);
63
+ });
64
+ };
65
+ if (E?.preventWindowExit === "prevent-and-reset") {
66
+ let e = V.useStore((e) => e.isSubmitting), t = V.useStore((e) => e.submissionAttempts), n = V.useStore((e) => e.canSubmit), r = V.useStore((e) => e.values);
67
+ b([e, t], ([e, t], [i]) => {
68
+ i && !e && t > 0 && n.value && V.reset(r.value);
69
+ });
70
+ }
71
+ let { handleSubmit: W, handleSubmitEffect: G } = v(V), { fieldMap: K, registerField: q } = u(), J = Object.assign(V, {
72
+ i18nNamespace: E?.i18nNamespace,
73
+ ignorePreventCloseEvents: E?.ignorePreventCloseEvents,
74
+ meta: L,
75
+ unionMeta: R,
76
+ clear: U,
77
+ normalizeNullableStructs: H,
78
+ handleSubmit: W,
79
+ handleSubmitEffect: G,
80
+ registerField: q
81
+ }), Y = {
82
+ form: J,
83
+ fieldMap: K
84
+ };
85
+ return Object.assign(J, {
86
+ _paths: void 0,
87
+ _keys: void 0,
88
+ _schema: w,
89
+ errorContext: Y,
90
+ Form: d(J)(_),
91
+ Input: d(J)(E?.input ?? h),
92
+ TaggedUnion: d(J)(g),
93
+ Field: V.Field,
94
+ Errors: l(Y)(m),
95
+ Array: d(J)(f),
96
+ AutoGen: d(J)(p)
97
+ });
98
+ };
99
+ //#endregion
100
+ export { E as OmegaFormKey, O as useOmegaForm };
@@ -0,0 +1,33 @@
1
+ import e from "./vue-components36.es.js";
2
+ import { useOmegaForm as t } from "./vue-components68.es.js";
3
+ import { h as n } from "vue";
4
+ //#region src/components/OmegaForm/createUseFormWithCustomInput.ts
5
+ var r = (r) => (...i) => {
6
+ let [a, o, s] = i, c = {
7
+ name: "WrappedInput",
8
+ inheritAttrs: !1,
9
+ setup(t, { attrs: i, slots: a }) {
10
+ return () => n(e, {
11
+ ...t,
12
+ ...i
13
+ }, {
14
+ default: ({ field: e, state: t, ...o }) => n(r, {
15
+ ...Object.fromEntries(Object.entries(i).filter(([e]) => !Object.prototype.hasOwnProperty.call(o, e) && e !== "form")),
16
+ field: e,
17
+ state: t,
18
+ inputProps: o
19
+ }, {
20
+ ...a.label && { label: (e) => a.label(e) },
21
+ ...a.default && { default: (e) => a.default(e) }
22
+ }),
23
+ ...a.label && { label: (e) => a.label(e) }
24
+ });
25
+ }
26
+ };
27
+ return t(a, o, {
28
+ ...s,
29
+ input: c
30
+ });
31
+ };
32
+ //#endregion
33
+ export { r as createUseFormWithCustomInput };
@@ -0,0 +1,13 @@
1
+ import { onMounted as e, onUnmounted as t } from "vue";
2
+ //#region src/components/OmegaForm/onMountedWithCleanup.ts
3
+ function n(n) {
4
+ let r;
5
+ e(() => {
6
+ let e = n();
7
+ e && (r = e);
8
+ }), t(() => {
9
+ r && r();
10
+ });
11
+ }
12
+ //#endregion
13
+ export { n as onMountedWithCleanup };
@@ -0,0 +1,19 @@
1
+ import "./vue-components8.es.js";
2
+ import "./vue-components11.es.js";
3
+ import "./vue-components14.es.js";
4
+ import "./vue-components15.es.js";
5
+ import "./vue-components16.es.js";
6
+ import "./vue-components18.es.js";
7
+ import "./vue-components19.es.js";
8
+ import "./vue-components20.es.js";
9
+ import "./vue-components34.es.js";
10
+ import "./vue-components36.es.js";
11
+ import "./vue-components38.es.js";
12
+ import "./vue-components40.es.js";
13
+ import "./vue-components67.es.js";
14
+ import "./vue-components68.es.js";
15
+ import "./vue-components69.es.js";
16
+ //#region src/components/OmegaForm/index.ts
17
+ var e = (e) => e;
18
+ //#endregion
19
+ export { e as duplicateSchema };
@@ -0,0 +1,48 @@
1
+ import { __exportAll as e } from "./vue-components2.es.js";
2
+ import t from "./vue-components4.es.js";
3
+ import { useOnClose as n, usePreventClose as r } from "./vue-components8.es.js";
4
+ import i from "./vue-components10.es.js";
5
+ import { getInputType as a } from "./vue-components11.es.js";
6
+ import { createMeta as o, generateMetaFromSchema as s, isNullableOrUndefined as c, metadataFromAst as l } from "./vue-components14.es.js";
7
+ import { defaultsValueFromSchema as u } from "./vue-components15.es.js";
8
+ import { toFormSchema as d } from "./vue-components16.es.js";
9
+ import { deepMerge as f } from "./vue-components18.es.js";
10
+ import { makeStandardSchemaV1Hooks as p, toLocalizedStandardSchemaV1 as m } from "./vue-components19.es.js";
11
+ import { useErrorLabel as h } from "./vue-components20.es.js";
12
+ import g from "./vue-components34.es.js";
13
+ import _ from "./vue-components36.es.js";
14
+ import v from "./vue-components38.es.js";
15
+ import y from "./vue-components40.es.js";
16
+ import { FormErrors as b } from "./vue-components67.es.js";
17
+ import { OmegaFormKey as x, useOmegaForm as S } from "./vue-components68.es.js";
18
+ import { createUseFormWithCustomInput as C } from "./vue-components69.es.js";
19
+ import { duplicateSchema as w } from "./vue-components70.es.js";
20
+ //#region src/components/index.ts
21
+ var T = /* @__PURE__ */ e({
22
+ CommandButton: () => t,
23
+ Dialog: () => i,
24
+ FormErrors: () => b,
25
+ OmegaFormKey: () => x,
26
+ OmegaInput: () => _,
27
+ OmegaTaggedUnion: () => y,
28
+ OmegaTaggedUnionInternal: () => v,
29
+ OmegaVuetifyInput: () => g,
30
+ createMeta: () => o,
31
+ createUseFormWithCustomInput: () => C,
32
+ deepMerge: () => f,
33
+ defaultsValueFromSchema: () => u,
34
+ duplicateSchema: () => w,
35
+ generateMetaFromSchema: () => s,
36
+ getInputType: () => a,
37
+ isNullableOrUndefined: () => c,
38
+ makeStandardSchemaV1Hooks: () => p,
39
+ metadataFromAst: () => l,
40
+ toFormSchema: () => d,
41
+ toLocalizedStandardSchemaV1: () => m,
42
+ useErrorLabel: () => h,
43
+ useOmegaForm: () => S,
44
+ useOnClose: () => n,
45
+ usePreventClose: () => r
46
+ });
47
+ //#endregion
48
+ export { T as components_exports };
@@ -0,0 +1,35 @@
1
+ import e from "./vue-components5.es.js";
2
+ import { useIntl as t } from "./vue-components6.es.js";
3
+ import { onMountedWithCleanup as n } from "./vue-components7.es.js";
4
+ import { inject as r, provide as i } from "vue";
5
+ //#region src/components/OmegaForm/blockDialog.ts
6
+ var a = () => e(), o = Symbol("DialogBus"), s = () => r(o, null), c = () => {
7
+ let e = a();
8
+ return i(o, e), e;
9
+ }, l = (e) => {
10
+ let r = s();
11
+ if (!r) return;
12
+ let { formatMessage: i, trans: a } = t(), o = e(), c = "There are unsaved changes. Are you sure you want to close?";
13
+ n(() => {
14
+ let e = (e) => {
15
+ if (o.value) {
16
+ let t = i ? i({
17
+ id: "form.unsaved_changes_confirm",
18
+ defaultMessage: c
19
+ }) : a?.("form.unsaved_changes_confirm") ?? c;
20
+ confirm(t) || (e.prevent = !0);
21
+ }
22
+ };
23
+ return r.on("dialog-closing", e), () => r.off("dialog-closing", e);
24
+ });
25
+ }, u = (e) => {
26
+ let t = s();
27
+ return t ||= c(), () => {
28
+ let n = {};
29
+ t.emit("dialog-closing", n), n.prevent ? typeof n.prevent == "object" && "then" in n.prevent && n.prevent.then((t) => {
30
+ t && e();
31
+ }).catch(console.error) : e();
32
+ };
33
+ };
34
+ //#endregion
35
+ export { u as useOnClose, l as usePreventClose };
@@ -0,0 +1,47 @@
1
+ import { onMountedWithCleanup as e } from "./vue-components7.es.js";
2
+ import { useOnClose as t } from "./vue-components8.es.js";
3
+ import { computed as n, createBlock as r, createSlots as i, defineComponent as a, guardReactiveProps as o, mergeModels as s, normalizeProps as c, openBlock as l, renderList as u, renderSlot as d, resolveComponent as f, unref as p, useModel as m, useSlots as h, withCtx as g } from "vue";
4
+ //#region src/components/Dialog.vue?vue&type=script&setup=true&lang.ts
5
+ var _ = /* @__PURE__ */ a({
6
+ __name: "Dialog",
7
+ props: /* @__PURE__ */ s({ persistent: { type: Boolean } }, {
8
+ modelValue: {
9
+ type: Boolean,
10
+ default: !1
11
+ },
12
+ modelModifiers: {}
13
+ }),
14
+ emits: ["update:modelValue"],
15
+ setup(a) {
16
+ let s = a, _ = m(a, "modelValue"), v = h(), y = n(() => {
17
+ let { default: e, ...t } = v;
18
+ return t;
19
+ }), b = t(() => _.value = !1);
20
+ return e(() => {
21
+ let e = (e) => {
22
+ _.value && !s.persistent && e.code === "Escape" && b();
23
+ };
24
+ return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
25
+ }), (e, t) => {
26
+ let n = f("v-dialog");
27
+ return l(), r(n, {
28
+ modelValue: _.value,
29
+ "onUpdate:modelValue": t[0] ||= (e) => _.value = e,
30
+ persistent: "",
31
+ "onClick:outside": p(b)
32
+ }, i({
33
+ default: g(({ isActive: t }) => [d(e.$slots, "default", {
34
+ open: _.value,
35
+ cancel: p(b),
36
+ isActive: t
37
+ })]),
38
+ _: 2
39
+ }, [u(y.value, (t, n) => ({
40
+ name: n,
41
+ fn: g((t) => [d(e.$slots, n, c(o(t)))])
42
+ }))]), 1032, ["modelValue", "onClick:outside"]);
43
+ };
44
+ }
45
+ });
46
+ //#endregion
47
+ export { _ as default };
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "4.0.0-beta.24",
3
+ "version": "4.0.0-beta.240",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
- "effect": "^4.0.0-beta.36",
7
- "intl-messageformat": "^11.1.2",
6
+ "effect": "^4.0.0-beta.68",
7
+ "intl-messageformat": "^11.2.4",
8
8
  "mdi-js": "^1.0.1",
9
9
  "primeflex": "^4.0.0",
10
10
  "primeicons": "^7.0.0",
11
- "primevue": "^4.5.4",
12
- "vue": "^3.5.29",
13
- "vuetify": "^4.0.1"
11
+ "primevue": "^4.5.5",
12
+ "vue": "^3.5.34",
13
+ "vuetify": "^4.0.6"
14
14
  },
15
15
  "devDependencies": {
16
- "@storybook/vue3": "^10.2.15",
17
- "@storybook/vue3-vite": "^10.2.15",
18
- "@types/node": "^25.3.3",
19
- "@vitejs/plugin-vue": "^6.0.4",
20
- "@vue/test-utils": "^2.4.6",
21
- "@vueuse/core": "^14.2.1",
22
- "dprint": "^0.52.0",
23
- "jsdom": "^28.1.0",
16
+ "@storybook/vue3": "^10.3.6",
17
+ "@storybook/vue3-vite": "^10.3.6",
18
+ "@types/node": "^25.6.0",
19
+ "@vitejs/plugin-vue": "^6.0.6",
20
+ "@vue/test-utils": "^2.4.10",
21
+ "@vueuse/core": "^14.3.0",
22
+ "jsdom": "^29.1.1",
24
23
  "rimraf": "^6.1.3",
25
- "sass": "^1.97.3",
26
- "storybook": "^10.2.15",
27
- "typescript": "~5.9.3",
28
- "vite": "^7.3.1",
29
- "vite-plugin-css-injected-by-js": "^4.0.1",
24
+ "sass": "^1.99.0",
25
+ "storybook": "^10.3.6",
26
+ "storybook-vue3-router": "^7.0.0",
27
+ "typescript": "~6.0.3",
28
+ "vite": "^8.0.10",
29
+ "vite-plugin-css-injected-by-js": "^5.0.1",
30
30
  "vitepress": "^1.6.4",
31
- "vitest": "^4.0.18",
32
- "vue-router": "^5.0.3",
31
+ "vitest": "^4.1.5",
32
+ "vue-router": "^5.0.6",
33
33
  "vue-toastification": "^2.0.0-rc.5",
34
- "vue-tsc": "^3.2.5",
35
- "vuetify": "^4.0.1",
36
- "@effect-app/eslint-shared-config": "0.5.7-beta.2"
34
+ "vue-tsc": "^3.2.8",
35
+ "vuetify": "^4.0.6",
36
+ "@effect-app/eslint-shared-config": "0.6.0-beta.26"
37
37
  },
38
38
  "files": [
39
39
  "src",
@@ -52,13 +52,13 @@
52
52
  }
53
53
  },
54
54
  "dependencies": {
55
- "@opentelemetry/api": "^1.9.0",
56
- "@tanstack/vue-form": "^1.23.5",
55
+ "@opentelemetry/api": "^1.9.1",
56
+ "@tanstack/vue-form": "^1.32.0",
57
57
  "highlight.js": "^11.11.1",
58
58
  "mitt": "^3.0.1",
59
59
  "vue3-highlightjs": "^1.0.5",
60
- "effect-app": "4.0.0-beta.24",
61
- "@effect-app/vue": "4.0.0-beta.24"
60
+ "@effect-app/vue": "4.0.0-beta.240",
61
+ "effect-app": "4.0.0-beta.240"
62
62
  },
63
63
  "scripts": {
64
64
  "check": "vue-tsc",
@@ -67,10 +67,10 @@
67
67
  "docs:dev": "vitepress dev docs",
68
68
  "docs:build": "vitepress build docs",
69
69
  "docs:serve": "vitepress serve docs",
70
- "lint": "NODE_OPTIONS=--max-old-space-size=8192 eslint src stories .storybook",
70
+ "lint": "oxlint --quiet --type-aware src stories && NODE_OPTIONS=--max-old-space-size=8192 ESLINT_TS=1 eslint --quiet src stories .storybook && pnpm exec dprint check --config ../../dprint.jsonc .",
71
71
  "ncu": "ncu",
72
72
  "clean": "rm -rf dist",
73
- "lint-fix": "pnpm lint --fix",
73
+ "lint-fix": "oxlint --quiet --type-aware --fix src stories && NODE_OPTIONS=--max-old-space-size=8192 ESLINT_TS=1 eslint --quiet --fix src stories .storybook && pnpm exec dprint fmt --config ../../dprint.jsonc .",
74
74
  "storybook": "storybook dev -p 6006",
75
75
  "build-storybook": "storybook build",
76
76
  "test": "vitest",
@@ -1,9 +1,10 @@
1
1
  <script
2
2
  setup
3
3
  lang="ts"
4
- generic="I = never"
4
+ generic="I = never, RA = unknown, RE = unknown"
5
5
  >
6
- import type { CommandBase } from "@effect-app/vue"
6
+ import type { CommandBase, Progress } from "@effect-app/vue/makeClient"
7
+ import type * as AsyncResult from "effect/unstable/reactivity/AsyncResult"
7
8
  import { computed } from "vue"
8
9
  import type { VBtn } from "vuetify/components"
9
10
 
@@ -14,11 +15,11 @@ const props = defineProps<
14
15
  & (
15
16
  | {
16
17
  input: NoInfer<I>
17
- command: CommandBase<I>
18
+ command: CommandBase<I, any, RA, RE>
18
19
  empty?: boolean
19
20
  }
20
21
  | {
21
- command: CommandBase
22
+ command: CommandBase<any, any, RA, RE>
22
23
  input?: undefined
23
24
  empty?: boolean
24
25
  }
@@ -26,12 +27,32 @@ const props = defineProps<
26
27
  & {
27
28
  disabled?: ButtonProps["disabled"]
28
29
  title?: string // why isn't it part of VBtnProps??
30
+ mapProgress?: (result: AsyncResult.AsyncResult<RA, RE>) => Progress | undefined
29
31
  }
30
32
  & ButtonProps
31
33
  >()
32
34
 
33
35
  const isDisabled = computed(() => props.command.blocked || props.disabled)
34
36
 
37
+ const resolvedProgress = computed(() => {
38
+ if (props.mapProgress) {
39
+ const result = props.command.result
40
+ return result !== undefined ? props.mapProgress(result) : undefined
41
+ }
42
+ return props.command.progress
43
+ })
44
+
45
+ const progressText = computed(() => {
46
+ const p = resolvedProgress.value
47
+ if (p === undefined) return undefined
48
+ return typeof p === "string" ? p : p.text
49
+ })
50
+
51
+ const progressPercentage = computed(() => {
52
+ const p = resolvedProgress.value
53
+ return typeof p === "object" && p !== null ? p.percentage : undefined
54
+ })
55
+
35
56
  const handleClick = () => {
36
57
  // Block execution if button is disabled
37
58
  if (isDisabled.value) {
@@ -41,7 +62,9 @@ const handleClick = () => {
41
62
  const input = ("input" in props && props.input
42
63
  ? props.input
43
64
  : undefined) as unknown as I
44
- ;(props.command.handle as any)(input)
65
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- command.handle has a generic signature mismatched by erased input type
66
+ const handle = props.command.handle as any
67
+ handle(input)
45
68
  }
46
69
  </script>
47
70
  <script lang="ts">
@@ -60,13 +83,25 @@ export default {
60
83
  :class="{ 'v-btn--disabled': isDisabled }"
61
84
  @click="handleClick"
62
85
  >
86
+ <template
87
+ v-if="progressText !== undefined"
88
+ #loader
89
+ >
90
+ <v-progress-circular
91
+ :indeterminate="progressPercentage === undefined"
92
+ :model-value="progressPercentage"
93
+ size="20"
94
+ width="2"
95
+ />
96
+ <span class="ml-2">{{ progressText }}</span>
97
+ </template>
63
98
  <slot
64
99
  :loading="command.waiting"
65
100
  :disabled="isDisabled"
66
101
  :label="command.label"
67
102
  :title="title ?? command.action"
68
103
  >
69
- <span>{{ command.label }}</span>
104
+ {{ command.label }}
70
105
  </slot>
71
106
  </v-btn>
72
107
  <v-btn
@@ -77,5 +112,18 @@ export default {
77
112
  :title="title ?? command.action"
78
113
  :class="{ 'v-btn--disabled': isDisabled }"
79
114
  @click="handleClick"
80
- />
115
+ >
116
+ <template
117
+ v-if="progressText !== undefined"
118
+ #loader
119
+ >
120
+ <v-progress-circular
121
+ :indeterminate="progressPercentage === undefined"
122
+ :model-value="progressPercentage"
123
+ size="20"
124
+ width="2"
125
+ />
126
+ <span class="ml-2">{{ progressText }}</span>
127
+ </template>
128
+ </v-btn>
81
129
  </template>
@@ -43,7 +43,7 @@ export type InputProps<From extends Record<PropertyKey, any>, TName extends Deep
43
43
  inputClass: string | undefined | null
44
44
  }
45
45
  field: OmegaFieldInternalApi<From, TName>
46
- /** be sure to use this state and not `field.state` as it is not reactive */
46
+ /** reactive field state, sourced from `field.state` (the Field slot's own `state` prop is a stale snapshot since @tanstack/vue-form 1.32) */
47
47
  state: OmegaFieldInternalApi<From, TName>["state"]
48
48
  }
49
49
 
@@ -3,24 +3,23 @@
3
3
  :is="form.Field"
4
4
  :name="name"
5
5
  >
6
- <template #default="{ field, state }">
6
+ <!-- `field.state` is reactive; the Field slot's `state` prop is a stale snapshot since @tanstack/vue-form 1.32 -->
7
+ <template #default="{ field }">
7
8
  <slot
8
9
  name="pre-array"
9
- v-bind="{ field, state }"
10
+ v-bind="{ field, state: field.state }"
10
11
  />
11
12
  <component
12
13
  :is="form.Field"
13
14
  v-for="(_, i) of items"
14
15
  :key="`${name}[${Number(i)}]`"
15
- :name="// eslint-disable-next-line
16
- `${name}[${Number(i)}]` as DeepKeys<From>
17
- "
16
+ :name="`${name}[${Number(i)}]` as DeepKeys<From>"
18
17
  >
19
- <template #default="{ field: subField, state: subState }">
18
+ <template #default="{ field: subField }">
20
19
  <slot
21
20
  v-bind="{
22
21
  subField,
23
- subState,
22
+ subState: subField.state,
24
23
  index: Number(i),
25
24
  field
26
25
  }"
@@ -29,7 +28,7 @@
29
28
  </component>
30
29
  <slot
31
30
  name="post-array"
32
- v-bind="{ field, state }"
31
+ v-bind="{ field, state: field.state }"
33
32
  />
34
33
  <!-- TODO: legacy slot, remove this slot -->
35
34
  <slot
@@ -46,7 +45,7 @@
46
45
  >
47
46
  import { type DeepKeys } from "@tanstack/vue-form"
48
47
  import { computed, onMounted, provide } from "vue"
49
- import { type OmegaArrayProps } from "./OmegaFormStuff"
48
+ import { type OmegaArrayProps } from "./types"
50
49
 
51
50
  const props = defineProps<OmegaArrayProps<From, To, Name>>()
52
51
 
@@ -20,9 +20,10 @@
20
20
  Name extends DeepKeys<From>"
21
21
  >
22
22
  import { type DeepKeys } from "@tanstack/vue-form"
23
- import { Order } from "effect-app"
23
+ import * as Order from "effect/Order"
24
24
  import { computed } from "vue"
25
- import { type FieldMeta, type FieldPath, type OmegaAutoGenMeta, type OmegaInputProps } from "./OmegaFormStuff"
25
+ import { type FieldMeta } from "./meta/types"
26
+ import { type FieldPath, type OmegaAutoGenMeta, type OmegaInputProps } from "./types"
26
27
 
27
28
  type NewMeta = OmegaAutoGenMeta<From, To, Name>
28
29
 
@@ -102,7 +102,7 @@
102
102
  import type { StandardSchemaV1Issue } from "@tanstack/vue-form"
103
103
  import { computed, getCurrentInstance } from "vue"
104
104
  import { useIntl } from "../../utils"
105
- import { type OmegaError } from "./OmegaFormStuff"
105
+ import { type OmegaError } from "./types"
106
106
 
107
107
  const instance = getCurrentInstance()
108
108
  const vuetified = instance?.appContext.components["VAlert"]
@@ -17,8 +17,8 @@
17
17
  import { type DeepKeys } from "@tanstack/vue-form"
18
18
  import { inject } from "vue"
19
19
  import type { MergedInputProps } from "./InputProps"
20
- import type { BaseProps, DefaultTypeProps, OmegaInputProps } from "./OmegaFormStuff"
21
20
  import OmegaInput from "./OmegaInput.vue"
21
+ import type { BaseProps, DefaultTypeProps, OmegaInputProps } from "./types"
22
22
  import { OmegaFormKey } from "./useOmegaForm"
23
23
 
24
24
  const form = inject(OmegaFormKey) as unknown as OmegaInputProps<