@maxhealth.tech/prefab 0.3.11 → 0.3.13
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/CHANGELOG.md +25 -3
- package/dist/a2ui/catalog.js +1 -1
- package/dist/a2ui/catalog.js.map +1 -1
- package/dist/a2ui.min.js +1 -1
- package/dist/auto/comparison.d.ts.map +1 -1
- package/dist/auto/comparison.js +1 -7
- package/dist/auto/comparison.js.map +1 -1
- package/dist/auto/form.d.ts.map +1 -1
- package/dist/auto/form.js +8 -9
- package/dist/auto/form.js.map +1 -1
- package/dist/auto/index.d.ts +2 -0
- package/dist/auto/index.d.ts.map +1 -1
- package/dist/auto/index.js +5 -11
- package/dist/auto/index.js.map +1 -1
- package/dist/auto/schema.d.ts +84 -0
- package/dist/auto/schema.d.ts.map +1 -0
- package/dist/auto/schema.js +227 -0
- package/dist/auto/schema.js.map +1 -0
- package/dist/components/form/index.d.ts +7 -3
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +8 -3
- package/dist/components/form/index.js.map +1 -1
- package/dist/core/component.d.ts +11 -1
- package/dist/core/component.d.ts.map +1 -1
- package/dist/core/component.js +4 -1
- package/dist/core/component.js.map +1 -1
- package/dist/core/humanize.d.ts +20 -0
- package/dist/core/humanize.d.ts.map +1 -0
- package/dist/core/humanize.js +28 -0
- package/dist/core/humanize.js.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/version.d.ts +1 -1
- package/dist/core/version.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/renderer/components/choice.d.ts +10 -0
- package/dist/renderer/components/choice.d.ts.map +1 -0
- package/dist/renderer/components/choice.js +261 -0
- package/dist/renderer/components/choice.js.map +1 -0
- package/dist/renderer/components/form.d.ts +24 -1
- package/dist/renderer/components/form.d.ts.map +1 -1
- package/dist/renderer/components/form.js +36 -239
- package/dist/renderer/components/form.js.map +1 -1
- package/dist/renderer/components/index.d.ts.map +1 -1
- package/dist/renderer/components/index.js +2 -0
- package/dist/renderer/components/index.js.map +1 -1
- package/dist/renderer.auto.min.js +10 -10
- package/dist/renderer.min.js +10 -10
- package/package.json +1 -1
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fieldsFromJsonSchema — derive form fields from a JSON Schema.
|
|
3
|
+
*
|
|
4
|
+
* `formSchema()` in `src/mcp/input-required.ts` turns an `AutoFormField[]` into
|
|
5
|
+
* an elicitation schema. This is the other direction, and it is the one a server
|
|
6
|
+
* usually needs: every MCP tool already declares an `inputSchema`, every REST
|
|
7
|
+
* route already declares a request body, and both are JSON Schema. Handing that
|
|
8
|
+
* schema here produces the field list `autoForm()` renders, so a tool's own
|
|
9
|
+
* input contract draws its own form with no second description of the fields.
|
|
10
|
+
*
|
|
11
|
+
* Only what a flat form can honestly ask for is emitted. A nested object, an
|
|
12
|
+
* array of objects, or a branch with no primitive type is skipped rather than
|
|
13
|
+
* rendered as a control that cannot round-trip — the same rule `autoTable`
|
|
14
|
+
* applies to nested columns.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { autoForm, fieldsFromJsonSchema } from '@maxhealth.tech/prefab'
|
|
19
|
+
*
|
|
20
|
+
* const fields = fieldsFromJsonSchema({
|
|
21
|
+
* type: 'object',
|
|
22
|
+
* required: ['email'],
|
|
23
|
+
* properties: {
|
|
24
|
+
* email: { type: 'string', format: 'email', title: 'Email' },
|
|
25
|
+
* plan: { type: 'string', enum: ['pro', 'team'] },
|
|
26
|
+
* seats: { type: 'integer', minimum: 1, maximum: 50 },
|
|
27
|
+
* },
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* autoForm(fields, 'create_account', { title: 'New account' })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
import type { AutoFormField } from './form.js';
|
|
34
|
+
/**
|
|
35
|
+
* The JSON Schema keywords a form field can express, read structurally.
|
|
36
|
+
*
|
|
37
|
+
* Deliberately not a full JSON Schema type: this reads schemas from anywhere
|
|
38
|
+
* (TypeBox, Zod, a hand-written spec, an OpenAPI document) and only the
|
|
39
|
+
* keywords below survive the crossing into a control.
|
|
40
|
+
*/
|
|
41
|
+
export interface JsonSchemaNode {
|
|
42
|
+
type?: string | string[];
|
|
43
|
+
format?: string;
|
|
44
|
+
title?: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
enum?: unknown[];
|
|
47
|
+
const?: unknown;
|
|
48
|
+
default?: unknown;
|
|
49
|
+
properties?: Record<string, JsonSchemaNode>;
|
|
50
|
+
required?: string[];
|
|
51
|
+
items?: JsonSchemaNode;
|
|
52
|
+
anyOf?: JsonSchemaNode[];
|
|
53
|
+
oneOf?: JsonSchemaNode[];
|
|
54
|
+
minimum?: number;
|
|
55
|
+
maximum?: number;
|
|
56
|
+
minLength?: number;
|
|
57
|
+
maxLength?: number;
|
|
58
|
+
minItems?: number;
|
|
59
|
+
maxItems?: number;
|
|
60
|
+
readOnly?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface FieldsFromJsonSchemaOptions {
|
|
63
|
+
/** Property names to leave out (server-managed keys, path params already known). */
|
|
64
|
+
exclude?: string[];
|
|
65
|
+
/**
|
|
66
|
+
* Property names to keep, in this order. Anything else is dropped, and a name
|
|
67
|
+
* the schema does not declare is ignored rather than invented.
|
|
68
|
+
*/
|
|
69
|
+
include?: string[];
|
|
70
|
+
/**
|
|
71
|
+
* Emit a field for every property, including ones already marked
|
|
72
|
+
* `readOnly: true` in the schema. @default false
|
|
73
|
+
*/
|
|
74
|
+
includeReadOnly?: boolean;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Derive `autoForm` fields from a JSON Schema object.
|
|
78
|
+
*
|
|
79
|
+
* Returns an empty list for anything that is not an object schema with
|
|
80
|
+
* properties, so a caller can hand over whatever a route declared and branch on
|
|
81
|
+
* the result rather than pre-checking the shape.
|
|
82
|
+
*/
|
|
83
|
+
export declare function fieldsFromJsonSchema(schema: unknown, options?: FieldsFromJsonSchemaOptions): AutoFormField[];
|
|
84
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/auto/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAkB,MAAM,WAAW,CAAA;AAI9D;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC3C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,2BAA2B;IAC1C,oFAAoF;IACpF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAkLD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,2BAA2B,GACpC,aAAa,EAAE,CAqBjB"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fieldsFromJsonSchema — derive form fields from a JSON Schema.
|
|
3
|
+
*
|
|
4
|
+
* `formSchema()` in `src/mcp/input-required.ts` turns an `AutoFormField[]` into
|
|
5
|
+
* an elicitation schema. This is the other direction, and it is the one a server
|
|
6
|
+
* usually needs: every MCP tool already declares an `inputSchema`, every REST
|
|
7
|
+
* route already declares a request body, and both are JSON Schema. Handing that
|
|
8
|
+
* schema here produces the field list `autoForm()` renders, so a tool's own
|
|
9
|
+
* input contract draws its own form with no second description of the fields.
|
|
10
|
+
*
|
|
11
|
+
* Only what a flat form can honestly ask for is emitted. A nested object, an
|
|
12
|
+
* array of objects, or a branch with no primitive type is skipped rather than
|
|
13
|
+
* rendered as a control that cannot round-trip — the same rule `autoTable`
|
|
14
|
+
* applies to nested columns.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```ts
|
|
18
|
+
* import { autoForm, fieldsFromJsonSchema } from '@maxhealth.tech/prefab'
|
|
19
|
+
*
|
|
20
|
+
* const fields = fieldsFromJsonSchema({
|
|
21
|
+
* type: 'object',
|
|
22
|
+
* required: ['email'],
|
|
23
|
+
* properties: {
|
|
24
|
+
* email: { type: 'string', format: 'email', title: 'Email' },
|
|
25
|
+
* plan: { type: 'string', enum: ['pro', 'team'] },
|
|
26
|
+
* seats: { type: 'integer', minimum: 1, maximum: 50 },
|
|
27
|
+
* },
|
|
28
|
+
* })
|
|
29
|
+
*
|
|
30
|
+
* autoForm(fields, 'create_account', { title: 'New account' })
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
// ── Type mapping ─────────────────────────────────────────────────────────────
|
|
34
|
+
/**
|
|
35
|
+
* JSON Schema `format` → the field `type` that renders it.
|
|
36
|
+
*
|
|
37
|
+
* These land on `<input type>` verbatim, so every value here is a real HTML
|
|
38
|
+
* input type; `date-time` becomes `datetime-local` because that is the control
|
|
39
|
+
* a browser has. `password` is not a JSON Schema format, but TypeBox and
|
|
40
|
+
* OpenAPI both emit it and a password field is worth honouring.
|
|
41
|
+
*/
|
|
42
|
+
const FORMAT_TYPE = {
|
|
43
|
+
email: 'email',
|
|
44
|
+
uri: 'url',
|
|
45
|
+
url: 'url',
|
|
46
|
+
'uri-reference': 'url',
|
|
47
|
+
hostname: 'url',
|
|
48
|
+
date: 'date',
|
|
49
|
+
'date-time': 'datetime-local',
|
|
50
|
+
time: 'time',
|
|
51
|
+
password: 'password',
|
|
52
|
+
tel: 'tel',
|
|
53
|
+
phone: 'tel',
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Read an untyped value as a schema node, or nothing when it is not one.
|
|
57
|
+
* Schemas arrive from callers as `unknown`, and every recursive read (a
|
|
58
|
+
* property, `items`, a union branch) has to survive whatever is actually there.
|
|
59
|
+
*/
|
|
60
|
+
function asNode(value) {
|
|
61
|
+
return value != null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
|
|
62
|
+
}
|
|
63
|
+
/** The `properties` map, read the same defensive way. */
|
|
64
|
+
function asRecord(value) {
|
|
65
|
+
const node = asNode(value);
|
|
66
|
+
return node;
|
|
67
|
+
}
|
|
68
|
+
/** Types a flat form can ask for. Everything else is structure, not a value. */
|
|
69
|
+
const PRIMITIVE_TYPES = new Set(['string', 'number', 'integer', 'boolean']);
|
|
70
|
+
/**
|
|
71
|
+
* Resolve the branch of a union that a single control should represent.
|
|
72
|
+
*
|
|
73
|
+
* Two unions are worth resolving rather than skipping. A nullable field
|
|
74
|
+
* (`type: ['string','null']`, or an `anyOf` with a null branch) is one optional
|
|
75
|
+
* control. And a coercion union — Elysia compiles `t.Integer()` to
|
|
76
|
+
* `anyOf: [{ type: 'string', format: 'integer' }, { type: 'integer' }]` so a
|
|
77
|
+
* query string can carry a number — describes one number field written twice;
|
|
78
|
+
* the non-string branch is the one that says what the value means.
|
|
79
|
+
*
|
|
80
|
+
* A branch carrying an `enum` wins over both: it is the most specific thing
|
|
81
|
+
* said about the value, and it renders as a Select.
|
|
82
|
+
*/
|
|
83
|
+
function resolveNode(node) {
|
|
84
|
+
const union = node.anyOf ?? node.oneOf;
|
|
85
|
+
if (union == null || union.length === 0) {
|
|
86
|
+
if (Array.isArray(node.type)) {
|
|
87
|
+
const type = node.type.find(t => t !== 'null');
|
|
88
|
+
return type == null ? undefined : { ...node, type };
|
|
89
|
+
}
|
|
90
|
+
return node;
|
|
91
|
+
}
|
|
92
|
+
const branches = union
|
|
93
|
+
.map(resolveNode)
|
|
94
|
+
.filter((b) => b != null && b.type !== 'null');
|
|
95
|
+
if (branches.length === 0)
|
|
96
|
+
return undefined;
|
|
97
|
+
const enumBranch = branches.find(b => b.enum != null || b.items?.enum != null);
|
|
98
|
+
const typedBranch = branches.find(b => b.type != null && b.type !== 'string');
|
|
99
|
+
const resolved = enumBranch ?? typedBranch ?? branches[0];
|
|
100
|
+
// Keep the annotations from the union itself: a coercion union carries its
|
|
101
|
+
// title and description on the parent, not on the branch that won.
|
|
102
|
+
return {
|
|
103
|
+
...resolved,
|
|
104
|
+
...(node.title != null && resolved.title == null && { title: node.title }),
|
|
105
|
+
...(node.description != null && resolved.description == null && { description: node.description }),
|
|
106
|
+
...(node.default !== undefined && resolved.default === undefined && { default: node.default }),
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Enum values as form options. Non-string values are stringified, as a control submits text. */
|
|
110
|
+
function toOptions(values) {
|
|
111
|
+
return values
|
|
112
|
+
.filter(v => v !== null && typeof v !== 'object')
|
|
113
|
+
.map(v => ({ value: String(v) }));
|
|
114
|
+
}
|
|
115
|
+
/** A default is only carried across when the control can actually hold it. */
|
|
116
|
+
function toDefault(value) {
|
|
117
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
|
|
118
|
+
return value;
|
|
119
|
+
if (Array.isArray(value) && value.every(v => typeof v === 'string'))
|
|
120
|
+
return value;
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Build one field, or undefined when the property is not a value a flat form
|
|
125
|
+
* can ask for (a nested object, an array of objects, an empty union).
|
|
126
|
+
*/
|
|
127
|
+
function toField(name, raw, required) {
|
|
128
|
+
const node = resolveNode(raw);
|
|
129
|
+
if (node == null)
|
|
130
|
+
return undefined;
|
|
131
|
+
const common = {
|
|
132
|
+
name,
|
|
133
|
+
...(node.title != null && { label: node.title }),
|
|
134
|
+
...(node.description != null && { description: node.description }),
|
|
135
|
+
...(required && { required: true }),
|
|
136
|
+
};
|
|
137
|
+
// A `const` is an enum of one — the schema saying the value is fixed.
|
|
138
|
+
const enumValues = node.enum ?? (node.const !== undefined ? [node.const] : undefined);
|
|
139
|
+
if (enumValues != null) {
|
|
140
|
+
const options = toOptions(enumValues);
|
|
141
|
+
if (options.length === 0)
|
|
142
|
+
return undefined;
|
|
143
|
+
const fallback = toDefault(node.default);
|
|
144
|
+
return {
|
|
145
|
+
...common,
|
|
146
|
+
options,
|
|
147
|
+
...(typeof fallback === 'string' && { default: fallback }),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
if (node.type === 'array') {
|
|
151
|
+
// Only a multi-choice list survives: an array of free-form values has no
|
|
152
|
+
// single control, and an array of objects is a table, not a field.
|
|
153
|
+
const items = node.items == null ? undefined : resolveNode(node.items);
|
|
154
|
+
if (items?.enum == null)
|
|
155
|
+
return undefined;
|
|
156
|
+
const options = toOptions(items.enum);
|
|
157
|
+
if (options.length === 0)
|
|
158
|
+
return undefined;
|
|
159
|
+
const fallback = toDefault(node.default);
|
|
160
|
+
return {
|
|
161
|
+
...common,
|
|
162
|
+
options,
|
|
163
|
+
multiple: true,
|
|
164
|
+
...(node.minItems != null && { min: node.minItems }),
|
|
165
|
+
...(node.maxItems != null && { max: node.maxItems }),
|
|
166
|
+
...(Array.isArray(fallback) && { default: fallback }),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
if (typeof node.type !== 'string' || !PRIMITIVE_TYPES.has(node.type))
|
|
170
|
+
return undefined;
|
|
171
|
+
const fallback = toDefault(node.default);
|
|
172
|
+
if (node.type === 'boolean') {
|
|
173
|
+
return { ...common, type: 'checkbox', ...(typeof fallback === 'boolean' && { default: fallback }) };
|
|
174
|
+
}
|
|
175
|
+
if (node.type === 'number' || node.type === 'integer') {
|
|
176
|
+
// Both render as `type="number"`: `integer` is not an input type, and a
|
|
177
|
+
// control claiming one falls back to free text in every browser.
|
|
178
|
+
return {
|
|
179
|
+
...common,
|
|
180
|
+
type: 'number',
|
|
181
|
+
...(node.minimum != null && { min: node.minimum }),
|
|
182
|
+
...(node.maximum != null && { max: node.maximum }),
|
|
183
|
+
...(typeof fallback === 'number' && { default: fallback }),
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const type = node.format != null ? FORMAT_TYPE[node.format] : undefined;
|
|
187
|
+
return {
|
|
188
|
+
...common,
|
|
189
|
+
type: type ?? 'text',
|
|
190
|
+
...(node.minLength != null && { min: node.minLength }),
|
|
191
|
+
...(node.maxLength != null && { max: node.maxLength }),
|
|
192
|
+
...(typeof fallback === 'string' && { default: fallback }),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
// ── fieldsFromJsonSchema() ───────────────────────────────────────────────────
|
|
196
|
+
/**
|
|
197
|
+
* Derive `autoForm` fields from a JSON Schema object.
|
|
198
|
+
*
|
|
199
|
+
* Returns an empty list for anything that is not an object schema with
|
|
200
|
+
* properties, so a caller can hand over whatever a route declared and branch on
|
|
201
|
+
* the result rather than pre-checking the shape.
|
|
202
|
+
*/
|
|
203
|
+
export function fieldsFromJsonSchema(schema, options) {
|
|
204
|
+
const root = asNode(schema);
|
|
205
|
+
const resolved = root == null ? undefined : resolveNode(root);
|
|
206
|
+
const properties = asRecord(resolved?.properties);
|
|
207
|
+
if (properties == null)
|
|
208
|
+
return [];
|
|
209
|
+
const required = new Set(Array.isArray(resolved?.required) ? resolved.required : []);
|
|
210
|
+
const exclude = new Set(options?.exclude ?? []);
|
|
211
|
+
const names = options?.include ?? Object.keys(properties);
|
|
212
|
+
const fields = [];
|
|
213
|
+
for (const name of names) {
|
|
214
|
+
const property = asNode(properties[name]);
|
|
215
|
+
if (property == null)
|
|
216
|
+
continue;
|
|
217
|
+
if (exclude.has(name))
|
|
218
|
+
continue;
|
|
219
|
+
if (property.readOnly === true && options?.includeReadOnly !== true)
|
|
220
|
+
continue;
|
|
221
|
+
const field = toField(name, property, required.has(name));
|
|
222
|
+
if (field != null)
|
|
223
|
+
fields.push(field);
|
|
224
|
+
}
|
|
225
|
+
return fields;
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/auto/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ export declare function Form(props: FormProps): ContainerComponent;
|
|
|
11
11
|
export interface InputProps extends StatefulProps {
|
|
12
12
|
placeholder?: string;
|
|
13
13
|
inputType?: string;
|
|
14
|
-
required?: boolean;
|
|
15
14
|
}
|
|
16
15
|
export declare function Input(props: InputProps): StatefulComponent;
|
|
17
16
|
export interface TextareaProps extends StatefulProps {
|
|
@@ -31,9 +30,14 @@ export interface ButtonProps extends ComponentProps {
|
|
|
31
30
|
}
|
|
32
31
|
export declare function Button(label: RxStr, props?: ButtonProps): Component;
|
|
33
32
|
export declare function ButtonGroup(props?: ContainerProps): ContainerComponent;
|
|
34
|
-
export
|
|
33
|
+
export interface SelectProps extends StatefulProps {
|
|
34
|
+
/** Shown until a choice is made. */
|
|
35
|
+
placeholder?: string;
|
|
36
|
+
/** Accept several choices. Submits an array under `name`. */
|
|
37
|
+
multiple?: boolean;
|
|
35
38
|
children?: Component[];
|
|
36
|
-
}
|
|
39
|
+
}
|
|
40
|
+
export declare function Select(props: SelectProps): ContainerComponent;
|
|
37
41
|
export declare function SelectOption(value: string, label?: string, props?: ComponentProps): Component;
|
|
38
42
|
export interface CheckboxProps extends StatefulProps {
|
|
39
43
|
checked?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAiB,MAAM,yBAAyB,CAAA;AACzG,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACnG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAIpD,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC5B;AAED,wBAAgB,IAAI,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,CAQzD;AAID,MAAM,WAAW,UAAW,SAAQ,aAAa;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,9 @@ export function Textarea(props) {
|
|
|
32
32
|
...(props.placeholder && { placeholder: props.placeholder }),
|
|
33
33
|
...(props.rows !== undefined && { rows: props.rows }),
|
|
34
34
|
disabled: false,
|
|
35
|
-
|
|
35
|
+
// Defaulted rather than omitted: the Python reference emits it on every
|
|
36
|
+
// Textarea, and the wire-parity goldens are compared field for field.
|
|
37
|
+
required: props.required ?? false,
|
|
36
38
|
});
|
|
37
39
|
return c;
|
|
38
40
|
}
|
|
@@ -58,10 +60,13 @@ export function Button(label, props) {
|
|
|
58
60
|
export function ButtonGroup(props) {
|
|
59
61
|
return new ContainerComponent('ButtonGroup', props);
|
|
60
62
|
}
|
|
61
|
-
// ── Select + SelectOption ────────────────────────────────────────────────────
|
|
62
63
|
export function Select(props) {
|
|
63
64
|
const c = new ContainerComponent('Select', props);
|
|
64
|
-
c.getProps = () =>
|
|
65
|
+
c.getProps = () => ({
|
|
66
|
+
...statefulProps(props),
|
|
67
|
+
...(props.placeholder != null && { placeholder: props.placeholder }),
|
|
68
|
+
...(props.multiple === true && { multiple: true }),
|
|
69
|
+
});
|
|
65
70
|
return c;
|
|
66
71
|
}
|
|
67
72
|
export function SelectOption(value, label, props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAUzG,MAAM,UAAU,IAAI,CAAC,KAAgB;IACnC,MAAM,CAAC,GAAG,IAAI,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;QAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE;KAC5B,CAAC,CAAA;IACF,OAAO,CAAC,CAAA;AACV,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/form/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/component.d.ts
CHANGED
|
@@ -61,13 +61,22 @@ export interface StatefulProps extends ComponentProps {
|
|
|
61
61
|
onChange?: Action | Action[];
|
|
62
62
|
/** Visible field label. Rendered by every stateful control. */
|
|
63
63
|
label?: RxStr;
|
|
64
|
+
/**
|
|
65
|
+
* The field must be filled before the form is submitted.
|
|
66
|
+
*
|
|
67
|
+
* Lives here rather than on `InputProps` because it is the control's own
|
|
68
|
+
* constraint, not the text input's: a Select or a RadioGroup states it the
|
|
69
|
+
* same way, the renderer marks it the same way, and the A2UI emitter turns it
|
|
70
|
+
* into the same `required` check.
|
|
71
|
+
*/
|
|
72
|
+
required?: boolean;
|
|
64
73
|
}
|
|
65
74
|
/**
|
|
66
75
|
* Wire shape shared by every stateful control.
|
|
67
76
|
*
|
|
68
77
|
* Select, RadioGroup and Combobox are containers rather than StatefulComponents,
|
|
69
78
|
* so they cannot inherit it; they call this instead of restating it, which is how
|
|
70
|
-
* `label` went missing on them.
|
|
79
|
+
* `label`, and after it `required`, went missing on them.
|
|
71
80
|
*/
|
|
72
81
|
export declare function statefulProps(props: StatefulProps): Record<string, unknown>;
|
|
73
82
|
/**
|
|
@@ -79,6 +88,7 @@ export declare class StatefulComponent extends Component {
|
|
|
79
88
|
value?: unknown;
|
|
80
89
|
onChange?: Action | Action[];
|
|
81
90
|
label?: RxStr;
|
|
91
|
+
required?: boolean;
|
|
82
92
|
constructor(type: string, props: StatefulProps);
|
|
83
93
|
getProps(): Record<string, unknown>;
|
|
84
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAI9C,+EAA+E;AAC/E,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,EAAE,GAAG,GAAG,CAAA;AAErC,gCAAgC;AAChC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAA;IACnC,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACvB;AAID,kEAAkE;AAClE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAiBlD;AAID,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAC5B;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;gBAEf,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc;IAQhD,6DAA6D;IAC7D,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAInC,MAAM,IAAI,aAAa;CA2BxB;AAID,MAAM,WAAW,cAAe,SAAQ,cAAc;IACpD,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAA;CACvB;AAED,qBAAa,kBAAmB,SAAQ,SAAS;IAC/C,QAAQ,EAAE,SAAS,EAAE,CAAA;gBAET,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc;IAKhD,MAAM,IAAI,aAAa;CAOxB;AAID,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC5B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"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"}
|
package/dist/core/component.js
CHANGED
|
@@ -110,13 +110,14 @@ export class ContainerComponent extends Component {
|
|
|
110
110
|
*
|
|
111
111
|
* Select, RadioGroup and Combobox are containers rather than StatefulComponents,
|
|
112
112
|
* so they cannot inherit it; they call this instead of restating it, which is how
|
|
113
|
-
* `label` went missing on them.
|
|
113
|
+
* `label`, and after it `required`, went missing on them.
|
|
114
114
|
*/
|
|
115
115
|
export function statefulProps(props) {
|
|
116
116
|
return {
|
|
117
117
|
name: props.name,
|
|
118
118
|
...(props.value !== undefined && { value: props.value }),
|
|
119
119
|
...(props.label !== undefined && { label: props.label }),
|
|
120
|
+
...(props.required !== undefined && { required: props.required }),
|
|
120
121
|
...(props.onChange && {
|
|
121
122
|
onChange: Array.isArray(props.onChange)
|
|
122
123
|
? props.onChange.map(a => a.toJSON())
|
|
@@ -133,12 +134,14 @@ export class StatefulComponent extends Component {
|
|
|
133
134
|
value;
|
|
134
135
|
onChange;
|
|
135
136
|
label;
|
|
137
|
+
required;
|
|
136
138
|
constructor(type, props) {
|
|
137
139
|
super(type, props);
|
|
138
140
|
this.name = props.name;
|
|
139
141
|
this.value = props.value;
|
|
140
142
|
this.onChange = props.onChange;
|
|
141
143
|
this.label = props.label;
|
|
144
|
+
this.required = props.required;
|
|
142
145
|
}
|
|
143
146
|
getProps() {
|
|
144
147
|
return statefulProps(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/core/component.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key humanization — turn a data key into a label a person reads.
|
|
3
|
+
*
|
|
4
|
+
* Four copies of this had accumulated (`autoDetail`/`autoTable`, `autoForm`,
|
|
5
|
+
* `autoComparison`, and now the schema converter), three of them byte-identical.
|
|
6
|
+
* They are one function with one optional extra rule, so they live here.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* `firstName` / `first_name` / `first-name` → `First name`.
|
|
10
|
+
*
|
|
11
|
+
* Only the first word is capitalized: these are labels in a sentence-case UI,
|
|
12
|
+
* not headings.
|
|
13
|
+
*/
|
|
14
|
+
export declare function humanizeKey(key: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* {@link humanizeKey} plus the `id` → `ID` rule, for table headers and detail
|
|
17
|
+
* rows where `User Id` reads as a typo.
|
|
18
|
+
*/
|
|
19
|
+
export declare function humanizeColumnKey(key: string): string;
|
|
20
|
+
//# sourceMappingURL=humanize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanize.d.ts","sourceRoot":"","sources":["../../src/core/humanize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key humanization — turn a data key into a label a person reads.
|
|
3
|
+
*
|
|
4
|
+
* Four copies of this had accumulated (`autoDetail`/`autoTable`, `autoForm`,
|
|
5
|
+
* `autoComparison`, and now the schema converter), three of them byte-identical.
|
|
6
|
+
* They are one function with one optional extra rule, so they live here.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* `firstName` / `first_name` / `first-name` → `First name`.
|
|
10
|
+
*
|
|
11
|
+
* Only the first word is capitalized: these are labels in a sentence-case UI,
|
|
12
|
+
* not headings.
|
|
13
|
+
*/
|
|
14
|
+
export function humanizeKey(key) {
|
|
15
|
+
return key
|
|
16
|
+
.replace(/([A-Z])/g, ' $1')
|
|
17
|
+
.replace(/[_-]/g, ' ')
|
|
18
|
+
.trim()
|
|
19
|
+
.replace(/^\w/, c => c.toUpperCase());
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* {@link humanizeKey} plus the `id` → `ID` rule, for table headers and detail
|
|
23
|
+
* rows where `User Id` reads as a typo.
|
|
24
|
+
*/
|
|
25
|
+
export function humanizeColumnKey(key) {
|
|
26
|
+
return humanizeKey(key).replace(/\bid\b/gi, 'ID');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=humanize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"humanize.js","sourceRoot":"","sources":["../../src/core/humanize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC;SACrB,IAAI,EAAE;SACN,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;AACnD,CAAC"}
|
package/dist/core/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { Component, ContainerComponent, StatefulComponent, serializeValue, toCamelCase, toSnakeCase } from './component.js';
|
|
2
2
|
export type { ComponentJSON, ComponentProps, ContainerProps, StatefulProps, RxStr } from './component.js';
|
|
3
3
|
export { stringifyValue } from './stringify.js';
|
|
4
|
+
export { humanizeKey, humanizeColumnKey } from './humanize.js';
|
|
4
5
|
export { validateWireFormat, isValidWireFormat } from './validate.js';
|
|
5
6
|
export type { ValidationError, ValidationResult } from './validate.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/core/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC3H,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACrE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC3H,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AACzG,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACrE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA"}
|
package/dist/core/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { Component, ContainerComponent, StatefulComponent, serializeValue, toCamelCase, toSnakeCase } from './component.js';
|
|
2
2
|
export { stringifyValue } from './stringify.js';
|
|
3
|
+
export { humanizeKey, humanizeColumnKey } from './humanize.js';
|
|
3
4
|
export { validateWireFormat, isValidWireFormat } from './validate.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE3H,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE3H,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
|