@vanstack/solid-ark 0.0.22 → 0.0.23
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,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-
|
|
4
|
+
import { t as n } from "../form-B5rMsobe.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";
|
package/dist/form/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { Form } from './Form';
|
|
2
|
-
export type { DatePickerStoredValue, FieldConfig, FieldControlProps, FieldRule, FieldRuleContext, FormInvalidSubmitProps, FormProps, FormSize, FormSubmitProps, } from './type';
|
|
2
|
+
export type { DatePickerStoredValue, FieldConfig, FieldControlProps, FieldRule, FieldRuleContext, FormExposed, FormInvalidSubmitProps, FormProps, FormSize, FormSubmitProps, } from './type';
|
package/dist/form/index.mjs
CHANGED
package/dist/form/type.d.ts
CHANGED
|
@@ -123,6 +123,21 @@ export interface FormSubmitProps<TData extends Record<string, unknown>> {
|
|
|
123
123
|
/** patch=true 时提供:patch 是否非空 */
|
|
124
124
|
changed?: boolean;
|
|
125
125
|
}
|
|
126
|
+
/** 暴露给外部的表单实例(Form ref) */
|
|
127
|
+
export interface FormExposed<TData extends Record<string, unknown>> {
|
|
128
|
+
/** 校验全部字段(等待异步规则);返回是否全部通过,不触发提交 */
|
|
129
|
+
validate: () => Promise<boolean>;
|
|
130
|
+
/** 重置表单 */
|
|
131
|
+
reset: () => void;
|
|
132
|
+
/** 读取全部字段值(快照副本,非响应式引用) */
|
|
133
|
+
getFieldValues: () => TData;
|
|
134
|
+
/** 批量写入字段值(逐字段触发校验与 onValuesChange) */
|
|
135
|
+
setFieldValues: (values: Partial<TData>) => void;
|
|
136
|
+
/** 读取字段值 */
|
|
137
|
+
getFieldValue: (name: string) => unknown;
|
|
138
|
+
/** 写入字段值 */
|
|
139
|
+
setFieldValue: (name: string, value: unknown) => void;
|
|
140
|
+
}
|
|
126
141
|
export interface FormProps<TData extends Record<string, unknown>> {
|
|
127
142
|
/** 字段配置 */
|
|
128
143
|
fields: FieldConfig[];
|
|
@@ -132,10 +147,13 @@ export interface FormProps<TData extends Record<string, unknown>> {
|
|
|
132
147
|
onValuesChange?: (values: TData) => void;
|
|
133
148
|
/** 是否计算变更集:默认 false;开启后 onSubmit 额外收到 { patch, changed }(与初始值比较,提交时计算) */
|
|
134
149
|
patch?: boolean;
|
|
150
|
+
/** 暴露表单实例(Solid ref 语义,挂载时回调一次),用于外部主动校验/提交 */
|
|
151
|
+
ref?: (api: FormExposed<TData>) => void;
|
|
135
152
|
/** 控件尺寸:small | default(默认)| large,控制 input/textarea/select/datePicker 等输入类控件 */
|
|
136
153
|
size?: FormSize;
|
|
137
154
|
/** 提交回调(仅在校验通过时触发) */
|
|
138
|
-
|
|
155
|
+
/** 提交回调(仅在校验通过时触发);只做展示/受控绑定时可不传 */
|
|
156
|
+
onSubmit?: (props: FormSubmitProps<TData>) => Promise<void> | void;
|
|
139
157
|
/** 提交被校验拦截时的回调 */
|
|
140
158
|
onSubmitInvalid?: (props: FormInvalidSubmitProps<TData>) => void;
|
|
141
159
|
/** 表单布局 class */
|
|
@@ -466,14 +466,14 @@ function oe(e) {
|
|
|
466
466
|
let t = e;
|
|
467
467
|
if (r.patch) {
|
|
468
468
|
let { patch: e, changed: n } = ne(l, t, r.fields);
|
|
469
|
-
await r.onSubmit({
|
|
469
|
+
await r.onSubmit?.({
|
|
470
470
|
value: t,
|
|
471
471
|
patch: e,
|
|
472
472
|
changed: n
|
|
473
473
|
});
|
|
474
474
|
return;
|
|
475
475
|
}
|
|
476
|
-
await r.onSubmit({ value: t });
|
|
476
|
+
await r.onSubmit?.({ value: t });
|
|
477
477
|
},
|
|
478
478
|
onSubmitInvalid: ({ value: e, formApi: t }) => {
|
|
479
479
|
if (!r.onSubmitInvalid) return;
|
|
@@ -487,7 +487,18 @@ function oe(e) {
|
|
|
487
487
|
errors: n
|
|
488
488
|
});
|
|
489
489
|
}
|
|
490
|
-
}))
|
|
490
|
+
}));
|
|
491
|
+
r.ref?.({
|
|
492
|
+
validate: async () => (await _.validateAllFields("change"), _.state.canSubmit),
|
|
493
|
+
reset: () => _.reset(),
|
|
494
|
+
getFieldValues: () => ({ ..._.state.values }),
|
|
495
|
+
setFieldValues: (e) => {
|
|
496
|
+
for (let [t, n] of Object.entries(e)) _.setFieldValue(t, n);
|
|
497
|
+
},
|
|
498
|
+
getFieldValue: (e) => _.getFieldValue(e),
|
|
499
|
+
setFieldValue: (e, t) => _.setFieldValue(e, t)
|
|
500
|
+
});
|
|
501
|
+
let b = _.useStore((e) => e.isSubmitting), C = _.useStore((e) => e.values), w = _.setFieldValue;
|
|
491
502
|
return p(y(() => r.values, (e) => {
|
|
492
503
|
for (let [t, n] of Object.entries(e ?? {})) _.state.values[t] !== n && w(t, n);
|
|
493
504
|
}, { defer: !0 })), p(y(C, (e) => r.onValuesChange?.(e), { defer: !0 })), (() => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vanstack/solid-ark",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -71,8 +71,8 @@
|
|
|
71
71
|
"vite-plugin-solid": "^2.11.0",
|
|
72
72
|
"vitest": "^4.1.10",
|
|
73
73
|
"zod": "^4.4.0",
|
|
74
|
-
"@vanstack/eslint-config": "0.0.1",
|
|
75
74
|
"@vanstack/prettier-config": "0.0.1",
|
|
75
|
+
"@vanstack/eslint-config": "0.0.1",
|
|
76
76
|
"@vanstack/tsconfig": "0.0.1",
|
|
77
77
|
"@vanstack/vite-config": "0.0.2"
|
|
78
78
|
},
|