@react-typed-forms/schemas 14.3.1 → 14.4.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.
@@ -284,8 +284,9 @@ export interface GridRenderer extends GroupRenderOptions {
284
284
  type: GroupRenderType.Grid;
285
285
  columns?: number | null;
286
286
  }
287
- export interface TabsGroupRenderer extends GroupRenderOptions {
287
+ export interface TabsRenderOptions extends GroupRenderOptions {
288
288
  type: GroupRenderType.Tabs;
289
+ contentClass?: string;
289
290
  }
290
291
  export interface SelectChildRenderer extends GroupRenderOptions {
291
292
  type: GroupRenderType.SelectChild;
@@ -334,7 +335,7 @@ export interface ControlVisitor<A> {
334
335
  export declare function visitControlDefinition<A>(x: ControlDefinition, visitor: ControlVisitor<A>, defaultValue: (c: ControlDefinition) => A): A;
335
336
  export declare function isGridRenderer(options: GroupRenderOptions): options is GridRenderer;
336
337
  export declare function isSelectChildRenderer(options: GroupRenderOptions): options is SelectChildRenderer;
337
- export declare function isTabsRenderer(options: GroupRenderOptions): options is TabsGroupRenderer;
338
+ export declare function isTabsRenderer(options: GroupRenderOptions): options is TabsRenderOptions;
338
339
  export declare function isFlexRenderer(options: GroupRenderOptions): options is FlexRenderer;
339
340
  export declare function isDisplayOnlyRenderer(options: RenderOptions): options is DisplayOnlyRenderOptions;
340
341
  export declare function isTextfieldRenderer(options: RenderOptions): options is TextfieldRenderOptions;
@@ -352,26 +353,29 @@ export declare function isCheckEntryClasses(options?: RenderOptions | null): opt
352
353
  export type ControlMap = {
353
354
  [k: string]: ControlDefinition;
354
355
  };
355
- export declare class FormNode {
356
+ export interface FormNode {
356
357
  id: string;
357
358
  definition: ControlDefinition;
358
359
  tree: FormTree;
359
- parent?: FormNode | undefined;
360
- overrideChildren?: FormNode[] | undefined;
361
- constructor(id: string, definition: ControlDefinition, tree: FormTree, parent?: FormNode | undefined, overrideChildren?: FormNode[] | undefined);
362
- getChildNodes(): FormNode[];
363
- withOverrideChildren(children: ControlDefinition[]): FormNode;
360
+ parent?: FormNode;
361
+ getChildNodes(dontFollowRef?: boolean): FormNode[];
364
362
  }
365
- export interface FormTreeLookup<A = string> {
366
- getForm(formId: A): FormTree | undefined;
363
+ export declare function defaultGetChildNodes(parent: FormNode, children?: ControlDefinition[] | null): FormNode[];
364
+ export interface FormTreeLookup {
365
+ getForm(formId: string): FormTree | undefined;
367
366
  }
368
367
  export interface FormTree extends FormTreeLookup {
369
368
  rootNode: FormNode;
370
- controlMap: ControlMap;
369
+ getChildrenForId(id: string, parent: FormNode): FormNode[];
371
370
  }
371
+ export declare function wrapFormNode(node: FormNode, getChildren?: (dontFollowRef?: boolean) => FormNode[]): FormNode;
372
372
  export declare function nodeForControl(definition: ControlDefinition, tree: FormTree, indexOrId?: number | string, parent?: FormNode): FormNode;
373
373
  export declare function legacyFormNode(definition: ControlDefinition): FormNode;
374
- export declare function createFormLookup<A extends Record<string, ControlDefinition[]>>(formMap: A): FormTreeLookup<keyof A>;
374
+ export declare function createFormTreeWithRoot(createRootNode: (tree: FormTree) => FormNode, getChildrenForId: (id: string, parent: FormNode) => FormNode[], getForm?: FormTreeLookup): FormTree;
375
+ export declare function createFormTree(controls: ControlDefinition[], getForm?: FormTreeLookup): FormTree;
376
+ export declare function createFormLookup<A extends Record<string, ControlDefinition[]>>(formMap: A): {
377
+ getForm(formId: keyof A): FormTree;
378
+ };
375
379
  export declare function fieldPathForDefinition(c: ControlDefinition): string[] | undefined;
376
380
  export declare function lookupDataNode(c: ControlDefinition, parentNode: SchemaDataNode): SchemaDataNode | undefined;
377
381
  export declare function traverseParents<A, B extends {
@@ -53,7 +53,7 @@ export interface FormRenderer {
53
53
  * @param labelEnd - React node to render at the end of the label.
54
54
  * @returns A React node.
55
55
  */
56
- renderLabel: (props: LabelRendererProps, labelStart: ReactNode, labelEnd: ReactNode) => ReactNode;
56
+ renderLabel: (props: LabelRendererProps, labelStart?: ReactNode, labelEnd?: ReactNode) => ReactNode;
57
57
  /**
58
58
  * Renders layout.
59
59
  * @param props - Properties for control layout.
@@ -72,6 +72,8 @@ export interface FormRenderer {
72
72
  * @returns A React node.
73
73
  */
74
74
  renderLabelText: (props: ReactNode) => ReactNode;
75
+ renderText: (props: ReactNode) => ReactNode;
76
+ h: (type: any, props: any, ...children: any[]) => ReactElement;
75
77
  }
76
78
  export interface AdornmentProps {
77
79
  adornment: ControlAdornment;
package/lib/index.cjs CHANGED
@@ -451,46 +451,33 @@ function isCheckEntryClasses(options) {
451
451
  return false;
452
452
  }
453
453
  }
454
- var FormNode = /*#__PURE__*/function () {
455
- function FormNode(id, definition, tree, parent, overrideChildren) {
456
- this.id = void 0;
457
- this.definition = void 0;
458
- this.tree = void 0;
459
- this.parent = void 0;
460
- this.overrideChildren = void 0;
461
- this.id = id;
462
- this.definition = definition;
463
- this.tree = tree;
464
- this.parent = parent;
465
- this.overrideChildren = overrideChildren;
466
- this.id = id;
467
- this.definition = definition;
468
- }
469
- var _proto = FormNode.prototype;
470
- _proto.getChildNodes = function getChildNodes() {
471
- var _children$map,
472
- _children,
473
- _this = this;
474
- if (this.overrideChildren) return this.overrideChildren;
475
- var children = this.definition.children;
476
- if (this.definition.childRefId) {
477
- var ref = this.tree.controlMap[this.definition.childRefId];
478
- children = ref == null ? void 0 : ref.children;
454
+ function defaultGetChildNodes(parent, children) {
455
+ var _children$map;
456
+ return (_children$map = children == null ? void 0 : children.map(function (x, i) {
457
+ return nodeForControl(x, parent.tree, i, parent);
458
+ })) != null ? _children$map : [];
459
+ }
460
+ function wrapFormNode(node, getChildren) {
461
+ return _extends({}, node, {
462
+ getChildNodes: getChildren != null ? getChildren : function (dfr) {
463
+ return node.getChildNodes(dfr);
479
464
  }
480
- return (_children$map = (_children = children) == null ? void 0 : _children.map(function (x, i) {
481
- return new FormNode(_this.id + "/" + i, x, _this.tree, _this);
482
- })) != null ? _children$map : [];
483
- };
484
- _proto.withOverrideChildren = function withOverrideChildren(children) {
485
- var _this2 = this;
486
- return new FormNode(this.id, this.definition, this.tree, this.parent, children.map(function (x) {
487
- return nodeForControl(x, _this2.tree);
488
- }));
489
- };
490
- return FormNode;
491
- }();
465
+ });
466
+ }
492
467
  function nodeForControl(definition, tree, indexOrId, parent) {
493
- return new FormNode(parent ? parent.id + "/" + indexOrId : "", definition, tree, parent);
468
+ return {
469
+ id: parent ? parent.id + "/" + indexOrId : "",
470
+ definition: definition,
471
+ tree: tree,
472
+ parent: parent,
473
+ getChildNodes: function getChildNodes(dontFollowRef) {
474
+ var children = this.definition.children;
475
+ if (!dontFollowRef && this.definition.childRefId) {
476
+ return this.tree.getChildrenForId(this.definition.childRefId, this);
477
+ }
478
+ return defaultGetChildNodes(this, children);
479
+ }
480
+ };
494
481
  }
495
482
  function legacyFormNode(definition) {
496
483
  return createFormLookup({
@@ -502,17 +489,42 @@ function getControlIds(definition) {
502
489
  var childEntries = (_definition$children$ = (_definition$children = definition.children) == null ? void 0 : _definition$children.flatMap(getControlIds)) != null ? _definition$children$ : [];
503
490
  return !definition.id ? childEntries : [[definition.id, definition]].concat(childEntries);
504
491
  }
505
- function makeFormTree(controls, getForm) {
506
- var tree = {
507
- getForm: getForm,
508
- controlMap: Object.fromEntries(controls.flatMap(getControlIds))
509
- };
510
- tree.rootNode = nodeForControl({
511
- children: controls,
512
- type: exports.ControlDefinitionType.Group
513
- }, tree);
492
+ function createFormTreeWithRoot(createRootNode, getChildrenForId, getForm) {
493
+ if (getForm === void 0) {
494
+ getForm = {
495
+ getForm: function getForm() {
496
+ return undefined;
497
+ }
498
+ };
499
+ }
500
+ var tree = _extends({}, getForm, {
501
+ getChildrenForId: getChildrenForId,
502
+ rootNode: undefined
503
+ });
504
+ tree.rootNode = createRootNode(tree);
514
505
  return tree;
515
506
  }
507
+ function createFormTree(controls, getForm) {
508
+ if (getForm === void 0) {
509
+ getForm = {
510
+ getForm: function getForm() {
511
+ return undefined;
512
+ }
513
+ };
514
+ }
515
+ var controlMap = Object.fromEntries(controls.flatMap(getControlIds));
516
+ return createFormTreeWithRoot(function (tree) {
517
+ return nodeForControl({
518
+ children: controls,
519
+ type: exports.ControlDefinitionType.Group
520
+ }, tree);
521
+ }, function (id, parent) {
522
+ var _controlMap$id$childr, _controlMap$id;
523
+ return (_controlMap$id$childr = (_controlMap$id = controlMap[id]) == null || (_controlMap$id = _controlMap$id.children) == null ? void 0 : _controlMap$id.map(function (x, i) {
524
+ return nodeForControl(x, parent.tree, i, parent);
525
+ })) != null ? _controlMap$id$childr : [];
526
+ }, getForm);
527
+ }
516
528
  function createFormLookup(formMap) {
517
529
  var lookup = {
518
530
  getForm: getForm
@@ -520,7 +532,7 @@ function createFormLookup(formMap) {
520
532
  var forms = Object.fromEntries(Object.entries(formMap).map(function (_ref) {
521
533
  var k = _ref[0],
522
534
  v = _ref[1];
523
- return [k, makeFormTree(v, lookup)];
535
+ return [k, createFormTree(v, lookup)];
524
536
  }));
525
537
  return lookup;
526
538
  function getForm(formId) {
@@ -2389,7 +2401,7 @@ function useControlRenderer(definition, fields, renderer, options) {
2389
2401
  return React.useCallback(function (_ref) {
2390
2402
  var control = _ref.control,
2391
2403
  parentPath = _ref.parentPath;
2392
- return React__default["default"].createElement(ControlRenderer, _extends({}, r.current, {
2404
+ return /*#__PURE__*/React__default["default"].createElement(ControlRenderer, _extends({}, r.current, {
2393
2405
  control: control,
2394
2406
  parentPath: parentPath
2395
2407
  }));
@@ -2400,7 +2412,7 @@ function useControlRendererComponent(controlOrFormNode, renderer, options, paren
2400
2412
  if (options === void 0) {
2401
2413
  options = {};
2402
2414
  }
2403
- var _ref2 = controlOrFormNode instanceof FormNode ? [controlOrFormNode.definition, controlOrFormNode] : [controlOrFormNode, legacyFormNode(controlOrFormNode)],
2415
+ var _ref2 = "definition" in controlOrFormNode ? [controlOrFormNode.definition, controlOrFormNode] : [controlOrFormNode, legacyFormNode(controlOrFormNode)],
2404
2416
  definition = _ref2[0],
2405
2417
  formNode = _ref2[1];
2406
2418
  var dataProps = (_options$useDataHook = options.useDataHook == null ? void 0 : options.useDataHook(definition)) != null ? _options$useDataHook : defaultDataProps;
@@ -2536,7 +2548,7 @@ function useControlRendererComponent(controlOrFormNode, renderer, options, paren
2536
2548
  React.useEffect(function () {
2537
2549
  if (control && typeof myOptions.disabled === "boolean" && control.disabled != myOptions.disabled) control.disabled = myOptions.disabled;
2538
2550
  }, [control, myOptions.disabled]);
2539
- if (parentControl.isNull) return React__default["default"].createElement(React__default["default"].Fragment, null);
2551
+ if (parentControl.isNull) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
2540
2552
  var adornments = (_definition$adornment2 = (_definition$adornment3 = definition.adornments) == null ? void 0 : _definition$adornment3.map(function (x) {
2541
2553
  return renderer.renderAdornment({
2542
2554
  adornment: x,
@@ -2556,7 +2568,7 @@ function useControlRendererComponent(controlOrFormNode, renderer, options, paren
2556
2568
  parentDataNode = _ref4.parentDataNode,
2557
2569
  renderOptions = _objectWithoutPropertiesLoose(_ref4, _excluded);
2558
2570
  var dContext = (_ref5 = parentDataNode != null ? parentDataNode : dataContext.dataNode) != null ? _ref5 : dataContext.parentNode;
2559
- return React__default["default"].createElement(NewControlRenderer, {
2571
+ return /*#__PURE__*/React__default["default"].createElement(NewControlRenderer, {
2560
2572
  key: k,
2561
2573
  definition: child,
2562
2574
  renderer: renderer,
@@ -2602,24 +2614,35 @@ function useControlRendererComponent(controlOrFormNode, renderer, options, paren
2602
2614
  return Component;
2603
2615
  }
2604
2616
  function ControlRenderer(_ref7) {
2605
- var definition = _ref7.definition,
2606
- fields = _ref7.fields,
2607
- renderer = _ref7.renderer,
2608
- options = _ref7.options,
2609
- control = _ref7.control;
2610
- var schemaDataNode = makeSchemaDataNode(createSchemaLookup({
2611
- "": fields
2612
- }).getSchema(""), control);
2613
- var Render = useControlRendererComponent(definition, renderer, options, schemaDataNode);
2614
- return React__default["default"].createElement(Render, null);
2617
+ var _effect = core.useComponentTracking();
2618
+ try {
2619
+ var definition = _ref7.definition,
2620
+ fields = _ref7.fields,
2621
+ renderer = _ref7.renderer,
2622
+ options = _ref7.options,
2623
+ control = _ref7.control,
2624
+ parentPath = _ref7.parentPath;
2625
+ var schemaDataNode = makeSchemaDataNode(createSchemaLookup({
2626
+ "": fields
2627
+ }).getSchema(""), control);
2628
+ var Render = useControlRendererComponent(definition, renderer, options, schemaDataNode);
2629
+ return /*#__PURE__*/React__default["default"].createElement(Render, null);
2630
+ } finally {
2631
+ _effect();
2632
+ }
2615
2633
  }
2616
2634
  function NewControlRenderer(_ref8) {
2617
- var definition = _ref8.definition,
2618
- renderer = _ref8.renderer,
2619
- options = _ref8.options,
2620
- parentDataNode = _ref8.parentDataNode;
2621
- var Render = useControlRendererComponent(definition, renderer, options, parentDataNode);
2622
- return React__default["default"].createElement(Render, null);
2635
+ var _effect2 = core.useComponentTracking();
2636
+ try {
2637
+ var definition = _ref8.definition,
2638
+ renderer = _ref8.renderer,
2639
+ options = _ref8.options,
2640
+ parentDataNode = _ref8.parentDataNode;
2641
+ var Render = useControlRendererComponent(definition, renderer, options, parentDataNode);
2642
+ return /*#__PURE__*/React__default["default"].createElement(Render, null);
2643
+ } finally {
2644
+ _effect2();
2645
+ }
2623
2646
  }
2624
2647
  function defaultDataProps(_ref9) {
2625
2648
  var _allowedOptions$value, _definition$renderOpt2;
@@ -2777,7 +2800,7 @@ function renderControlLayout(props) {
2777
2800
  }
2778
2801
  function appendMarkup(k, markup) {
2779
2802
  return function (layout) {
2780
- return layout[k] = React__default["default"].createElement(React__default["default"].Fragment, null, layout[k], markup);
2803
+ return layout[k] = /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, layout[k], markup);
2781
2804
  };
2782
2805
  }
2783
2806
  function wrapMarkup(k, wrap) {
@@ -2963,7 +2986,7 @@ function applyArrayLengthRestrictions(_ref13, disable) {
2963
2986
  }
2964
2987
  function fieldOptionAdornment(p) {
2965
2988
  return function (o, i, selected) {
2966
- return React__default["default"].createElement(core.RenderArrayElements, {
2989
+ return /*#__PURE__*/React__default["default"].createElement(core.RenderArrayElements, {
2967
2990
  array: p.formNode.getChildNodes()
2968
2991
  }, function (cd, i) {
2969
2992
  return p.renderChild(i, cd, {
@@ -3069,9 +3092,14 @@ function createFormRenderer(customRenderers, defaultRenderers) {
3069
3092
  renderArray: renderArray,
3070
3093
  renderAdornment: renderAdornment,
3071
3094
  renderLayout: renderLayout,
3072
- renderVisibility: visibilityRenderer.render,
3073
- renderLabelText: renderLabelText
3095
+ renderVisibility: renderVisibility,
3096
+ renderLabelText: renderLabelText,
3097
+ renderText: defaultRenderers.renderText,
3098
+ h: defaultRenderers.h
3074
3099
  };
3100
+ function renderVisibility(props) {
3101
+ return visibilityRenderer.render(props, formRenderers);
3102
+ }
3075
3103
  function renderLabelText(label) {
3076
3104
  return renderLabel({
3077
3105
  label: label,
@@ -3191,7 +3219,6 @@ function isArrayRegistration(x) {
3191
3219
  exports.AppendAdornmentPriority = AppendAdornmentPriority;
3192
3220
  exports.ControlRenderer = ControlRenderer;
3193
3221
  exports.DefaultSchemaInterface = DefaultSchemaInterface;
3194
- exports.FormNode = FormNode;
3195
3222
  exports.NewControlRenderer = NewControlRenderer;
3196
3223
  exports.WrapAdornmentPriority = WrapAdornmentPriority;
3197
3224
  exports.accordionOptions = accordionOptions;
@@ -3229,6 +3256,8 @@ exports.createDataRenderer = createDataRenderer;
3229
3256
  exports.createDisplayRenderer = createDisplayRenderer;
3230
3257
  exports.createFormLookup = createFormLookup;
3231
3258
  exports.createFormRenderer = createFormRenderer;
3259
+ exports.createFormTree = createFormTree;
3260
+ exports.createFormTreeWithRoot = createFormTreeWithRoot;
3232
3261
  exports.createGroupRenderer = createGroupRenderer;
3233
3262
  exports.createLabelRenderer = createLabelRenderer;
3234
3263
  exports.createLayoutRenderer = createLayoutRenderer;
@@ -3242,6 +3271,7 @@ exports.defaultCompoundField = defaultCompoundField;
3242
3271
  exports.defaultControlForField = defaultControlForField;
3243
3272
  exports.defaultDataProps = defaultDataProps;
3244
3273
  exports.defaultEvalHooks = defaultEvalHooks;
3274
+ exports.defaultGetChildNodes = defaultGetChildNodes;
3245
3275
  exports.defaultScalarField = defaultScalarField;
3246
3276
  exports.defaultSchemaInterface = defaultSchemaInterface;
3247
3277
  exports.defaultUseEvalExpressionHook = defaultUseEvalExpressionHook;
@@ -3388,6 +3418,7 @@ exports.visitControlDefinition = visitControlDefinition;
3388
3418
  exports.visitFormData = visitFormData;
3389
3419
  exports.visitFormDataInContext = visitFormDataInContext;
3390
3420
  exports.withScalarOptions = withScalarOptions;
3421
+ exports.wrapFormNode = wrapFormNode;
3391
3422
  exports.wrapLayout = wrapLayout;
3392
3423
  exports.wrapMarkup = wrapMarkup;
3393
3424
  exports.wrapMarkupAt = wrapMarkupAt;