@effect-app/vue-components 0.13.5 → 0.14.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.
@@ -2,21 +2,17 @@ import { type OmegaInputProps } from "./OmegaFormStuff";
2
2
  import { type DeepValue, type DeepKeys } from "@tanstack/vue-form";
3
3
  declare const _default: <From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
4
4
  props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, never> & (Omit<OmegaInputProps<From, To>, "type" | "label" | "items" | "options" | "validators"> & {
5
- items?: DeepValue<To, DeepKeys<To>>;
5
+ defaultItems?: DeepValue<To, DeepKeys<To>>;
6
+ items?: "please use `defaultItems` instead";
6
7
  }) & Partial<{}>> & import("vue").PublicProps;
7
8
  expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
8
9
  attrs: any;
9
10
  slots: {
10
11
  default?: (props: {
11
- field: import("@tanstack/vue-form").FieldApi<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").StandardSchemaV1<From, To>, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined>;
12
12
  subField: import("@tanstack/vue-form").FieldApi<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").StandardSchemaV1<From, To>, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined>;
13
13
  subState: import("@tanstack/vue-form").FieldState<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").StandardSchemaV1<From, To>, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined>;
14
14
  index: number;
15
15
  }) => any;
16
- } & {
17
- field?: (props: {
18
- field: import("@tanstack/vue-form").FieldApi<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FieldAsyncValidateOrFn<From, DeepKeys<From>, DeepValue<From, DeepKeys<From>>> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").StandardSchemaV1<From, To>, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined, import("@tanstack/vue-form").FormAsyncValidateOrFn<From> | undefined>;
19
- }) => any;
20
16
  };
21
17
  emit: {};
