@react-typed-forms/schemas 5.0.2 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/controlBuilder.d.ts +2 -2
- package/lib/controlRender.d.ts +63 -16
- package/lib/hooks.d.ts +10 -5
- package/lib/index.d.ts +1 -0
- package/lib/index.js +434 -162
- package/lib/index.js.map +1 -1
- package/lib/internal.d.ts +1 -0
- package/lib/renderers.d.ts +20 -10
- package/lib/schemaInterface.d.ts +4 -0
- package/lib/types.d.ts +47 -8
- package/lib/util.d.ts +7 -5
- package/lib/validators.d.ts +2 -2
- package/package.json +2 -2
- package/src/controlBuilder.ts +3 -3
- package/src/controlRender.tsx +198 -82
- package/src/hooks.tsx +102 -17
- package/src/index.ts +1 -0
- package/src/internal.ts +4 -0
- package/src/renderers.tsx +196 -65
- package/src/schemaInterface.ts +31 -0
- package/src/tailwind.tsx +5 -1
- package/src/types.ts +61 -5
- package/src/util.ts +24 -8
- package/src/validators.ts +3 -3
package/lib/internal.d.ts
CHANGED
package/lib/renderers.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { CSSProperties, ReactElement, ReactNode } from "react";
|
|
2
2
|
import { Control } from "@react-typed-forms/core";
|
|
3
|
-
import { ActionRendererProps, AdornmentProps, AdornmentRenderer, ArrayRendererProps, ControlLayoutProps, DataRendererProps, DisplayRendererProps, FormRenderer, GroupRendererProps, LabelRendererProps, LabelType, RenderedLayout,
|
|
4
|
-
import { FieldOption, GridRenderer } from "./types";
|
|
3
|
+
import { ActionRendererProps, AdornmentProps, AdornmentRenderer, ArrayRendererProps, ControlLayoutProps, DataRendererProps, DisplayRendererProps, FormRenderer, GroupRendererProps, LabelRendererProps, LabelType, RenderedControl, RenderedLayout, VisibilityRendererProps } from "./controlRender";
|
|
4
|
+
import { ControlAdornment, FieldOption, GridRenderer, IconAdornment, SchemaField, SchemaInterface } from "./types";
|
|
5
5
|
export interface DefaultRenderers {
|
|
6
6
|
data: DataRendererRegistration;
|
|
7
7
|
label: LabelRendererRegistration;
|
|
@@ -16,7 +16,7 @@ export interface DefaultRenderers {
|
|
|
16
16
|
export interface LayoutRendererRegistration {
|
|
17
17
|
type: "layout";
|
|
18
18
|
match?: (props: ControlLayoutProps) => boolean;
|
|
19
|
-
render: (props: ControlLayoutProps, renderers: FormRenderer) =>
|
|
19
|
+
render: (props: ControlLayoutProps, renderers: FormRenderer) => RenderedControl;
|
|
20
20
|
}
|
|
21
21
|
export interface DataRendererRegistration {
|
|
22
22
|
type: "data";
|
|
@@ -44,7 +44,7 @@ export interface ArrayRendererRegistration {
|
|
|
44
44
|
export interface GroupRendererRegistration {
|
|
45
45
|
type: "group";
|
|
46
46
|
renderType?: string | string[];
|
|
47
|
-
render: (props: GroupRendererProps, renderers: FormRenderer) => ReactElement;
|
|
47
|
+
render: (props: GroupRendererProps, renderers: FormRenderer) => ReactElement | ((layout: ControlLayoutProps) => ControlLayoutProps);
|
|
48
48
|
}
|
|
49
49
|
export interface DisplayRendererRegistration {
|
|
50
50
|
type: "display";
|
|
@@ -58,7 +58,7 @@ export interface AdornmentRendererRegistration {
|
|
|
58
58
|
}
|
|
59
59
|
export interface VisibilityRendererRegistration {
|
|
60
60
|
type: "visibility";
|
|
61
|
-
render: (
|
|
61
|
+
render: (props: VisibilityRendererProps) => ReactNode;
|
|
62
62
|
}
|
|
63
63
|
export type RendererRegistration = DataRendererRegistration | GroupRendererRegistration | DisplayRendererRegistration | ActionRendererRegistration | LabelRendererRegistration | ArrayRendererRegistration | AdornmentRendererRegistration | LayoutRendererRegistration | VisibilityRendererRegistration;
|
|
64
64
|
export declare function createFormRenderer(customRenderers?: RendererRegistration[], defaultRenderers?: DefaultRenderers): FormRenderer;
|
|
@@ -91,6 +91,8 @@ interface DefaultGroupRendererOptions {
|
|
|
91
91
|
gridStyles?: (columns: GridRenderer) => StyleProps;
|
|
92
92
|
gridClassName?: string;
|
|
93
93
|
defaultGridColumns?: number;
|
|
94
|
+
flexClassName?: string;
|
|
95
|
+
defaultFlexGap?: string;
|
|
94
96
|
}
|
|
95
97
|
export declare function createDefaultGroupRenderer(options?: DefaultGroupRendererOptions): GroupRendererRegistration;
|
|
96
98
|
export interface DefaultDisplayRendererOptions {
|
|
@@ -98,14 +100,24 @@ export interface DefaultDisplayRendererOptions {
|
|
|
98
100
|
htmlClassName?: string;
|
|
99
101
|
}
|
|
100
102
|
export declare function createDefaultDisplayRenderer(options?: DefaultDisplayRendererOptions): DisplayRendererRegistration;
|
|
103
|
+
export declare function DefaultDisplay({ data, display, className, style, ...options }: DefaultDisplayRendererOptions & DisplayRendererProps): React.JSX.Element;
|
|
101
104
|
export declare const DefaultBoolOptions: FieldOption[];
|
|
102
105
|
interface DefaultDataRendererOptions {
|
|
103
106
|
inputClass?: string;
|
|
107
|
+
displayOnlyClass?: string;
|
|
104
108
|
selectOptions?: SelectRendererOptions;
|
|
105
109
|
booleanOptions?: FieldOption[];
|
|
106
110
|
optionRenderer?: DataRendererRegistration;
|
|
107
111
|
}
|
|
108
112
|
export declare function createDefaultDataRenderer(options?: DefaultDataRendererOptions): DataRendererRegistration;
|
|
113
|
+
export declare function DefaultDisplayOnly({ control, className, emptyText, schemaInterface, field, style, }: {
|
|
114
|
+
control: Control<any>;
|
|
115
|
+
field: SchemaField;
|
|
116
|
+
schemaInterface: SchemaInterface;
|
|
117
|
+
className?: string;
|
|
118
|
+
style?: React.CSSProperties;
|
|
119
|
+
emptyText?: string | null;
|
|
120
|
+
}): React.JSX.Element;
|
|
109
121
|
export declare function ControlInput({ control, convert, ...props }: React.InputHTMLAttributes<HTMLInputElement> & {
|
|
110
122
|
control: Control<any>;
|
|
111
123
|
convert: InputConversion;
|
|
@@ -128,6 +140,7 @@ export interface DefaultRendererOptions {
|
|
|
128
140
|
layout?: DefaultLayoutRendererOptions;
|
|
129
141
|
}
|
|
130
142
|
export declare function createDefaultRenderers(options?: DefaultRendererOptions): DefaultRenderers;
|
|
143
|
+
export declare function isIconAdornment(a: ControlAdornment): a is IconAdornment;
|
|
131
144
|
export declare function createLayoutRenderer(render: LayoutRendererRegistration["render"], options?: Partial<LayoutRendererRegistration>): LayoutRendererRegistration;
|
|
132
145
|
export declare function createArrayRenderer(render: ArrayRendererRegistration["render"], options?: Partial<ArrayRendererRegistration>): ArrayRendererRegistration;
|
|
133
146
|
export declare function createDataRenderer(render: DataRendererRegistration["render"], options?: Partial<DataRendererRegistration>): DataRendererRegistration;
|
|
@@ -160,11 +173,8 @@ export declare function createSelectConversion(ft: string): SelectConversion;
|
|
|
160
173
|
type InputConversion = [string, (s: any) => any, (a: any) => string | number];
|
|
161
174
|
export declare function createInputConversion(ft: string): InputConversion;
|
|
162
175
|
export declare function createDefaultVisibilityRenderer(): VisibilityRendererRegistration;
|
|
163
|
-
export declare function DefaultVisibility({ visibility, children, }:
|
|
164
|
-
|
|
165
|
-
children: () => ReactNode;
|
|
166
|
-
}): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
|
|
167
|
-
export declare function DefaultLayout({ className, errorClass, layout: { controlEnd, controlStart, label, children, errorControl }, }: DefaultLayoutRendererOptions & {
|
|
176
|
+
export declare function DefaultVisibility({ visibility, children, className, style, divRef, }: VisibilityRendererProps): React.JSX.Element;
|
|
177
|
+
export declare function DefaultLayout({ errorClass, className, layout: { controlEnd, controlStart, label, children, errorControl }, }: DefaultLayoutRendererOptions & {
|
|
168
178
|
layout: RenderedLayout;
|
|
169
179
|
}): React.JSX.Element;
|
|
170
180
|
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { SchemaField, SchemaInterface } from "./types";
|
|
2
|
+
export declare const defaultSchemaInterface: SchemaInterface;
|
|
3
|
+
export declare function defaultIsEmpty(f: SchemaField, value: any): boolean;
|
|
4
|
+
export declare function defaultTextValue(f: SchemaField, value: any): string | undefined;
|
package/lib/types.d.ts
CHANGED
|
@@ -42,9 +42,15 @@ export interface CompoundField extends SchemaField {
|
|
|
42
42
|
treeChildren?: boolean;
|
|
43
43
|
}
|
|
44
44
|
export type AnyControlDefinition = DataControlDefinition | GroupedControlsDefinition | ActionControlDefinition | DisplayControlDefinition;
|
|
45
|
+
export interface SchemaInterface {
|
|
46
|
+
isEmptyValue(field: SchemaField, value: any): boolean;
|
|
47
|
+
textValue(field: SchemaField, value: any, element?: boolean): string | undefined;
|
|
48
|
+
}
|
|
45
49
|
export interface ControlDefinition {
|
|
46
50
|
type: string;
|
|
47
51
|
title?: string | null;
|
|
52
|
+
styleClass?: string | null;
|
|
53
|
+
layoutClass?: string | null;
|
|
48
54
|
dynamic?: DynamicProperty[] | null;
|
|
49
55
|
adornments?: ControlAdornment[] | null;
|
|
50
56
|
children?: ControlDefinition[] | null;
|
|
@@ -63,22 +69,30 @@ export declare enum DynamicPropertyType {
|
|
|
63
69
|
Visible = "Visible",
|
|
64
70
|
DefaultValue = "DefaultValue",
|
|
65
71
|
Readonly = "Readonly",
|
|
66
|
-
Disabled = "Disabled"
|
|
72
|
+
Disabled = "Disabled",
|
|
73
|
+
Display = "Display",
|
|
74
|
+
Style = "Style",
|
|
75
|
+
LayoutStyle = "LayoutStyle"
|
|
67
76
|
}
|
|
68
77
|
export interface EntityExpression {
|
|
69
78
|
type: string;
|
|
70
79
|
}
|
|
71
80
|
export declare enum ExpressionType {
|
|
72
81
|
Jsonata = "Jsonata",
|
|
73
|
-
|
|
82
|
+
Data = "Data",
|
|
83
|
+
DataMatch = "FieldValue",
|
|
74
84
|
UserMatch = "UserMatch"
|
|
75
85
|
}
|
|
76
86
|
export interface JsonataExpression extends EntityExpression {
|
|
77
87
|
type: ExpressionType.Jsonata;
|
|
78
88
|
expression: string;
|
|
79
89
|
}
|
|
80
|
-
export interface
|
|
81
|
-
type: ExpressionType.
|
|
90
|
+
export interface DataExpression extends EntityExpression {
|
|
91
|
+
type: ExpressionType.Data;
|
|
92
|
+
field: string;
|
|
93
|
+
}
|
|
94
|
+
export interface DataMatchExpression extends EntityExpression {
|
|
95
|
+
type: ExpressionType.DataMatch;
|
|
82
96
|
field: string;
|
|
83
97
|
value: any;
|
|
84
98
|
}
|
|
@@ -98,7 +112,13 @@ export declare enum AdornmentPlacement {
|
|
|
98
112
|
export declare enum ControlAdornmentType {
|
|
99
113
|
Tooltip = "Tooltip",
|
|
100
114
|
Accordion = "Accordion",
|
|
101
|
-
HelpText = "HelpText"
|
|
115
|
+
HelpText = "HelpText",
|
|
116
|
+
Icon = "Icon"
|
|
117
|
+
}
|
|
118
|
+
export interface IconAdornment extends ControlAdornment {
|
|
119
|
+
type: ControlAdornmentType.Icon;
|
|
120
|
+
iconClass: string;
|
|
121
|
+
placement?: AdornmentPlacement | null;
|
|
102
122
|
}
|
|
103
123
|
export interface TooltipAdornment extends ControlAdornment {
|
|
104
124
|
type: ControlAdornmentType.Tooltip;
|
|
@@ -112,7 +132,7 @@ export interface AccordionAdornment extends ControlAdornment {
|
|
|
112
132
|
export interface HelpTextAdornment extends ControlAdornment {
|
|
113
133
|
type: ControlAdornmentType.HelpText;
|
|
114
134
|
helpText: string;
|
|
115
|
-
placement
|
|
135
|
+
placement?: AdornmentPlacement | null;
|
|
116
136
|
}
|
|
117
137
|
export interface DataControlDefinition extends ControlDefinition {
|
|
118
138
|
type: ControlDefinitionType.Data;
|
|
@@ -138,7 +158,8 @@ export declare enum DataRenderType {
|
|
|
138
158
|
IconSelector = "IconSelector",
|
|
139
159
|
DateTime = "DateTime",
|
|
140
160
|
Checkbox = "Checkbox",
|
|
141
|
-
Dropdown = "Dropdown"
|
|
161
|
+
Dropdown = "Dropdown",
|
|
162
|
+
DisplayOnly = "DisplayOnly"
|
|
142
163
|
}
|
|
143
164
|
export interface RadioButtonRenderOptions extends RenderOptions {
|
|
144
165
|
type: DataRenderType.Radio;
|
|
@@ -158,6 +179,11 @@ export interface IconListRenderOptions extends RenderOptions {
|
|
|
158
179
|
type: DataRenderType.IconList;
|
|
159
180
|
iconMappings: IconMapping[];
|
|
160
181
|
}
|
|
182
|
+
export interface DisplayOnlyRenderOptions extends RenderOptions {
|
|
183
|
+
type: DataRenderType.DisplayOnly;
|
|
184
|
+
emptyText?: string | null;
|
|
185
|
+
sampleText?: string | null;
|
|
186
|
+
}
|
|
161
187
|
export interface IconMapping {
|
|
162
188
|
value: string;
|
|
163
189
|
materialIcon?: string | null;
|
|
@@ -195,11 +221,17 @@ export interface GroupRenderOptions {
|
|
|
195
221
|
export declare enum GroupRenderType {
|
|
196
222
|
Standard = "Standard",
|
|
197
223
|
Grid = "Grid",
|
|
224
|
+
Flex = "Flex",
|
|
198
225
|
GroupElement = "GroupElement"
|
|
199
226
|
}
|
|
200
227
|
export interface StandardGroupRenderer extends GroupRenderOptions {
|
|
201
228
|
type: GroupRenderType.Standard;
|
|
202
229
|
}
|
|
230
|
+
export interface FlexRenderer extends GroupRenderOptions {
|
|
231
|
+
type: GroupRenderType.Flex;
|
|
232
|
+
direction?: string | null;
|
|
233
|
+
gap?: string | null;
|
|
234
|
+
}
|
|
203
235
|
export interface GroupElementRenderer extends GroupRenderOptions {
|
|
204
236
|
type: GroupRenderType.GroupElement;
|
|
205
237
|
value: any;
|
|
@@ -217,12 +249,17 @@ export interface DisplayData {
|
|
|
217
249
|
}
|
|
218
250
|
export declare enum DisplayDataType {
|
|
219
251
|
Text = "Text",
|
|
220
|
-
Html = "Html"
|
|
252
|
+
Html = "Html",
|
|
253
|
+
Icon = "Icon"
|
|
221
254
|
}
|
|
222
255
|
export interface TextDisplay extends DisplayData {
|
|
223
256
|
type: DisplayDataType.Text;
|
|
224
257
|
text: string;
|
|
225
258
|
}
|
|
259
|
+
export interface IconDisplay extends DisplayData {
|
|
260
|
+
type: DisplayDataType.Icon;
|
|
261
|
+
iconClass: string;
|
|
262
|
+
}
|
|
226
263
|
export interface HtmlDisplay extends DisplayData {
|
|
227
264
|
type: DisplayDataType.Html;
|
|
228
265
|
html: string;
|
|
@@ -264,3 +301,5 @@ export interface ControlVisitor<A> {
|
|
|
264
301
|
}
|
|
265
302
|
export declare function visitControlDefinition<A>(x: ControlDefinition, visitor: ControlVisitor<A>, defaultValue: (c: ControlDefinition) => A): A;
|
|
266
303
|
export declare function isGridRenderer(options: GroupRenderOptions): options is GridRenderer;
|
|
304
|
+
export declare function isFlexRenderer(options: GroupRenderOptions): options is FlexRenderer;
|
|
305
|
+
export declare function isDisplayOnlyRenderer(options: RenderOptions): options is DisplayOnlyRenderOptions;
|
package/lib/util.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { CompoundField, ControlDefinition, DataControlDefinition, FieldOption, GroupedControlsDefinition, SchemaField } from "./types";
|
|
1
|
+
import { CompoundField, ControlDefinition, DataControlDefinition, DisplayOnlyRenderOptions, FieldOption, GroupedControlsDefinition, SchemaField, SchemaInterface } from "./types";
|
|
2
2
|
import { MutableRefObject } from "react";
|
|
3
3
|
import { Control } from "@react-typed-forms/core";
|
|
4
|
-
export interface
|
|
4
|
+
export interface ControlDataContext {
|
|
5
5
|
groupControl: Control<any>;
|
|
6
6
|
fields: SchemaField[];
|
|
7
|
+
schemaInterface: SchemaInterface;
|
|
7
8
|
}
|
|
8
9
|
export declare function applyDefaultValues(v: {
|
|
9
10
|
[k: string]: any;
|
|
@@ -28,9 +29,10 @@ export declare function defaultControlForField(sf: SchemaField): DataControlDefi
|
|
|
28
29
|
export declare function addMissingControls(fields: SchemaField[], controls: ControlDefinition[]): ControlDefinition[];
|
|
29
30
|
export declare function useUpdatedRef<A>(a: A): MutableRefObject<A>;
|
|
30
31
|
export declare function isControlReadonly(c: ControlDefinition): boolean;
|
|
31
|
-
export declare function
|
|
32
|
-
export declare function
|
|
33
|
-
export declare function
|
|
32
|
+
export declare function getDisplayOnlyOptions(d: ControlDefinition): DisplayOnlyRenderOptions | undefined;
|
|
33
|
+
export declare function getTypeField(context: ControlDataContext): Control<string> | undefined;
|
|
34
|
+
export declare function visitControlDataArray<A>(controls: ControlDefinition[] | undefined | null, context: ControlDataContext, cb: (definition: DataControlDefinition, field: SchemaField, control: Control<any>, element: boolean) => A | undefined): A | undefined;
|
|
35
|
+
export declare function visitControlData<A>(definition: ControlDefinition, ctx: ControlDataContext, cb: (definition: DataControlDefinition, field: SchemaField, control: Control<any>, element: boolean) => A | undefined): A | undefined;
|
|
34
36
|
export declare function cleanDataForSchema(v: {
|
|
35
37
|
[k: string]: any;
|
|
36
38
|
} | undefined, fields: SchemaField[]): any;
|
package/lib/validators.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ControlDefinition } from "./types";
|
|
2
2
|
import { Control } from "@react-typed-forms/core";
|
|
3
|
-
import {
|
|
4
|
-
export declare function useValidationHook(definition: ControlDefinition): (control: Control<any>, hidden: boolean, groupContext:
|
|
3
|
+
import { ControlDataContext } from "./util";
|
|
4
|
+
export declare function useValidationHook(definition: ControlDefinition): (control: Control<any>, hidden: boolean, groupContext: ControlDataContext) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-typed-forms/schemas",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"types": "lib/index.d.ts",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"material-ui"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@react-typed-forms/core": "^3.0.0
|
|
27
|
+
"@react-typed-forms/core": "^3.0.0",
|
|
28
28
|
"clsx": "^1 || ^2",
|
|
29
29
|
"jsonata": "^2.0.4",
|
|
30
30
|
"react": "^18.2.0"
|
package/src/controlBuilder.ts
CHANGED
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
ControlDefinition,
|
|
3
3
|
ControlDefinitionType,
|
|
4
4
|
DataControlDefinition,
|
|
5
|
+
DataMatchExpression,
|
|
5
6
|
DisplayControlDefinition,
|
|
6
7
|
DisplayDataType,
|
|
7
8
|
DynamicProperty,
|
|
8
9
|
DynamicPropertyType,
|
|
9
10
|
EntityExpression,
|
|
10
11
|
ExpressionType,
|
|
11
|
-
FieldValueExpression,
|
|
12
12
|
GroupedControlsDefinition,
|
|
13
13
|
GroupRenderType,
|
|
14
14
|
HtmlDisplay,
|
|
@@ -66,8 +66,8 @@ export function dynamicDisabled(expr: EntityExpression): DynamicProperty {
|
|
|
66
66
|
return { type: DynamicPropertyType.Disabled, expr };
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
export function fieldEqExpr(field: string, value: any):
|
|
70
|
-
return { type: ExpressionType.
|
|
69
|
+
export function fieldEqExpr(field: string, value: any): DataMatchExpression {
|
|
70
|
+
return { type: ExpressionType.DataMatch, field, value };
|
|
71
71
|
}
|
|
72
72
|
export function jsonataExpr(expression: string): JsonataExpression {
|
|
73
73
|
return { type: ExpressionType.Jsonata, expression };
|