@stapel/forms-react 0.1.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/CHANGELOG.md +62 -0
- package/MODULE.md +172 -0
- package/README.md +207 -0
- package/dist/api/export.d.ts +66 -0
- package/dist/api/export.d.ts.map +1 -0
- package/dist/api/export.js +138 -0
- package/dist/api/export.js.map +1 -0
- package/dist/api/extensions.d.ts +8 -0
- package/dist/api/extensions.d.ts.map +1 -0
- package/dist/api/extensions.js +8 -0
- package/dist/api/extensions.js.map +1 -0
- package/dist/api/formsApi.d.ts +113 -0
- package/dist/api/formsApi.d.ts.map +1 -0
- package/dist/api/formsApi.js +81 -0
- package/dist/api/formsApi.js.map +1 -0
- package/dist/api/generated/schema.d.ts +987 -0
- package/dist/api/generated/schema.d.ts.map +1 -0
- package/dist/api/generated/schema.js +2 -0
- package/dist/api/generated/schema.js.map +1 -0
- package/dist/api/types.d.ts +222 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +14 -0
- package/dist/api/types.js.map +1 -0
- package/dist/default/ConfigField.d.ts +32 -0
- package/dist/default/ConfigField.d.ts.map +1 -0
- package/dist/default/ConfigField.js +101 -0
- package/dist/default/ConfigField.js.map +1 -0
- package/dist/default/ErrorAlert.d.ts +9 -0
- package/dist/default/ErrorAlert.d.ts.map +1 -0
- package/dist/default/ErrorAlert.js +27 -0
- package/dist/default/ErrorAlert.js.map +1 -0
- package/dist/default/FormBuilderPane.d.ts +36 -0
- package/dist/default/FormBuilderPane.d.ts.map +1 -0
- package/dist/default/FormBuilderPane.js +70 -0
- package/dist/default/FormBuilderPane.js.map +1 -0
- package/dist/default/FormsListPane.d.ts +18 -0
- package/dist/default/FormsListPane.d.ts.map +1 -0
- package/dist/default/FormsListPane.js +28 -0
- package/dist/default/FormsListPane.js.map +1 -0
- package/dist/default/ResponsesPane.d.ts +21 -0
- package/dist/default/ResponsesPane.d.ts.map +1 -0
- package/dist/default/ResponsesPane.js +118 -0
- package/dist/default/ResponsesPane.js.map +1 -0
- package/dist/default/StapelForm.d.ts +76 -0
- package/dist/default/StapelForm.d.ts.map +1 -0
- package/dist/default/StapelForm.js +118 -0
- package/dist/default/StapelForm.js.map +1 -0
- package/dist/default/fields.d.ts +11 -0
- package/dist/default/fields.d.ts.map +1 -0
- package/dist/default/fields.js +273 -0
- package/dist/default/fields.js.map +1 -0
- package/dist/default/index.d.ts +42 -0
- package/dist/default/index.d.ts.map +1 -0
- package/dist/default/index.js +37 -0
- package/dist/default/index.js.map +1 -0
- package/dist/default/slots.d.ts +59 -0
- package/dist/default/slots.d.ts.map +1 -0
- package/dist/default/slots.js +25 -0
- package/dist/default/slots.js.map +1 -0
- package/dist/default/theme.d.ts +23 -0
- package/dist/default/theme.d.ts.map +1 -0
- package/dist/default/theme.js +38 -0
- package/dist/default/theme.js.map +1 -0
- package/dist/default/types.d.ts +12 -0
- package/dist/default/types.d.ts.map +1 -0
- package/dist/default/types.js +2 -0
- package/dist/default/types.js.map +1 -0
- package/dist/flows/errors.d.ts +12 -0
- package/dist/flows/errors.d.ts.map +1 -0
- package/dist/flows/errors.js +13 -0
- package/dist/flows/errors.js.map +1 -0
- package/dist/flows/registry.d.ts +22 -0
- package/dist/flows/registry.d.ts.map +1 -0
- package/dist/flows/registry.js +20 -0
- package/dist/flows/registry.js.map +1 -0
- package/dist/headless/FormBuilder.d.ts +100 -0
- package/dist/headless/FormBuilder.d.ts.map +1 -0
- package/dist/headless/FormBuilder.js +278 -0
- package/dist/headless/FormBuilder.js.map +1 -0
- package/dist/headless/FormFill.d.ts +88 -0
- package/dist/headless/FormFill.d.ts.map +1 -0
- package/dist/headless/FormFill.js +279 -0
- package/dist/headless/FormFill.js.map +1 -0
- package/dist/headless/FormList.d.ts +34 -0
- package/dist/headless/FormList.d.ts.map +1 -0
- package/dist/headless/FormList.js +37 -0
- package/dist/headless/FormList.js.map +1 -0
- package/dist/headless/FormsProvider.d.ts +19 -0
- package/dist/headless/FormsProvider.d.ts.map +1 -0
- package/dist/headless/FormsProvider.js +15 -0
- package/dist/headless/FormsProvider.js.map +1 -0
- package/dist/headless/ResponsesTable.d.ts +82 -0
- package/dist/headless/ResponsesTable.d.ts.map +1 -0
- package/dist/headless/ResponsesTable.js +195 -0
- package/dist/headless/ResponsesTable.js.map +1 -0
- package/dist/i18n/errorsMap.d.ts +10 -0
- package/dist/i18n/errorsMap.d.ts.map +1 -0
- package/dist/i18n/errorsMap.js +20 -0
- package/dist/i18n/errorsMap.js.map +1 -0
- package/dist/i18n/es.d.ts +7 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +118 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.es.gen.js +79 -0
- package/dist/i18n/generated/errors.es.gen.js.map +1 -0
- package/dist/i18n/generated/errors.gen.d.ts +485 -0
- package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.gen.js +246 -0
- package/dist/i18n/generated/errors.gen.js.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.js +79 -0
- package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
- package/dist/i18n/keys.d.ts +141 -0
- package/dist/i18n/keys.d.ts.map +1 -0
- package/dist/i18n/keys.js +233 -0
- package/dist/i18n/keys.js.map +1 -0
- package/dist/i18n/ru.d.ts +7 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +127 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/model/context.d.ts +11 -0
- package/dist/model/context.d.ts.map +1 -0
- package/dist/model/context.js +16 -0
- package/dist/model/context.js.map +1 -0
- package/dist/model/mutations.d.ts +135 -0
- package/dist/model/mutations.d.ts.map +1 -0
- package/dist/model/mutations.js +223 -0
- package/dist/model/mutations.js.map +1 -0
- package/dist/model/queries.d.ts +59 -0
- package/dist/model/queries.d.ts.map +1 -0
- package/dist/model/queries.js +117 -0
- package/dist/model/queries.js.map +1 -0
- package/dist/model/queryKeys.d.ts +28 -0
- package/dist/model/queryKeys.d.ts.map +1 -0
- package/dist/model/queryKeys.js +23 -0
- package/dist/model/queryKeys.js.map +1 -0
- package/dist/model/runtime.d.ts +28 -0
- package/dist/model/runtime.d.ts.map +1 -0
- package/dist/model/runtime.js +14 -0
- package/dist/model/runtime.js.map +1 -0
- package/dist/widgets/configForms.d.ts +112 -0
- package/dist/widgets/configForms.d.ts.map +1 -0
- package/dist/widgets/configForms.js +211 -0
- package/dist/widgets/configForms.js.map +1 -0
- package/dist/widgets/registry.d.ts +83 -0
- package/dist/widgets/registry.d.ts.map +1 -0
- package/dist/widgets/registry.js +27 -0
- package/dist/widgets/registry.js.map +1 -0
- package/dist/widgets/validate.d.ts +57 -0
- package/dist/widgets/validate.d.ts.map +1 -0
- package/dist/widgets/validate.js +173 -0
- package/dist/widgets/validate.js.map +1 -0
- package/llms.txt +124 -0
- package/manifest.json +1038 -0
- package/package.json +108 -0
- package/src/analytics/generated/events.json +7 -0
- package/src/api/export.ts +195 -0
- package/src/api/extensions.ts +7 -0
- package/src/api/formsApi.ts +329 -0
- package/src/api/generated/schema.ts +989 -0
- package/src/api/types.ts +276 -0
- package/src/default/ConfigField.tsx +227 -0
- package/src/default/ErrorAlert.tsx +46 -0
- package/src/default/FormBuilderPane.tsx +414 -0
- package/src/default/FormsListPane.tsx +144 -0
- package/src/default/ResponsesPane.tsx +332 -0
- package/src/default/StapelForm.tsx +377 -0
- package/src/default/fields.tsx +454 -0
- package/src/default/index.ts +71 -0
- package/src/default/slots.ts +78 -0
- package/src/default/theme.tsx +65 -0
- package/src/default/types.ts +12 -0
- package/src/flows/errors.ts +16 -0
- package/src/flows/registry.ts +32 -0
- package/src/headless/FormBuilder.tsx +453 -0
- package/src/headless/FormFill.tsx +396 -0
- package/src/headless/FormList.tsx +74 -0
- package/src/headless/FormsProvider.tsx +20 -0
- package/src/headless/ResponsesTable.tsx +341 -0
- package/src/i18n/errorsMap.ts +31 -0
- package/src/i18n/es.ts +140 -0
- package/src/i18n/generated/errors.es.gen.ts +85 -0
- package/src/i18n/generated/errors.gen.ts +277 -0
- package/src/i18n/generated/errors.json +583 -0
- package/src/i18n/generated/errors.ru.gen.ts +85 -0
- package/src/i18n/keys.ts +264 -0
- package/src/i18n/ru.ts +150 -0
- package/src/index.ts +184 -0
- package/src/model/context.tsx +28 -0
- package/src/model/mutations.ts +387 -0
- package/src/model/queries.ts +154 -0
- package/src/model/queryKeys.ts +61 -0
- package/src/model/runtime.ts +48 -0
- package/src/widgets/registry.ts +101 -0
- package/src/widgets/validate.ts +224 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormBuilderPane.js","sourceRoot":"","sources":["../../src/default/FormBuilderPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<FormsListPane>` — the admin surface's entry point: the workspace's forms,
|
|
3
|
+
* and the button that makes another one.
|
|
4
|
+
*
|
|
5
|
+
* Rendered through core's `matchList`, whose FOUR required arms are the point:
|
|
6
|
+
* "no forms in this workspace yet" is reachable only from a load that
|
|
7
|
+
* actually succeeded, so that sentence can never be said about an outage.
|
|
8
|
+
*/
|
|
9
|
+
import type { ReactElement } from "react";
|
|
10
|
+
import type { FormRow } from "../api/types.js";
|
|
11
|
+
import type { ThemeModeProp } from "./types.js";
|
|
12
|
+
export interface FormsListPaneProps extends ThemeModeProp {
|
|
13
|
+
readonly workspaceId: string;
|
|
14
|
+
/** Called when a row is activated — the host routes to the builder. */
|
|
15
|
+
readonly onOpen?: (form: FormRow) => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function FormsListPane(props: FormsListPaneProps): ReactElement;
|
|
18
|
+
//# sourceMappingURL=FormsListPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormsListPane.d.ts","sourceRoot":"","sources":["../../src/default/FormsListPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAQ1C,OAAO,KAAK,EAAE,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAI1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAkHrE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Button, Empty, Flex, List, Segmented, Spin, Tag, Typography } from "antd";
|
|
3
|
+
import { matchList, toFlowError, useDescribeFlowError, useT, } from "@stapel/core";
|
|
4
|
+
import { FormList } from "../headless/FormList.js";
|
|
5
|
+
import { FormsSkinTheme } from "./theme.js";
|
|
6
|
+
import { ErrorAlert } from "./ErrorAlert.js";
|
|
7
|
+
import { FORMS_I18N_KEYS } from "../i18n/keys.js";
|
|
8
|
+
export function FormsListPane(props) {
|
|
9
|
+
const t = useT();
|
|
10
|
+
const describe = useDescribeFlowError();
|
|
11
|
+
return (_jsx(FormsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsx(FormList, { workspaceId: props.workspaceId, ...(props.onOpen ? { onCreated: props.onOpen } : {}), children: (bag) => (_jsxs(Flex, { vertical: true, gap: 16, children: [_jsxs(Flex, { justify: "space-between", align: "center", wrap: true, gap: 8, children: [_jsx(Typography.Title, { level: 4, style: { margin: 0 }, children: t(FORMS_I18N_KEYS.listTitle) }), _jsxs(Flex, { gap: 8, align: "center", children: [_jsx(Segmented, { value: bag.filter ?? "all", onChange: (next) => bag.setFilter(next === "all" ? null : next), options: [
|
|
12
|
+
{ value: "all", label: t(FORMS_I18N_KEYS.responsesAllVersions) },
|
|
13
|
+
{ value: "draft", label: t(FORMS_I18N_KEYS.builderStateDraft) },
|
|
14
|
+
{ value: "open", label: t(FORMS_I18N_KEYS.builderStateOpen) },
|
|
15
|
+
{ value: "closed", label: t(FORMS_I18N_KEYS.builderStateClosed) },
|
|
16
|
+
] }), _jsx(Button, { type: "primary", loading: bag.isCreating, "data-analytics": "flow", "data-testid": "forms-list-create", onClick: () => bag.create({ title: t(FORMS_I18N_KEYS.listNewTitle) }), children: t(FORMS_I18N_KEYS.listCreate) })] })] }), bag.error !== null && (_jsx(ErrorAlert, { testId: "forms-list-error", error: describe(toFlowError(bag.error)) })), matchList(bag.state, {
|
|
17
|
+
loading: () => (_jsx(Flex, { justify: "center", style: { padding: 24 }, children: _jsx(Spin, { "data-testid": "forms-list-loading" }) })),
|
|
18
|
+
failed: (error) => (_jsx(ErrorAlert, { testId: "forms-list-failed", error: {
|
|
19
|
+
...describe(toFlowError(error)),
|
|
20
|
+
message: t(FORMS_I18N_KEYS.listLoadFailed),
|
|
21
|
+
}, action: _jsx(Button, { size: "small", onClick: bag.refetch, "data-analytics": "none", "data-analytics-reason": "retry of a failed read; no flow to step", children: t(FORMS_I18N_KEYS.fillRetry) }) })),
|
|
22
|
+
empty: () => (_jsx(Empty, { "data-testid": "forms-list-empty", description: t(FORMS_I18N_KEYS.listEmpty) })),
|
|
23
|
+
ready: (rows) => (_jsx(List, { "data-testid": "forms-list", dataSource: [...rows], renderItem: (row) => (_jsxs(List.Item, { onClick: () => props.onOpen?.(row), "data-analytics": "none", "data-analytics-reason": "host-owned navigation; no forms flow is stepped", style: { cursor: props.onOpen ? "pointer" : "default" }, children: [_jsx(List.Item.Meta, { title: row.title, description: t(FORMS_I18N_KEYS.listSubmissionCount, {
|
|
24
|
+
count: row.submission_count ?? 0,
|
|
25
|
+
}) }), _jsx(Tag, { children: row.state })] }, row.id)) })),
|
|
26
|
+
})] })) }) }));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=FormsListPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormsListPane.js","sourceRoot":"","sources":["../../src/default/FormsListPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import type { Submission } from "../api/types.js";
|
|
3
|
+
import type { ResponseColumn, ResponsesTableBag } from "../headless/ResponsesTable.js";
|
|
4
|
+
import type { ThemeModeProp } from "./types.js";
|
|
5
|
+
/** Props of the `"responses.cell"` slot. */
|
|
6
|
+
export interface ResponseCellSlotProps {
|
|
7
|
+
readonly column: ResponseColumn;
|
|
8
|
+
readonly row: Submission;
|
|
9
|
+
readonly value: unknown;
|
|
10
|
+
}
|
|
11
|
+
/** Props of the `"responses.toolbar"` slot. */
|
|
12
|
+
export interface ResponsesToolbarSlotProps {
|
|
13
|
+
readonly bag: ResponsesTableBag;
|
|
14
|
+
}
|
|
15
|
+
export interface ResponsesPaneProps extends ThemeModeProp {
|
|
16
|
+
readonly workspaceId: string;
|
|
17
|
+
readonly formId: string;
|
|
18
|
+
readonly limit?: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function ResponsesPane(props: ResponsesPaneProps): ReactElement;
|
|
21
|
+
//# sourceMappingURL=ResponsesPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsesPane.d.ts","sourceRoot":"","sources":["../../src/default/ResponsesPane.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAsB1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAClB,MAAM,+BAA+B,CAAC;AAIvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,4CAA4C;AAC5C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,+CAA+C;AAC/C,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC;AAsKD,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,YAAY,CAgGrE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* `<ResponsesPane>` — the response review surface (spec §8.2).
|
|
4
|
+
*
|
|
5
|
+
* Per-version column sets, a version filter, a detail drawer, delete under
|
|
6
|
+
* `forms.responses.manage`, resend with an optional destination override, and
|
|
7
|
+
* CSV export driven by the `X-Forms-Next-Before` header cursor.
|
|
8
|
+
*
|
|
9
|
+
* ── Two things this surface deliberately does not do ───────────────────────
|
|
10
|
+
*
|
|
11
|
+
* 1. **No live counts over a socket.** Refetch only. A
|
|
12
|
+
* `forms:ws:<workspace_id>` Signal stream is reserved naming for when the
|
|
13
|
+
* stapel-realtime substrate lands; forms does not build a socket, and that
|
|
14
|
+
* is a lint boundary rather than an unfinished feature.
|
|
15
|
+
* 2. **No client-side CSV escaping.** The formula-injection guard (a `'`
|
|
16
|
+
* prefix on a leading `= + - @`) lives SERVER-side, so every consumer
|
|
17
|
+
* inherits it — a second escape here would double-prefix the cells the
|
|
18
|
+
* server already fixed.
|
|
19
|
+
*/
|
|
20
|
+
import { useState } from "react";
|
|
21
|
+
import { Button, Drawer, Empty, Flex, Input, Popconfirm, Select, Space, Spin, Table, Tag, Typography, } from "antd";
|
|
22
|
+
import { matchLoad, toFlowError, useActionGate, useDescribeFlowError, useT, } from "@stapel/core";
|
|
23
|
+
import { ResponsesTable } from "../headless/ResponsesTable.js";
|
|
24
|
+
import { FormsSkinTheme } from "./theme.js";
|
|
25
|
+
import { ErrorAlert } from "./ErrorAlert.js";
|
|
26
|
+
import { resolveFormsSkinComponent } from "./slots.js";
|
|
27
|
+
import { FORMS_I18N_KEYS } from "../i18n/keys.js";
|
|
28
|
+
/** Render one answer. Objects and arrays are JSON, not `[object Object]` —
|
|
29
|
+
* a reviewer looking at a `convertible_unit` or a multi-select must be able
|
|
30
|
+
* to read what was actually submitted. */
|
|
31
|
+
function renderAnswer(value) {
|
|
32
|
+
if (value === undefined || value === null)
|
|
33
|
+
return "";
|
|
34
|
+
if (Array.isArray(value))
|
|
35
|
+
return value.map((entry) => renderAnswer(entry)).join(", ");
|
|
36
|
+
if (typeof value === "object")
|
|
37
|
+
return JSON.stringify(value);
|
|
38
|
+
return String(value);
|
|
39
|
+
}
|
|
40
|
+
function Cell(props) {
|
|
41
|
+
const Slot = resolveFormsSkinComponent("responses.cell");
|
|
42
|
+
if (Slot)
|
|
43
|
+
return _jsx(Slot, { ...props });
|
|
44
|
+
return _jsx("span", { children: renderAnswer(props.value) });
|
|
45
|
+
}
|
|
46
|
+
function Toolbar(props) {
|
|
47
|
+
const t = useT();
|
|
48
|
+
const { bag } = props;
|
|
49
|
+
const nextGate = useActionGate(bag.nextPage);
|
|
50
|
+
const prevGate = useActionGate(bag.prevPage);
|
|
51
|
+
const Slot = resolveFormsSkinComponent("responses.toolbar");
|
|
52
|
+
if (Slot)
|
|
53
|
+
return _jsx(Slot, { ...props });
|
|
54
|
+
const versionOptions = matchLoad(bag.versions, {
|
|
55
|
+
loading: () => [],
|
|
56
|
+
failed: () => [],
|
|
57
|
+
ready: (versions) => versions.map((v) => ({
|
|
58
|
+
value: v.version,
|
|
59
|
+
label: `${t(FORMS_I18N_KEYS.responsesVersion)} ${v.version}`,
|
|
60
|
+
})),
|
|
61
|
+
});
|
|
62
|
+
return (_jsxs(Flex, { gap: 8, wrap: true, align: "center", children: [_jsx(Select, { style: { width: 180 }, value: bag.version, onChange: (next) => bag.setVersion(next), "data-testid": "forms-responses-version", options: [
|
|
63
|
+
{ value: null, label: t(FORMS_I18N_KEYS.responsesAllVersions) },
|
|
64
|
+
...versionOptions,
|
|
65
|
+
] }), _jsx(Button, { disabled: prevGate.disabled, "data-analytics": "none", "data-analytics-reason": "keyset paging of a read; no flow to step", onClick: bag.goPrevPage, children: t(FORMS_I18N_KEYS.responsesPrev) }), _jsx(Button, { disabled: nextGate.disabled, "data-analytics": "none", "data-analytics-reason": "keyset paging of a read; no flow to step", "data-testid": "forms-responses-next", onClick: bag.goNextPage, children: t(FORMS_I18N_KEYS.responsesNext) }), _jsx(Button, { loading: bag.isExporting, "data-analytics": "flow", "data-testid": "forms-responses-export", onClick: () => {
|
|
66
|
+
void bag.exportCsv();
|
|
67
|
+
}, children: bag.isExporting
|
|
68
|
+
? t(FORMS_I18N_KEYS.responsesExporting, { pages: bag.exportPages })
|
|
69
|
+
: t(FORMS_I18N_KEYS.responsesExport) }), nextGate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", children: nextGate.reason }))] }));
|
|
70
|
+
}
|
|
71
|
+
function DetailDrawer(props) {
|
|
72
|
+
const t = useT();
|
|
73
|
+
const { bag } = props;
|
|
74
|
+
const [override, setOverride] = useState("");
|
|
75
|
+
const row = bag.selected;
|
|
76
|
+
return (_jsx(Drawer, { open: row !== null, onClose: () => bag.select(null), title: t(FORMS_I18N_KEYS.responsesDetail), width: 480, "data-testid": "forms-responses-drawer", children: row !== null && (_jsxs(Flex, { vertical: true, gap: 12, children: [_jsxs(Typography.Text, { type: "secondary", children: [t(FORMS_I18N_KEYS.responsesVersion), " ", row.version, " \u00B7", " ", row.submitted_at] }), row.erased_at != null && _jsx(Tag, { children: t(FORMS_I18N_KEYS.responsesErased) }), Object.entries(row.answers).map(([slug, value]) => (_jsxs("div", { children: [_jsx(Typography.Text, { strong: true, children: slug }), _jsx("br", {}), _jsx(Typography.Text, { children: renderAnswer(value) })] }, slug))), _jsx(Typography.Text, { type: "secondary", children: t(FORMS_I18N_KEYS.responsesResendOverrideHint) }), _jsx(Input, { placeholder: t(FORMS_I18N_KEYS.responsesResendOverride), value: override, onChange: (event) => setOverride(event.target.value), "data-testid": "forms-resend-override" }), _jsxs(Space, { children: [_jsx(Button, { loading: bag.isResending, "data-analytics": "flow", "data-testid": "forms-resend", onClick: () => {
|
|
77
|
+
const recipients = override
|
|
78
|
+
.split(",")
|
|
79
|
+
.map((entry) => entry.trim())
|
|
80
|
+
.filter((entry) => entry.length > 0);
|
|
81
|
+
// Only send an override when the operator typed one: an empty
|
|
82
|
+
// list would REPLACE the form's targets with nothing.
|
|
83
|
+
bag.resend(row.id, recipients.length > 0 ? { recipients } : undefined);
|
|
84
|
+
}, children: t(FORMS_I18N_KEYS.responsesResend) }), _jsx(Popconfirm, { title: t(FORMS_I18N_KEYS.responsesDeleteConfirm), onConfirm: () => bag.remove(row.id), children: _jsx(Button, { danger: true, loading: bag.isRemoving, "data-analytics": "flow", children: t(FORMS_I18N_KEYS.responsesDelete) }) })] }), bag.lastResendCount !== null && (_jsx(Typography.Text, { type: "success", "data-testid": "forms-resend-sent", children: t(FORMS_I18N_KEYS.responsesResendSent, {
|
|
85
|
+
count: bag.lastResendCount,
|
|
86
|
+
}) }))] })) }));
|
|
87
|
+
}
|
|
88
|
+
export function ResponsesPane(props) {
|
|
89
|
+
const t = useT();
|
|
90
|
+
const describe = useDescribeFlowError();
|
|
91
|
+
return (_jsx(FormsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsx(ResponsesTable, { workspaceId: props.workspaceId, formId: props.formId, ...(props.limit !== undefined ? { limit: props.limit } : {}), children: (bag) => (_jsxs(Flex, { vertical: true, gap: 16, children: [_jsx(Typography.Title, { level: 4, children: t(FORMS_I18N_KEYS.responsesTitle) }), _jsx(Toolbar, { bag: bag }), bag.error !== null && (_jsx(ErrorAlert, { testId: "forms-responses-error", error: describe(toFlowError(bag.error)) })), matchLoad(bag.state, {
|
|
92
|
+
loading: () => (_jsx(Flex, { justify: "center", style: { padding: 24 }, children: _jsx(Spin, { "data-testid": "forms-responses-loading" }) })),
|
|
93
|
+
// "We could not load the responses" — never an empty grid,
|
|
94
|
+
// which would read as "nobody answered".
|
|
95
|
+
failed: (error) => (_jsx(ErrorAlert, { testId: "forms-responses-failed", error: {
|
|
96
|
+
...describe(toFlowError(error)),
|
|
97
|
+
message: t(FORMS_I18N_KEYS.responsesLoadFailed),
|
|
98
|
+
}, action: _jsx(Button, { size: "small", onClick: bag.refetch, "data-analytics": "none", "data-analytics-reason": "retry of a failed read; no flow to step", children: t(FORMS_I18N_KEYS.fillRetry) }) })),
|
|
99
|
+
ready: (view) => view.rows.length === 0 ? (_jsx(Empty, { "data-testid": "forms-responses-empty", description: t(FORMS_I18N_KEYS.responsesEmpty) })) : (_jsx(Table, { size: "small", rowKey: "id", "data-testid": "forms-responses-table", dataSource: [...view.rows], pagination: false, onRow: (row) => ({ onClick: () => bag.select(row) }), columns: [
|
|
100
|
+
{
|
|
101
|
+
title: t(FORMS_I18N_KEYS.responsesSubmittedAt),
|
|
102
|
+
dataIndex: "submitted_at",
|
|
103
|
+
key: "submitted_at",
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
title: t(FORMS_I18N_KEYS.responsesVersion),
|
|
107
|
+
dataIndex: "version",
|
|
108
|
+
key: "version",
|
|
109
|
+
},
|
|
110
|
+
...view.columns.map((column) => ({
|
|
111
|
+
title: column.title,
|
|
112
|
+
key: column.slug,
|
|
113
|
+
render: (_, row) => (_jsx(Cell, { column: column, row: row, value: row.answers[column.slug] })),
|
|
114
|
+
})),
|
|
115
|
+
] })),
|
|
116
|
+
}), _jsx(DetailDrawer, { bag: bag })] })) }) }));
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=ResponsesPane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsesPane.js","sourceRoot":"","sources":["../../src/default/ResponsesPane.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<StapelForm>` — the whole answer to the owner's ask: *"the host page says
|
|
3
|
+
* 'put form <id> here', the library fetches the schema and renders it,
|
|
4
|
+
* default skin or override styles."*
|
|
5
|
+
*
|
|
6
|
+
* ```tsx
|
|
7
|
+
* const runtime = createFormsRuntime({ baseUrl: "/forms/api/v1/" });
|
|
8
|
+
* <FormsProvider runtime={runtime}>
|
|
9
|
+
* <StapelForm publicId="k3J…x9" />
|
|
10
|
+
* </FormsProvider>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* Nothing else is required — no session, no workspace id, no auth client. The
|
|
14
|
+
* component is a renderer over `<FormFill>`'s bag and holds no state of its
|
|
15
|
+
* own, so everything it does is reachable headlessly too.
|
|
16
|
+
*
|
|
17
|
+
* ── LoadState is the law here, visibly ─────────────────────────────────────
|
|
18
|
+
*
|
|
19
|
+
* The failed arm distinguishes THREE things a lesser form collapses into one
|
|
20
|
+
* blank page: "this link is not valid" (404), "this form is closed" (410),
|
|
21
|
+
* and "we could not ask" (network / 5xx). Only the first two are statements
|
|
22
|
+
* about the form; the third is a statement about us, and it offers a retry
|
|
23
|
+
* instead of blaming the person's link. There is no code path in this file
|
|
24
|
+
* that renders an empty form because a fetch failed — `matchLoad`'s three
|
|
25
|
+
* required arms make writing one a compile error.
|
|
26
|
+
*/
|
|
27
|
+
import type { ReactElement, ReactNode } from "react";
|
|
28
|
+
import type { FlowError, ThemeModeProp } from "./types.js";
|
|
29
|
+
import type { FormFillBag } from "../headless/FormFill.js";
|
|
30
|
+
import type { FormFieldDef } from "../api/types.js";
|
|
31
|
+
/** Props of the `"fill.fieldRow"` slot. */
|
|
32
|
+
export interface FieldRowSlotProps {
|
|
33
|
+
readonly field: FormFieldDef;
|
|
34
|
+
/** DOM id of the control this row labels. */
|
|
35
|
+
readonly controlId: string;
|
|
36
|
+
readonly control: ReactNode;
|
|
37
|
+
readonly error: FlowError | undefined;
|
|
38
|
+
readonly required: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** Props of the `"fill.submitBar"` slot. */
|
|
41
|
+
export interface SubmitBarSlotProps {
|
|
42
|
+
readonly bag: FormFillBag;
|
|
43
|
+
readonly label: string;
|
|
44
|
+
readonly disabled: boolean;
|
|
45
|
+
readonly reason: string | undefined;
|
|
46
|
+
readonly detail: string | undefined;
|
|
47
|
+
onSubmit(): void;
|
|
48
|
+
}
|
|
49
|
+
/** Props of the `"fill.confirmation"` slot. */
|
|
50
|
+
export interface ConfirmationSlotProps {
|
|
51
|
+
readonly confirmation: string;
|
|
52
|
+
}
|
|
53
|
+
/** Props of the `"fill.unsupportedField"` slot. */
|
|
54
|
+
export interface UnsupportedFieldSlotProps {
|
|
55
|
+
readonly field: FormFieldDef;
|
|
56
|
+
}
|
|
57
|
+
export interface StapelFormProps extends ThemeModeProp {
|
|
58
|
+
/** The non-enumerable public token the host embeds. */
|
|
59
|
+
readonly publicId: string;
|
|
60
|
+
/** Show the schema's `meta.title` above the fields. Default true. */
|
|
61
|
+
readonly showTitle?: boolean;
|
|
62
|
+
/** Override the submit button's text (otherwise `meta.submit_label`, then
|
|
63
|
+
* the pair's own copy). */
|
|
64
|
+
readonly submitLabel?: string;
|
|
65
|
+
/**
|
|
66
|
+
* Rendered above the submit bar — the interactive-captcha seam. The netintel
|
|
67
|
+
* tier decides whether a token is needed at all, so this stays optional and
|
|
68
|
+
* the widget calls `setCaptchaToken` when it has one.
|
|
69
|
+
*/
|
|
70
|
+
readonly captcha?: (bag: FormFillBag) => ReactNode;
|
|
71
|
+
readonly onSubmitted?: (result: {
|
|
72
|
+
readonly confirmation: string;
|
|
73
|
+
}) => void;
|
|
74
|
+
}
|
|
75
|
+
export declare function StapelForm(props: StapelFormProps): ReactElement;
|
|
76
|
+
//# sourceMappingURL=StapelForm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StapelForm.d.ts","sourceRoot":"","sources":["../../src/default/StapelForm.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAWrD,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAiBpD,2CAA2C;AAC3C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,6CAA6C;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,+CAA+C;AAC/C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,mDAAmD;AACnD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B;AA6ID,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;+BAC2B;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,SAAS,CAAC;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5E;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,CAqI/D"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Alert, Button, Flex, Form, Spin, Typography } from "antd";
|
|
3
|
+
import { hasErrorCode, matchLoad, toFlowError, useActionGate, useDescribeFlowError, useFormatFlowError, useT, } from "@stapel/core";
|
|
4
|
+
import { FormFill } from "../headless/FormFill.js";
|
|
5
|
+
import { resolveFormFieldWidget } from "../widgets/registry.js";
|
|
6
|
+
import { BUILTIN_FIELD_KINDS, BUILTIN_FIELD_WIDGETS } from "./fields.js";
|
|
7
|
+
import { FormsSkinTheme } from "./theme.js";
|
|
8
|
+
import { ErrorAlert } from "./ErrorAlert.js";
|
|
9
|
+
import { resolveFormsSkinComponent } from "./slots.js";
|
|
10
|
+
import { FORMS_I18N_KEYS } from "../i18n/keys.js";
|
|
11
|
+
/** Stable per-field DOM id, so `<label for>` reaches the control. Slugs are
|
|
12
|
+
* `[a-z0-9_]`-shaped by the engine, so this needs no further escaping. */
|
|
13
|
+
function fieldControlId(slug) {
|
|
14
|
+
return `forms-field-${slug}`;
|
|
15
|
+
}
|
|
16
|
+
const CODE_NOT_FOUND = "error.404.forms_not_found";
|
|
17
|
+
const CODE_CLOSED = "error.410.forms_closed";
|
|
18
|
+
function UnsupportedField(props) {
|
|
19
|
+
const t = useT();
|
|
20
|
+
const Slot = resolveFormsSkinComponent("fill.unsupportedField");
|
|
21
|
+
if (Slot)
|
|
22
|
+
return _jsx(Slot, { ...props });
|
|
23
|
+
return (_jsx(Alert, { type: "warning", showIcon: true, "data-testid": "forms-unsupported-field", message: props.field.name ?? props.field.slug, description: t(FORMS_I18N_KEYS.fillUnsupportedField, {
|
|
24
|
+
kind: props.field.kind,
|
|
25
|
+
}) }));
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* `Form.Item` error props for a flow error, spread so no `undefined` is
|
|
29
|
+
* passed under `exactOptionalPropertyTypes` — the fleet's `useFieldError`
|
|
30
|
+
* convention (auth-react `default/panels.tsx`), and the reason a server
|
|
31
|
+
* `error.400.feature_*` lands ON the control that caused it: `<FormFill>`
|
|
32
|
+
* keys `fieldErrors` by the refusal's own `params.field`.
|
|
33
|
+
*/
|
|
34
|
+
function useFieldError() {
|
|
35
|
+
const format = useFormatFlowError();
|
|
36
|
+
return (e) => (e ? { validateStatus: "error", help: format(e) } : {});
|
|
37
|
+
}
|
|
38
|
+
function FieldRow(props) {
|
|
39
|
+
const fieldError = useFieldError();
|
|
40
|
+
const Slot = resolveFormsSkinComponent("fill.fieldRow");
|
|
41
|
+
if (Slot)
|
|
42
|
+
return _jsx(Slot, { ...props });
|
|
43
|
+
// A header is a caption: it gets no label, no colon, no required marker —
|
|
44
|
+
// rendering one inside a labelled Form.Item would make a section heading
|
|
45
|
+
// look like a question.
|
|
46
|
+
if (props.field.kind === "header") {
|
|
47
|
+
return _jsx(Form.Item, { style: { marginBottom: 8 }, children: props.control });
|
|
48
|
+
}
|
|
49
|
+
return (_jsx(Form.Item, { label: props.field.name ?? props.field.slug, htmlFor: props.controlId, required: props.required, ...fieldError(props.error), children: props.control }));
|
|
50
|
+
}
|
|
51
|
+
function FieldControl(props) {
|
|
52
|
+
const { field, bag } = props;
|
|
53
|
+
// The ladder: a host's explicit registration outranks the skin's builtin.
|
|
54
|
+
const Widget = resolveFormFieldWidget(field.kind) ?? BUILTIN_FIELD_WIDGETS[field.kind];
|
|
55
|
+
if (Widget === undefined)
|
|
56
|
+
return _jsx(UnsupportedField, { field: field });
|
|
57
|
+
return (_jsx(Widget, { id: props.controlId, field: field, value: bag.values[field.slug], onChange: (value) => bag.setValue(field.slug, value), error: bag.fieldErrors[field.slug], disabled: bag.isSubmitting }));
|
|
58
|
+
}
|
|
59
|
+
function Confirmation(props) {
|
|
60
|
+
const t = useT();
|
|
61
|
+
const Slot = resolveFormsSkinComponent("fill.confirmation");
|
|
62
|
+
if (Slot)
|
|
63
|
+
return _jsx(Slot, { ...props });
|
|
64
|
+
return (_jsx(Alert, { type: "success", showIcon: true, "data-testid": "forms-confirmation", message: props.confirmation.length > 0
|
|
65
|
+
? props.confirmation
|
|
66
|
+
: t(FORMS_I18N_KEYS.fillThanks) }));
|
|
67
|
+
}
|
|
68
|
+
function SubmitBar(props) {
|
|
69
|
+
const gate = useActionGate(props.bag.submit);
|
|
70
|
+
const Slot = resolveFormsSkinComponent("fill.submitBar");
|
|
71
|
+
const slotProps = {
|
|
72
|
+
bag: props.bag,
|
|
73
|
+
label: props.label,
|
|
74
|
+
disabled: gate.disabled,
|
|
75
|
+
reason: gate.reason,
|
|
76
|
+
detail: gate.detail,
|
|
77
|
+
onSubmit: props.bag.doSubmit,
|
|
78
|
+
};
|
|
79
|
+
if (Slot)
|
|
80
|
+
return _jsx(Slot, { ...slotProps });
|
|
81
|
+
return (_jsxs(Flex, { vertical: true, gap: 4, align: "flex-start", children: [_jsx(Button, { type: "primary", htmlType: "submit", loading: props.bag.isSubmitting, disabled: gate.disabled, "data-analytics": "flow", "data-testid": "forms-submit", onClick: props.bag.doSubmit, children: props.label }), gate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", "data-testid": "forms-submit-blocked", children: gate.reason })), gate.detail !== undefined && (_jsx(Typography.Text, { type: "secondary", style: { fontSize: 12 }, children: gate.detail }))] }));
|
|
82
|
+
}
|
|
83
|
+
export function StapelForm(props) {
|
|
84
|
+
const t = useT();
|
|
85
|
+
const describe = useDescribeFlowError();
|
|
86
|
+
return (_jsx(FormsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsx(FormFill, { publicId: props.publicId, builtinKinds: BUILTIN_FIELD_KINDS, ...(props.onSubmitted ? { onSubmitted: props.onSubmitted } : {}), children: (bag) => {
|
|
87
|
+
if (bag.submitted !== null) {
|
|
88
|
+
return _jsx(Confirmation, { confirmation: bag.submitted.confirmation });
|
|
89
|
+
}
|
|
90
|
+
return matchLoad(bag.state, {
|
|
91
|
+
loading: () => (_jsx(Flex, { justify: "center", style: { padding: 24 }, children: _jsx(Spin, { "data-testid": "forms-loading", "aria-label": t(FORMS_I18N_KEYS.fillLoading) }) })),
|
|
92
|
+
// The three-way split. `hasErrorCode` reads the API dialect, so
|
|
93
|
+
// this works whether the throw was a StapelApiError or a bare
|
|
94
|
+
// envelope — and a network fault, which carries NEITHER code,
|
|
95
|
+
// correctly falls through to "we could not ask".
|
|
96
|
+
failed: (error) => {
|
|
97
|
+
if (hasErrorCode(error, CODE_NOT_FOUND)) {
|
|
98
|
+
return (_jsx(Alert, { type: "error", showIcon: true, "data-testid": "forms-not-found", message: t(FORMS_I18N_KEYS.fillNotFound) }));
|
|
99
|
+
}
|
|
100
|
+
if (hasErrorCode(error, CODE_CLOSED)) {
|
|
101
|
+
return (_jsx(Alert, { type: "info", showIcon: true, "data-testid": "forms-closed", message: t(FORMS_I18N_KEYS.fillClosed) }));
|
|
102
|
+
}
|
|
103
|
+
return (_jsx(ErrorAlert, { testId: "forms-load-failed", error: {
|
|
104
|
+
...describe(toFlowError(error)),
|
|
105
|
+
message: t(FORMS_I18N_KEYS.fillLoadFailed),
|
|
106
|
+
}, action: _jsx(Button, { size: "small", onClick: bag.refetch, "data-analytics": "none", "data-analytics-reason": "retry of a failed read; no flow to step", children: t(FORMS_I18N_KEYS.fillRetry) }) }));
|
|
107
|
+
},
|
|
108
|
+
ready: (form) => {
|
|
109
|
+
const label = props.submitLabel ??
|
|
110
|
+
form.meta.submit_label ??
|
|
111
|
+
t(FORMS_I18N_KEYS.fillSubmit);
|
|
112
|
+
return (_jsxs(Form, { layout: "vertical", "data-testid": "forms-form", onFinish: bag.doSubmit, children: [props.showTitle !== false &&
|
|
113
|
+
form.meta.title !== undefined && (_jsx(Typography.Title, { level: 3, children: form.meta.title })), form.meta.description !== undefined && (_jsx(Typography.Paragraph, { type: "secondary", children: form.meta.description })), bag.superseded && (_jsx(Alert, { type: "warning", showIcon: true, style: { marginBottom: 16 }, "data-testid": "forms-superseded", message: t(FORMS_I18N_KEYS.fillSuperseded) })), form.fields.map((field) => (_jsx(FieldRow, { field: field, controlId: fieldControlId(field.slug), required: field.mandatory === true, error: bag.fieldErrors[field.slug], control: _jsx(FieldControl, { field: field, bag: bag, controlId: fieldControlId(field.slug) }) }, field.slug))), bag.formError !== null && (_jsx(ErrorAlert, { testId: "forms-form-error", style: { marginBottom: 16 }, error: describe(toFlowError(bag.formError)) })), props.captcha?.(bag), _jsx(SubmitBar, { bag: bag, label: label })] }));
|
|
114
|
+
},
|
|
115
|
+
});
|
|
116
|
+
} }) }));
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=StapelForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StapelForm.js","sourceRoot":"","sources":["../../src/default/StapelForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { FormFieldWidget } from "../widgets/registry.js";
|
|
2
|
+
/**
|
|
3
|
+
* The skin's builtin widget per kind — the second rung of the ladder. A kind
|
|
4
|
+
* absent from this table has no default drawing and reaches the
|
|
5
|
+
* unsupported-field notice.
|
|
6
|
+
*/
|
|
7
|
+
export declare const BUILTIN_FIELD_WIDGETS: Readonly<Record<string, FormFieldWidget>>;
|
|
8
|
+
/** The kinds this skin can draw — handed to `<FormFill>` so the headless
|
|
9
|
+
* layer can judge `unsupportedKinds` without importing the skin. */
|
|
10
|
+
export declare const BUILTIN_FIELD_KINDS: readonly string[];
|
|
11
|
+
//# sourceMappingURL=fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../src/default/fields.tsx"],"names":[],"mappings":"AAmDA,OAAO,KAAK,EAAE,eAAe,EAAwB,MAAM,wBAAwB,CAAC;AA6XpF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAW3E,CAAC;AAEF;oEACoE;AACpE,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EACN,CAAC"}
|