@weave-framework/forms 0.2.107 → 1.0.0

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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Weave forms — signal-native field/form state + validation over `bind:value`. Zero third-party deps.
4
4
 
5
- Part of **[Weave](https://weave-framework.github.io/weave/)** — a fine-grained reactive, signal-native UI framework: no Virtual DOM, zero third-party runtime dependencies.
5
+ Part of **[Weave](https://weaveframework.dev/)** — a fine-grained reactive, signal-native UI framework: no Virtual DOM, zero third-party runtime dependencies.
6
6
 
7
7
  ```bash
8
8
  npm install @weave-framework/forms
@@ -14,7 +14,7 @@ Most apps get this (and the rest of Weave) in one step:
14
14
  npm create weave@latest my-app
15
15
  ```
16
16
 
17
- 📚 **Guides + full API reference:** [weave-framework.github.io/weave](https://weave-framework.github.io/weave/)
17
+ 📚 **Guides + full API reference:** [weaveframework.dev](https://weaveframework.dev/)
18
18
 
19
19
  ## License
20
20
 
package/dist/index.d.ts CHANGED
@@ -42,11 +42,18 @@ export interface Control<T> {
42
42
  validating: () => boolean;
43
43
  /** Whether this control (or any descendant) has been touched. Reactive. */
44
44
  touched: () => boolean;
45
+ /**
46
+ * Whether this control (or any descendant) has changed from its initial value — the
47
+ * Weave analog of Angular's `dirty`. `touched` is about *interaction* (blurred), `dirty`
48
+ * is about *value change*. `pristine` is simply `!dirty()`. Cleared by {@link reset}.
49
+ */
50
+ dirty: () => boolean;
45
51
  /** Restore initial value(s) and clear touched/errors. */
46
52
  reset: () => void;
47
53
  /** Mark this control (and every descendant) touched — e.g. on a failed submit. */
48
54
  touchAll: () => void;
49
55
  }
56
+ /** A single reactive form control — a `value` signal plus validity / touched / dirty state. Created by {@link field}. */
50
57
  export interface Field<T> extends Control<T> {
51
58
  /** The editable value — bind it with `bind:value={field.value}`. (A `Signal`, so also callable.) */
52
59
  value: Signal<T>;
@@ -75,6 +82,7 @@ export type ValuesOf<C extends Controls> = {
75
82
  export type FormValidator<C extends Controls> = (values: ValuesOf<C>) => Record<string, string> | null;
76
83
  /** Reserved key in a {@link FormValidator} result for a group-level (not field-bound) error. */
77
84
  export declare const FORM_ERROR_KEY: '_form';
85
+ /** Options for {@link group} — currently a group-level cross-field `validate` over the group's own values. */
78
86
  export interface GroupOptions<C extends Controls> {
79
87
  /** Cross-field validation over this group's own values snapshot (e.g. password confirm). */
80
88
  validate?: FormValidator<C>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -73,6 +73,7 @@ export function field(initial, validators = [], opts = {}) {
73
73
  error,
74
74
  valid: computed(() => error() === null),
75
75
  touched,
76
+ dirty: computed(() => !Object.is(value(), initial)),
76
77
  validating: () => validating(),
77
78
  reset: () => {
78
79
  value.set(initial);
@@ -168,6 +169,7 @@ export function group(controls, opts = {}) {
168
169
  touched: () => list.some((c) => c.touched()),
169
170
  reset: () => list.forEach((c) => c.reset()),
170
171
  touchAll,
172
+ dirty: () => list.some((c) => c.dirty()),
171
173
  submitting: () => submitting(),
172
174
  submitError: () => submitError(),
173
175
  validateAsync,
@@ -204,6 +206,8 @@ export function fieldArray(factory, seeds = []) {
204
206
  valid: () => items().every((c) => c.valid()),
205
207
  validating: () => items().some((c) => c.validating()),
206
208
  touched: () => items().some((c) => c.touched()),
209
+ // Dirty if the item set changed (push/removeAt) or any current item is dirty.
210
+ dirty: () => items().length !== seeds.length || items().some((c) => c.dirty()),
207
211
  reset: () => items.set(seeds.map((s) => factory(s))),
208
212
  touchAll: () => items().forEach((c) => c.touchAll()),
209
213
  push: (seed) => items.set((xs) => [...xs, factory(seed)]),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * @weave-framework/forms/schema — schema-driven forms.
3
+ *
4
+ * A declarative **field-type registry** ({@link fieldType}) plus a builder
5
+ * ({@link schemaForm}) that turns a plain JSON-ish schema into a live forms
6
+ * {@link Group}, composing the existing `field`/`group`/`validators` primitives —
7
+ * no re-implementation of form state. This is the RFC 0002 "field-type registry"
8
+ * slice: instead of hand-wiring every `field(...)`, you describe fields declaratively
9
+ * and a registered *type* supplies the default value, the validators built from the
10
+ * field's constraints, and a UI-render hint (which control + props).
11
+ *
12
+ * ```ts
13
+ * import { schemaForm, fieldType } from '@weave-framework/forms/schema';
14
+ *
15
+ * const f = schemaForm({
16
+ * fields: [
17
+ * { name: 'email', type: 'email', required: true, label: 'Email' },
18
+ * { name: 'age', type: 'number', min: 18 },
19
+ * { name: 'plan', type: 'select', options: [{ value: 'free', label: 'Free' }] },
20
+ * { name: 'tos', type: 'checkbox', required: true },
21
+ * ],
22
+ * });
23
+ * f.render(); // [{ name, field, control:'input', props:{type:'email'}, label }, …] → drive the UI
24
+ * f.valid(); // aggregate validity, reactive
25
+ * f.value(); // { email, age, plan, tos }, reactive
26
+ * ```
27
+ */
28
+ import { type Field, type Group, type Validator, type AsyncValidator } from './index';
29
+ /** One declarative field in a {@link FormSchema}. `type` names a registered {@link FieldTypeDef}. */
30
+ export interface SchemaField {
31
+ /** Unique key within the form — becomes the control name and the value key. */
32
+ name: string;
33
+ /** A registered field-type name (built-ins: text, textarea, email, password, number, checkbox, select, radio, date). */
34
+ type: string;
35
+ /** Human label — passed through to the render descriptor for the UI to show. */
36
+ label?: string;
37
+ /** Explicit initial value; falls back to the type's default. */
38
+ initial?: unknown;
39
+ /** Adds a `required` validator (a checkbox must be checked; a value must be non-empty). */
40
+ required?: boolean;
41
+ /** Numeric lower bound (number type). */
42
+ min?: number;
43
+ /** Numeric upper bound (number type). */
44
+ max?: number;
45
+ /** Minimum string length (text-like types). Skipped when the value is empty and not `required`. */
46
+ minLength?: number;
47
+ /** Maximum string length (text-like types). */
48
+ maxLength?: number;
49
+ /** Format the value must match (text-like types). Skipped when empty and not `required`. */
50
+ pattern?: RegExp;
51
+ /** Choices for select/radio — passed through as a render prop. */
52
+ options?: ReadonlyArray<{
53
+ value: unknown;
54
+ label: string;
55
+ }>;
56
+ /** Extra validators appended after the type's constraint-derived ones. */
57
+ validators?: Validator<never>[];
58
+ /** Async validator (e.g. "username taken?") — same semantics as {@link field}'s. */
59
+ asyncValidate?: AsyncValidator<never>;
60
+ /** Debounce for {@link asyncValidate} (ms). */
61
+ debounceMs?: number;
62
+ /** Arbitrary extra props merged into the render descriptor (override the type's props). */
63
+ props?: Record<string, unknown>;
64
+ }
65
+ /** A whole form described declaratively. */
66
+ export interface FormSchema {
67
+ /** The fields, in render order. */
68
+ fields: SchemaField[];
69
+ /** Cross-field validation over the whole `{ name: value }` snapshot — same shape as `group`'s. */
70
+ validate?: (values: Record<string, unknown>) => Record<string, string> | null;
71
+ }
72
+ /**
73
+ * A field type — the mapping from a schema `type` name to (1) a default value,
74
+ * (2) the validators its constraints translate to, and (3) a UI-render hint. Register
75
+ * one with {@link fieldType}; a `schemaForm` consults the registry (or a per-form
76
+ * override list) to build each control.
77
+ */
78
+ export interface FieldTypeDef<T = unknown> {
79
+ /** The `type` name this handles (e.g. `'email'`). */
80
+ name: string;
81
+ /** Default initial value when the schema field omits `initial` — a value or a function of the field. */
82
+ defaultValue?: T | ((f: SchemaField) => T);
83
+ /** Build the validator list from the field's constraints (`required`/`min`/`pattern`/…). */
84
+ validators?: (f: SchemaField) => Validator<T>[];
85
+ /** UI hint — the component key a renderer should use (default `'input'`). */
86
+ control?: string;
87
+ /** UI hint — static props for that component, merged UNDER the field's own `props`. */
88
+ props?: (f: SchemaField) => Record<string, unknown>;
89
+ /** Coerce a raw value to this type (e.g. `''`/`null` → number|null). Applied to the initial value. */
90
+ coerce?: (raw: unknown) => T;
91
+ }
92
+ /**
93
+ * Register a field type (and return it). Overrides any existing type of the same name.
94
+ * This is the `fieldType()` registry entry point — call it once at app start for your
95
+ * custom types, or pass types per-form via `schemaForm(schema, { types: [...] })`.
96
+ */
97
+ export declare function fieldType<T>(def: FieldTypeDef<T>): FieldTypeDef<T>;
98
+ /** Look up a registered field type by name (undefined if none). */
99
+ export declare function getFieldType(name: string): FieldTypeDef<unknown> | undefined;
100
+ /** The names of every currently-registered field type. */
101
+ export declare function fieldTypeNames(): string[];
102
+ /** One entry of {@link SchemaForm.render} — the live control plus the UI hints to render it. */
103
+ export interface RenderField {
104
+ /** The field name / value key. */
105
+ name: string;
106
+ /** The live {@link Field} — bind `value`, read `error()`/`valid()`. */
107
+ field: Field<unknown>;
108
+ /** The originating schema field. */
109
+ schema: SchemaField;
110
+ /** Which UI component to render (the type's `control`, default `'input'`). */
111
+ control: string;
112
+ /** The field's label, if any. */
113
+ label?: string;
114
+ /** Props for the component: the type's `props` overlaid with the field's own `props`. */
115
+ props: Record<string, unknown>;
116
+ }
117
+ /** The result of {@link schemaForm}: a `group` of fields plus the render model + lookups. */
118
+ export interface SchemaForm extends Group<Record<string, Field<unknown>>> {
119
+ /** The schema it was built from. */
120
+ schema: FormSchema;
121
+ /** Ordered render descriptors — iterate these to render the form. */
122
+ render: () => RenderField[];
123
+ /** Look up one field by name. */
124
+ fieldFor: (name: string) => Field<unknown> | undefined;
125
+ }
126
+ /**
127
+ * Build a live form from a declarative {@link FormSchema}. Each field is created via its
128
+ * registered {@link FieldTypeDef} (default value, constraint validators, render hint), then
129
+ * aggregated with the existing {@link group} (so validity/values/touched/dirty/submit all
130
+ * work exactly as a hand-built form). Pass `types` to register field types scoped to this
131
+ * form (they win over globally-registered ones without mutating the global registry).
132
+ *
133
+ * Throws (fail-loud) if a field names a `type` that isn't registered.
134
+ */
135
+ export declare function schemaForm(schema: FormSchema, opts?: {
136
+ types?: FieldTypeDef<unknown>[];
137
+ }): SchemaForm;
138
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/dist/schema.js ADDED
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @weave-framework/forms/schema — schema-driven forms.
3
+ *
4
+ * A declarative **field-type registry** ({@link fieldType}) plus a builder
5
+ * ({@link schemaForm}) that turns a plain JSON-ish schema into a live forms
6
+ * {@link Group}, composing the existing `field`/`group`/`validators` primitives —
7
+ * no re-implementation of form state. This is the RFC 0002 "field-type registry"
8
+ * slice: instead of hand-wiring every `field(...)`, you describe fields declaratively
9
+ * and a registered *type* supplies the default value, the validators built from the
10
+ * field's constraints, and a UI-render hint (which control + props).
11
+ *
12
+ * ```ts
13
+ * import { schemaForm, fieldType } from '@weave-framework/forms/schema';
14
+ *
15
+ * const f = schemaForm({
16
+ * fields: [
17
+ * { name: 'email', type: 'email', required: true, label: 'Email' },
18
+ * { name: 'age', type: 'number', min: 18 },
19
+ * { name: 'plan', type: 'select', options: [{ value: 'free', label: 'Free' }] },
20
+ * { name: 'tos', type: 'checkbox', required: true },
21
+ * ],
22
+ * });
23
+ * f.render(); // [{ name, field, control:'input', props:{type:'email'}, label }, …] → drive the UI
24
+ * f.valid(); // aggregate validity, reactive
25
+ * f.value(); // { email, age, plan, tos }, reactive
26
+ * ```
27
+ */
28
+ import { field, group, validators, } from './index';
29
+ const registry = new Map();
30
+ /**
31
+ * Register a field type (and return it). Overrides any existing type of the same name.
32
+ * This is the `fieldType()` registry entry point — call it once at app start for your
33
+ * custom types, or pass types per-form via `schemaForm(schema, { types: [...] })`.
34
+ */
35
+ export function fieldType(def) {
36
+ registry.set(def.name, def);
37
+ return def;
38
+ }
39
+ /** Look up a registered field type by name (undefined if none). */
40
+ export function getFieldType(name) {
41
+ return registry.get(name);
42
+ }
43
+ /** The names of every currently-registered field type. */
44
+ export function fieldTypeNames() {
45
+ return [...registry.keys()];
46
+ }
47
+ /* ─────────────────────── built-in field types ───────────────────────── */
48
+ /** Wrap a string validator so it is skipped on an empty value (emptiness is `required`'s job). */
49
+ const skipEmpty = (v) => (x) => x ? v(x) : null;
50
+ /** required + minLength/maxLength/pattern from a schema field, for text-like types. */
51
+ function textValidators(f) {
52
+ const vs = [];
53
+ if (f.required)
54
+ vs.push(validators.required());
55
+ if (f.minLength != null)
56
+ vs.push(skipEmpty(validators.minLength(f.minLength)));
57
+ if (f.maxLength != null)
58
+ vs.push(validators.maxLength(f.maxLength));
59
+ if (f.pattern)
60
+ vs.push(skipEmpty(validators.pattern(f.pattern)));
61
+ return vs;
62
+ }
63
+ fieldType({ name: 'text', control: 'input', defaultValue: '', validators: textValidators });
64
+ fieldType({ name: 'textarea', control: 'textarea', defaultValue: '', validators: textValidators });
65
+ fieldType({
66
+ name: 'email',
67
+ control: 'input',
68
+ defaultValue: '',
69
+ props: () => ({ type: 'email' }),
70
+ validators: (f) => [...textValidators(f), skipEmpty(validators.email())],
71
+ });
72
+ fieldType({
73
+ name: 'password',
74
+ control: 'input',
75
+ defaultValue: '',
76
+ props: () => ({ type: 'password' }),
77
+ validators: textValidators,
78
+ });
79
+ fieldType({ name: 'date', control: 'date', defaultValue: '', validators: textValidators });
80
+ fieldType({
81
+ name: 'number',
82
+ control: 'number',
83
+ defaultValue: null,
84
+ coerce: (raw) => (raw === '' || raw == null ? null : Number(raw)),
85
+ validators: (f) => {
86
+ const vs = [];
87
+ if (f.required)
88
+ vs.push((v) => (v == null ? 'Required' : null));
89
+ if (f.min != null)
90
+ vs.push((v) => (v != null && v < f.min ? `Must be ≥ ${f.min}` : null));
91
+ if (f.max != null)
92
+ vs.push((v) => (v != null && v > f.max ? `Must be ≤ ${f.max}` : null));
93
+ return vs;
94
+ },
95
+ });
96
+ fieldType({
97
+ name: 'checkbox',
98
+ control: 'checkbox',
99
+ defaultValue: false,
100
+ coerce: (raw) => Boolean(raw),
101
+ validators: (f) => (f.required ? [validators.required()] : []),
102
+ });
103
+ const choiceType = (name) => {
104
+ fieldType({
105
+ name,
106
+ control: name,
107
+ defaultValue: '',
108
+ props: (f) => ({ options: f.options ?? [] }),
109
+ validators: (f) => (f.required ? [validators.required()] : []),
110
+ });
111
+ };
112
+ choiceType('select');
113
+ choiceType('radio');
114
+ /**
115
+ * Build a live form from a declarative {@link FormSchema}. Each field is created via its
116
+ * registered {@link FieldTypeDef} (default value, constraint validators, render hint), then
117
+ * aggregated with the existing {@link group} (so validity/values/touched/dirty/submit all
118
+ * work exactly as a hand-built form). Pass `types` to register field types scoped to this
119
+ * form (they win over globally-registered ones without mutating the global registry).
120
+ *
121
+ * Throws (fail-loud) if a field names a `type` that isn't registered.
122
+ */
123
+ export function schemaForm(schema, opts = {}) {
124
+ const local = new Map();
125
+ for (const t of opts.types ?? [])
126
+ local.set(t.name, t);
127
+ const resolve = (name) => local.get(name) ?? registry.get(name);
128
+ const controls = {};
129
+ const descriptors = [];
130
+ for (const f of schema.fields) {
131
+ const def = resolve(f.type);
132
+ if (!def) {
133
+ throw new Error(`[weave/forms] unknown field type "${f.type}" for field "${f.name}". ` +
134
+ `Register it with fieldType({ name: '${f.type}', … }) or pass it via schemaForm(schema, { types: [ … ] }).`);
135
+ }
136
+ const rawInitial = f.initial !== undefined
137
+ ? f.initial
138
+ : typeof def.defaultValue === 'function'
139
+ ? def.defaultValue(f)
140
+ : def.defaultValue;
141
+ const initial = def.coerce ? def.coerce(rawInitial) : rawInitial;
142
+ const vs = [
143
+ ...(def.validators ? def.validators(f) : []),
144
+ ...(f.validators ?? []),
145
+ ];
146
+ const control = field(initial, vs, {
147
+ asyncValidate: f.asyncValidate,
148
+ debounceMs: f.debounceMs,
149
+ });
150
+ controls[f.name] = control;
151
+ descriptors.push({
152
+ name: f.name,
153
+ field: control,
154
+ schema: f,
155
+ control: def.control ?? 'input',
156
+ label: f.label,
157
+ props: { ...(def.props ? def.props(f) : {}), ...(f.props ?? {}) },
158
+ });
159
+ }
160
+ const g = group(controls, schema.validate ? { validate: (v) => schema.validate(v) } : {});
161
+ g.schema = schema;
162
+ g.render = () => descriptors;
163
+ g.fieldFor = (name) => controls[name];
164
+ return g;
165
+ }
166
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@weave-framework/forms",
3
- "version": "0.2.107",
3
+ "version": "1.0.0",
4
4
  "description": "Weave forms — signal-native field/form state + validation over bind:value. Zero third-party deps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -15,6 +15,10 @@
15
15
  "./dom": {
16
16
  "types": "./dist/dom.d.ts",
17
17
  "import": "./dist/dom.js"
18
+ },
19
+ "./schema": {
20
+ "types": "./dist/schema.d.ts",
21
+ "import": "./dist/schema.js"
18
22
  }
19
23
  },
20
24
  "files": [
@@ -32,7 +36,7 @@
32
36
  "access": "public"
33
37
  },
34
38
  "dependencies": {
35
- "@weave-framework/runtime": "0.2.107"
39
+ "@weave-framework/runtime": "1.0.0"
36
40
  },
37
41
  "license": "MIT"
38
42
  }