@react-typed-forms/schemas 8.2.0 → 9.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.
@@ -1,4 +1,4 @@
1
- import { ControlDefinition, DataControlDefinition, DataMatchExpression, DisplayControlDefinition, DynamicProperty, EntityExpression, GroupedControlsDefinition, JsonataExpression, SchemaField } from "./types";
1
+ import { ControlDefinition, DataControlDefinition, DataMatchExpression, DisplayControlDefinition, DynamicProperty, EntityExpression, GroupedControlsDefinition, JsonataExpression, SchemaField, SchemaMap } from "./types";
2
2
  import { ActionRendererProps } from "./controlRender";
3
3
  export declare function dataControl(field: string, title?: string | null, options?: Partial<DataControlDefinition>): DataControlDefinition;
4
4
  export declare function textDisplayControl(text: string, options?: Partial<DisplayControlDefinition>): DisplayControlDefinition;
@@ -19,4 +19,12 @@ export interface CustomRenderOptions {
19
19
  name: string;
20
20
  fields: SchemaField[];
21
21
  }
22
- export declare function addCustomDataRenderOptions(controlFields: SchemaField[], customRenderOptions: CustomRenderOptions[]): SchemaField[];
22
+ export type ControlDefinitionExtension = {
23
+ RenderOptions?: CustomRenderOptions | CustomRenderOptions[];
24
+ GroupRenderOptions?: CustomRenderOptions | CustomRenderOptions[];
25
+ ControlAdornment?: CustomRenderOptions | CustomRenderOptions[];
26
+ SchemaValidator?: CustomRenderOptions | CustomRenderOptions[];
27
+ DisplayData?: CustomRenderOptions | CustomRenderOptions[];
28
+ };
29
+ export declare function applyExtensionToSchema<A extends SchemaMap>(schemaMap: A, extension: ControlDefinitionExtension): A;
30
+ export declare function applyExtensionsToSchema<A extends SchemaMap>(schemaMap: A, extensions: ControlDefinitionExtension[]): A;
@@ -2,7 +2,7 @@ import React, { CSSProperties, FC, Key, ReactNode } from "react";
2
2
  import { Control } from "@react-typed-forms/core";
3
3
  import { AdornmentPlacement, ControlAdornment, ControlDefinition, DataControlDefinition, DisplayData, FieldOption, GroupRenderOptions, RenderOptions, SchemaField, SchemaInterface } from "./types";
4
4
  import { ControlDataContext } from "./util";
