@react-typed-forms/schemas 8.1.0 → 9.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.
@@ -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,11 @@ 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
+ };
28
+ export declare function applyExtensionToSchema<A extends SchemaMap>(schemaMap: A, extension: ControlDefinitionExtension): A;
29
+ 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;
@@ -86,14 +86,18 @@ export interface DisplayRendererProps {
86
86
  className?: string;
87
87
  style?: React.CSSProperties;
88
88
  }
89
- export interface GroupRendererProps {
90
- children: ControlDefinition[];
91
- renderOptions: GroupRenderOptions;
89
+ export interface ParentRendererProps {
90
+ childDefinitions: ControlDefinition[];
92
91
  renderChild: ChildRenderer;
93
92
  className?: string;
94
93
  style?: React.CSSProperties;
94
+ dataContext: ControlDataContext;
95
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
96
+ }
97
+ export interface GroupRendererProps extends ParentRendererProps {
98
+ renderOptions: GroupRenderOptions;
95
99
  }
96
- export interface DataRendererProps {
100
+ export interface DataRendererProps extends ParentRendererProps {
97
101
  renderOptions: RenderOptions;
98
102
  field: SchemaField;
99
103
  id: string;
@@ -102,11 +106,6 @@ export interface DataRendererProps {
102
106
  required: boolean;
103
107
  options: FieldOption[] | undefined | null;
104
108
  hidden: boolean;
105
- className?: string;
106
- style?: React.CSSProperties;
107
- dataContext: ControlDataContext;
108
- children: ControlDefinition[];
109
- renderChild: ChildRenderer;
110
109
  toArrayProps?: () => ArrayRendererProps;
111
110
  }
112
111
  export interface ActionRendererProps {
@@ -135,6 +134,7 @@ export interface DataControlProps {
135
134
  renderChild: ChildRenderer;
136
135
  allowedOptions?: Control<any[] | undefined>;
137
136
  elementRenderer?: (elemIndex: number) => ReactNode;
137
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
138
138
  }
139
139
  export type CreateDataProps = (controlProps: DataControlProps) => DataRendererProps;
140
140
  export type JsonPath = string | number;
@@ -175,8 +175,9 @@ export interface RenderControlProps {
175
175
  displayControl?: Control<string | undefined>;
176
176
  style?: React.CSSProperties;
177
177
  allowedOptions?: Control<any[] | undefined>;
178
+ useChildVisibility: (child: number | number[]) => EvalExpressionHook<boolean>;
178
179
  }
179
- export declare function renderControlLayout({ definition: c, renderer, renderChild: childRenderer, control: childControl, schemaField, dataContext, formOptions: dataOptions, createDataProps: dataProps, displayControl, style, labelText, allowedOptions, }: RenderControlProps): ControlLayoutProps;
180
+ 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
181
  export declare function appendMarkup(k: keyof Omit<RenderedLayout, "errorControl" | "style" | "className">, markup: ReactNode): (layout: RenderedLayout) => void;
181
182
  export declare function wrapMarkup(k: keyof Omit<RenderedLayout, "errorControl" | "style" | "className">, wrap: (ex: ReactNode) => ReactNode): (layout: RenderedLayout) => void;
182
183
  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>;