@effect-app/vue-components 4.0.0-beta.232 → 4.0.0-beta.234

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.
@@ -16,7 +16,7 @@ export type InputProps<From extends Record<PropertyKey, any>, TName extends Deep
16
16
  inputClass: string | undefined | null;
17
17
  };
18
18
  field: OmegaFieldInternalApi<From, TName>;
19
- /** be sure to use this state and not `field.state` as it is not reactive */
19
+ /** reactive field state, sourced from `field.state` (the Field slot's own `state` prop is a stale snapshot since @tanstack/vue-form 1.32) */
20
20
  state: OmegaFieldInternalApi<From, TName>["state"];
21
21
  };
22
22
  export type MergedInputProps<From extends Record<PropertyKey, any>, TName extends DeepKeys<From>> = InputProps<From, TName>["inputProps"] & Pick<InputProps<From, TName>, "field" | "state">;
@@ -25,18 +25,18 @@ var h = /* @__PURE__ */ i({
25
25
  let t = e.replace(/\[\d+\]/g, "");
26
26
  return h.form.meta[t];
27
27
  })), (t, c) => (l(), n(p(i.form.Field), { name: i.name }, {
28
- default: m(({ field: c, state: u }) => [
28
+ default: m(({ field: c }) => [
29
29
  f(t.$slots, "pre-array", s(a({
30
30
  field: c,
31
- state: u
31
+ state: c.state
32
32
  }))),
33
33
  (l(!0), r(e, null, d(_.value, (e, r) => (l(), n(p(i.form.Field), {
34
34
  key: `${i.name}[${Number(r)}]`,
35
35
  name: `${i.name}[${Number(r)}]`
36
36
  }, {
37
- default: m(({ field: e, state: n }) => [f(t.$slots, "default", o({ ref_for: !0 }, {
37
+ default: m(({ field: e }) => [f(t.$slots, "default", o({ ref_for: !0 }, {
38
38
  subField: e,
39
- subState: n,
39
+ subState: e.state,
40
40
  index: Number(r),
41
41
  field: c
42
42
  }))]),
@@ -44,7 +44,7 @@ var h = /* @__PURE__ */ i({
44
44
  }, 1032, ["name"]))), 128)),
45
45
  f(t.$slots, "post-array", s(a({
46
46
  field: c,
47
- state: u
47
+ state: c.state
48
48
  }))),
49
49
  f(t.$slots, "field", s(a({ field: c })))
50
50
  ]),
@@ -20,13 +20,13 @@ var _ = /* @__PURE__ */ o({
20
20
  name: o.name,
21
21
  validators: o.validators
22
22
  }, {
23
- default: g(({ field: n, state: c }) => [S.value ? (d(), r(t, l({ key: 0 }, {
23
+ default: g(({ field: n }) => [S.value ? (d(), r(t, l({ key: 0 }, {
24
24
  ...e.$attrs,
25
25
  ...e.$props,
26
26
  inputClass: b.value
27
27
  }, {
28
28
  field: n,
29
- state: c,
29
+ state: n.state,
30
30
  register: o.form.registerField,
31
31
  label: o.label ?? m(C)(v.value),
32
32
  meta: S.value
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@effect-app/vue-components",
3
- "version": "4.0.0-beta.232",
3
+ "version": "4.0.0-beta.234",
4
4
  "peerDependencies": {
5
5
  "@mdi/js": "^7.4.47",
6
6
  "effect": "^4.0.0-beta.66",
@@ -57,8 +57,8 @@
57
57
  "highlight.js": "^11.11.1",
58
58
  "mitt": "^3.0.1",
59
59
  "vue3-highlightjs": "^1.0.5",
60
- "@effect-app/vue": "4.0.0-beta.232",
61
- "effect-app": "4.0.0-beta.232"
60
+ "@effect-app/vue": "4.0.0-beta.234",
61
+ "effect-app": "4.0.0-beta.234"
62
62
  },
63
63
  "scripts": {
64
64
  "check": "vue-tsc",
@@ -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,10 +3,11 @@
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"
@@ -14,11 +15,11 @@
14
15
  :key="`${name}[${Number(i)}]`"
15
16
  :name="`${name}[${Number(i)}]` as DeepKeys<From>"
16
17
  >
17
- <template #default="{ field: subField, state: subState }">
18
+ <template #default="{ field: subField }">
18
19
  <slot
19
20
  v-bind="{
20
21
  subField,
21
- subState,
22
+ subState: subField.state,
22
23
  index: Number(i),
23
24
  field
24
25
  }"
@@ -27,7 +28,7 @@
27
28
  </component>
28
29
  <slot
29
30
  name="post-array"
30
- v-bind="{ field, state }"
31
+ v-bind="{ field, state: field.state }"
31
32
  />
32
33
  <!-- TODO: legacy slot, remove this slot -->
33
34
  <slot
@@ -4,12 +4,18 @@
4
4
  :name="name"
5
5
  :validators="validators"
6
6
  >
7
- <template #default="{ field, state }">
7
+ <!--
8
+ Read `state` from `field.state`, not the Field slot's `state` prop.
9
+ Since @tanstack/vue-form 1.32 the slot `state` is a one-time snapshot
10
+ taken when the field mounts and never updates, whereas `field.state`
11
+ is a reactive getter backed by the field store.
12
+ -->
13
+ <template #default="{ field }">
8
14
  <OmegaInternalInput
9
15
  v-if="meta"
10
16
  v-bind="{ ...$attrs, ...$props, inputClass: computedClass }"
11
17
  :field="field as any"
12
- :state="state"
18
+ :state="field.state"
13
19
  :register="form.registerField"
14
20
  :label="label ?? errori18n(propsName)"
15
21
  :meta="meta"