@vanstack/solid-ark 0.0.23 → 0.0.25

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.
package/README.md CHANGED
@@ -54,6 +54,10 @@ function Demo() {
54
54
 
55
55
  组件样式基于 Tailwind 语义 token,覆盖 `:root` CSS 变量即可自定义(各子入口文档中有对应的 token 示例)。
56
56
 
57
+ ## 演示
58
+
59
+ 组件演示见 monorepo 的 [apps/solid-demo](https://gitee.com/janzho/vanstack/tree/master/apps/solid-demo):`pnpm dev` 后打开 Form / Modal / DataTable / Badge 等页面。
60
+
57
61
  ## License
58
62
 
59
63
  MIT
@@ -1,7 +1,7 @@
1
1
  import "../solid-ark.css";
2
2
  import { t as e } from "../button-Br_upy12.js";
3
3
  import { t } from "../badge-Dt0uZnmA.js";
4
- import { t as n } from "../form-B5rMsobe.js";
4
+ import { t as n } from "../form-CsuVvlcC.js";
5
5
  import { t as r } from "../table-Dl0ngdNr.js";
6
6
  import { className as i, createComponent as a, effect as o, insert as s, memo as c, setAttribute as l, setStyleProperty as u, template as d, use as f } from "solid-js/web";
7
7
  import { For as p, Show as m, createEffect as ee, createMemo as h, createSignal as g, mergeProps as _, on as te, onCleanup as v, onMount as y } from "solid-js";
@@ -1,2 +1,2 @@
1
1
  export { Form } from './Form';
2
- export type { DatePickerStoredValue, FieldConfig, FieldControlProps, FieldRule, FieldRuleContext, FormExposed, FormInvalidSubmitProps, FormProps, FormSize, FormSubmitProps, } from './type';
2
+ export type { DatePickerStoredValue, FieldConfig, FieldControlProps, FieldRule, FieldRuleContext, FormExposed, FormFieldValues, FormInvalidSubmitProps, FormProps, FormSize, FormSubmitProps, } from './type';
@@ -1,3 +1,3 @@
1
1
  import "../solid-ark.css";
2
- import { t as e } from "../form-B5rMsobe.js";
2
+ import { t as e } from "../form-CsuVvlcC.js";
3
3
  export { e as Form };
@@ -25,6 +25,10 @@ interface BaseFieldConfig {
25
25
  renderLabel?: (label: string) => JSX.Element;
26
26
  /** 自定义 error */
27
27
  renderError?: (errors: string[]) => JSX.Element;
28
+ /** 是否隐藏渲染:true 时不渲染但值仍提交,默认 false */
29
+ hidden?: boolean;
30
+ /** 是否渲染并提交:false 或函数返回 false 时不渲染且值不提交;函数接收当前表单值(响应式联动显隐) */
31
+ show?: ((values: Record<string, unknown>) => boolean) | boolean;
28
32
  /** 提交/比较前转换为数字(select/radio 值是字符串、目标字段是数字时使用) */
29
33
  valueType?: "number";
30
34
  }
@@ -123,14 +127,25 @@ export interface FormSubmitProps<TData extends Record<string, unknown>> {
123
127
  /** patch=true 时提供:patch 是否非空 */
124
128
  changed?: boolean;
125
129
  }
130
+ /** getFieldValues 的返回值:全部字段值 + (patch 开启时)变更集 */
131
+ export interface FormFieldValues<TData extends Record<string, unknown>> {
132
+ /** 当前全部字段值(与 onSubmit 的 value 内容一致,剔除 show=false 字段) */
133
+ values: TData;
134
+ /** patch=true 时提供:与初始值不同的字段集合 */
135
+ patch?: Partial<TData>;
136
+ /** patch=true 时提供:patch 是否非空 */
137
+ changed?: boolean;
138
+ }
126
139
  /** 暴露给外部的表单实例(Form ref) */
127
140
  export interface FormExposed<TData extends Record<string, unknown>> {
128
141
  /** 校验全部字段(等待异步规则);返回是否全部通过,不触发提交 */
129
142
  validate: () => Promise<boolean>;
143
+ /** 校验全部字段:通过返回同 getFieldValues(),未通过返回 false */
144
+ validateAndGetFieldValues: () => Promise<false | FormFieldValues<TData>>;
130
145
  /** 重置表单 */
131
146
  reset: () => void;
132
- /** 读取全部字段值(快照副本,非响应式引用) */
133
- getFieldValues: () => TData;
147
+ /** 读取全部字段值与 patch(patch 开启时提供 patch/changed) */
148
+ getFieldValues: () => FormFieldValues<TData>;
134
149
  /** 批量写入字段值(逐字段触发校验与 onValuesChange) */
135
150
  setFieldValues: (values: Partial<TData>) => void;
136
151
  /** 读取字段值 */
@@ -1,22 +1,22 @@
1
1
  import "./solid-ark.css";
2
2
  import { Index as e, className as t, createComponent as n, delegateEvents as r, effect as i, insert as a, memo as o, setAttribute as s, style as c, template as l } from "solid-js/web";
3
- import { For as u, Show as d, Suspense as f, createEffect as p, createMemo as m, createSignal as h, createUniqueId as g, lazy as _, mergeProps as v, on as y, onCleanup as b } from "solid-js";
4
- import { Field as x } from "@ark-ui/solid/field";
5
- import { createForm as S } from "@tanstack/solid-form";
6
- import { Checkbox as C } from "@ark-ui/solid/checkbox";
7
- import { RadioGroup as w } from "@ark-ui/solid/radio-group";
8
- import { Switch as T } from "@ark-ui/solid/switch";
9
- import { deepEqual as E } from "fast-equals";
3
+ import { For as u, Show as d, Suspense as f, createEffect as p, createMemo as m, createSignal as h, createUniqueId as g, lazy as _, mergeProps as ee, on as v, onCleanup as y } from "solid-js";
4
+ import { Field as b } from "@ark-ui/solid/field";
5
+ import { createForm as x } from "@tanstack/solid-form";
6
+ import { Checkbox as S } from "@ark-ui/solid/checkbox";
7
+ import { RadioGroup as C } from "@ark-ui/solid/radio-group";
8
+ import { Switch as w } from "@ark-ui/solid/switch";
9
+ import { deepEqual as T } from "fast-equals";
10
10
  //#region src/form/components/FieldSkeleton.tsx
11
- var D = /*#__PURE__*/ l("<div aria-hidden=true class=van-form-field-skeleton>");
12
- function O() {
13
- return D();
11
+ var E = /*#__PURE__*/ l("<div aria-hidden=true class=van-form-field-skeleton>");
12
+ function D() {
13
+ return E();
14
14
  }
15
15
  //#endregion
16
16
  //#region src/form/components/FormCheckbox.tsx
17
- var ee = /*#__PURE__*/ l("<svg class=van-form-check-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=3 viewBox=\"0 0 24 24\"><path d=\"M5 12l5 5l10 -10\">");
17
+ var O = /*#__PURE__*/ l("<svg class=van-form-check-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=3 viewBox=\"0 0 24 24\"><path d=\"M5 12l5 5l10 -10\">");
18
18
  function k(e) {
19
- return n(C.Root, {
19
+ return n(S.Root, {
20
20
  get checked() {
21
21
  return e.value ?? !1;
22
22
  },
@@ -27,24 +27,24 @@ function k(e) {
27
27
  onCheckedChange: (t) => e.onChange(t.checked === !0),
28
28
  get children() {
29
29
  return [
30
- n(C.Control, {
30
+ n(S.Control, {
31
31
  class: "van-form-checkbox-control",
32
32
  get children() {
33
- return n(C.Indicator, {
33
+ return n(S.Indicator, {
34
34
  class: "van-form-checkbox-indicator",
35
35
  get children() {
36
- return ee();
36
+ return O();
37
37
  }
38
38
  });
39
39
  }
40
40
  }),
41
- o(() => o(() => !!e.label)() && n(C.Label, {
41
+ o(() => o(() => !!e.label)() && n(S.Label, {
42
42
  class: "van-form-checkbox-label",
43
43
  get children() {
44
44
  return e.label;
45
45
  }
46
46
  })),
47
- n(C.HiddenInput, {})
47
+ n(S.HiddenInput, {})
48
48
  ];
49
49
  }
50
50
  });
@@ -52,8 +52,8 @@ function k(e) {
52
52
  //#endregion
53
53
  //#region src/form/components/FormCheckboxGroup.tsx
54
54
  var A = /*#__PURE__*/ l("<svg class=van-form-check-icon fill=none stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=3 viewBox=\"0 0 24 24\"><path d=\"M5 12l5 5l10 -10\">");
55
- function j(t) {
56
- return n(C.Group, {
55
+ function te(t) {
56
+ return n(S.Group, {
57
57
  class: "van-form-checkbox-group",
58
58
  get id() {
59
59
  return t.controlId;
@@ -65,7 +65,7 @@ function j(t) {
65
65
  get each() {
66
66
  return t.field.options;
67
67
  },
68
- children: (e) => n(C.Root, {
68
+ children: (e) => n(S.Root, {
69
69
  class: "van-form-checkbox-root",
70
70
  get id() {
71
71
  return `${t.controlId}-item-${e().value}`;
@@ -81,10 +81,10 @@ function j(t) {
81
81
  },
82
82
  get children() {
83
83
  return [
84
- n(C.Control, {
84
+ n(S.Control, {
85
85
  class: "van-form-checkbox-control",
86
86
  get children() {
87
- return n(C.Indicator, {
87
+ return n(S.Indicator, {
88
88
  class: "van-form-checkbox-indicator",
89
89
  get children() {
90
90
  return A();
@@ -92,13 +92,13 @@ function j(t) {
92
92
  });
93
93
  }
94
94
  }),
95
- n(C.Label, {
95
+ n(S.Label, {
96
96
  class: "van-form-checkbox-label",
97
97
  get children() {
98
98
  return e().label;
99
99
  }
100
100
  }),
101
- n(C.HiddenInput, {})
101
+ n(S.HiddenInput, {})
102
102
  ];
103
103
  }
104
104
  })
@@ -108,7 +108,7 @@ function j(t) {
108
108
  }
109
109
  //#endregion
110
110
  //#region src/form/components/useDebouncedValue.ts
111
- function M(e) {
111
+ function j(e) {
112
112
  let [t, n] = h(e.value() ?? ""), r, i = (t) => {
113
113
  if (n(t), (e.debounce ?? 0) > 0) {
114
114
  clearTimeout(r), r = setTimeout(() => {
@@ -120,7 +120,7 @@ function M(e) {
120
120
  }, a = () => {
121
121
  r !== void 0 && (clearTimeout(r), r = void 0, t() !== e.value() && e.onChange(t()));
122
122
  };
123
- return p(y(() => e.value(), (e) => n(e ?? ""))), b(() => clearTimeout(r)), {
123
+ return p(v(() => e.value(), (e) => n(e ?? ""))), y(() => clearTimeout(r)), {
124
124
  local: t,
125
125
  handleInput: i,
126
126
  handleBlur: () => {
@@ -133,17 +133,17 @@ function M(e) {
133
133
  }
134
134
  //#endregion
135
135
  //#region src/form/components/FormInput.tsx
136
- var te = /*#__PURE__*/ l("<svg fill=none height=14 stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"width=14 xmlns=http://www.w3.org/2000/svg><path d=\"M18 6 6 18\"></path><path d=\"m6 6 12 12\">"), N = /*#__PURE__*/ l("<button aria-label=清空 type=button>"), P = /*#__PURE__*/ l("<div class=van-form-input-group>"), F = /*#__PURE__*/ l("<span class=\"van-form-input-addon van-form-input-addon-prefix\">"), I = /*#__PURE__*/ l("<span class=\"van-form-input-addon van-form-input-addon-suffix\">");
137
- function L() {
138
- return te();
136
+ var ne = /*#__PURE__*/ l("<svg fill=none height=14 stroke=currentColor stroke-linecap=round stroke-linejoin=round stroke-width=2 viewBox=\"0 0 24 24\"width=14 xmlns=http://www.w3.org/2000/svg><path d=\"M18 6 6 18\"></path><path d=\"m6 6 12 12\">"), re = /*#__PURE__*/ l("<button aria-label=清空 type=button>"), M = /*#__PURE__*/ l("<div class=van-form-input-group>"), N = /*#__PURE__*/ l("<span class=\"van-form-input-addon van-form-input-addon-prefix\">"), P = /*#__PURE__*/ l("<span class=\"van-form-input-addon van-form-input-addon-suffix\">");
137
+ function F() {
138
+ return ne();
139
139
  }
140
- function R(e) {
141
- let { local: r, handleInput: s, handleBlur: c, handleClear: l } = M({
140
+ function I(e) {
141
+ let { local: r, handleInput: s, handleBlur: c, handleClear: l } = j({
142
142
  value: () => e.value,
143
143
  debounce: e.field.debounce,
144
144
  onChange: e.onChange,
145
145
  onBlur: e.onBlur
146
- }), u, f = n(x.Input, {
146
+ }), u, f = n(b.Input, {
147
147
  get autocomplete() {
148
148
  return e.field.autocomplete;
149
149
  },
@@ -164,11 +164,11 @@ function R(e) {
164
164
  }
165
165
  }), p = e.field.prefix !== void 0 || e.field.suffix !== void 0, m = e.field.clearable === !0;
166
166
  return !p && !m ? f : (() => {
167
- var s = P();
167
+ var s = M();
168
168
  return a(s, (() => {
169
169
  var t = o(() => e.field.prefix !== void 0);
170
170
  return () => t() && (() => {
171
- var t = F();
171
+ var t = N();
172
172
  return a(t, () => e.field.prefix), t;
173
173
  })();
174
174
  })(), null), a(s, f, null), a(s, n(d, {
@@ -176,15 +176,15 @@ function R(e) {
176
176
  return m && r() !== "";
177
177
  },
178
178
  get children() {
179
- var r = N();
179
+ var r = re();
180
180
  return r.$$click = () => {
181
181
  l(), u?.focus();
182
- }, a(r, n(L, {})), i(() => t(r, `van-form-input-clear${e.field.suffix === void 0 ? "" : " van-form-input-clear-before-suffix"}`)), r;
182
+ }, a(r, n(F, {})), i(() => t(r, `van-form-input-clear${e.field.suffix === void 0 ? "" : " van-form-input-clear-before-suffix"}`)), r;
183
183
  }
184
184
  }), null), a(s, (() => {
185
185
  var t = o(() => e.field.suffix !== void 0);
186
186
  return () => t() && (() => {
187
- var t = I();
187
+ var t = P();
188
188
  return a(t, () => e.field.suffix), t;
189
189
  })();
190
190
  })(), null), s;
@@ -193,9 +193,9 @@ function R(e) {
193
193
  r(["click"]);
194
194
  //#endregion
195
195
  //#region src/form/components/FormRadio.tsx
196
- function z(t) {
196
+ function L(t) {
197
197
  let r = m(() => t.field.options.map((e) => e.value));
198
- return n(w.Root, {
198
+ return n(C.Root, {
199
199
  class: "van-form-radio-group",
200
200
  get id() {
201
201
  return t.controlId;
@@ -212,21 +212,21 @@ function z(t) {
212
212
  },
213
213
  children: (e) => {
214
214
  let r = t.field.options.find((t) => t.value === e());
215
- return n(w.Item, {
215
+ return n(C.Item, {
216
216
  class: "van-form-radio-item",
217
217
  get value() {
218
218
  return e();
219
219
  },
220
220
  get children() {
221
221
  return [
222
- n(w.ItemControl, { class: "van-form-radio-control" }),
223
- n(w.ItemText, {
222
+ n(C.ItemControl, { class: "van-form-radio-control" }),
223
+ n(C.ItemText, {
224
224
  class: "van-form-radio-text",
225
225
  get children() {
226
226
  return r?.label ?? e();
227
227
  }
228
228
  }),
229
- n(w.ItemHiddenInput, {})
229
+ n(C.ItemHiddenInput, {})
230
230
  ];
231
231
  }
232
232
  });
@@ -237,8 +237,8 @@ function z(t) {
237
237
  }
238
238
  //#endregion
239
239
  //#region src/form/components/FormSwitch.tsx
240
- function B(e) {
241
- return n(T.Root, {
240
+ function R(e) {
241
+ return n(w.Root, {
242
242
  get checked() {
243
243
  return e.value ?? !1;
244
244
  },
@@ -249,33 +249,33 @@ function B(e) {
249
249
  onCheckedChange: (t) => e.onChange(t.checked),
250
250
  get children() {
251
251
  return [
252
- n(T.Control, {
252
+ n(w.Control, {
253
253
  class: "van-form-switch-control",
254
254
  get children() {
255
- return n(T.Thumb, { class: "van-form-switch-thumb" });
255
+ return n(w.Thumb, { class: "van-form-switch-thumb" });
256
256
  }
257
257
  }),
258
- o(() => o(() => !!e.label)() && n(T.Label, {
258
+ o(() => o(() => !!e.label)() && n(w.Label, {
259
259
  class: "van-form-switch-label",
260
260
  get children() {
261
261
  return e.label;
262
262
  }
263
263
  })),
264
- n(T.HiddenInput, {})
264
+ n(w.HiddenInput, {})
265
265
  ];
266
266
  }
267
267
  });
268
268
  }
269
269
  //#endregion
270
270
  //#region src/form/components/FormTextarea.tsx
271
- function V(e) {
272
- let { local: t, handleInput: r, handleBlur: i } = M({
271
+ function z(e) {
272
+ let { local: t, handleInput: r, handleBlur: i } = j({
273
273
  value: () => e.value,
274
274
  debounce: e.field.debounce,
275
275
  onChange: e.onChange,
276
276
  onBlur: e.onBlur
277
277
  });
278
- return n(x.Textarea, {
278
+ return n(b.Textarea, {
279
279
  class: "van-form-textarea",
280
280
  onBlur: i,
281
281
  onInput: (e) => r(e.currentTarget.value),
@@ -292,17 +292,17 @@ function V(e) {
292
292
  }
293
293
  //#endregion
294
294
  //#region src/form/components/utils.ts
295
- function H(e, t) {
295
+ function B(e, t) {
296
296
  return e.fieldType === t;
297
297
  }
298
- function U(e) {
298
+ function V(e) {
299
299
  if (e != null) return typeof e == "number" ? `${e}px` : e;
300
300
  }
301
301
  //#endregion
302
302
  //#region src/form/components/FieldRenderer.tsx
303
- var W = _(() => import("./FormDatePicker-Cazd9kkD.js").then((e) => ({ default: e.FormDatePicker }))), G = _(() => import("./FormSelect-BDZATc3u.js").then((e) => ({ default: e.FormSelect })));
304
- function K(e) {
305
- return H(e.field, "input") ? n(R, {
303
+ var H = _(() => import("./FormDatePicker-Cazd9kkD.js").then((e) => ({ default: e.FormDatePicker }))), U = _(() => import("./FormSelect-BDZATc3u.js").then((e) => ({ default: e.FormSelect })));
304
+ function W(e) {
305
+ return B(e.field, "input") ? n(I, {
306
306
  get field() {
307
307
  return e.field;
308
308
  },
@@ -313,7 +313,7 @@ function K(e) {
313
313
  get value() {
314
314
  return e.value;
315
315
  }
316
- }) : H(e.field, "textarea") ? n(V, {
316
+ }) : B(e.field, "textarea") ? n(z, {
317
317
  get field() {
318
318
  return e.field;
319
319
  },
@@ -324,12 +324,12 @@ function K(e) {
324
324
  get value() {
325
325
  return e.value;
326
326
  }
327
- }) : H(e.field, "select") ? n(f, {
327
+ }) : B(e.field, "select") ? n(f, {
328
328
  get fallback() {
329
- return n(O, {});
329
+ return n(D, {});
330
330
  },
331
331
  get children() {
332
- return n(G, {
332
+ return n(U, {
333
333
  get controlId() {
334
334
  return e.controlId;
335
335
  },
@@ -345,12 +345,12 @@ function K(e) {
345
345
  }
346
346
  });
347
347
  }
348
- }) : H(e.field, "datePicker") ? n(f, {
348
+ }) : B(e.field, "datePicker") ? n(f, {
349
349
  get fallback() {
350
- return n(O, {});
350
+ return n(D, {});
351
351
  },
352
352
  get children() {
353
- return n(W, {
353
+ return n(H, {
354
354
  get controlId() {
355
355
  return e.controlId;
356
356
  },
@@ -366,7 +366,7 @@ function K(e) {
366
366
  }
367
367
  });
368
368
  }
369
- }) : H(e.field, "checkbox") ? n(k, {
369
+ }) : B(e.field, "checkbox") ? n(k, {
370
370
  get controlId() {
371
371
  return e.controlId;
372
372
  },
@@ -377,7 +377,7 @@ function K(e) {
377
377
  get value() {
378
378
  return e.value;
379
379
  }
380
- }) : H(e.field, "switch") ? n(B, {
380
+ }) : B(e.field, "switch") ? n(R, {
381
381
  get controlId() {
382
382
  return e.controlId;
383
383
  },
@@ -388,7 +388,7 @@ function K(e) {
388
388
  get value() {
389
389
  return e.value;
390
390
  }
391
- }) : H(e.field, "radio") ? n(z, {
391
+ }) : B(e.field, "radio") ? n(L, {
392
392
  get controlId() {
393
393
  return e.controlId;
394
394
  },
@@ -399,7 +399,7 @@ function K(e) {
399
399
  get value() {
400
400
  return e.value;
401
401
  }
402
- }) : H(e.field, "checkbox-group") ? n(j, {
402
+ }) : B(e.field, "checkbox-group") ? n(te, {
403
403
  get controlId() {
404
404
  return e.controlId;
405
405
  },
@@ -414,29 +414,29 @@ function K(e) {
414
414
  }
415
415
  //#endregion
416
416
  //#region src/form/patch.ts
417
- function q(e) {
418
- return Y(e) || e === "" ? void 0 : Number(e);
417
+ function G(e) {
418
+ return q(e) || e === "" ? void 0 : Number(e);
419
419
  }
420
- function J(e) {
421
- return Y(e) || e === "" ? 0 : Number(e);
420
+ function K(e) {
421
+ return q(e) || e === "" ? 0 : Number(e);
422
422
  }
423
- function Y(e) {
423
+ function q(e) {
424
424
  return e == null;
425
425
  }
426
- function X(e) {
426
+ function J(e) {
427
427
  return Array.isArray(e) ? [...e].sort() : [];
428
428
  }
429
- function Z(e) {
429
+ function Y(e) {
430
430
  return e && typeof e == "object" && !Array.isArray(e) ? e : {};
431
431
  }
432
- function Q(e) {
432
+ function X(e) {
433
433
  return typeof e == "object" && !!e && !Array.isArray(e);
434
434
  }
435
- function ne(e, t, n) {
435
+ function ie(e, t, n) {
436
436
  let r = {};
437
437
  for (let i of n) {
438
438
  let { name: n, valueType: a } = i, o = e[n], s = t[n], c;
439
- c = a === "number" ? E(q(o), q(s)) : Array.isArray(o) || Array.isArray(s) ? E(X(o), X(s)) : Q(o) || Q(s) ? E(Z(o), Z(s)) : E(Y(o) ? "" : o, Y(s) ? "" : s), c || (r[n] = a === "number" ? J(s) : s);
439
+ c = a === "number" ? T(G(o), G(s)) : Array.isArray(o) || Array.isArray(s) ? T(J(o), J(s)) : X(o) || X(s) ? T(Y(o), Y(s)) : T(q(o) ? "" : o, q(s) ? "" : s), c || (r[n] = a === "number" ? K(s) : s);
440
440
  }
441
441
  return {
442
442
  patch: r,
@@ -445,11 +445,11 @@ function ne(e, t, n) {
445
445
  }
446
446
  //#endregion
447
447
  //#region src/form/Form.tsx
448
- var re = /*#__PURE__*/ l("<form>"), ie = /*#__PURE__*/ l("<div class=van-form-field>");
449
- function $(e) {
448
+ var ae = /*#__PURE__*/ l("<form>"), oe = /*#__PURE__*/ l("<div class=van-form-field>");
449
+ function Z(e) {
450
450
  return typeof e == "string" ? e : e && typeof e == "object" && "message" in e ? String(e.message) : String(e);
451
451
  }
452
- function ae(e) {
452
+ function se(e) {
453
453
  let t = e.rule;
454
454
  if (t) return {
455
455
  onChange: typeof t == "function" ? (e) => t({
@@ -459,27 +459,43 @@ function ae(e) {
459
459
  ...e.validateListenTo?.length ? { onChangeListenTo: e.validateListenTo } : {}
460
460
  };
461
461
  }
462
- function oe(e) {
463
- let r = v({ values: {} }, e), l = r.values, f = g(), h = (e) => `${f}-${e}`, _ = S(() => ({
462
+ function Q(e, t) {
463
+ return typeof e.show == "function" ? e.show(t) : e.show !== !1;
464
+ }
465
+ function ce(e, t) {
466
+ let n = new Set(t.filter((t) => !Q(t, e)).map((e) => e.name));
467
+ return Object.fromEntries(Object.entries(e).filter(([e]) => !n.has(e)));
468
+ }
469
+ function le(e, t) {
470
+ return e.filter((e) => Q(e, t));
471
+ }
472
+ function $(e) {
473
+ let r = ee({ values: {} }, e), l = r.values, f = g(), h = (e) => `${f}-${e}`, _ = (e) => {
474
+ let t = ce(e, r.fields);
475
+ if (r.patch) {
476
+ let { patch: n, changed: i } = ie(l, t, le(r.fields, e));
477
+ return {
478
+ values: t,
479
+ patch: n,
480
+ changed: i
481
+ };
482
+ }
483
+ return { values: t };
484
+ }, y = x(() => ({
464
485
  defaultValues: l,
465
486
  onSubmit: async ({ value: e }) => {
466
- let t = e;
467
- if (r.patch) {
468
- let { patch: e, changed: n } = ne(l, t, r.fields);
469
- await r.onSubmit?.({
470
- value: t,
471
- patch: e,
472
- changed: n
473
- });
474
- return;
475
- }
476
- await r.onSubmit?.({ value: t });
487
+ let { values: t, patch: n, changed: i } = _(e);
488
+ await r.onSubmit?.(n === void 0 ? { value: t } : {
489
+ value: t,
490
+ patch: n,
491
+ changed: i
492
+ });
477
493
  },
478
494
  onSubmitInvalid: ({ value: e, formApi: t }) => {
479
495
  if (!r.onSubmitInvalid) return;
480
496
  let n = {}, i = t.state.fieldMeta;
481
497
  for (let [e, t] of Object.entries(i)) {
482
- let r = (t?.errors ?? []).map($).filter(Boolean);
498
+ let r = (t?.errors ?? []).map(Z).filter(Boolean);
483
499
  r.length > 0 && (n[e] = r);
484
500
  }
485
501
  r.onSubmitInvalid({
@@ -489,37 +505,38 @@ function oe(e) {
489
505
  }
490
506
  }));
491
507
  r.ref?.({
492
- validate: async () => (await _.validateAllFields("change"), _.state.canSubmit),
493
- reset: () => _.reset(),
494
- getFieldValues: () => ({ ..._.state.values }),
508
+ validate: async () => (await y.validateAllFields("change"), y.state.canSubmit),
509
+ validateAndGetFieldValues: async () => (await y.validateAllFields("change"), y.state.canSubmit ? _(y.state.values) : !1),
510
+ reset: () => y.reset(),
511
+ getFieldValues: () => _(y.state.values),
495
512
  setFieldValues: (e) => {
496
- for (let [t, n] of Object.entries(e)) _.setFieldValue(t, n);
513
+ for (let [t, n] of Object.entries(e)) y.setFieldValue(t, n);
497
514
  },
498
- getFieldValue: (e) => _.getFieldValue(e),
499
- setFieldValue: (e, t) => _.setFieldValue(e, t)
515
+ getFieldValue: (e) => y.getFieldValue(e),
516
+ setFieldValue: (e, t) => y.setFieldValue(e, t)
500
517
  });
501
- let b = _.useStore((e) => e.isSubmitting), C = _.useStore((e) => e.values), w = _.setFieldValue;
502
- return p(y(() => r.values, (e) => {
503
- for (let [t, n] of Object.entries(e ?? {})) _.state.values[t] !== n && w(t, n);
504
- }, { defer: !0 })), p(y(C, (e) => r.onValuesChange?.(e), { defer: !0 })), (() => {
505
- var e = re();
518
+ let S = y.useStore((e) => e.values), C = m(() => r.fields.filter((e) => !e.hidden && Q(e, S()))), w = y.useStore((e) => e.isSubmitting), T = y.useStore((e) => e.values), E = y.setFieldValue;
519
+ return p(v(() => r.values, (e) => {
520
+ for (let [t, n] of Object.entries(e ?? {})) y.state.values[t] !== n && E(t, n);
521
+ }, { defer: !0 })), p(v(T, (e) => r.onValuesChange?.(e), { defer: !0 })), (() => {
522
+ var e = ae();
506
523
  return e.addEventListener("submit", (e) => {
507
- e.preventDefault(), e.stopPropagation(), _.handleSubmit();
524
+ e.preventDefault(), e.stopPropagation(), y.handleSubmit();
508
525
  }), a(e, n(u, {
509
526
  get each() {
510
- return r.fields;
527
+ return C();
511
528
  },
512
- children: (e) => n(_.Field, {
529
+ children: (e) => n(y.Field, {
513
530
  get name() {
514
531
  return e.name;
515
532
  },
516
533
  get validators() {
517
- return ae(e);
534
+ return se(e);
518
535
  },
519
536
  children: (t) => {
520
- let r = t(), s = m(() => (t().state.meta.errors ?? []).map($).filter(Boolean)), l = m(() => t().state.value), f = U(e.fieldWidth), p = f ? { width: f } : void 0;
537
+ let r = t(), s = m(() => (t().state.meta.errors ?? []).map(Z).filter(Boolean)), l = m(() => t().state.value), f = V(e.fieldWidth), p = f ? { width: f } : void 0;
521
538
  return e.control ? (() => {
522
- var t = ie();
539
+ var t = oe();
523
540
  return a(t, () => e.control({
524
541
  value: l,
525
542
  onChange: (e) => r.handleChange(e),
@@ -527,7 +544,7 @@ function oe(e) {
527
544
  error: s,
528
545
  id: h(e.name)
529
546
  })), i((e) => c(t, p, e)), t;
530
- })() : n(x.Root, {
547
+ })() : n(b.Root, {
531
548
  class: "van-form-field",
532
549
  get id() {
533
550
  return h(e.name);
@@ -543,12 +560,12 @@ function oe(e) {
543
560
  return o(() => !!(e.label && e.fieldType !== "checkbox" && e.fieldType !== "checkbox-group"))() && e.fieldType !== "switch";
544
561
  },
545
562
  get children() {
546
- return o(() => !!e.renderLabel)() ? n(x.Label, {
563
+ return o(() => !!e.renderLabel)() ? n(b.Label, {
547
564
  class: "van-form-label",
548
565
  get children() {
549
566
  return e.renderLabel(e.label);
550
567
  }
551
- }) : n(x.Label, {
568
+ }) : n(b.Label, {
552
569
  class: "van-form-label",
553
570
  get children() {
554
571
  return e.label;
@@ -556,7 +573,7 @@ function oe(e) {
556
573
  });
557
574
  }
558
575
  }),
559
- n(K, {
576
+ n(W, {
560
577
  get controlId() {
561
578
  return h(e.name);
562
579
  },
@@ -572,7 +589,7 @@ function oe(e) {
572
589
  return e.helperText;
573
590
  },
574
591
  get children() {
575
- return n(x.HelperText, {
592
+ return n(b.HelperText, {
576
593
  class: "van-form-helper",
577
594
  get children() {
578
595
  return e.helperText;
@@ -585,7 +602,7 @@ function oe(e) {
585
602
  return s().length > 0;
586
603
  },
587
604
  get children() {
588
- return o(() => !!e.renderError)() ? n(x.ErrorText, {
605
+ return o(() => !!e.renderError)() ? n(b.ErrorText, {
589
606
  class: "van-form-error",
590
607
  get children() {
591
608
  return e.renderError(s());
@@ -594,7 +611,7 @@ function oe(e) {
594
611
  get each() {
595
612
  return s();
596
613
  },
597
- children: (e) => n(x.ErrorText, {
614
+ children: (e) => n(b.ErrorText, {
598
615
  class: "van-form-error",
599
616
  children: e
600
617
  })
@@ -606,7 +623,7 @@ function oe(e) {
606
623
  });
607
624
  }
608
625
  })
609
- }), null), a(e, () => r.children?.({ isSubmitting: b() }), null), i((n) => {
626
+ }), null), a(e, () => r.children?.({ isSubmitting: w() }), null), i((n) => {
610
627
  var i = `van-form-form ${r.className ?? ""}`, a = r.size ?? "default";
611
628
  return i !== n.e && t(e, n.e = i), a !== n.t && s(e, "data-size", n.t = a), n;
612
629
  }, {
@@ -616,4 +633,4 @@ function oe(e) {
616
633
  })();
617
634
  }
618
635
  //#endregion
619
- export { oe as t };
636
+ export { $ as t };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vanstack/solid-ark",
3
- "version": "0.0.23",
3
+ "version": "0.0.25",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -71,10 +71,10 @@
71
71
  "vite-plugin-solid": "^2.11.0",
72
72
  "vitest": "^4.1.10",
73
73
  "zod": "^4.4.0",
74
- "@vanstack/prettier-config": "0.0.1",
75
74
  "@vanstack/eslint-config": "0.0.1",
76
- "@vanstack/tsconfig": "0.0.1",
77
- "@vanstack/vite-config": "0.0.2"
75
+ "@vanstack/prettier-config": "0.0.1",
76
+ "@vanstack/vite-config": "0.0.2",
77
+ "@vanstack/tsconfig": "0.0.1"
78
78
  },
79
79
  "scripts": {
80
80
  "build": "tsc --noEmit && vite build",