22
18
  }>) => import("vue").VNode & {
@@ -1,4 +1,4 @@
1
- import { S, type Effect } from "effect-app";
1
+ import { S, type Record, type Effect } from "effect-app";
2
2
  import { type FormAsyncValidateOrFn, type FormValidateOrFn, type StandardSchemaV1, type FormApi, type VueFormApi, type FormOptions, type DeepKeys, type FieldValidateOrFn, type FieldAsyncValidateOrFn, type FormState } from "@tanstack/vue-form";
3
3
  import { OmegaFormReturn } from "./useOmegaForm";
4
4
  import { OmegaFieldInternalApi } from "./InputProps";
@@ -1,5 +1,5 @@
1
1
  import { DeepKeys } from "@tanstack/vue-form";
2
- import { S } from "effect-app";
2
+ import { type Record, S } from "effect-app";
3
3
  import { type NestedKeyOf, type FilterItems, type FormProps, type MetaRecord, type OmegaFormApi, TypeOverride, FieldValidators } from "./OmegaFormStuff";
4
4
  import { type InjectionKey } from "vue";
5
5
  import { InputProps } from "./InputProps";
@@ -1,60 +1,57 @@
1
- import { defineComponent as g, onMounted as c, computed as M, provide as F, createBlock as p, openBlock as s, resolveDynamicComponent as u, withCtx as i, createElementBlock as $, renderSlot as l, Fragment as h, renderList as k, mergeProps as v, normalizeProps as _, guardReactiveProps as A } from "vue";
2
- import { createMeta as S } from "./vue-components.es10.js";
3
- const C = /* @__PURE__ */ g({
1
+ import { defineComponent as y, computed as u, onMounted as c, provide as g, resolveComponent as _, createElementBlock as M, openBlock as p, Fragment as v, renderList as F, createBlock as h, withCtx as k, renderSlot as S, mergeProps as $ } from "vue";
2
+ import { createMeta as A } from "./vue-components.es10.js";
3
+ const C = /* @__PURE__ */ y({
4
4
  inheritAttrs: !1,
5
5
  __name: "OmegaArray",
6
6
  props: {
7
7
  form: {},
8
8
  name: {},
9
+ defaultItems: {},
9
10
  items: {}
10
11
  },
11
- setup(f) {
12
- const n = f;
13
- c(() => {
14
- n.items && n.form.setFieldValue(n.name, n.items);
12
+ setup(l) {
13
+ const r = l, i = r.form.useStore((e) => e.values), m = u(() => r.name.split(".").reduce((e, o) => e[o], i.value));
14
+ c(async () => {
15
+ r.defaultItems && !m.value && r.form.setFieldValue(r.name, r.defaultItems);
15
16
  });
16
- const d = M(() => {
17
- const e = n.form.meta[n.name];
17
+ const f = u(() => {
18
+ const e = r.form.meta[r.name];
18
19
  if (e && e.type === "multiple") {
19
- const o = e.rest.reduce((t, r) => r.type._tag === "TypeLiteral" ? {
20
+ const o = e.rest.reduce((t, n) => n.type._tag === "TypeLiteral" ? {
20
21
  ...t,
21
22
  propertySignatures: [
22
23
  ...t.propertySignatures || [],
23
- ...r.type.propertySignatures
24
+ ...n.type.propertySignatures
24
25
  ]
25
26
  } : {
26
27
  ...t,
27
- property: r.type
28
- }, {}), a = S({ ...o, meta: e });
28
+ property: n.type
29
+ }, {}), a = A({ ...o, meta: e });
29
30
  return (t) => {
30
31
  if (t.endsWith("]")) return a;
31
- const r = t.split("]."), m = r[r.length - 1];
32
- return a[m];
32
+ const n = t.split("]."), s = n[n.length - 1];
33
+ return a[s];
33
34
  };
34
35
  }
35
36
  return (o) => {
36
37
  };
37
38
  });
38
- return F("getMetaFromArray", d), (e, o) => (s(), p(u(e.form.Field), { name: e.name }, {
39
- default: i(({ field: a }) => [
40
- (s(!0), $(h, null, k(a.state.value, (y, t) => (s(), p(u(e.form.Field), {
41
- key: `${e.name}[${Number(t)}]`,
42
- name: `${e.name}[${Number(t)}]`
43
- }, {
44
- default: i(({ field: r, state: m }) => [
45
- l(e.$slots, "default", v({ ref_for: !0 }, {
46
- field: a,
47
- subField: r,
48
- subState: m,
49
- index: Number(t)
50
- }))
51
- ]),
52
- _: 2
53
- }, 1032, ["name"]))), 128)),
54
- l(e.$slots, "field", _(A({ field: a })))
55
- ]),
56
- _: 3
57
- }, 8, ["name"]));
39
+ return g("getMetaFromArray", f), (e, o) => {
40
+ const a = _("form.Field");
41
+ return p(!0), M(v, null, F(m.value, (d, t) => (p(), h(a, {
42
+ key: `${e.name}[${Number(t)}]`,
43
+ name: `${e.name}[${Number(t)}]`
44
+ }, {
45
+ default: k(({ field: n, state: s }) => [
46
+ S(e.$slots, "default", $({ ref_for: !0 }, {
47
+ subField: n,
48
+ subState: s,
49
+ index: Number(t)
50
+ }))
51
+ ]),
52
+ _: 2
53
+ }, 1032, ["name"]))), 128);
54
+ };
58
55
  }
59
56
  });
60
57
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "0.13.5",
3
+ "version": "0.14.1",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "@tanstack/vue-form": "^1.2.4",
@@ -50,8 +50,8 @@
50
50
  "dependencies": {
51
51
  "highlight.js": "^11.11.1",
52
52
  "vue3-highlightjs": "^1.0.5",
53
- "@effect-app/vue": "2.51.12",
54
- "effect-app": "3.1.0"
53
+ "@effect-app/vue": "2.51.11",
54
+ "effect-app": "3.0.10"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "pnpm build:run",
@@ -1,31 +1,31 @@
1
1
  <template>
2
- <component :is="form.Field" :name="name">
3
- <template #default="{ field }">
4
- <component
5
- :is="form.Field"
6
- v-for="(_, i) of field.state.value"
7
- :key="`${name}[${Number(i)}]`"
8
- :name="
9
- `${name}[${Number(i)}]` as DeepKeys<From>
10
- "
11
- >
12
- <template #default="{ field: subField, state: subState }">
13
- <slot
14
- v-bind="{
15
- field,
16
- subField,
17
- subState,
18
- index: Number(i),
19
- }"
20
- />
21
- </template>
22
- </component>
23
- <slot name="field" v-bind="{ field }" />
2
+ <form.Field
3
+ v-for="(_, i) of items"
4
+ :key="`${name}[${Number(i)}]`"
5
+ :name="
6
+ `${name}[${Number(i)}]` as DeepKeys<From>
7
+ "
8
+ >
9
+ <template #default="{ field: subField, state: subState }">
10
+ <slot
11
+ v-bind="{
12
+ subField,
13
+ subState,
14
+ index: Number(i),
15
+ }"
16
+ />
24
17
  </template>
25
- </component>
18
+ </form.Field>
26
19
  </template>
27
20
 
28
- <script setup lang="ts" generic="From extends Record<PropertyKey, any>, To extends Record<PropertyKey, any>">
21
+ <script
22
+ setup
23
+ lang="ts"
24
+ generic="
25
+ From extends Record<PropertyKey, any>,
26
+ To extends Record<PropertyKey, any>
27
+ "
28
+ >
29
29
  import { computed, onMounted, provide } from "vue"
30
30
  import {
31
31
  type CreateMeta,
@@ -39,7 +39,9 @@ const props = defineProps<
39
39
  OmegaInputProps<From, To>,
40
40
  "validators" | "options" | "label" | "type" | "items"
41
41
  > & {
42
- items?: DeepValue<To, DeepKeys<To>>
42
+ defaultItems?: DeepValue<To, DeepKeys<To>>
43
+ // deprecated items, caused bugs in state update, use defaultItems instead. It's not a simple Never, because Volar explodes
44
+ items?: "please use `defaultItems` instead"
43
45
  }
44
46
  >()
45
47
 
@@ -47,9 +49,19 @@ defineOptions({
47
49
  inheritAttrs: false,
48
50
  })
49
51
 
50
- onMounted(() => {
51
- if (props.items) {
52
- props.form.setFieldValue(props.name as any, props.items)
52
+ const store = props.form.useStore(state => state.values)
53
+ const items = computed(() => {
54
+ return props.name.split(".").reduce((acc, curr) => {
55
+ if (curr === "items") {
56
+ return acc[curr]
57
+ }
58
+ return acc[curr] as typeof store.value
59
+ }, store.value)
60
+ })
61
+
62
+ onMounted(async () => {
63
+ if (props.defaultItems && !items.value) {
64
+ props.form.setFieldValue(props.name, props.defaultItems)
53
65
  }
54
66
  })
55
67