@ebitex/forms-sdk 0.5.124 → 0.6.126
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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/nodes.d.ts +14 -0
- package/dist/nodes.d.ts.map +1 -1
- package/dist/nodes.js +26 -0
- package/dist/nodes.js.map +1 -1
- package/dist/react/EbitexForm.d.ts +1 -1
- package/dist/react/EbitexForm.d.ts.map +1 -1
- package/dist/react/EbitexForm.js +6 -67
- package/dist/react/EbitexForm.js.map +1 -1
- package/dist/react/NodeList.d.ts +25 -0
- package/dist/react/NodeList.d.ts.map +1 -0
- package/dist/react/NodeList.js +75 -0
- package/dist/react/NodeList.js.map +1 -0
- package/dist/react/fields.d.ts +11 -4
- package/dist/react/fields.d.ts.map +1 -1
- package/dist/react/fields.js +14 -9
- package/dist/react/fields.js.map +1 -1
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +8 -0
- package/dist/react/index.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/validators.d.ts +8 -1
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +7 -0
- package/dist/validators.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
export { createFormsClient, FormsApiError, type FormsClient, type FormsClientOptions, } from './client.js';
|
|
11
11
|
export { validateSubmission, type ValidateOptions } from './validators.js';
|
|
12
12
|
export { isAllOfSatisfied, isFieldComparisonSatisfied, isSatisfied } from './predicates.js';
|
|
13
|
-
export { adjacentVisibleStepSlot, collectDataFields, isDataField, isFormField, resolveSteps, resolveVariant, resolveVisibleStepSlot, } from './nodes.js';
|
|
13
|
+
export { adjacentVisibleStepSlot, collectDataFields, defaultChoiceValues, isDataField, isFormField, resolveSteps, resolveVariant, resolveVisibleStepSlot, } from './nodes.js';
|
|
14
14
|
export { type AllOfPredicate, type ButtonField, type ButtonType, type ChoiceField, type ChoiceOption, type ChoiceType, type FieldComparisonOperator, type FieldComparisonPredicate, type FieldsetNode, type FormField, type FormNode, type FormStep, type InputField, type InputVariant, type NumberField, type RowNode, type SdkForm, type SubmissionData, type TextareaField, type ValidationErrors, type VariantBranch, type VariantNode, type VariantPredicate, } from './types.js';
|
|
15
15
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE3F,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,kBAAkB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE3F,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,6 @@
|
|
|
10
10
|
export { createFormsClient, FormsApiError, } from './client.js';
|
|
11
11
|
export { validateSubmission } from './validators.js';
|
|
12
12
|
export { isAllOfSatisfied, isFieldComparisonSatisfied, isSatisfied } from './predicates.js';
|
|
13
|
-
export { adjacentVisibleStepSlot, collectDataFields, isDataField, isFormField, resolveSteps, resolveVariant, resolveVisibleStepSlot, } from './nodes.js';
|
|
13
|
+
export { adjacentVisibleStepSlot, collectDataFields, defaultChoiceValues, isDataField, isFormField, resolveSteps, resolveVariant, resolveVisibleStepSlot, } from './nodes.js';
|
|
14
14
|
export {} from './types.js';
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,GAGd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE3F,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAwBN,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,iBAAiB,EACjB,aAAa,GAGd,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,kBAAkB,EAAwB,MAAM,iBAAiB,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE3F,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,cAAc,EACd,sBAAsB,GACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAwBN,MAAM,YAAY,CAAA"}
|
package/dist/nodes.d.ts
CHANGED
|
@@ -45,4 +45,18 @@ export declare function resolveSteps(steps: FormStep[], data: SubmissionData): F
|
|
|
45
45
|
export declare function resolveVisibleStepSlot(steps: FormStep[], data: SubmissionData, slot: number): number;
|
|
46
46
|
/** The next (`direction: 1`) or previous (`direction: -1`) visible slot relative to `slot` — `-1` when there is none. */
|
|
47
47
|
export declare function adjacentVisibleStepSlot(steps: FormStep[], data: SubmissionData, slot: number, direction: 1 | -1): number;
|
|
48
|
+
/**
|
|
49
|
+
* The initial value(s) a Choice field's own authored `default` option(s) seed on first render
|
|
50
|
+
* (issue #487) — keyed by submission key, the same shape as `SubmissionData` itself. `Checkbox`
|
|
51
|
+
* seeds every default option's value as an array (more than one may legitimately be selected);
|
|
52
|
+
* `Select`/`Radio` seed the first default option's value alone, defensively, in case a malformed
|
|
53
|
+
* payload carries more than one (the server rejects that shape outright, but this must not crash
|
|
54
|
+
* either way). A field with no default option is simply absent from the result.
|
|
55
|
+
*
|
|
56
|
+
* Walked with empty `data` — this answers "what does a respondent who hasn't answered anything yet
|
|
57
|
+
* see pre-selected", which is exactly the moment this seeds: a `Variant`/conditional-step that isn't
|
|
58
|
+
* satisfied by an empty answer set contributes nothing, matching what the respondent's first paint
|
|
59
|
+
* actually shows.
|
|
60
|
+
*/
|
|
61
|
+
export declare function defaultChoiceValues(steps: FormStep[]): SubmissionData;
|
|
48
62
|
//# sourceMappingURL=nodes.d.ts.map
|
package/dist/nodes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,SAAS,CAE7D;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,GACb,IAAI,IAAI,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,QAAQ,EAAE,CAQrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,EAAE,cAAc,GACnB,CAAC,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,CAc5D;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,QAAQ,EAAE,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpG;AAED,yHAAyH;AACzH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAKxH"}
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,IAAI,SAAS,CAE7D;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,GACb,IAAI,IAAI,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAEhE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,GAAG,QAAQ,EAAE,CAQrF;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,EAAE,cAAc,GACnB,CAAC,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC,EAAE,CAc5D;AAMD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,GAAG,QAAQ,EAAE,CAEhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQpG;AAED,yHAAyH;AACzH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAKxH;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,CAcrE"}
|
package/dist/nodes.js
CHANGED
|
@@ -91,4 +91,30 @@ export function adjacentVisibleStepSlot(steps, data, slot, direction) {
|
|
|
91
91
|
}
|
|
92
92
|
return -1;
|
|
93
93
|
}
|
|
94
|
+
/**
|
|
95
|
+
* The initial value(s) a Choice field's own authored `default` option(s) seed on first render
|
|
96
|
+
* (issue #487) — keyed by submission key, the same shape as `SubmissionData` itself. `Checkbox`
|
|
97
|
+
* seeds every default option's value as an array (more than one may legitimately be selected);
|
|
98
|
+
* `Select`/`Radio` seed the first default option's value alone, defensively, in case a malformed
|
|
99
|
+
* payload carries more than one (the server rejects that shape outright, but this must not crash
|
|
100
|
+
* either way). A field with no default option is simply absent from the result.
|
|
101
|
+
*
|
|
102
|
+
* Walked with empty `data` — this answers "what does a respondent who hasn't answered anything yet
|
|
103
|
+
* see pre-selected", which is exactly the moment this seeds: a `Variant`/conditional-step that isn't
|
|
104
|
+
* satisfied by an empty answer set contributes nothing, matching what the respondent's first paint
|
|
105
|
+
* actually shows.
|
|
106
|
+
*/
|
|
107
|
+
export function defaultChoiceValues(steps) {
|
|
108
|
+
const values = {};
|
|
109
|
+
const nodes = resolveSteps(steps, {}).flatMap((step) => step.nodes);
|
|
110
|
+
for (const field of collectDataFields(nodes, {})) {
|
|
111
|
+
if (field.fieldType !== 'Choice' || field.submissionKey === undefined)
|
|
112
|
+
continue;
|
|
113
|
+
const defaults = field.options.filter((option) => option.default);
|
|
114
|
+
if (defaults.length === 0)
|
|
115
|
+
continue;
|
|
116
|
+
values[field.submissionKey] = field.choiceType === 'Checkbox' ? defaults.map((option) => option.value) : defaults[0].value;
|
|
117
|
+
}
|
|
118
|
+
return values;
|
|
119
|
+
}
|
|
94
120
|
//# sourceMappingURL=nodes.js.map
|
package/dist/nodes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../src/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CSSProperties } from 'react';
|
|
2
2
|
import type { SdkForm, SubmissionData } from '../types.js';
|
|
3
|
-
import {
|
|
3
|
+
import type { FieldComponents } from './fields.js';
|
|
4
4
|
export interface EbitexFormProps {
|
|
5
5
|
/** A form definition from `createFormsClient(...).getForm(...)`, fetched on your server. */
|
|
6
6
|
form: SdkForm;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EbitexForm.d.ts","sourceRoot":"","sources":["../../src/react/EbitexForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"EbitexForm.d.ts","sourceRoot":"","sources":["../../src/react/EbitexForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAoB,MAAM,aAAa,CAAA;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIlD,MAAM,WAAW,eAAe;IAC9B,4FAA4F;IAC5F,IAAI,EAAE,OAAO,CAAA;IAEb,kDAAkD;IAClD,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IAE5C,wGAAwG;IACxG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAElC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IAErB;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAA;IAEjC,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,WAAW,EACX,OAAO,EACP,SAAS,EACT,KAAK,EACL,eAAe,EACf,KAAK,EAAE,aAAa,GACrB,EAAE,eAAe,sCA+NjB"}
|
package/dist/react/EbitexForm.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useId, useMemo, useState } from 'react';
|
|
3
|
-
import { adjacentVisibleStepSlot, collectDataFields,
|
|
3
|
+
import { adjacentVisibleStepSlot, collectDataFields, defaultChoiceValues, resolveSteps, resolveVisibleStepSlot } from '../nodes.js';
|
|
4
4
|
import { validateSubmission } from '../validators.js';
|
|
5
|
-
import {
|
|
5
|
+
import { ActionButtons, NodeList, joinClassNames } from './NodeList.js';
|
|
6
6
|
import { getOrCreateVisitorId } from './visitorId.js';
|
|
7
7
|
/**
|
|
8
8
|
* Renders an ebitex Form and submits it.
|
|
@@ -26,7 +26,9 @@ export function EbitexForm({ form, onSubmitted, onError, className, style, field
|
|
|
26
26
|
// reshaping, unlike a plain position-in-the-visible-list index would. See
|
|
27
27
|
// `resolveVisibleStepSlot`'s own remarks in `../nodes.js`.
|
|
28
28
|
const [stepSlot, setStepSlot] = useState(0);
|
|
29
|
-
|
|
29
|
+
// Seeded from each Choice field's authored `default` option (issue #487/#943) — the respondent's
|
|
30
|
+
// own typed answers overwrite these as they go, same as any other field.
|
|
31
|
+
const [data, setData] = useState(() => defaultChoiceValues(form.steps));
|
|
30
32
|
const [errors, setErrors] = useState({});
|
|
31
33
|
const [submitting, setSubmitting] = useState(false);
|
|
32
34
|
const [completed, setCompleted] = useState(false);
|
|
@@ -154,67 +156,4 @@ export function EbitexForm({ form, onSubmitted, onError, className, style, field
|
|
|
154
156
|
setStepSlot(previous);
|
|
155
157
|
}, children: "Back" })) : null, isLastStep ? (_jsx(ActionButtons, { nodes: form.actions, disabled: disabled })) : (_jsx("button", { type: "submit", className: "ebitex-forms__button", disabled: disabled, children: "Next" }))] })] })] }));
|
|
156
158
|
}
|
|
157
|
-
/** The Form's own configured Submit/Reset controls, shown on the final step. */
|
|
158
|
-
function ActionButtons({ nodes, disabled }) {
|
|
159
|
-
const buttons = nodes.filter((node) => node.nodeType === 'Field' && node.fieldType === 'Button');
|
|
160
|
-
if (buttons.length === 0) {
|
|
161
|
-
return (_jsx("button", { type: "submit", className: "ebitex-forms__button", disabled: disabled, children: "Submit" }));
|
|
162
|
-
}
|
|
163
|
-
return (_jsx(_Fragment, { children: buttons.map((button, index) => (_jsx("button", { type: button.buttonType === 'Reset' ? 'reset' : button.buttonType === 'Button' ? 'button' : 'submit', className: joinClassNames('ebitex-forms__button', button.buttonType !== 'Submit' ? 'ebitex-forms__button--secondary' : undefined), disabled: disabled, children: button.label }, `${button.label}-${index}`))) }));
|
|
164
|
-
}
|
|
165
|
-
function NodeList({ nodes, baseId, data, errors, disabled, fieldComponents, onChange, }) {
|
|
166
|
-
return (_jsx(_Fragment, { children: nodes.map((node, index) => {
|
|
167
|
-
if (node.nodeType === 'Fieldset') {
|
|
168
|
-
return (_jsxs("fieldset", { className: "ebitex-forms__fieldset", children: [_jsx("legend", { children: node.legend }), _jsx(NodeList, { nodes: node.nodes, baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange })] }, `fieldset-${index}`));
|
|
169
|
-
}
|
|
170
|
-
if (node.nodeType === 'Row') {
|
|
171
|
-
// Horizontal on wide viewports, single column on narrow — see styles.css.
|
|
172
|
-
return (_jsx("div", { className: "ebitex-forms__row", children: _jsx(NodeList, { nodes: node.nodes, baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange }) }, `row-${index}`));
|
|
173
|
-
}
|
|
174
|
-
if (node.nodeType === 'Variant') {
|
|
175
|
-
// Re-evaluated on every render as `data` changes, so the visible branch updates live as
|
|
176
|
-
// the respondent answers the controlling field (spec 111-conditional-fields). The chosen
|
|
177
|
-
// branch's/fallback's own node list (spec 113-variant-branch-refinements) may be empty —
|
|
178
|
-
// NodeList over an empty array renders nothing, same as the old `null` case did.
|
|
179
|
-
return (_jsx(NodeList, { nodes: resolveVariant(node, data), baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange }, `variant-${index}`));
|
|
180
|
-
}
|
|
181
|
-
if (node.fieldType === 'Button') {
|
|
182
|
-
// Buttons inside a step's tree are the Form's own Actions, rendered by ActionButtons.
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
const key = node.submissionKey;
|
|
186
|
-
if (key === undefined)
|
|
187
|
-
return null;
|
|
188
|
-
const id = `${baseId}-${key}`;
|
|
189
|
-
const error = errors[key] ?? null;
|
|
190
|
-
const shared = {
|
|
191
|
-
id,
|
|
192
|
-
value: data[key] ?? null,
|
|
193
|
-
error,
|
|
194
|
-
disabled,
|
|
195
|
-
onChange: (value) => onChange(key, value),
|
|
196
|
-
};
|
|
197
|
-
switch (node.fieldType) {
|
|
198
|
-
case 'Input': {
|
|
199
|
-
const Component = fieldComponents?.Input ?? InputFieldControl;
|
|
200
|
-
return _jsx(Component, { field: node, ...shared }, key);
|
|
201
|
-
}
|
|
202
|
-
case 'Textarea': {
|
|
203
|
-
const Component = fieldComponents?.Textarea ?? TextareaFieldControl;
|
|
204
|
-
return _jsx(Component, { field: node, ...shared }, key);
|
|
205
|
-
}
|
|
206
|
-
case 'Number': {
|
|
207
|
-
const Component = fieldComponents?.Number ?? NumberFieldControl;
|
|
208
|
-
return _jsx(Component, { field: node, ...shared }, key);
|
|
209
|
-
}
|
|
210
|
-
case 'Choice': {
|
|
211
|
-
const Component = fieldComponents?.Choice ?? ChoiceFieldControl;
|
|
212
|
-
return _jsx(Component, { field: node, ...shared }, key);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}) }));
|
|
216
|
-
}
|
|
217
|
-
function joinClassNames(...values) {
|
|
218
|
-
return values.filter(Boolean).join(' ');
|
|
219
|
-
}
|
|
220
159
|
//# sourceMappingURL=EbitexForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EbitexForm.js","sourceRoot":"","sources":["../../src/react/EbitexForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"EbitexForm.js","sourceRoot":"","sources":["../../src/react/EbitexForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FormNode, SubmissionData, ValidationErrors } from '../types.js';
|
|
2
|
+
import { type FieldComponents } from './fields.js';
|
|
3
|
+
/**
|
|
4
|
+
* The recursive Fieldset/Row/Variant/field-dispatch tree walk shared by every renderer this package
|
|
5
|
+
* ships — `EbitexForm`'s own fetch-based orchestration, and (spec 77-public-form-progressive-
|
|
6
|
+
* enhancement) ebitex's own server-rendered public form page, which has no use for `EbitexForm`'s
|
|
7
|
+
* `fetch`-driven submit state machine but needs this exact tree walk to avoid a second/third
|
|
8
|
+
* implementation of it. Extracted here specifically so it's importable without `EbitexForm` itself.
|
|
9
|
+
*/
|
|
10
|
+
export declare function NodeList({ nodes, baseId, data, errors, disabled, fieldComponents, onChange, }: {
|
|
11
|
+
nodes: FormNode[];
|
|
12
|
+
baseId: string;
|
|
13
|
+
data: SubmissionData;
|
|
14
|
+
errors: ValidationErrors;
|
|
15
|
+
disabled: boolean;
|
|
16
|
+
fieldComponents?: FieldComponents;
|
|
17
|
+
onChange: (key: string, value: SubmissionData[string]) => void;
|
|
18
|
+
}): import("react").JSX.Element;
|
|
19
|
+
/** The Form's own configured Submit/Reset controls, shown on the final step. */
|
|
20
|
+
export declare function ActionButtons({ nodes, disabled }: {
|
|
21
|
+
nodes: FormNode[];
|
|
22
|
+
disabled: boolean;
|
|
23
|
+
}): import("react").JSX.Element;
|
|
24
|
+
export declare function joinClassNames(...values: (string | undefined)[]): string;
|
|
25
|
+
//# sourceMappingURL=NodeList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeList.d.ts","sourceRoot":"","sources":["../../src/react/NodeList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC7E,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,eAAe,EACf,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,QAAQ,EAAE,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,cAAc,CAAA;IACpB,MAAM,EAAE,gBAAgB,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;CAC/D,+BAiGA;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,+BA8B1F;AAED,wBAAgB,cAAc,CAAC,GAAG,MAAM,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,MAAM,CAExE"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { resolveVariant } from '../nodes.js';
|
|
3
|
+
import { ChoiceFieldControl, InputFieldControl, NumberFieldControl, TextareaFieldControl, } from './fields.js';
|
|
4
|
+
/**
|
|
5
|
+
* The recursive Fieldset/Row/Variant/field-dispatch tree walk shared by every renderer this package
|
|
6
|
+
* ships — `EbitexForm`'s own fetch-based orchestration, and (spec 77-public-form-progressive-
|
|
7
|
+
* enhancement) ebitex's own server-rendered public form page, which has no use for `EbitexForm`'s
|
|
8
|
+
* `fetch`-driven submit state machine but needs this exact tree walk to avoid a second/third
|
|
9
|
+
* implementation of it. Extracted here specifically so it's importable without `EbitexForm` itself.
|
|
10
|
+
*/
|
|
11
|
+
export function NodeList({ nodes, baseId, data, errors, disabled, fieldComponents, onChange, }) {
|
|
12
|
+
return (_jsx(_Fragment, { children: nodes.map((node, index) => {
|
|
13
|
+
if (node.nodeType === 'Fieldset') {
|
|
14
|
+
return (_jsxs("fieldset", { className: "ebitex-forms__fieldset", children: [_jsx("legend", { children: node.legend }), _jsx(NodeList, { nodes: node.nodes, baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange })] }, `fieldset-${index}`));
|
|
15
|
+
}
|
|
16
|
+
if (node.nodeType === 'Row') {
|
|
17
|
+
// Horizontal on wide viewports, single column on narrow — see styles.css.
|
|
18
|
+
return (_jsx("div", { className: "ebitex-forms__row", children: _jsx(NodeList, { nodes: node.nodes, baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange }) }, `row-${index}`));
|
|
19
|
+
}
|
|
20
|
+
if (node.nodeType === 'Variant') {
|
|
21
|
+
// Re-evaluated on every render as `data` changes, so the visible branch updates live as
|
|
22
|
+
// the respondent answers the controlling field (spec 111-conditional-fields). The chosen
|
|
23
|
+
// branch's/fallback's own node list (spec 113-variant-branch-refinements) may be empty —
|
|
24
|
+
// NodeList over an empty array renders nothing, same as the old `null` case did.
|
|
25
|
+
return (_jsx(NodeList, { nodes: resolveVariant(node, data), baseId: baseId, data: data, errors: errors, disabled: disabled, fieldComponents: fieldComponents, onChange: onChange }, `variant-${index}`));
|
|
26
|
+
}
|
|
27
|
+
if (node.fieldType === 'Button') {
|
|
28
|
+
// Buttons inside a step's tree are the Form's own Actions, rendered by ActionButtons.
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const key = node.submissionKey;
|
|
32
|
+
if (key === undefined)
|
|
33
|
+
return null;
|
|
34
|
+
const id = `${baseId}-${key}`;
|
|
35
|
+
const error = errors[key] ?? null;
|
|
36
|
+
const shared = {
|
|
37
|
+
id,
|
|
38
|
+
name: key,
|
|
39
|
+
value: data[key] ?? null,
|
|
40
|
+
error,
|
|
41
|
+
disabled,
|
|
42
|
+
onChange: (value) => onChange(key, value),
|
|
43
|
+
};
|
|
44
|
+
switch (node.fieldType) {
|
|
45
|
+
case 'Input': {
|
|
46
|
+
const Component = fieldComponents?.Input ?? InputFieldControl;
|
|
47
|
+
return _jsx(Component, { field: node, ...shared }, key);
|
|
48
|
+
}
|
|
49
|
+
case 'Textarea': {
|
|
50
|
+
const Component = fieldComponents?.Textarea ?? TextareaFieldControl;
|
|
51
|
+
return _jsx(Component, { field: node, ...shared }, key);
|
|
52
|
+
}
|
|
53
|
+
case 'Number': {
|
|
54
|
+
const Component = fieldComponents?.Number ?? NumberFieldControl;
|
|
55
|
+
return _jsx(Component, { field: node, ...shared }, key);
|
|
56
|
+
}
|
|
57
|
+
case 'Choice': {
|
|
58
|
+
const Component = fieldComponents?.Choice ?? ChoiceFieldControl;
|
|
59
|
+
return _jsx(Component, { field: node, ...shared }, key);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}) }));
|
|
63
|
+
}
|
|
64
|
+
/** The Form's own configured Submit/Reset controls, shown on the final step. */
|
|
65
|
+
export function ActionButtons({ nodes, disabled }) {
|
|
66
|
+
const buttons = nodes.filter((node) => node.nodeType === 'Field' && node.fieldType === 'Button');
|
|
67
|
+
if (buttons.length === 0) {
|
|
68
|
+
return (_jsx("button", { type: "submit", className: "ebitex-forms__button", disabled: disabled, children: "Submit" }));
|
|
69
|
+
}
|
|
70
|
+
return (_jsx(_Fragment, { children: buttons.map((button, index) => (_jsx("button", { type: button.buttonType === 'Reset' ? 'reset' : button.buttonType === 'Button' ? 'button' : 'submit', className: joinClassNames('ebitex-forms__button', button.buttonType !== 'Submit' ? 'ebitex-forms__button--secondary' : undefined), disabled: disabled, children: button.label }, `${button.label}-${index}`))) }));
|
|
71
|
+
}
|
|
72
|
+
export function joinClassNames(...values) {
|
|
73
|
+
return values.filter(Boolean).join(' ');
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=NodeList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NodeList.js","sourceRoot":"","sources":["../../src/react/NodeList.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/fields.d.ts
CHANGED
|
@@ -7,6 +7,13 @@ export interface FieldComponentProps<TField> {
|
|
|
7
7
|
field: TField;
|
|
8
8
|
/** Stable, unique per field — wire this to both the control's `id` and its label's `htmlFor`. */
|
|
9
9
|
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The field's raw `SubmissionKey` — wire this to the control's `name` (spec
|
|
12
|
+
* 77-public-form-progressive-enhancement). Deliberately not `id`: `id` is scoped to one rendered
|
|
13
|
+
* form instance (`${baseId}-${key}`), but a native form submission needs `name` to be the exact
|
|
14
|
+
* key the server expects, with no per-form id-to-key translation required to read it back.
|
|
15
|
+
*/
|
|
16
|
+
name: string;
|
|
10
17
|
value: SubmissionData[string];
|
|
11
18
|
onChange: (value: SubmissionData[string]) => void;
|
|
12
19
|
/** A validation message for this field, or `null`. Render it and reference it via `aria-describedby`. */
|
|
@@ -19,8 +26,8 @@ export interface FieldComponents {
|
|
|
19
26
|
Number?: React.ComponentType<FieldComponentProps<NumberField>>;
|
|
20
27
|
Choice?: React.ComponentType<FieldComponentProps<ChoiceField>>;
|
|
21
28
|
}
|
|
22
|
-
export declare function InputFieldControl({ field, id, value, onChange, error, disabled }: FieldComponentProps<InputField>): import("react").JSX.Element;
|
|
23
|
-
export declare function TextareaFieldControl({ field, id, value, onChange, error, disabled }: FieldComponentProps<TextareaField>): import("react").JSX.Element;
|
|
24
|
-
export declare function NumberFieldControl({ field, id, value, onChange, error, disabled }: FieldComponentProps<NumberField>): import("react").JSX.Element;
|
|
25
|
-
export declare function ChoiceFieldControl({ field, id, value, onChange, error, disabled }: FieldComponentProps<ChoiceField>): import("react").JSX.Element;
|
|
29
|
+
export declare function InputFieldControl({ field, id, name, value, onChange, error, disabled }: FieldComponentProps<InputField>): import("react").JSX.Element;
|
|
30
|
+
export declare function TextareaFieldControl({ field, id, name, value, onChange, error, disabled }: FieldComponentProps<TextareaField>): import("react").JSX.Element;
|
|
31
|
+
export declare function NumberFieldControl({ field, id, name, value, onChange, error, disabled }: FieldComponentProps<NumberField>): import("react").JSX.Element;
|
|
32
|
+
export declare function ChoiceFieldControl({ field, id, name, value, onChange, error, disabled }: FieldComponentProps<ChoiceField>): import("react").JSX.Element;
|
|
26
33
|
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/react/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAA;AAEpB;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,MAAM;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACjD,yGAAyG;IACzG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAA;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAA;CAC/D;AAuCD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,UAAU,CAAC,+
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/react/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,aAAa,CAAA;AAEpB;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,MAAM;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,EAAE,EAAE,MAAM,CAAA;IACV;;;;;OAKG;IACH,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAA;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACjD,yGAAyG;IACzG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC,CAAA;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,CAAA;CAC/D;AAuCD,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,UAAU,CAAC,+BAuBvH;AAED,wBAAgB,oBAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,aAAa,CAAC,+BAuB7H;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,WAAW,CAAC,+BA4BzH;AAED,wBAAgB,kBAAkB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,WAAW,CAAC,+BA2FzH"}
|
package/dist/react/fields.js
CHANGED
|
@@ -19,22 +19,22 @@ function ErrorMessage({ id, error }) {
|
|
|
19
19
|
return null;
|
|
20
20
|
return (_jsx("p", { className: "ebitex-forms__error", id: `${id}-error`, children: error }));
|
|
21
21
|
}
|
|
22
|
-
export function InputFieldControl({ field, id, value, onChange, error, disabled }) {
|
|
23
|
-
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("input", { className: "ebitex-forms__control", id: id, type: INPUT_TYPES[field.variant], value: typeof value === 'string' ? value : '', placeholder: field.placeholder ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled, onChange: (event) => onChange(event.target.value) }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
22
|
+
export function InputFieldControl({ field, id, name, value, onChange, error, disabled }) {
|
|
23
|
+
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("input", { className: "ebitex-forms__control", id: id, name: name, type: INPUT_TYPES[field.variant], value: typeof value === 'string' ? value : '', placeholder: field.placeholder ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled, onChange: (event) => onChange(event.target.value) }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
24
24
|
}
|
|
25
|
-
export function TextareaFieldControl({ field, id, value, onChange, error, disabled }) {
|
|
26
|
-
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("textarea", { className: "ebitex-forms__control", id: id, rows: field.rows ?? 4, value: typeof value === 'string' ? value : '', placeholder: field.placeholder ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled, onChange: (event) => onChange(event.target.value) }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
25
|
+
export function TextareaFieldControl({ field, id, name, value, onChange, error, disabled }) {
|
|
26
|
+
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("textarea", { className: "ebitex-forms__control", id: id, name: name, rows: field.rows ?? 4, value: typeof value === 'string' ? value : '', placeholder: field.placeholder ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled, onChange: (event) => onChange(event.target.value) }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
27
27
|
}
|
|
28
|
-
export function NumberFieldControl({ field, id, value, onChange, error, disabled }) {
|
|
29
|
-
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("input", { className: "ebitex-forms__control", id: id, type: "number", value: value === null || value === undefined ? '' : String(value), placeholder: field.placeholder ?? undefined, min: field.min ?? undefined, max: field.max ?? undefined, step: field.step ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled,
|
|
28
|
+
export function NumberFieldControl({ field, id, name, value, onChange, error, disabled }) {
|
|
29
|
+
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsx("input", { className: "ebitex-forms__control", id: id, name: name, type: "number", value: value === null || value === undefined ? '' : String(value), placeholder: field.placeholder ?? undefined, min: field.min ?? undefined, max: field.max ?? undefined, step: field.step ?? undefined, required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": error !== null ? `${id}-error` : undefined, disabled: disabled,
|
|
30
30
|
// Kept as a string rather than coerced here: the server accepts a numeric string, and
|
|
31
31
|
// coercing would turn a half-typed "-" or "1." into NaN mid-keystroke.
|
|
32
32
|
onChange: (event) => onChange(event.target.value) }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
33
33
|
}
|
|
34
|
-
export function ChoiceFieldControl({ field, id, value, onChange, error, disabled }) {
|
|
34
|
+
export function ChoiceFieldControl({ field, id, name, value, onChange, error, disabled }) {
|
|
35
35
|
const describedBy = error !== null ? `${id}-error` : undefined;
|
|
36
36
|
if (field.choiceType === 'Select') {
|
|
37
|
-
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsxs("select", { className: "ebitex-forms__control", id: id, value: typeof value === 'string' ? value : '', required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": describedBy, disabled: disabled, onChange: (event) => onChange(event.target.value), children: [_jsx("option", { value: "", children: "Select\u2026" }), field.options.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value)))] }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
37
|
+
return (_jsxs("div", { className: "ebitex-forms__field", children: [_jsx(Label, { id: id, required: field.required, children: field.label }), _jsxs("select", { className: "ebitex-forms__control", id: id, name: name, value: typeof value === 'string' ? value : '', required: field.required, "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": describedBy, disabled: disabled, onChange: (event) => onChange(event.target.value), children: [_jsx("option", { value: "", children: "Select\u2026" }), field.options.map((option) => (_jsx("option", { value: option.value, children: option.label }, option.value)))] }), _jsx(ErrorMessage, { id: id, error: error })] }));
|
|
38
38
|
}
|
|
39
39
|
const selected = Array.isArray(value) ? value : typeof value === 'string' && value !== '' ? [value] : [];
|
|
40
40
|
// A radio/checkbox group is a group of controls, not one labelled control — so the visible label
|
|
@@ -43,7 +43,12 @@ export function ChoiceFieldControl({ field, id, value, onChange, error, disabled
|
|
|
43
43
|
return (_jsxs("fieldset", { className: "ebitex-forms__field ebitex-forms__group", "aria-required": field.required, "aria-invalid": error !== null, "aria-describedby": describedBy, disabled: disabled, children: [_jsxs("legend", { className: "ebitex-forms__label", children: [field.label, field.required ? (_jsxs("span", { className: "ebitex-forms__required", "aria-hidden": "true", children: [' ', "*"] })) : null] }), field.options.map((option) => {
|
|
44
44
|
const optionId = `${id}-${option.value}`;
|
|
45
45
|
const isCheckbox = field.choiceType === 'Checkbox';
|
|
46
|
-
return (_jsxs("div", { className: "ebitex-forms__option", children: [_jsx("input", { id: optionId, type: isCheckbox ? 'checkbox' : 'radio',
|
|
46
|
+
return (_jsxs("div", { className: "ebitex-forms__option", children: [_jsx("input", { id: optionId, type: isCheckbox ? 'checkbox' : 'radio',
|
|
47
|
+
// The raw SubmissionKey, not `id` — a native form submission groups radios/checkboxes
|
|
48
|
+
// by `name`, and the server-side no-JS translation layer needs that name to already be
|
|
49
|
+
// the key it expects, with no per-form id-to-key lookup (spec
|
|
50
|
+
// 77-public-form-progressive-enhancement).
|
|
51
|
+
name: name, value: option.value, checked: selected.includes(option.value), onChange: (event) => {
|
|
47
52
|
if (!isCheckbox) {
|
|
48
53
|
onChange(option.value);
|
|
49
54
|
return;
|
package/dist/react/fields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/react/fields.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/react/fields.tsx"],"names":[],"mappings":"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"}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -7,5 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { EbitexForm, type EbitexFormProps } from './EbitexForm.js';
|
|
9
9
|
export { ChoiceFieldControl, InputFieldControl, NumberFieldControl, TextareaFieldControl, type FieldComponentProps, type FieldComponents, } from './fields.js';
|
|
10
|
+
/**
|
|
11
|
+
* The recursive Fieldset/Row/Variant/field-dispatch tree walk `EbitexForm` itself renders through —
|
|
12
|
+
* exported so a host that needs the same field-tree rendering without `EbitexForm`'s own
|
|
13
|
+
* `fetch`-based submit orchestration (e.g. a server-rendered consumer building its own
|
|
14
|
+
* native-form/progressive-enhancement submit flow) doesn't have to re-derive it. See
|
|
15
|
+
* spec 77-public-form-progressive-enhancement.
|
|
16
|
+
*/
|
|
17
|
+
export { ActionButtons, NodeList } from './NodeList.js';
|
|
10
18
|
export { getOrCreateVisitorId } from './visitorId.js';
|
|
11
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAElE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/react/index.js
CHANGED
|
@@ -7,5 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
export { EbitexForm } from './EbitexForm.js';
|
|
9
9
|
export { ChoiceFieldControl, InputFieldControl, NumberFieldControl, TextareaFieldControl, } from './fields.js';
|
|
10
|
+
/**
|
|
11
|
+
* The recursive Fieldset/Row/Variant/field-dispatch tree walk `EbitexForm` itself renders through —
|
|
12
|
+
* exported so a host that needs the same field-tree rendering without `EbitexForm`'s own
|
|
13
|
+
* `fetch`-based submit orchestration (e.g. a server-rendered consumer building its own
|
|
14
|
+
* native-form/progressive-enhancement submit flow) doesn't have to re-derive it. See
|
|
15
|
+
* spec 77-public-form-progressive-enhancement.
|
|
16
|
+
*/
|
|
17
|
+
export { ActionButtons, NodeList } from './NodeList.js';
|
|
10
18
|
export { getOrCreateVisitorId } from './visitorId.js';
|
|
11
19
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAElE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAwB,MAAM,iBAAiB,CAAA;AAElE,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GAGrB,MAAM,aAAa,CAAA;AAEpB;;;;;;GAMG;AACH,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/types.d.ts
CHANGED
|
@@ -11,6 +11,12 @@ export type ButtonType = 'Submit' | 'Reset' | 'Button';
|
|
|
11
11
|
export interface ChoiceOption {
|
|
12
12
|
value: string;
|
|
13
13
|
label: string;
|
|
14
|
+
/**
|
|
15
|
+
* Whether this option is the field's authored default (issue #487) — pre-selected on first
|
|
16
|
+
* render, before the respondent has answered anything. Absent/`false` for every option that
|
|
17
|
+
* isn't. See `defaultChoiceValues` in `./nodes.js` for how this seeds initial form state.
|
|
18
|
+
*/
|
|
19
|
+
default?: boolean;
|
|
14
20
|
}
|
|
15
21
|
interface FieldBase {
|
|
16
22
|
nodeType: 'Field';
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,UAAU,CAAA;AAExE,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAA;AAExD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;AAEtD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;;AAkLH,oGAAoG;AACpG,mGAAmG;AACnG,iGAAiG;AACjG,mBAAmB"}
|
package/dist/validators.d.ts
CHANGED
|
@@ -30,5 +30,12 @@ export interface ValidateOptions {
|
|
|
30
30
|
* component's own UI anyway, since `EbitexForm` prunes a hidden field's answer from `data` the moment
|
|
31
31
|
* its controlling condition stops being satisfied (see that component's own `setValue`).
|
|
32
32
|
*/
|
|
33
|
-
|
|
33
|
+
/**
|
|
34
|
+
* Only `form.steps` is ever read below — narrowed from the full `SdkForm` (rather than requiring
|
|
35
|
+
* one) so a caller with a differently-shaped envelope around the same step/node tree (e.g. the
|
|
36
|
+
* anonymous public-form render response, which carries no `externalId`/`submissionUrl`/`status`)
|
|
37
|
+
* can validate against it directly, with no placeholder fields invented just to satisfy the type
|
|
38
|
+
* checker. Spec 77-public-form-progressive-enhancement.
|
|
39
|
+
*/
|
|
40
|
+
export declare function validateSubmission(form: Pick<SdkForm, 'steps'>, data: SubmissionData, options: ValidateOptions): ValidationErrors;
|
|
34
41
|
//# sourceMappingURL=validators.d.ts.map
|
package/dist/validators.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE3E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE3E,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAC5B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,eAAe,GACvB,gBAAgB,CAsClB"}
|
package/dist/validators.js
CHANGED
|
@@ -22,6 +22,13 @@ import { collectDataFields } from './nodes.js';
|
|
|
22
22
|
* component's own UI anyway, since `EbitexForm` prunes a hidden field's answer from `data` the moment
|
|
23
23
|
* its controlling condition stops being satisfied (see that component's own `setValue`).
|
|
24
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Only `form.steps` is ever read below — narrowed from the full `SdkForm` (rather than requiring
|
|
27
|
+
* one) so a caller with a differently-shaped envelope around the same step/node tree (e.g. the
|
|
28
|
+
* anonymous public-form render response, which carries no `externalId`/`submissionUrl`/`status`)
|
|
29
|
+
* can validate against it directly, with no placeholder fields invented just to satisfy the type
|
|
30
|
+
* checker. Spec 77-public-form-progressive-enhancement.
|
|
31
|
+
*/
|
|
25
32
|
export function validateSubmission(form, data, options) {
|
|
26
33
|
const errors = {};
|
|
27
34
|
const fields = new Map(collectDataFields(form.steps.flatMap((step) => step.nodes), data)
|
package/dist/validators.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAY9C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAChC,
|
|
1
|
+
{"version":3,"file":"validators.js","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED