@fieldia/react 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -1
- package/package.json +4 -4
- package/src/lib/fieldia-form.d.mts +11 -1
- package/src/lib/fieldia-form.d.ts +11 -1
- package/src/lib/fieldia-form.js +10 -1
- package/src/lib/fieldia-form.js.map +1 -1
- package/src/lib/fieldia-form.mjs +10 -1
- package/src/lib/fieldia-form.mjs.map +1 -1
package/README.md
CHANGED
|
@@ -21,4 +21,24 @@ export function Customer() {
|
|
|
21
21
|
|
|
22
22
|
Custom fields and slot content can be React components (`fieldTypes`, `slots`);
|
|
23
23
|
`useFormState(form)` gives you a form's state as React state. A list page opens
|
|
24
|
-
a row through `onOpenRecord`.
|
|
24
|
+
a row through `onOpenRecord`.
|
|
25
|
+
|
|
26
|
+
The form's events are props, each read anew on every render without mounting
|
|
27
|
+
again; `onAction` may answer a button or a `call` step:
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<FieldiaForm
|
|
31
|
+
page={page}
|
|
32
|
+
dataSource={dataSource}
|
|
33
|
+
pages={pages}
|
|
34
|
+
onAction={async ({ action, values }) => (action === 'check_stock' ? { values: { price: await priceOf(values.product) } } : undefined)}
|
|
35
|
+
onChange={({ field, value, by }) => {}} // by: 'person' | 'step' | 'app'
|
|
36
|
+
onSave={({ recordId, values }) => {}}
|
|
37
|
+
onSend={({ values }) => {}}
|
|
38
|
+
onStep={({ step }) => {}}
|
|
39
|
+
onRun={({ id, result }) => {}}
|
|
40
|
+
/>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
`host` and `onOpen` are the viewer's own options (see `@fieldia/viewer`); the
|
|
44
|
+
handle from `ref` or `onReady` has `on`, `setValues` and `run`. MIT licensed.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fieldia/react",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "React binding for Fieldia: <FieldiaForm> over the plain-DOM viewer, with custom fields and slots as React components.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://fieldia.dev",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"./package.json": "./package.json"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@fieldia/core": "0.
|
|
25
|
-
"@fieldia/viewer": "0.
|
|
26
|
-
"@fieldia/widgets": "0.
|
|
24
|
+
"@fieldia/core": "0.11.0",
|
|
25
|
+
"@fieldia/viewer": "0.11.0",
|
|
26
|
+
"@fieldia/widgets": "0.11.0",
|
|
27
27
|
"tslib": "^2.8.1"
|
|
28
28
|
},
|
|
29
29
|
"sideEffects": false,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Field, FieldNode, Form, FormState, Value } from '@fieldia/core';
|
|
1
|
+
import type { Field, FieldNode, Form, FormEvents, FormState, Value } from '@fieldia/core';
|
|
2
2
|
import { type ViewerHandle, type ViewerOptions } from '@fieldia/viewer';
|
|
3
3
|
import type { WidgetState } from '@fieldia/widgets';
|
|
4
4
|
import { type ComponentType, type CSSProperties } from 'react';
|
|
@@ -41,6 +41,16 @@ export interface FieldiaFormProps extends Omit<ViewerOptions, 'slots'> {
|
|
|
41
41
|
style?: CSSProperties;
|
|
42
42
|
/** Called once per mount with the viewer's handle. */
|
|
43
43
|
onReady?: (handle: ViewerHandle) => void;
|
|
44
|
+
/** A field was written — `by` a person, a step or the app. */
|
|
45
|
+
onChange?: (event: FormEvents['change']) => void;
|
|
46
|
+
/** A record was saved. */
|
|
47
|
+
onSave?: (event: FormEvents['save']) => void;
|
|
48
|
+
/** A page of responses sent its answers. */
|
|
49
|
+
onSend?: (event: FormEvents['send']) => void;
|
|
50
|
+
/** A wizard's step was entered. */
|
|
51
|
+
onStep?: (event: FormEvents['step']) => void;
|
|
52
|
+
/** A run of steps ended — a button's, a moment's — and how. */
|
|
53
|
+
onRun?: (event: FormEvents['run']) => void;
|
|
44
54
|
}
|
|
45
55
|
/** A form's state as React state: the component re-renders on every change. */
|
|
46
56
|
export declare function useFormState(form: Form): FormState;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Field, FieldNode, Form, FormState, Value } from '@fieldia/core';
|
|
1
|
+
import type { Field, FieldNode, Form, FormEvents, FormState, Value } from '@fieldia/core';
|
|
2
2
|
import { type ViewerHandle, type ViewerOptions } from '@fieldia/viewer';
|
|
3
3
|
import type { WidgetState } from '@fieldia/widgets';
|
|
4
4
|
import { type ComponentType, type CSSProperties } from 'react';
|
|
@@ -41,6 +41,16 @@ export interface FieldiaFormProps extends Omit<ViewerOptions, 'slots'> {
|
|
|
41
41
|
style?: CSSProperties;
|
|
42
42
|
/** Called once per mount with the viewer's handle. */
|
|
43
43
|
onReady?: (handle: ViewerHandle) => void;
|
|
44
|
+
/** A field was written — `by` a person, a step or the app. */
|
|
45
|
+
onChange?: (event: FormEvents['change']) => void;
|
|
46
|
+
/** A record was saved. */
|
|
47
|
+
onSave?: (event: FormEvents['save']) => void;
|
|
48
|
+
/** A page of responses sent its answers. */
|
|
49
|
+
onSend?: (event: FormEvents['send']) => void;
|
|
50
|
+
/** A wizard's step was entered. */
|
|
51
|
+
onStep?: (event: FormEvents['step']) => void;
|
|
52
|
+
/** A run of steps ended — a button's, a moment's — and how. */
|
|
53
|
+
onRun?: (event: FormEvents['run']) => void;
|
|
44
54
|
}
|
|
45
55
|
/** A form's state as React state: the component re-renders on every change. */
|
|
46
56
|
export declare function useFormState(form: Form): FormState;
|
package/src/lib/fieldia-form.js
CHANGED
|
@@ -6,6 +6,8 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
6
6
|
const viewer_1 = require("@fieldia/viewer");
|
|
7
7
|
const react_1 = require("react");
|
|
8
8
|
const react_dom_1 = require("react-dom");
|
|
9
|
+
/** The form's events a prop hears, by the prop's name. */
|
|
10
|
+
const EVENTS = { onChange: 'change', onSave: 'save', onSend: 'send', onStep: 'step', onRun: 'run' };
|
|
9
11
|
/** A form's state as React state: the component re-renders on every change. */
|
|
10
12
|
function useFormState(form) {
|
|
11
13
|
return (0, react_1.useSyncExternalStore)(form.subscribe, form.getState, form.getState);
|
|
@@ -85,15 +87,22 @@ exports.FieldiaForm = (0, react_1.forwardRef)(function FieldiaForm(props, ref) {
|
|
|
85
87
|
});
|
|
86
88
|
};
|
|
87
89
|
}
|
|
88
|
-
const { fieldTypes: _fields, slots: _slots, className: _class, style: _style, onReady: _ready, ...options } = latest.current;
|
|
90
|
+
const { fieldTypes: _fields, slots: _slots, className: _class, style: _style, onReady: _ready, onChange: _change, onSave: _save, onSend: _send, onStep: _step, onRun: _run, ...options } = latest.current;
|
|
89
91
|
const mounted = (0, viewer_1.mountViewer)(element, {
|
|
90
92
|
...options,
|
|
91
93
|
widgets,
|
|
92
94
|
slots,
|
|
95
|
+
// The newest handler; what it answers — values, words, a page, a stop — the form takes.
|
|
93
96
|
onAction: (request) => latest.current.onAction?.(request),
|
|
94
97
|
// The newest handler, as for actions; rows look openable only when there is one.
|
|
95
98
|
onOpenRecord: options.onOpenRecord && ((id) => latest.current.onOpenRecord?.(id)),
|
|
99
|
+
// A page a step opens: the newest way of the app's, else the viewer's.
|
|
100
|
+
onOpen: (request) => latest.current.onOpen?.(request),
|
|
96
101
|
});
|
|
102
|
+
// Each event through the newest handler, as for actions.
|
|
103
|
+
for (const [prop, event] of Object.entries(EVENTS)) {
|
|
104
|
+
mounted.on(event, (payload) => latest.current[prop]?.(payload));
|
|
105
|
+
}
|
|
97
106
|
setHandle(mounted);
|
|
98
107
|
setPortals(found);
|
|
99
108
|
latest.current.onReady?.(mounted);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldia-form.js","sourceRoot":"","sources":["../../../../../libs/react/src/lib/fieldia-form.tsx"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"fieldia-form.js","sourceRoot":"","sources":["../../../../../libs/react/src/lib/fieldia-form.tsx"],"names":[],"mappings":"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"}
|
package/src/lib/fieldia-form.mjs
CHANGED
|
@@ -2,6 +2,8 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
|
|
|
2
2
|
import { mountViewer } from '@fieldia/viewer';
|
|
3
3
|
import { forwardRef, useEffect, useImperativeHandle, useRef, useState, useSyncExternalStore, } from 'react';
|
|
4
4
|
import { createPortal } from 'react-dom';
|
|
5
|
+
/** The form's events a prop hears, by the prop's name. */
|
|
6
|
+
const EVENTS = { onChange: 'change', onSave: 'save', onSend: 'send', onStep: 'step', onRun: 'run' };
|
|
5
7
|
/** A form's state as React state: the component re-renders on every change. */
|
|
6
8
|
export function useFormState(form) {
|
|
7
9
|
return useSyncExternalStore(form.subscribe, form.getState, form.getState);
|
|
@@ -81,15 +83,22 @@ export const FieldiaForm = forwardRef(function FieldiaForm(props, ref) {
|
|
|
81
83
|
});
|
|
82
84
|
};
|
|
83
85
|
}
|
|
84
|
-
const { fieldTypes: _fields, slots: _slots, className: _class, style: _style, onReady: _ready, ...options } = latest.current;
|
|
86
|
+
const { fieldTypes: _fields, slots: _slots, className: _class, style: _style, onReady: _ready, onChange: _change, onSave: _save, onSend: _send, onStep: _step, onRun: _run, ...options } = latest.current;
|
|
85
87
|
const mounted = mountViewer(element, {
|
|
86
88
|
...options,
|
|
87
89
|
widgets,
|
|
88
90
|
slots,
|
|
91
|
+
// The newest handler; what it answers — values, words, a page, a stop — the form takes.
|
|
89
92
|
onAction: (request) => latest.current.onAction?.(request),
|
|
90
93
|
// The newest handler, as for actions; rows look openable only when there is one.
|
|
91
94
|
onOpenRecord: options.onOpenRecord && ((id) => latest.current.onOpenRecord?.(id)),
|
|
95
|
+
// A page a step opens: the newest way of the app's, else the viewer's.
|
|
96
|
+
onOpen: (request) => latest.current.onOpen?.(request),
|
|
92
97
|
});
|
|
98
|
+
// Each event through the newest handler, as for actions.
|
|
99
|
+
for (const [prop, event] of Object.entries(EVENTS)) {
|
|
100
|
+
mounted.on(event, (payload) => latest.current[prop]?.(payload));
|
|
101
|
+
}
|
|
93
102
|
setHandle(mounted);
|
|
94
103
|
setPortals(found);
|
|
95
104
|
latest.current.onReady?.(mounted);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fieldia-form.mjs","sourceRoot":"","sources":["../../../../../libs/react/src/lib/fieldia-form.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAA4D,MAAM,iBAAiB,CAAC;AAExG,OAAO,EACL,UAAU,EACV,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,oBAAoB,GAIrB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"fieldia-form.mjs","sourceRoot":"","sources":["../../../../../libs/react/src/lib/fieldia-form.tsx"],"names":[],"mappings":"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"}
|