@react-typed-forms/schemas 5.0.3 → 7.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/internal.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  import { Control } from "@react-typed-forms/core";
2
2
  export declare function useCalculatedControl<V>(calculate: () => V): Control<V>;
3
+ export declare function cc(n: string | null | undefined): string | undefined;
@@ -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, Visibility } from "./controlRender";
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) => ReactNode;
19
+ render: (props: ControlLayoutProps, renderers: FormRenderer) => RenderedControl;
20
20
  }
21
21
  export interface DataRendererRegistration {
22
22
  type: "data";
@@ -25,7 +25,7 @@ export interface DataRendererRegistration {
25
25
  options?: boolean;
26
26
  collection?: boolean;
27
27
  match?: (props: DataRendererProps) => boolean;
28
- render: (props: DataRendererProps, asArray: (() => ReactNode) | undefined, renderers: FormRenderer) => ReactNode | ((layout: ControlLayoutProps) => ControlLayoutProps);
28
+ render: (props: DataRendererProps, renderers: FormRenderer) => ReactNode | ((layout: ControlLayoutProps) => ControlLayoutProps);
29
29
  }
30
30
  export interface LabelRendererRegistration {
31
31
  type: "label";
@@ -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: (visibility: Control<Visibility | undefined>, children: () => ReactNode) => ReactNode;
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
- visibility: Control<Visibility | undefined>;
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
- FieldValue = "FieldValue",
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 FieldValueExpression extends EntityExpression {
81
- type: ExpressionType.FieldValue;
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: AdornmentPlacement;
135
+ placement?: AdornmentPlacement | null;
116
136
  }
117
137
  export interface DataControlDefinition extends ControlDefinition {
118
138
  type: ControlDefinitionType.Data;
@@ -123,6 +143,7 @@ export interface DataControlDefinition extends ControlDefinition {
123
143
  readonly?: boolean | null;
124
144
  validators?: SchemaValidator[] | null;
125
145
  hideTitle?: boolean | null;
146
+ dontClearHidden?: boolean | null;
126
147
  }
127
148
  export interface RenderOptions {
128
149
  type: string;
@@ -138,7 +159,8 @@ export declare enum DataRenderType {
138
159
  IconSelector = "IconSelector",
139
160
  DateTime = "DateTime",
140
161
  Checkbox = "Checkbox",
141
- Dropdown = "Dropdown"
162
+ Dropdown = "Dropdown",
163
+ DisplayOnly = "DisplayOnly"
142
164
  }
143
165
  export interface RadioButtonRenderOptions extends RenderOptions {
144
166
  type: DataRenderType.Radio;
@@ -158,6 +180,11 @@ export interface IconListRenderOptions extends RenderOptions {
158
180
  type: DataRenderType.IconList;
159
181
  iconMappings: IconMapping[];
160
182
  }
183
+ export interface DisplayOnlyRenderOptions extends RenderOptions {
184
+ type: DataRenderType.DisplayOnly;
185
+ emptyText?: string | null;
186
+ sampleText?: string | null;
187
+ }
161
188
  export interface IconMapping {
162
189
  value: string;
163
190
  materialIcon?: string | null;
@@ -195,11 +222,17 @@ export interface GroupRenderOptions {
195
222
  export declare enum GroupRenderType {
196
223
  Standard = "Standard",
197
224
  Grid = "Grid",
225
+ Flex = "Flex",
198
226
  GroupElement = "GroupElement"
199
227
  }
200
228
  export interface StandardGroupRenderer extends GroupRenderOptions {
201
229
  type: GroupRenderType.Standard;
202
230
  }
231
+ export interface FlexRenderer extends GroupRenderOptions {
232
+ type: GroupRenderType.Flex;
233
+ direction?: string | null;
234
+ gap?: string | null;
235
+ }
203
236
  export interface GroupElementRenderer extends GroupRenderOptions {
204
237
  type: GroupRenderType.GroupElement;
205
238
  value: any;
@@ -217,12 +250,17 @@ export interface DisplayData {
217
250
  }
218
251
  export declare enum DisplayDataType {
219
252
  Text = "Text",
220
- Html = "Html"
253
+ Html = "Html",
254
+ Icon = "Icon"
221
255
  }
222
256
  export interface TextDisplay extends DisplayData {
223
257
  type: DisplayDataType.Text;
224
258
  text: string;
225
259
  }
260
+ export interface IconDisplay extends DisplayData {
261
+ type: DisplayDataType.Icon;
262
+ iconClass: string;
263
+ }
226
264
  export interface HtmlDisplay extends DisplayData {
227
265
  type: DisplayDataType.Html;
228
266
  html: string;
@@ -264,3 +302,5 @@ export interface ControlVisitor<A> {
264
302
  }
265
303
  export declare function visitControlDefinition<A>(x: ControlDefinition, visitor: ControlVisitor<A>, defaultValue: (c: ControlDefinition) => A): A;
266
304
  export declare function isGridRenderer(options: GroupRenderOptions): options is GridRenderer;
305
+ export declare function isFlexRenderer(options: GroupRenderOptions): options is FlexRenderer;
306
+ 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 ControlGroupContext {
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;
@@ -24,13 +25,15 @@ export declare function fieldDisplayName(field: SchemaField): string;
24
25
  export declare function hasOptions(o: {
25
26
  options: FieldOption[] | undefined | null;
26
27
  }): boolean;
27
- export declare function defaultControlForField(sf: SchemaField): DataControlDefinition | GroupedControlsDefinition;
28
+ export declare function defaultControlForField(sf: SchemaField): DataControlDefinition;
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 getTypeField(context: ControlGroupContext): Control<string> | undefined;
32
- export declare function visitControlDataArray<A>(controls: ControlDefinition[] | undefined | null, context: ControlGroupContext, cb: (definition: DataControlDefinition, field: SchemaField, control: Control<any>, element: boolean) => A | undefined): A | undefined;
33
- export declare function visitControlData<A>(definition: ControlDefinition, ctx: ControlGroupContext, cb: (definition: DataControlDefinition, field: SchemaField, control: Control<any>, element: boolean) => A | undefined): A | undefined;
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;
39
+ export declare function getAllReferencedClasses(c: ControlDefinition): string[];
@@ -1,4 +1,4 @@
1
1
  import { ControlDefinition } from "./types";
2
2
  import { Control } from "@react-typed-forms/core";
3
- import { ControlGroupContext } from "./util";
4
- export declare function useValidationHook(definition: ControlDefinition): (control: Control<any>, hidden: boolean, groupContext: ControlGroupContext) => void;
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": "5.0.3",
3
+ "version": "7.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-dev.117",
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"
@@ -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): FieldValueExpression {
70
- return { type: ExpressionType.FieldValue, field, value };
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 };