5
- import { UseEvalExpressionHook } from "./hooks";
5
+ import { EvalExpressionHook, UseEvalExpressionHook } from "./hooks";
6
6
  export interface FormRenderer {
7
7
  renderData: (props: DataRendererProps) => (layout: ControlLayoutProps) => ControlLayoutProps;
8
8
  renderGroup: (props: GroupRendererProps) => (layout: ControlLayoutProps) => ControlLayoutProps;
@@ -83,17 +83,22 @@ export interface LabelRendererProps {
83
83
  export interface DisplayRendererProps {
84
84
  data: DisplayData;
85
85
  display?: Control<string | undefined>;
86
+ dataContext: ControlDataContext;
86
87
  className?: string;
87
88
  style?: React.CSSProperties;
88
89
  }
89
- export interface GroupRendererProps {
90
- children: ControlDefinition[];
91
- renderOptions: GroupRenderOptions;
90
+ export interface ParentRendererProps {
91
+ childDefinitions: ControlDefinition[];
92
92
  renderChild: ChildRenderer;
93
93
  className?: string;
94
94
  style?: React.CSSProperties;
95
+ dataContext: ControlDataContext;
96
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
97
+ }
98
+ export interface GroupRendererProps extends ParentRendererProps {
99
+ renderOptions: GroupRenderOptions;
95
100
  }
96
- export interface DataRendererProps {
101
+ export interface DataRendererProps extends ParentRendererProps {
97
102
  renderOptions: RenderOptions;
98
103
  field: SchemaField;
99
104
  id: string;
@@ -102,11 +107,6 @@ export interface DataRendererProps {
102
107
  required: boolean;
103
108
  options: FieldOption[] | undefined | null;
104
109
  hidden: boolean;
105
- className?: string;
106
- style?: React.CSSProperties;
107
- dataContext: ControlDataContext;
108
- children: ControlDefinition[];
109
- renderChild: ChildRenderer;
110
110
  toArrayProps?: () => ArrayRendererProps;
111
111
  }
112
112
  export interface ActionRendererProps {
@@ -135,6 +135,7 @@ export interface DataControlProps {
135
135
  renderChild: ChildRenderer;
136
136
  allowedOptions?: Control<any[] | undefined>;
137
137
  elementRenderer?: (elemIndex: number) => ReactNode;
138
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
138
139
  }
139
140
  export type CreateDataProps = (controlProps: DataControlProps) => DataRendererProps;
140
141
  export type JsonPath = string | number;
@@ -175,8 +176,9 @@ export interface RenderControlProps {
175
176
  displayControl?: Control<string | undefined>;
176
177
  style?: React.CSSProperties;
177
178
  allowedOptions?: Control<any[] | undefined>;
179
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
178
180
  }
179
- export declare function renderControlLayout({ definition: c, renderer, renderChild: childRenderer, control: childControl, schemaField, dataContext, formOptions: dataOptions, createDataProps: dataProps, displayControl, style, labelText, allowedOptions, }: RenderControlProps): ControlLayoutProps;
181
+ export declare function renderControlLayout({ definition: c, renderer, renderChild: childRenderer, control: childControl, schemaField, dataContext, formOptions: dataOptions, createDataProps: dataProps, displayControl, style, labelText, allowedOptions, useChildVisibility, }: RenderControlProps): ControlLayoutProps;
180
182
  export declare function appendMarkup(k: keyof Omit<RenderedLayout, "errorControl" | "style" | "className">, markup: ReactNode): (layout: RenderedLayout) => void;
181
183
  export declare function wrapMarkup(k: keyof Omit<RenderedLayout, "errorControl" | "style" | "className">, wrap: (ex: ReactNode) => ReactNode): (layout: RenderedLayout) => void;
182
184
  export declare function layoutKeyForPlacement(pos: AdornmentPlacement): keyof Omit<RenderedLayout, "errorControl" | "style" | "className">;
package/lib/hooks.d.ts CHANGED
@@ -1,21 +1,21 @@
1
- /// <reference types="react" />
2
1
  import { ControlDefinition, DynamicPropertyType, EntityExpression, SchemaField, SchemaInterface } from "./types";
2
+ import React from "react";
3
3
  import { Control } from "@react-typed-forms/core";
4
- import { ControlDataContext } from "./util";
4
+ import { ControlDataContext, DynamicHookGenerator } from "./util";
5
5
  import { DataContext } from "./controlRender";
6
- export type UseEvalExpressionHook = (expr: EntityExpression | undefined) => EvalExpressionHook | undefined;
6
+ export type EvalExpressionHook<A = any> = DynamicHookGenerator<Control<A | undefined>, ControlDataContext>;
7
+ export type UseEvalExpressionHook = (expr: EntityExpression | undefined) => DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
7
8
  export declare function useEvalVisibilityHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, schemaField?: SchemaField): EvalExpressionHook<boolean>;
8
9
  export declare function useEvalReadonlyHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
9
10
  export declare function useEvalStyleHook(useEvalExpressionHook: UseEvalExpressionHook, property: DynamicPropertyType, definition: ControlDefinition): EvalExpressionHook<React.CSSProperties>;
10
11
  export declare function useEvalAllowedOptionsHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<any[]>;
11
12
  export declare function useEvalDisabledHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): EvalExpressionHook<boolean>;
12
- export declare function useEvalDisplayHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): (groupContext: ControlDataContext) => Control<string | undefined> | undefined;
13
+ export declare function useEvalDisplayHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition): DynamicHookGenerator<Control<string | undefined> | undefined, ControlDataContext>;
13
14
  export declare function useEvalDefaultValueHook(useEvalExpressionHook: UseEvalExpressionHook, definition: ControlDefinition, schemaField?: SchemaField): EvalExpressionHook;
14
- export type EvalExpressionHook<A = any> = (groupContext: ControlDataContext) => Control<A | undefined>;
15
15
  export declare function defaultEvalHooks(expr: EntityExpression, context: ControlDataContext): Control<any>;
16
- export declare const defaultUseEvalExpressionHook: (expr: EntityExpression | undefined) => EvalExpressionHook | undefined;
17
- export declare function makeEvalExpressionHook(f: (expr: EntityExpression, context: ControlDataContext) => Control<any>): (expr: EntityExpression | undefined) => EvalExpressionHook | undefined;
18
- export declare function useEvalDynamicHook(definition: ControlDefinition, type: DynamicPropertyType, useEvalExpressionHook: (expr: EntityExpression | undefined) => EvalExpressionHook | undefined): EvalExpressionHook | undefined;
16
+ export declare const defaultUseEvalExpressionHook: UseEvalExpressionHook;
17
+ export declare function makeEvalExpressionHook(f: (expr: EntityExpression, context: ControlDataContext) => Control<any>): UseEvalExpressionHook;
18
+ export declare function useEvalDynamicHook(definition: ControlDefinition, type: DynamicPropertyType, useEvalExpressionHook: UseEvalExpressionHook): DynamicHookGenerator<Control<any> | undefined, ControlDataContext>;
19
19
  export declare function matchesType(context: ControlDataContext, types?: string[] | null): boolean | undefined;
20
20
  export declare function hideDisplayOnly(context: ControlDataContext, field: SchemaField, definition: ControlDefinition, schemaInterface: SchemaInterface): boolean | undefined;
21
21
  export declare function useJsonataExpression(jExpr: string, dataContext: DataContext, bindings?: () => Record<string, any>): Control<any>;