@react-typed-forms/schemas 1.0.0-dev.15 → 1.0.0-dev.17
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/.babelrc +4 -0
- package/.rush/temp/operation/build/state.json +1 -1
- package/.rush/temp/package-deps_build.json +2 -2
- package/.rush/temp/shrinkwrap-deps.json +453 -6
- package/lib/controlRender.d.ts +100 -100
- package/lib/hooks.d.ts +9 -9
- package/lib/index.d.ts +5 -7
- package/lib/index.js +612 -25
- package/lib/index.js.map +1 -0
- package/lib/schemaBuilder.d.ts +87 -87
- package/lib/types.d.ts +234 -234
- package/lib/util.d.ts +3 -0
- package/package.json +6 -5
- package/src/controlRender.tsx +5 -1
- package/src/index.ts +1 -10
- package/src/util.ts +9 -0
- package/tsconfig.json +4 -3
- package/.rush/temp/operation/build/all.log +0 -1
- package/lib/controlRender.js +0 -215
- package/lib/hooks.js +0 -103
- package/lib/schemaBuilder.js +0 -67
- package/lib/types.js +0 -112
- package/schemas.build.log +0 -1
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/types.ts","../src/schemaBuilder.ts","../src/util.ts","../src/controlRender.tsx","../src/hooks.ts"],"sourcesContent":["import { DataControlProperties } from \"./controlRender\";\n\nexport interface SchemaField {\n type: string;\n field: string;\n displayName?: string | null;\n tags?: string[] | null;\n system?: boolean | null;\n collection?: boolean | null;\n onlyForTypes?: string[] | null;\n required?: boolean | null;\n defaultValue?: any;\n isTypeField?: boolean | null;\n searchable?: boolean | null;\n options?: FieldOption[] | null;\n /**\n * @deprecated Use options directly\n */\n restrictions?: SchemaRestrictions | undefined | null;\n}\n\nexport enum FieldType {\n String = \"String\",\n Bool = \"Bool\",\n Int = \"Int\",\n Date = \"Date\",\n DateTime = \"DateTime\",\n Double = \"Double\",\n EntityRef = \"EntityRef\",\n Compound = \"Compound\",\n AutoId = \"AutoId\",\n Image = \"Image\",\n Any = \"Any\",\n}\n\nexport interface EntityRefField extends SchemaField {\n type: FieldType.EntityRef;\n entityRefType: string;\n parentField: string;\n}\n\nexport interface SchemaRestrictions {\n options?: FieldOption[] | null;\n}\n\nexport interface FieldOption {\n name: string;\n value: any;\n}\n\nexport interface CompoundField extends SchemaField {\n type: FieldType.Compound;\n children: SchemaField[];\n treeChildren?: boolean;\n}\n\nexport type AnyControlDefinition =\n | DataControlDefinition\n | GroupedControlsDefinition\n | ActionControlDefinition\n | DisplayControlDefinition;\n\nexport interface ControlDefinition {\n type: string;\n title?: string | null;\n dynamic?: DynamicProperty[] | null;\n adornments?: ControlAdornment[] | null;\n}\n\nexport enum ControlDefinitionType {\n Data = \"Data\",\n Group = \"Group\",\n Display = \"Display\",\n Action = \"Action\",\n}\n\nexport interface DynamicProperty {\n type: string;\n expr: EntityExpression;\n}\n\nexport enum DynamicPropertyType {\n Visible = \"Visible\",\n DefaultValue = \"DefaultValue\",\n}\n\nexport interface EntityExpression {\n type: string;\n}\n\nexport enum ExpressionType {\n Jsonata = \"Jsonata\",\n FieldValue = \"FieldValue\",\n UserMatch = \"UserMatch\",\n}\n\nexport interface JsonataExpression extends EntityExpression {\n type: ExpressionType.Jsonata;\n expression: string;\n}\n\nexport interface FieldValueExpression extends EntityExpression {\n type: ExpressionType.FieldValue;\n field: string;\n value: any;\n}\n\nexport interface UserMatchExpression extends EntityExpression {\n type: ExpressionType.UserMatch;\n userMatch: string;\n}\n\nexport interface ControlAdornment {\n type: string;\n}\n\nexport enum ControlAdornmentType {\n Tooltip = \"Tooltip\",\n Accordion = \"Accordion\",\n}\n\nexport interface TooltipAdornment extends ControlAdornment {\n type: ControlAdornmentType.Tooltip;\n tooltip: string;\n}\n\nexport interface AccordionAdornment extends ControlAdornment {\n type: ControlAdornmentType.Accordion;\n title: string;\n defaultExpanded: boolean;\n}\n\nexport interface DataControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Data;\n field: string;\n required?: boolean | null;\n renderOptions?: RenderOptions | null;\n defaultValue?: any;\n readonly?: boolean | null;\n}\n\nexport interface RenderOptions {\n type: string;\n}\n\nexport enum DataRenderType {\n Standard = \"Standard\",\n Radio = \"Radio\",\n HtmlEditor = \"HtmlEditor\",\n IconList = \"IconList\",\n CheckList = \"CheckList\",\n UserSelection = \"UserSelection\",\n Synchronised = \"Synchronised\",\n IconSelector = \"IconSelector\",\n DateTime = \"DateTime\",\n}\n\nexport interface RadioButtonRenderOptions extends RenderOptions {\n type: DataRenderType.Radio;\n}\n\nexport interface StandardRenderer extends RenderOptions {\n type: DataRenderType.Standard;\n}\n\nexport interface HtmlEditorRenderOptions extends RenderOptions {\n type: DataRenderType.HtmlEditor;\n allowImages: boolean;\n}\n\nexport interface DateTimeRenderOptions extends RenderOptions {\n type: DataRenderType.DateTime;\n format?: string | null;\n}\n\nexport interface IconListRenderOptions extends RenderOptions {\n type: DataRenderType.IconList;\n iconMappings: IconMapping[];\n}\n\nexport interface IconMapping {\n value: string;\n materialIcon?: string | null;\n}\n\nexport interface CheckListRenderOptions extends RenderOptions {\n type: DataRenderType.CheckList;\n}\n\nexport interface SynchronisedRenderOptions extends RenderOptions {\n type: DataRenderType.Synchronised;\n fieldToSync: string;\n syncType: SyncTextType;\n}\n\nexport enum SyncTextType {\n Camel = \"Camel\",\n Snake = \"Snake\",\n Pascal = \"Pascal\",\n}\n\nexport interface UserSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.UserSelection;\n noGroups: boolean;\n noUsers: boolean;\n}\n\nexport interface IconSelectionRenderOptions extends RenderOptions {\n type: DataRenderType.IconSelector;\n}\n\nexport interface GroupedControlsDefinition extends ControlDefinition {\n type: ControlDefinitionType.Group;\n children: ControlDefinition[];\n compoundField?: string | null;\n groupOptions: GroupRenderOptions;\n}\n\nexport interface GroupRenderOptions {\n type: string;\n hideTitle?: boolean | null;\n}\n\nexport enum GroupRenderType {\n Standard = \"Standard\",\n Grid = \"Grid\",\n GroupElement = \"GroupElement\",\n}\n\nexport interface StandardGroupRenderer extends GroupRenderOptions {\n type: GroupRenderType.Standard;\n}\n\nexport interface GroupElementRenderer extends GroupRenderOptions {\n type: GroupRenderType.GroupElement;\n value: any;\n}\n\nexport interface GridRenderer extends GroupRenderOptions {\n type: GroupRenderType.Grid;\n columns?: number | null;\n}\n\nexport interface DisplayControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Display;\n displayData: DisplayData;\n}\n\nexport interface DisplayData {\n type: string;\n}\n\nexport enum DisplayDataType {\n Text = \"Text\",\n Html = \"Html\",\n}\n\nexport interface TextDisplay extends DisplayData {\n type: DisplayDataType.Text;\n text: string;\n}\n\nexport interface HtmlDisplay extends DisplayData {\n type: DisplayDataType.Html;\n html: string;\n}\n\nexport interface ActionControlDefinition extends ControlDefinition {\n type: ControlDefinitionType.Action;\n actionId: string;\n}\n\nexport function isDataControlDefinition(\n x: ControlDefinition\n): x is DataControlDefinition {\n return x.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControlsDefinition(\n x: ControlDefinition\n): x is GroupedControlsDefinition {\n return x.type === ControlDefinitionType.Group;\n}\n\nexport function isDisplayControlsDefinition(\n x: ControlDefinition\n): x is DisplayControlDefinition {\n return x.type === ControlDefinitionType.Display;\n}\n\nexport function isActionControlsDefinition(\n x: ControlDefinition\n): x is ActionControlDefinition {\n return x.type === ControlDefinitionType.Action;\n}\n\nexport interface ControlVisitor<A> {\n data(d: DataControlDefinition): A;\n group(d: GroupedControlsDefinition): A;\n display(d: DisplayControlDefinition): A;\n action(d: ActionControlDefinition): A;\n}\n\nexport function visitControlDefinition<A>(\n x: ControlDefinition,\n visitor: ControlVisitor<A>,\n defaultValue: (c: ControlDefinition) => A\n): A {\n switch (x.type) {\n case ControlDefinitionType.Action:\n return visitor.action(x as ActionControlDefinition);\n case ControlDefinitionType.Data:\n return visitor.data(x as DataControlDefinition);\n case ControlDefinitionType.Display:\n return visitor.display(x as DisplayControlDefinition);\n case ControlDefinitionType.Group:\n return visitor.group(x as GroupedControlsDefinition);\n default:\n return defaultValue(x);\n }\n}\n\nexport function dataControl(\n field: string,\n options?: Partial<DataControlDefinition>\n): DataControlDefinition {\n return { type: ControlDefinitionType.Data, field, ...options };\n}\n\nexport function fieldValueExpr(\n field: string,\n value: any\n): FieldValueExpression {\n return { type: ExpressionType.FieldValue, field, value };\n}\n\nexport function visibility(expr: EntityExpression): DynamicProperty {\n return { type: DynamicPropertyType.Visible, expr };\n}\n","import { CompoundField, FieldOption, FieldType, SchemaField } from \"./types\";\n\ntype AllowedSchema<T> = T extends string\n ? SchemaField & {\n type: FieldType.String | FieldType.Date | FieldType.DateTime;\n }\n : T extends number\n ? SchemaField & {\n type: FieldType.Int | FieldType.Double;\n }\n : T extends boolean\n ? SchemaField & {\n type: FieldType.Bool;\n }\n : T extends Array<infer E>\n ? AllowedSchema<E> & {\n collection: true;\n }\n : T extends { [key: string]: any }\n ? CompoundField & {\n type: FieldType.Compound;\n }\n : SchemaField & { type: FieldType.Any };\n\ntype AllowedField<T, K> = (\n name: string\n) => (SchemaField & { type: K }) | AllowedSchema<T>;\n\nexport function buildSchema<T, Custom = \"\">(def: {\n [K in keyof T]-?: AllowedField<T[K], Custom>;\n}): SchemaField[] {\n return Object.entries(def).map((x) =>\n (x[1] as (n: string) => SchemaField)(x[0])\n );\n}\n\nexport function stringField(\n displayName: string,\n options?: Partial<Omit<SchemaField, \"type\">>\n) {\n return makeScalarField({\n type: FieldType.String as const,\n displayName,\n ...options,\n });\n}\n\nexport function stringOptionsField(\n displayName: string,\n ...options: FieldOption[]\n) {\n return makeScalarField({\n type: FieldType.String as const,\n displayName,\n options,\n });\n}\n\nexport function withScalarOptions<S extends SchemaField>(\n options: Partial<SchemaField>,\n v: (name: string) => S\n): (name: string) => S {\n return (n) => ({ ...v(n), ...options });\n}\n\nexport function makeScalarField<S extends Partial<SchemaField>>(\n options: S\n): (name: string) => SchemaField & S {\n return (n) => ({ ...defaultScalarField(n, n), ...options });\n}\n\nexport function makeCompoundField<S extends Partial<CompoundField>>(\n options: S\n): (name: string) => CompoundField & {\n type: FieldType.Compound;\n} & S {\n return (n) => ({ ...defaultCompoundField(n, n, false), ...options });\n}\n\nexport function intField(\n displayName: string,\n options?: Partial<Omit<SchemaField, \"type\">>\n) {\n return makeScalarField({\n type: FieldType.Int as const,\n displayName,\n ...options,\n });\n}\n\nexport function boolField(\n displayName: string,\n options?: Partial<Omit<SchemaField, \"type\">>\n) {\n return makeScalarField({\n type: FieldType.Bool as const,\n displayName,\n ...options,\n });\n}\n\nexport function compoundField<\n Other extends Partial<Omit<CompoundField, \"type\" | \"schemaType\">>\n>(\n displayName: string,\n fields: SchemaField[],\n other: Other\n): (name: string) => CompoundField & {\n collection: Other[\"collection\"];\n} {\n return (field) =>\n ({\n ...defaultCompoundField(field, displayName, false),\n ...other,\n children: fields,\n } as any);\n}\n\nexport function defaultScalarField(\n field: string,\n displayName: string\n): Omit<SchemaField, \"type\"> & {\n type: FieldType.String;\n} {\n return {\n field,\n displayName,\n type: FieldType.String,\n };\n}\n\nexport function defaultCompoundField(\n field: string,\n displayName: string,\n collection: boolean\n): CompoundField & {\n type: FieldType.Compound;\n} {\n return {\n tags: [],\n field,\n displayName,\n type: FieldType.Compound,\n collection,\n system: false,\n treeChildren: false,\n children: [],\n onlyForTypes: [],\n required: true,\n };\n}\n","import { SchemaField } from \"./types\";\n\nexport function fieldHasTag(field: SchemaField, tag: string) {\n return Boolean(field.tags?.includes(tag));\n}\n\nexport function fieldDisplayName(field: SchemaField) {\n return field.displayName ?? field.field;\n}\n","import {\n ActionControlDefinition,\n AnyControlDefinition,\n CompoundField,\n ControlDefinition,\n ControlDefinitionType,\n DataControlDefinition,\n DisplayControlDefinition,\n EntityExpression,\n FieldOption,\n FieldType,\n GroupedControlsDefinition,\n SchemaField,\n visitControlDefinition,\n} from \"./types\";\nimport React, {\n Context,\n createContext,\n Key,\n ReactElement,\n ReactNode,\n useContext,\n} from \"react\";\nimport { Control, newControl } from \"@react-typed-forms/core\";\nimport { fieldDisplayName } from \"./util\";\n\nexport type ExpressionHook = (\n expr: EntityExpression,\n formState: FormEditState\n) => any;\n\nexport interface FormEditHooks {\n useDataProperties(\n formState: FormEditState,\n definition: DataControlDefinition,\n field: SchemaField\n ): DataControlProperties;\n useGroupProperties(\n formState: FormEditState,\n definition: GroupedControlsDefinition,\n currentHooks: FormEditHooks\n ): GroupControlProperties;\n useDisplayProperties(\n formState: FormEditState,\n definition: DisplayControlDefinition\n ): DisplayControlProperties;\n useActionProperties(\n formState: FormEditState,\n definition: ActionControlDefinition\n ): ActionControlProperties;\n useExpression: ExpressionHook;\n}\n\nexport interface DataControlProperties {\n control: Control<any>;\n visible: boolean;\n readonly: boolean;\n defaultValue: any;\n required: boolean;\n options: FieldOption[] | undefined | null;\n customRender?: (props: DataRendererProps) => ReactElement;\n}\n\nexport interface GroupControlProperties {\n visible: boolean;\n hooks: FormEditHooks;\n}\n\nexport interface DisplayControlProperties {\n visible: boolean;\n}\n\nexport interface ActionControlProperties {\n visible: boolean;\n onClick: () => void;\n}\n\nexport interface ControlData {\n [field: string]: any;\n}\n\nexport interface FormEditState {\n fields: SchemaField[];\n data: Control<ControlData>;\n readonly?: boolean;\n}\n\nexport interface FormRendererComponents {\n renderData: (\n props: DataRendererProps,\n control: Control<any>,\n element: boolean,\n renderers: FormRendererComponents\n ) => ReactElement;\n renderCompound: (\n props: CompoundGroupRendererProps,\n control: Control<any>,\n renderers: FormRendererComponents\n ) => ReactElement;\n renderGroup: (props: GroupRendererProps) => ReactElement;\n renderDisplay: (props: DisplayRendererProps) => ReactElement;\n renderAction: (props: ActionRendererProps) => ReactElement;\n}\n\nlet _FormRendererComponentsContext: Context<\n FormRendererComponents | undefined\n> | null = null;\n\nfunction FormRendererComponentsContext() {\n if (!_FormRendererComponentsContext) {\n _FormRendererComponentsContext = createContext<\n FormRendererComponents | undefined\n >(undefined);\n }\n return _FormRendererComponentsContext;\n}\n\nexport function FormRendererProvider({\n value,\n children,\n}: {\n value: FormRendererComponents;\n children: ReactNode;\n}) {\n const { Provider } = FormRendererComponentsContext();\n return <Provider value={value} children={children} />;\n}\n\nexport function useFormRendererComponents() {\n const c = useContext(FormRendererComponentsContext());\n if (!c) {\n throw \"Need to use FormRendererComponentContext.Provider\";\n }\n return c;\n}\n\nexport interface DisplayRendererProps {\n definition: DisplayControlDefinition;\n properties: DisplayControlProperties;\n}\n\nexport interface ActionRendererProps {\n definition: ActionControlDefinition;\n properties: ActionControlProperties;\n}\n\nexport interface DataRendererProps {\n definition: DataControlDefinition;\n properties: DataControlProperties;\n field: SchemaField;\n formEditState?: FormEditState;\n}\n\nexport interface GroupRendererProps {\n definition: Omit<GroupedControlsDefinition, \"children\">;\n properties: GroupControlProperties;\n childCount: number;\n renderChild: (\n child: number,\n wrapChild: (key: Key, childElem: ReactElement) => ReactElement\n ) => ReactElement;\n}\n\nexport interface CompoundGroupRendererProps {\n definition: GroupedControlsDefinition;\n field: CompoundField;\n properties: GroupControlProperties;\n renderChild: (\n key: Key,\n control: ControlDefinition,\n data: Control<{\n [field: string]: any;\n }>,\n wrapChild: (key: Key, childElem: ReactElement) => ReactElement\n ) => ReactElement;\n}\n\nexport function isScalarField(sf: SchemaField): sf is SchemaField {\n return !isCompoundField(sf);\n}\n\nexport function isCompoundField(sf: SchemaField): sf is CompoundField {\n return sf.type === FieldType.Compound;\n}\n\nexport type AnySchemaFields =\n | SchemaField\n | (Omit<CompoundField, \"children\"> & { children: AnySchemaFields[] });\n\nexport function applyDefaultValues(\n v: { [k: string]: any } | undefined,\n fields: SchemaField[]\n): any {\n if (!v) return defaultValueForFields(fields);\n const applyValue = fields.filter(\n (x) => isCompoundField(x) || !(x.field in v)\n );\n if (!applyValue.length) return v;\n const out = { ...v };\n applyValue.forEach((x) => {\n out[x.field] =\n x.field in v\n ? applyDefaultForField(v[x.field], x, fields)\n : defaultValueForField(x);\n });\n return out;\n}\n\nexport function applyDefaultForField(\n v: any,\n field: SchemaField,\n parent: SchemaField[],\n notElement?: boolean\n): any {\n if (field.collection && !notElement) {\n return ((v as any[]) ?? []).map((x) =>\n applyDefaultForField(x, field, parent, true)\n );\n }\n if (isCompoundField(field)) {\n if (!v && !field.required) return v;\n return applyDefaultValues(v, field.treeChildren ? parent : field.children);\n }\n return defaultValueForField(field);\n}\n\nexport function defaultValueForFields(fields: SchemaField[]): any {\n return Object.fromEntries(\n fields.map((x) => [x.field, defaultValueForField(x)])\n );\n}\n\nexport function defaultValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return sf.required\n ? sf.collection\n ? []\n : defaultValueForFields(sf.children)\n : undefined;\n }\n if (sf.collection) return [];\n return sf.defaultValue;\n}\n\nexport function elementValueForField(sf: SchemaField): any {\n if (isCompoundField(sf)) {\n return defaultValueForFields(sf.children);\n }\n return sf.defaultValue;\n}\n\nexport function findScalarField(\n fields: SchemaField[],\n field: string\n): SchemaField | undefined {\n return findField(fields, field);\n}\n\nexport function findCompoundField(\n fields: SchemaField[],\n field: string\n): CompoundField | undefined {\n return findField(fields, field) as CompoundField | undefined;\n}\n\nexport function findField(\n fields: SchemaField[],\n field: string\n): SchemaField | undefined {\n return fields.find((x) => x.field === field);\n}\nexport function controlTitle(\n title: string | undefined | null,\n field: SchemaField\n) {\n return title ? title : fieldDisplayName(field);\n}\n\nexport function renderControl<S extends ControlDefinition>(\n definition: S,\n formState: FormEditState,\n hooks: FormEditHooks,\n key: Key,\n wrapChild?: (key: Key, db: ReactElement) => ReactElement\n): ReactElement {\n const { fields } = formState;\n return visitControlDefinition(\n definition,\n {\n data: (def) => {\n const fieldData = findScalarField(fields, def.field);\n if (!fieldData) return <h1>No schema field for: {def.field}</h1>;\n return (\n <DataRenderer\n key={key}\n wrapElem={wrapElem}\n formState={formState}\n hooks={hooks}\n controlDef={def}\n fieldData={fieldData}\n />\n );\n },\n group: (d: GroupedControlsDefinition) => (\n <GroupRenderer\n key={key}\n hooks={hooks}\n groupDef={d}\n formState={formState}\n wrapElem={wrapElem}\n />\n ),\n action: (d: ActionControlDefinition) => (\n <ActionRenderer\n key={key}\n hooks={hooks}\n formState={formState}\n wrapElem={wrapElem}\n actionDef={d}\n />\n ),\n display: (d: DisplayControlDefinition) => (\n <DisplayRenderer\n key={key}\n hooks={hooks}\n formState={formState}\n wrapElem={wrapElem}\n displayDef={d}\n />\n ),\n },\n () => <h1>Unknown control: {(definition as any).type}</h1>\n );\n\n function wrapElem(e: ReactElement): ReactElement {\n return wrapChild?.(key, e) ?? e;\n }\n}\n\n/** @trackControls */\nfunction DataRenderer({\n hooks,\n formState,\n controlDef,\n wrapElem,\n fieldData,\n}: {\n hooks: FormEditHooks;\n controlDef: DataControlDefinition;\n formState: FormEditState;\n fieldData: SchemaField;\n wrapElem: (db: ReactElement) => ReactElement;\n}) {\n const renderer = useFormRendererComponents();\n const props = hooks.useDataProperties(formState, controlDef, fieldData);\n const scalarProps: DataRendererProps = {\n formEditState: formState,\n field: fieldData,\n definition: controlDef,\n properties: props,\n };\n return wrapElem(\n (props.customRender ?? renderer.renderData)(\n scalarProps,\n props.control,\n false,\n renderer\n )\n );\n}\n\n/** @trackControls */\nfunction ActionRenderer({\n hooks,\n formState,\n wrapElem,\n actionDef,\n}: {\n hooks: FormEditHooks;\n actionDef: ActionControlDefinition;\n formState: FormEditState;\n wrapElem: (db: ReactElement) => ReactElement;\n}) {\n const { renderAction } = useFormRendererComponents();\n const actionControlProperties = hooks.useActionProperties(\n formState,\n actionDef\n );\n return wrapElem(\n renderAction({ definition: actionDef, properties: actionControlProperties })\n );\n}\n\n/** @trackControls */\nfunction GroupRenderer({\n hooks,\n formState,\n groupDef,\n wrapElem,\n}: {\n hooks: FormEditHooks;\n groupDef: GroupedControlsDefinition;\n formState: FormEditState;\n wrapElem: (db: ReactElement) => ReactElement;\n}) {\n const renderers = useFormRendererComponents();\n\n const groupProps = hooks.useGroupProperties(formState, groupDef, hooks);\n const compoundField = groupDef.compoundField\n ? findCompoundField(formState.fields, groupDef.compoundField)\n : undefined;\n if (compoundField) {\n return wrapElem(\n renderers.renderCompound(\n {\n definition: groupDef,\n field: compoundField,\n properties: groupProps,\n renderChild: (k, c, data, wrapChild) =>\n renderControl(\n c as AnyControlDefinition,\n {\n ...formState,\n fields: compoundField!.children,\n data,\n },\n groupProps.hooks,\n k,\n wrapChild\n ),\n },\n formState.data.fields[compoundField.field],\n renderers\n )\n );\n }\n return wrapElem(\n renderers.renderGroup({\n definition: groupDef,\n childCount: groupDef.children.length,\n properties: groupProps,\n renderChild: (c, wrapChild) =>\n renderControl(\n groupDef.children[c],\n formState,\n groupProps.hooks,\n c,\n wrapChild\n ),\n })\n );\n}\n\n/** @trackControls */\nfunction DisplayRenderer({\n hooks,\n wrapElem,\n formState,\n displayDef,\n}: {\n hooks: FormEditHooks;\n displayDef: DisplayControlDefinition;\n formState: FormEditState;\n wrapElem: (db: ReactElement) => ReactElement;\n}) {\n const { renderDisplay } = useFormRendererComponents();\n\n const displayProps = hooks.useDisplayProperties(formState, displayDef);\n return wrapElem(\n renderDisplay({ definition: displayDef, properties: displayProps })\n );\n}\n\nexport function controlForField(\n field: string,\n formState: FormEditState\n): Control<any> {\n const refField = findField(formState.fields, field);\n return (\n (refField && formState.data.fields[refField.field]) ?? newControl(undefined)\n );\n}\n\nexport function fieldForControl(c: ControlDefinition) {\n return isDataControl(c)\n ? c.field\n : isGroupControl(c)\n ? c.compoundField\n : undefined;\n}\n\nexport function isDataControl(\n c: ControlDefinition\n): c is DataControlDefinition {\n return c.type === ControlDefinitionType.Data;\n}\n\nexport function isGroupControl(\n c: ControlDefinition\n): c is GroupedControlsDefinition {\n return c.type === ControlDefinitionType.Group;\n}\n","import {\n ActionControlDefinition,\n ControlDefinition,\n DataControlDefinition,\n DynamicPropertyType,\n EntityExpression,\n ExpressionType,\n FieldOption,\n FieldValueExpression,\n SchemaField,\n} from \"./types\";\nimport {\n ActionControlProperties,\n controlForField,\n DataControlProperties,\n ExpressionHook,\n fieldForControl,\n findField,\n FormEditHooks,\n FormEditState,\n isGroupControl,\n isScalarField,\n} from \"./controlRender\";\nimport { useEffect, useMemo } from \"react\";\nimport { Control, newControl } from \"@react-typed-forms/core\";\n\nexport function useDefaultValue(\n definition: DataControlDefinition,\n field: SchemaField,\n formState: FormEditState,\n useExpression: ExpressionHook\n) {\n const valueExpression = definition.dynamic?.find(\n (x) => x.type === DynamicPropertyType.DefaultValue\n );\n if (valueExpression) {\n return useExpression(valueExpression.expr, formState);\n }\n return field.defaultValue;\n}\n\nexport function useIsControlVisible(\n definition: ControlDefinition,\n formState: FormEditState,\n useExpression: ExpressionHook\n) {\n const visibleExpression = definition.dynamic?.find(\n (x) => x.type === DynamicPropertyType.Visible\n );\n if (visibleExpression && visibleExpression.expr) {\n return Boolean(useExpression(visibleExpression.expr, formState));\n }\n const schemaFields = formState.fields;\n\n const { typeControl, compoundField } = useMemo(() => {\n const typeField = schemaFields.find(\n (x) => isScalarField(x) && x.isTypeField\n ) as SchemaField | undefined;\n\n const typeControl = ((typeField &&\n formState.data.fields?.[typeField.field]) ??\n newControl(undefined)) as Control<string | undefined>;\n const compoundField =\n isGroupControl(definition) && definition.compoundField\n ? formState.data.fields[definition.compoundField]\n : undefined;\n return { typeControl, compoundField };\n }, [schemaFields, formState.data]);\n\n const fieldName = fieldForControl(definition);\n const onlyForTypes = (\n fieldName ? findField(schemaFields, fieldName) : undefined\n )?.onlyForTypes;\n\n return (\n (!compoundField || compoundField.value != null) &&\n (!onlyForTypes ||\n onlyForTypes.length === 0 ||\n Boolean(typeControl.value && onlyForTypes.includes(typeControl.value)))\n );\n}\nexport function getDefaultScalarControlProperties(\n definition: DataControlDefinition,\n field: SchemaField,\n visible: boolean,\n defaultValue: any,\n control: Control<any>,\n readonly?: boolean\n): DataControlProperties {\n return {\n defaultValue,\n options: getOptionsForScalarField(field),\n required: definition.required ?? false,\n visible,\n readonly: readonly ?? definition.readonly ?? false,\n control,\n };\n}\n\nexport function getOptionsForScalarField(\n field: SchemaField\n): FieldOption[] | undefined | null {\n const opts = field.options ?? field.restrictions?.options;\n if (opts?.length ?? 0 > 0) {\n return opts;\n }\n return undefined;\n}\n\nexport const defaultExpressionHook: ExpressionHook = (\n expr: EntityExpression,\n formState: FormEditState\n) => {\n switch (expr.type) {\n case ExpressionType.FieldValue:\n const fvExpr = expr as FieldValueExpression;\n return controlForField(fvExpr.field, formState).value === fvExpr.value;\n default:\n return undefined;\n }\n};\n\nexport function createFormEditHooks(\n useExpression: ExpressionHook\n): FormEditHooks {\n return {\n useExpression,\n useDataProperties(\n formState: FormEditState,\n definition: DataControlDefinition,\n field: SchemaField\n ): DataControlProperties {\n const visible = useIsControlVisible(definition, formState, useExpression);\n const defaultValue = useDefaultValue(\n definition,\n field,\n formState,\n useExpression\n );\n const scalarControl = formState.data.fields[field.field];\n\n useEffect(() => {\n if (!visible) scalarControl.value = null;\n else if (scalarControl.current.value == null) {\n scalarControl.value = defaultValue;\n }\n }, [visible, defaultValue]);\n return getDefaultScalarControlProperties(\n definition,\n field,\n visible,\n defaultValue,\n scalarControl,\n formState.readonly\n );\n },\n useDisplayProperties: (fs, definition) => {\n const visible = useIsControlVisible(definition, fs, useExpression);\n return { visible };\n },\n useGroupProperties: (fs, definition, hooks) => {\n const visible = useIsControlVisible(definition, fs, useExpression);\n return { visible, hooks };\n },\n useActionProperties(\n formState: FormEditState,\n definition: ActionControlDefinition\n ): ActionControlProperties {\n const visible = useIsControlVisible(definition, formState, useExpression);\n return { visible, onClick: () => {} };\n },\n };\n}\n"],"names":["FieldType","ControlDefinitionType","DynamicPropertyType","ExpressionType","ControlAdornmentType","DataRenderType","SyncTextType","GroupRenderType","DisplayDataType","isDataControlDefinition","x","type","Data","isGroupControlsDefinition","Group","isDisplayControlsDefinition","Display","isActionControlsDefinition","Action","visitControlDefinition","visitor","defaultValue","action","data","display","group","dataControl","field","options","_extends","fieldValueExpr","value","FieldValue","visibility","expr","Visible","buildSchema","def","Object","entries","map","stringField","displayName","makeScalarField","String","stringOptionsField","slice","call","arguments","withScalarOptions","v","n","defaultScalarField","makeCompoundField","defaultCompoundField","intField","Int","boolField","Bool","compoundField","fields","other","children","collection","tags","Compound","system","treeChildren","onlyForTypes","required","fieldHasTag","tag","_field$tags","Boolean","includes","fieldDisplayName","_field$displayName","_FormRendererComponentsContext","FormRendererComponentsContext","createContext","undefined","FormRendererProvider","_ref","_effect","_useComponentTracking","_FormRendererComponen","Provider","React","createElement","useFormRendererComponents","c","useContext","isScalarField","sf","isCompoundField","applyDefaultValues","defaultValueForFields","applyValue","filter","length","out","forEach","applyDefaultForField","defaultValueForField","parent","notElement","fromEntries","elementValueForField","findScalarField","findField","findCompoundField","find","controlTitle","title","renderControl","definition","formState","hooks","key","wrapChild","fieldData","DataRenderer","wrapElem","controlDef","d","GroupRenderer","groupDef","ActionRenderer","actionDef","DisplayRenderer","displayDef","e","_wrapChild","_ref2","_effect2","_props$customRender","renderer","props","useDataProperties","scalarProps","formEditState","properties","customRender","renderData","control","_ref3","_effect3","_useFormRendererCompo","renderAction","actionControlProperties","useActionProperties","_ref4","_effect4","renderers","groupProps","useGroupProperties","renderCompound","renderChild","k","renderGroup","childCount","_ref5","_effect5","_useFormRendererCompo2","renderDisplay","displayProps","useDisplayProperties","controlForField","_ref6","refField","newControl","fieldForControl","isDataControl","isGroupControl","useDefaultValue","useExpression","_definition$dynamic","valueExpression","dynamic","DefaultValue","useIsControlVisible","_definition$dynamic2","visibleExpression","schemaFields","_useMemo","useMemo","_formState$data$field","typeField","isTypeField","typeControl","fieldName","getDefaultScalarControlProperties","visible","readonly","_definition$required","getOptionsForScalarField","_field$options","_field$restrictions","_opts$length","opts","restrictions","defaultExpressionHook","fvExpr","createFormEditHooks","scalarControl","useEffect","current","fs","onClick"],"mappings":"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"}
|
package/lib/schemaBuilder.d.ts
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import { CompoundField, FieldOption, FieldType, SchemaField } from "./types";
|
|
2
|
-
type AllowedSchema<T> = T extends string ? SchemaField & {
|
|
3
|
-
type: FieldType.String | FieldType.Date | FieldType.DateTime;
|
|
4
|
-
} : T extends number ? SchemaField & {
|
|
5
|
-
type: FieldType.Int | FieldType.Double;
|
|
6
|
-
} : T extends boolean ? SchemaField & {
|
|
7
|
-
type: FieldType.Bool;
|
|
8
|
-
} : T extends Array<infer E> ? AllowedSchema<E> & {
|
|
9
|
-
collection: true;
|
|
10
|
-
} : T extends {
|
|
11
|
-
[key: string]: any;
|
|
12
|
-
} ? CompoundField & {
|
|
13
|
-
type: FieldType.Compound;
|
|
14
|
-
} : SchemaField & {
|
|
15
|
-
type: FieldType.Any;
|
|
16
|
-
};
|
|
17
|
-
type AllowedField<T, K> = (name: string) => (SchemaField & {
|
|
18
|
-
type: K;
|
|
19
|
-
}) | AllowedSchema<T>;
|
|
20
|
-
export declare function buildSchema<T, Custom = "">(def: {
|
|
21
|
-
[K in keyof T]-?: AllowedField<T[K], Custom>;
|
|
22
|
-
}): SchemaField[];
|
|
23
|
-
export declare function stringField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
24
|
-
field?: string | undefined;
|
|
25
|
-
displayName: string | null;
|
|
26
|
-
tags?: string[] | null | undefined;
|
|
27
|
-
system?: boolean | null | undefined;
|
|
28
|
-
collection?: boolean | null | undefined;
|
|
29
|
-
onlyForTypes?: string[] | null | undefined;
|
|
30
|
-
required?: boolean | null | undefined;
|
|
31
|
-
defaultValue?: any;
|
|
32
|
-
isTypeField?: boolean | null | undefined;
|
|
33
|
-
searchable?: boolean | null | undefined;
|
|
34
|
-
options?: FieldOption[] | null | undefined;
|
|
35
|
-
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
36
|
-
type: FieldType.String;
|
|
37
|
-
};
|
|
38
|
-
export declare function stringOptionsField(displayName: string, ...options: FieldOption[]): (name: string) => SchemaField & {
|
|
39
|
-
type: FieldType.String;
|
|
40
|
-
displayName: string;
|
|
41
|
-
options: FieldOption[];
|
|
42
|
-
};
|
|
43
|
-
export declare function withScalarOptions<S extends SchemaField>(options: Partial<SchemaField>, v: (name: string) => S): (name: string) => S;
|
|
44
|
-
export declare function makeScalarField<S extends Partial<SchemaField>>(options: S): (name: string) => SchemaField & S;
|
|
45
|
-
export declare function makeCompoundField<S extends Partial<CompoundField>>(options: S): (name: string) => CompoundField & {
|
|
46
|
-
type: FieldType.Compound;
|
|
47
|
-
} & S;
|
|
48
|
-
export declare function intField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
49
|
-
field?: string | undefined;
|
|
50
|
-
displayName: string | null;
|
|
51
|
-
tags?: string[] | null | undefined;
|
|
52
|
-
system?: boolean | null | undefined;
|
|
53
|
-
collection?: boolean | null | undefined;
|
|
54
|
-
onlyForTypes?: string[] | null | undefined;
|
|
55
|
-
required?: boolean | null | undefined;
|
|
56
|
-
defaultValue?: any;
|
|
57
|
-
isTypeField?: boolean | null | undefined;
|
|
58
|
-
searchable?: boolean | null | undefined;
|
|
59
|
-
options?: FieldOption[] | null | undefined;
|
|
60
|
-
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
61
|
-
type: FieldType.Int;
|
|
62
|
-
};
|
|
63
|
-
export declare function boolField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
64
|
-
field?: string | undefined;
|
|
65
|
-
displayName: string | null;
|
|
66
|
-
tags?: string[] | null | undefined;
|
|
67
|
-
system?: boolean | null | undefined;
|
|
68
|
-
collection?: boolean | null | undefined;
|
|
69
|
-
onlyForTypes?: string[] | null | undefined;
|
|
70
|
-
required?: boolean | null | undefined;
|
|
71
|
-
defaultValue?: any;
|
|
72
|
-
isTypeField?: boolean | null | undefined;
|
|
73
|
-
searchable?: boolean | null | undefined;
|
|
74
|
-
options?: FieldOption[] | null | undefined;
|
|
75
|
-
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
76
|
-
type: FieldType.Bool;
|
|
77
|
-
};
|
|
78
|
-
export declare function compoundField<Other extends Partial<Omit<CompoundField, "type" | "schemaType">>>(displayName: string, fields: SchemaField[], other: Other): (name: string) => CompoundField & {
|
|
79
|
-
collection: Other["collection"];
|
|
80
|
-
};
|
|
81
|
-
export declare function defaultScalarField(field: string, displayName: string): Omit<SchemaField, "type"> & {
|
|
82
|
-
type: FieldType.String;
|
|
83
|
-
};
|
|
84
|
-
export declare function defaultCompoundField(field: string, displayName: string, collection: boolean): CompoundField & {
|
|
85
|
-
type: FieldType.Compound;
|
|
86
|
-
};
|
|
87
|
-
export {};
|
|
1
|
+
import { CompoundField, FieldOption, FieldType, SchemaField } from "./types";
|
|
2
|
+
type AllowedSchema<T> = T extends string ? SchemaField & {
|
|
3
|
+
type: FieldType.String | FieldType.Date | FieldType.DateTime;
|
|
4
|
+
} : T extends number ? SchemaField & {
|
|
5
|
+
type: FieldType.Int | FieldType.Double;
|
|
6
|
+
} : T extends boolean ? SchemaField & {
|
|
7
|
+
type: FieldType.Bool;
|
|
8
|
+
} : T extends Array<infer E> ? AllowedSchema<E> & {
|
|
9
|
+
collection: true;
|
|
10
|
+
} : T extends {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
} ? CompoundField & {
|
|
13
|
+
type: FieldType.Compound;
|
|
14
|
+
} : SchemaField & {
|
|
15
|
+
type: FieldType.Any;
|
|
16
|
+
};
|
|
17
|
+
type AllowedField<T, K> = (name: string) => (SchemaField & {
|
|
18
|
+
type: K;
|
|
19
|
+
}) | AllowedSchema<T>;
|
|
20
|
+
export declare function buildSchema<T, Custom = "">(def: {
|
|
21
|
+
[K in keyof T]-?: AllowedField<T[K], Custom>;
|
|
22
|
+
}): SchemaField[];
|
|
23
|
+
export declare function stringField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
24
|
+
field?: string | undefined;
|
|
25
|
+
displayName: string | null;
|
|
26
|
+
tags?: string[] | null | undefined;
|
|
27
|
+
system?: boolean | null | undefined;
|
|
28
|
+
collection?: boolean | null | undefined;
|
|
29
|
+
onlyForTypes?: string[] | null | undefined;
|
|
30
|
+
required?: boolean | null | undefined;
|
|
31
|
+
defaultValue?: any;
|
|
32
|
+
isTypeField?: boolean | null | undefined;
|
|
33
|
+
searchable?: boolean | null | undefined;
|
|
34
|
+
options?: FieldOption[] | null | undefined;
|
|
35
|
+
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
36
|
+
type: FieldType.String;
|
|
37
|
+
};
|
|
38
|
+
export declare function stringOptionsField(displayName: string, ...options: FieldOption[]): (name: string) => SchemaField & {
|
|
39
|
+
type: FieldType.String;
|
|
40
|
+
displayName: string;
|
|
41
|
+
options: FieldOption[];
|
|
42
|
+
};
|
|
43
|
+
export declare function withScalarOptions<S extends SchemaField>(options: Partial<SchemaField>, v: (name: string) => S): (name: string) => S;
|
|
44
|
+
export declare function makeScalarField<S extends Partial<SchemaField>>(options: S): (name: string) => SchemaField & S;
|
|
45
|
+
export declare function makeCompoundField<S extends Partial<CompoundField>>(options: S): (name: string) => CompoundField & {
|
|
46
|
+
type: FieldType.Compound;
|
|
47
|
+
} & S;
|
|
48
|
+
export declare function intField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
49
|
+
field?: string | undefined;
|
|
50
|
+
displayName: string | null;
|
|
51
|
+
tags?: string[] | null | undefined;
|
|
52
|
+
system?: boolean | null | undefined;
|
|
53
|
+
collection?: boolean | null | undefined;
|
|
54
|
+
onlyForTypes?: string[] | null | undefined;
|
|
55
|
+
required?: boolean | null | undefined;
|
|
56
|
+
defaultValue?: any;
|
|
57
|
+
isTypeField?: boolean | null | undefined;
|
|
58
|
+
searchable?: boolean | null | undefined;
|
|
59
|
+
options?: FieldOption[] | null | undefined;
|
|
60
|
+
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
61
|
+
type: FieldType.Int;
|
|
62
|
+
};
|
|
63
|
+
export declare function boolField(displayName: string, options?: Partial<Omit<SchemaField, "type">>): (name: string) => SchemaField & {
|
|
64
|
+
field?: string | undefined;
|
|
65
|
+
displayName: string | null;
|
|
66
|
+
tags?: string[] | null | undefined;
|
|
67
|
+
system?: boolean | null | undefined;
|
|
68
|
+
collection?: boolean | null | undefined;
|
|
69
|
+
onlyForTypes?: string[] | null | undefined;
|
|
70
|
+
required?: boolean | null | undefined;
|
|
71
|
+
defaultValue?: any;
|
|
72
|
+
isTypeField?: boolean | null | undefined;
|
|
73
|
+
searchable?: boolean | null | undefined;
|
|
74
|
+
options?: FieldOption[] | null | undefined;
|
|
75
|
+
restrictions?: import("./types").SchemaRestrictions | null | undefined;
|
|
76
|
+
type: FieldType.Bool;
|
|
77
|
+
};
|
|
78
|
+
export declare function compoundField<Other extends Partial<Omit<CompoundField, "type" | "schemaType">>>(displayName: string, fields: SchemaField[], other: Other): (name: string) => CompoundField & {
|
|
79
|
+
collection: Other["collection"];
|
|
80
|
+
};
|
|
81
|
+
export declare function defaultScalarField(field: string, displayName: string): Omit<SchemaField, "type"> & {
|
|
82
|
+
type: FieldType.String;
|
|
83
|
+
};
|
|
84
|
+
export declare function defaultCompoundField(field: string, displayName: string, collection: boolean): CompoundField & {
|
|
85
|
+
type: FieldType.Compound;
|
|
86
|
+
};
|
|
87
|
+
export {};
|