@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/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  var React = require('react');
2
+ var clsx = require('clsx');
2
3
  var core = require('@react-typed-forms/core');
3
4
  var jsonata = require('jsonata');
4
- var clsx = require('clsx');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
8
8
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
9
- var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
10
9
  var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
10
+ var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
11
11
 
12
12
  exports.FieldType = void 0;
13
13
  (function (FieldType) {
@@ -36,11 +36,15 @@ exports.DynamicPropertyType = void 0;
36
36
  DynamicPropertyType["DefaultValue"] = "DefaultValue";
37
37
  DynamicPropertyType["Readonly"] = "Readonly";
38
38
  DynamicPropertyType["Disabled"] = "Disabled";
39
+ DynamicPropertyType["Display"] = "Display";
40
+ DynamicPropertyType["Style"] = "Style";
41
+ DynamicPropertyType["LayoutStyle"] = "LayoutStyle";
39
42
  })(exports.DynamicPropertyType || (exports.DynamicPropertyType = {}));
40
43
  exports.ExpressionType = void 0;
41
44
  (function (ExpressionType) {
42
45
  ExpressionType["Jsonata"] = "Jsonata";
43
- ExpressionType["FieldValue"] = "FieldValue";
46
+ ExpressionType["Data"] = "Data";
47
+ ExpressionType["DataMatch"] = "FieldValue";
44
48
  ExpressionType["UserMatch"] = "UserMatch";
45
49
  })(exports.ExpressionType || (exports.ExpressionType = {}));
46
50
  exports.AdornmentPlacement = void 0;
@@ -55,6 +59,7 @@ exports.ControlAdornmentType = void 0;
55
59
  ControlAdornmentType["Tooltip"] = "Tooltip";
56
60
  ControlAdornmentType["Accordion"] = "Accordion";
57
61
  ControlAdornmentType["HelpText"] = "HelpText";
62
+ ControlAdornmentType["Icon"] = "Icon";
58
63
  })(exports.ControlAdornmentType || (exports.ControlAdornmentType = {}));
59
64
  exports.DataRenderType = void 0;
60
65
  (function (DataRenderType) {
@@ -69,6 +74,7 @@ exports.DataRenderType = void 0;
69
74
  DataRenderType["DateTime"] = "DateTime";
70
75
  DataRenderType["Checkbox"] = "Checkbox";
71
76
  DataRenderType["Dropdown"] = "Dropdown";
77
+ DataRenderType["DisplayOnly"] = "DisplayOnly";
72
78
  })(exports.DataRenderType || (exports.DataRenderType = {}));
73
79
  exports.SyncTextType = void 0;
74
80
  (function (SyncTextType) {
@@ -80,12 +86,14 @@ exports.GroupRenderType = void 0;
80
86
  (function (GroupRenderType) {
81
87
  GroupRenderType["Standard"] = "Standard";
82
88
  GroupRenderType["Grid"] = "Grid";
89
+ GroupRenderType["Flex"] = "Flex";
83
90
  GroupRenderType["GroupElement"] = "GroupElement";
84
91
  })(exports.GroupRenderType || (exports.GroupRenderType = {}));
85
92
  exports.DisplayDataType = void 0;
86
93
  (function (DisplayDataType) {
87
94
  DisplayDataType["Text"] = "Text";
88
95
  DisplayDataType["Html"] = "Html";
96
+ DisplayDataType["Icon"] = "Icon";
89
97
  })(exports.DisplayDataType || (exports.DisplayDataType = {}));
90
98
  exports.ValidatorType = void 0;
91
99
  (function (ValidatorType) {
@@ -126,6 +134,12 @@ function visitControlDefinition(x, visitor, defaultValue) {
126
134
  function isGridRenderer(options) {
127
135
  return options.type === exports.GroupRenderType.Grid;
128
136
  }
137
+ function isFlexRenderer(options) {
138
+ return options.type === exports.GroupRenderType.Flex;
139
+ }
140
+ function isDisplayOnlyRenderer(options) {
141
+ return options.type === exports.DataRenderType.DisplayOnly;
142
+ }
129
143
 
130
144
  function _extends() {
131
145
  _extends = Object.assign ? Object.assign.bind() : function (target) {
@@ -342,13 +356,10 @@ function hasOptions(o) {
342
356
  function defaultControlForField(sf) {
343
357
  if (isCompoundField(sf)) {
344
358
  return {
345
- type: exports.ControlDefinitionType.Group,
359
+ type: exports.ControlDefinitionType.Data,
346
360
  title: sf.displayName,
347
- compoundField: sf.field,
348
- groupOptions: {
349
- type: exports.GroupRenderType.Grid,
350
- hideTitle: false
351
- },
361
+ field: sf.field,
362
+ required: sf.required,
352
363
  children: sf.children.map(defaultControlForField)
353
364
  };
354
365
  } else if (isScalarField(sf)) {
@@ -418,6 +429,9 @@ function useUpdatedRef(a) {
418
429
  function isControlReadonly(c) {
419
430
  return isDataControl(c) && !!c.readonly;
420
431
  }
432
+ function getDisplayOnlyOptions(d) {
433
+ return isDataControlDefinition(d) && d.renderOptions && isDisplayOnlyRenderer(d.renderOptions) ? d.renderOptions : undefined;
434
+ }
421
435
  function getTypeField(context) {
422
436
  var _context$groupControl;
423
437
  var typeSchemaField = context.fields.find(function (x) {
@@ -466,7 +480,8 @@ function visitControlData(definition, ctx, cb) {
466
480
  if (isCompoundField(fieldData)) {
467
481
  var cfResult = visitControlDataArray(children, {
468
482
  fields: fieldData.children,
469
- groupControl: c
483
+ groupControl: c,
484
+ schemaInterface: ctx.schemaInterface
470
485
  }, cb);
471
486
  if (cfResult !== undefined) return cfResult;
472
487
  }
@@ -515,6 +530,15 @@ function cleanDataForSchema(v, fields) {
515
530
 
516
531
  return out;
517
532
  }
533
+ function getAllReferencedClasses(c) {
534
+ var _c$children;
535
+ var childClasses = (_c$children = c.children) == null ? void 0 : _c$children.flatMap(getAllReferencedClasses);
536
+ var tc = clsx__default["default"](c.styleClass, c.layoutClass);
537
+ if (childClasses && !tc) return childClasses;
538
+ if (!tc) return [];
539
+ if (childClasses) return [tc].concat(childClasses);
540
+ return [tc];
541
+ }
518
542
 
519
543
  function dataControl(field, title, options) {
520
544
  return _extends({
@@ -567,7 +591,7 @@ function dynamicDisabled(expr) {
567
591
  }
568
592
  function fieldEqExpr(field, value) {
569
593
  return {
570
- type: exports.ExpressionType.FieldValue,
594
+ type: exports.ExpressionType.DataMatch,
571
595
  field: field,
572
596
  value: value
573
597
  };
@@ -634,15 +658,23 @@ function useCalculatedControl(calculate) {
634
658
  });
635
659
  return c;
636
660
  }
661
+ function cc(n) {
662
+ return n ? n : undefined;
663
+ }
637
664
 
638
665
  function useEvalVisibilityHook(useEvalExpressionHook, definition, schemaField) {
639
666
  var dynamicVisibility = useEvalDynamicHook(definition, exports.DynamicPropertyType.Visible, useEvalExpressionHook);
640
- var r = useUpdatedRef(schemaField);
667
+ var r = useUpdatedRef({
668
+ schemaField: schemaField,
669
+ definition: definition
670
+ });
641
671
  return React.useCallback(function (ctx) {
642
672
  var _dynamicVisibility;
643
- var schemaField = r.current;
673
+ var _r$current = r.current,
674
+ schemaField = _r$current.schemaField,
675
+ definition = _r$current.definition;
644
676
  return (_dynamicVisibility = dynamicVisibility == null ? void 0 : dynamicVisibility(ctx)) != null ? _dynamicVisibility : core.useComputed(function () {
645
- return matchesType(ctx, schemaField == null ? void 0 : schemaField.onlyForTypes);
677
+ return matchesType(ctx, schemaField == null ? void 0 : schemaField.onlyForTypes) && (!schemaField || !hideDisplayOnly(ctx, schemaField, definition, ctx.schemaInterface));
646
678
  });
647
679
  }, [dynamicVisibility, r]);
648
680
  }
@@ -656,6 +688,13 @@ function useEvalReadonlyHook(useEvalExpressionHook, definition) {
656
688
  });
657
689
  }, [dynamicReadonly, r]);
658
690
  }
691
+ function useEvalStyleHook(useEvalExpressionHook, property, definition) {
692
+ var dynamicStyle = useEvalDynamicHook(definition, property, useEvalExpressionHook);
693
+ return React.useCallback(function (ctx) {
694
+ if (dynamicStyle) return dynamicStyle(ctx);
695
+ return core.useControl(undefined);
696
+ }, [dynamicStyle]);
697
+ }
659
698
  function useEvalDisabledHook(useEvalExpressionHook, definition) {
660
699
  var dynamicDisabled = useEvalDynamicHook(definition, exports.DynamicPropertyType.Disabled, useEvalExpressionHook);
661
700
  return React.useCallback(function (ctx) {
@@ -663,6 +702,12 @@ function useEvalDisabledHook(useEvalExpressionHook, definition) {
663
702
  return core.useControl(false);
664
703
  }, [dynamicDisabled]);
665
704
  }
705
+ function useEvalDisplayHook(useEvalExpressionHook, definition) {
706
+ var dynamicDisplay = useEvalDynamicHook(definition, exports.DynamicPropertyType.Display, useEvalExpressionHook);
707
+ return React.useCallback(function (ctx) {
708
+ return dynamicDisplay == null ? void 0 : dynamicDisplay(ctx);
709
+ }, [dynamicDisplay]);
710
+ }
666
711
  function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField) {
667
712
  var dynamicValue = useEvalDynamicHook(definition, exports.DynamicPropertyType.DefaultValue, useEvalExpressionHook);
668
713
  var r = useUpdatedRef({
@@ -671,9 +716,9 @@ function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField)
671
716
  });
672
717
  return React.useCallback(function (ctx) {
673
718
  var _dynamicValue;
674
- var _r$current = r.current,
675
- definition = _r$current.definition,
676
- schemaField = _r$current.schemaField;
719
+ var _r$current2 = r.current,
720
+ definition = _r$current2.definition,
721
+ schemaField = _r$current2.schemaField;
677
722
  return (_dynamicValue = dynamicValue == null ? void 0 : dynamicValue(ctx)) != null ? _dynamicValue : core.useComputed(calcDefault);
678
723
  function calcDefault() {
679
724
  var _ref = isDataControlDefinition(definition) ? [definition.required, definition.defaultValue] : [false, undefined],
@@ -683,7 +728,14 @@ function useEvalDefaultValueHook(useEvalExpressionHook, definition, schemaField)
683
728
  }
684
729
  }, [dynamicValue, r]);
685
730
  }
686
- function useFieldValueExpression(fvExpr, fields, data) {
731
+ function useDataExpression(fvExpr, fields, data) {
732
+ var refField = findField(fields, fvExpr.field);
733
+ var otherField = refField ? data.fields[refField.field] : undefined;
734
+ return useCalculatedControl(function () {
735
+ return otherField == null ? void 0 : otherField.value;
736
+ });
737
+ }
738
+ function useDataMatchExpression(fvExpr, fields, data) {
687
739
  var refField = findField(fields, fvExpr.field);
688
740
  var otherField = refField ? data.fields[refField.field] : undefined;
689
741
  return core.useComputed(function () {
@@ -695,8 +747,10 @@ function defaultEvalHooks(expr, context) {
695
747
  switch (expr.type) {
696
748
  case exports.ExpressionType.Jsonata:
697
749
  return useJsonataExpression(expr.expression, context.groupControl);
698
- case exports.ExpressionType.FieldValue:
699
- return useFieldValueExpression(expr, context.fields, context.groupControl);
750
+ case exports.ExpressionType.Data:
751
+ return useDataExpression(expr, context.fields, context.groupControl);
752
+ case exports.ExpressionType.DataMatch:
753
+ return useDataMatchExpression(expr, context.fields, context.groupControl);
700
754
  default:
701
755
  return core.useControl(undefined);
702
756
  }
@@ -724,9 +778,18 @@ function matchesType(context, types) {
724
778
  var typeField = getTypeField(context);
725
779
  return typeField && types.includes(typeField.value);
726
780
  }
781
+ function hideDisplayOnly(context, field, definition, schemaInterface) {
782
+ var displayOptions = getDisplayOnlyOptions(definition);
783
+ return displayOptions && !displayOptions.emptyText && schemaInterface.isEmptyValue(field, context.groupControl.fields[field.field].value);
784
+ }
727
785
  function useJsonataExpression(jExpr, data) {
728
786
  var compiledExpr = React.useMemo(function () {
729
- return jsonata__default["default"](jExpr);
787
+ try {
788
+ return jsonata__default["default"](jExpr);
789
+ } catch (e) {
790
+ console.error(e);
791
+ return jsonata__default["default"]("");
792
+ }
730
793
  }, [jExpr]);
731
794
  var control = core.useControl();
732
795
  core.useControlEffect(function () {
@@ -802,6 +865,31 @@ function useDateValidator(control, dv, i) {
802
865
  }, "date" + i);
803
866
  }
804
867
 
868
+ var defaultSchemaInterface = {
869
+ isEmptyValue: defaultIsEmpty,
870
+ textValue: defaultTextValue
871
+ };
872
+ function defaultIsEmpty(f, value) {
873
+ if (f.collection) return Array.isArray(value) ? value.length === 0 : value == null;
874
+ switch (f.type) {
875
+ case exports.FieldType.String:
876
+ return !value;
877
+ default:
878
+ return value == null;
879
+ }
880
+ }
881
+ function defaultTextValue(f, value) {
882
+ switch (f.type) {
883
+ case exports.FieldType.DateTime:
884
+ return new Date(value).toLocaleDateString();
885
+ case exports.FieldType.Date:
886
+ return new Date(value).toLocaleDateString();
887
+ default:
888
+ return value != null ? value.toString() : undefined;
889
+ }
890
+ }
891
+
892
+ var _excluded$1 = ["definition", "field", "control", "options", "elementRenderer", "style"];
805
893
  var AppendAdornmentPriority = 0;
806
894
  var WrapAdornmentPriority = 1000;
807
895
  exports.LabelType = void 0;
@@ -810,17 +898,21 @@ exports.LabelType = void 0;
810
898
  LabelType[LabelType["Group"] = 1] = "Group";
811
899
  })(exports.LabelType || (exports.LabelType = {}));
812
900
  function useControlRenderer(definition, fields, renderer, options) {
813
- var _options$useDataHook, _options$useEvalExpre;
901
+ var _options$useDataHook, _options$schemaInterf, _options$useEvalExpre;
814
902
  if (options === void 0) {
815
903
  options = {};
816
904
  }
817
905
  var dataProps = (_options$useDataHook = options.useDataHook == null ? void 0 : options.useDataHook(definition)) != null ? _options$useDataHook : defaultDataProps;
906
+ var schemaInterface = (_options$schemaInterf = options.schemaInterface) != null ? _options$schemaInterf : defaultSchemaInterface;
818
907
  var useExpr = (_options$useEvalExpre = options.useEvalExpressionHook) != null ? _options$useEvalExpre : defaultUseEvalExpressionHook;
819
908
  var schemaField = lookupSchemaField(definition, fields);
820
909
  var useDefaultValue = useEvalDefaultValueHook(useExpr, definition, schemaField);
821
910
  var useIsVisible = useEvalVisibilityHook(useExpr, definition, schemaField);
822
911
  var useIsReadonly = useEvalReadonlyHook(useExpr, definition);
823
912
  var useIsDisabled = useEvalDisabledHook(useExpr, definition);
913
+ var useCustomStyle = useEvalStyleHook(useExpr, exports.DynamicPropertyType.Style, definition);
914
+ var useLayoutStyle = useEvalStyleHook(useExpr, exports.DynamicPropertyType.LayoutStyle, definition);
915
+ var useDynamicDisplay = useEvalDisplayHook(useExpr, definition);
824
916
  var useValidation = useValidationHook(definition);
825
917
  var r = useUpdatedRef({
826
918
  options: options,
@@ -838,13 +930,17 @@ function useControlRenderer(definition, fields, renderer, options) {
838
930
  _options = _r$current.options,
839
931
  _fields = _r$current.fields,
840
932
  _schemaField = _r$current.schemaField;
841
- var groupContext = {
933
+ var dataContext = {
842
934
  groupControl: parentControl,
843
- fields: _fields
935
+ fields: _fields,
936
+ schemaInterface: schemaInterface
844
937
  };
845
- var readonlyControl = useIsReadonly(groupContext);
846
- var disabledControl = useIsDisabled(groupContext);
847
- var visibleControl = useIsVisible(groupContext);
938
+ var readonlyControl = useIsReadonly(dataContext);
939
+ var disabledControl = useIsDisabled(dataContext);
940
+ var visibleControl = useIsVisible(dataContext);
941
+ var displayControl = useDynamicDisplay(dataContext);
942
+ var customStyle = useCustomStyle(dataContext).value;
943
+ var layoutStyle = useLayoutStyle(dataContext).value;
848
944
  var visible = visibleControl.current.value;
849
945
  var visibility = core.useControl(function () {
850
946
  return visible != null ? {
@@ -862,23 +958,24 @@ function useControlRenderer(definition, fields, renderer, options) {
862
958
  };
863
959
  });
864
960
  });
865
- var defaultValueControl = useDefaultValue(groupContext);
866
- var _getControlData = getControlData(_schemaField, groupContext),
961
+ var defaultValueControl = useDefaultValue(dataContext);
962
+ var _getControlData = getControlData(_schemaField, dataContext),
867
963
  control = _getControlData[0],
868
964
  childContext = _getControlData[1];
869
965
  core.useControlEffect(function () {
870
- return [visibility.value, defaultValueControl.value, control, parentControl.isNull];
966
+ return [visibility.value, defaultValueControl.value, control, parentControl.isNull, isDataControlDefinition(definition) && definition.dontClearHidden];
871
967
  }, function (_ref2) {
872
968
  var vc = _ref2[0],
873
969
  dv = _ref2[1],
874
970
  cd = _ref2[2],
875
- pn = _ref2[3];
971
+ pn = _ref2[3],
972
+ dontClear = _ref2[4];
876
973
  if (pn) {
877
974
  parentControl.value = {};
878
975
  }
879
976
  if (vc && cd && vc.visible === vc.showing) {
880
977
  if (!vc.visible) {
881
- if (_options.clearHidden) cd.value = undefined;
978
+ if (_options.clearHidden && !dontClear) cd.value = undefined;
882
979
  } else if (cd.value == null) {
883
980
  cd.value = dv;
884
981
  }
@@ -892,7 +989,7 @@ function useControlRenderer(definition, fields, renderer, options) {
892
989
  disabled: _options.disabled || disabledControl.value
893
990
  };
894
991
  }).value;
895
- useValidation(control, !!myOptions.hidden, groupContext);
992
+ useValidation(control, !!myOptions.hidden, dataContext);
896
993
  var childRenderers = (_c$children$map = (_c$children = c.children) == null ? void 0 : _c$children.map(function (cd) {
897
994
  return useControlRenderer(cd, childContext.fields, renderer, _extends({}, _options, myOptions));
898
995
  })) != null ? _c$children$map : [];
@@ -905,21 +1002,36 @@ function useControlRenderer(definition, fields, renderer, options) {
905
1002
  adornment: x
906
1003
  });
907
1004
  })) != null ? _definition$adornment : [];
908
- var labelAndChildren = renderControlLayout(c, renderer, childRenderers.length, function (k, i, props) {
909
- var RenderChild = childRenderers[i];
910
- return /*#__PURE__*/React__default["default"].createElement(RenderChild, _extends({
911
- key: k
912
- }, props));
913
- }, dataProps, myOptions, groupContext, control, _schemaField);
914
- return renderer.renderVisibility(visibility, function () {
915
- return renderer.renderLayout(_extends({}, labelAndChildren, {
916
- adornments: adornments
917
- }));
1005
+ var labelAndChildren = renderControlLayout({
1006
+ definition: c,
1007
+ renderer: renderer,
1008
+ childCount: childRenderers.length,
1009
+ renderChild: function renderChild(k, i, props) {
1010
+ var RenderChild = childRenderers[i];
1011
+ return /*#__PURE__*/React__default["default"].createElement(RenderChild, _extends({
1012
+ key: k
1013
+ }, props));
1014
+ },
1015
+ createDataProps: dataProps,
1016
+ formOptions: myOptions,
1017
+ dataContext: dataContext,
1018
+ control: displayControl != null ? displayControl : control,
1019
+ schemaField: _schemaField,
1020
+ displayControl: displayControl,
1021
+ style: customStyle
918
1022
  });
1023
+ var renderedControl = renderer.renderLayout(_extends({}, labelAndChildren, {
1024
+ adornments: adornments,
1025
+ className: c.layoutClass,
1026
+ style: layoutStyle
1027
+ }));
1028
+ return renderer.renderVisibility(_extends({
1029
+ visibility: visibility
1030
+ }, renderedControl));
919
1031
  } finally {
920
1032
  stopTracking();
921
1033
  }
922
- }, [r, dataProps, useIsVisible, useDefaultValue, useIsReadonly, useIsDisabled, useValidation, renderer]);
1034
+ }, [r, dataProps, useIsVisible, useDefaultValue, useIsReadonly, useIsDisabled, useCustomStyle, useLayoutStyle, useDynamicDisplay, useValidation, renderer, schemaInterface]);
923
1035
  Component.displayName = "RenderControl";
924
1036
  return Component;
925
1037
  }
@@ -932,15 +1044,65 @@ function getControlData(schemaField, parentContext) {
932
1044
  var childControl = schemaField ? (_parentContext$groupC = (_parentContext$groupC2 = parentContext.groupControl.fields) == null ? void 0 : _parentContext$groupC2[schemaField.field]) != null ? _parentContext$groupC : core.newControl({}) : undefined;
933
1045
  return [childControl, schemaField && isCompoundField(schemaField) ? {
934
1046
  groupControl: childControl,
935
- fields: schemaField.children
1047
+ fields: schemaField.children,
1048
+ schemaInterface: parentContext.schemaInterface
936
1049
  } : parentContext];
937
1050
  }
938
- function renderArray(renderer, noun, field, required, arrayControl, _renderChild) {
939
- var _arrayControl$element;
1051
+ function groupProps(renderOptions, childCount, _renderChild, control, className, style) {
1052
+ if (renderOptions === void 0) {
1053
+ renderOptions = {
1054
+ type: "Standard"
1055
+ };
1056
+ }
1057
+ return {
1058
+ childCount: childCount,
1059
+ renderChild: function renderChild(i) {
1060
+ return _renderChild(i, i, {
1061
+ control: control
1062
+ });
1063
+ },
1064
+ renderOptions: renderOptions,
1065
+ className: cc(className),
1066
+ style: style
1067
+ };
1068
+ }
1069
+ function defaultDataProps(_ref3) {
1070
+ var _field$options$length, _field$options, _definition$renderOpt;
1071
+ var definition = _ref3.definition,
1072
+ field = _ref3.field,
1073
+ control = _ref3.control,
1074
+ options = _ref3.options,
1075
+ elementRenderer = _ref3.elementRenderer,
1076
+ style = _ref3.style,
1077
+ props = _objectWithoutPropertiesLoose(_ref3, _excluded$1);
1078
+ var className = cc(definition.styleClass);
1079
+ var required = !!definition.required;
1080
+ return _extends({
1081
+ control: control,
1082
+ field: field,
1083
+ id: "c" + control.uniqueId,
1084
+ options: ((_field$options$length = (_field$options = field.options) == null ? void 0 : _field$options.length) != null ? _field$options$length : 0) === 0 ? null : field.options,
1085
+ readonly: !!options.readonly,
1086
+ renderOptions: (_definition$renderOpt = definition.renderOptions) != null ? _definition$renderOpt : {
1087
+ type: "Standard"
1088
+ },
1089
+ required: required,
1090
+ hidden: !!options.hidden,
1091
+ className: className,
1092
+ style: style
1093
+ }, props, {
1094
+ toArrayProps: elementRenderer ? function () {
1095
+ return defaultArrayProps(control, field, required, style, className, elementRenderer);
1096
+ } : undefined
1097
+ });
1098
+ }
1099
+ function defaultArrayProps(arrayControl, field, required, style, className, _renderElement) {
1100
+ var _field$displayName, _arrayControl$element;
1101
+ var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
940
1102
  var elems = (_arrayControl$element = arrayControl.elements) != null ? _arrayControl$element : [];
941
- return renderer.renderArray({
1103
+ return {
942
1104
  arrayControl: arrayControl,
943
- childCount: elems.length,
1105
+ elementCount: elems.length,
944
1106
  required: required,
945
1107
  addAction: {
946
1108
  actionId: "add",
@@ -949,7 +1111,7 @@ function renderArray(renderer, noun, field, required, arrayControl, _renderChild
949
1111
  return core.addElement(arrayControl, elementValueForField(field));
950
1112
  }
951
1113
  },
952
- childKey: function childKey(i) {
1114
+ elementKey: function elementKey(i) {
953
1115
  return elems[i].uniqueId;
954
1116
  },
955
1117
  removeAction: function removeAction(i) {
@@ -961,43 +1123,25 @@ function renderArray(renderer, noun, field, required, arrayControl, _renderChild
961
1123
  }
962
1124
  };
963
1125
  },
964
- renderChild: function renderChild(i) {
965
- return _renderChild(i, elems[i]);
966
- }
967
- });
968
- }
969
- function groupProps(renderOptions, childCount, _renderChild2, control) {
970
- if (renderOptions === void 0) {
971
- renderOptions = {
972
- type: "Standard"
973
- };
974
- }
975
- return {
976
- childCount: childCount,
977
- renderChild: function renderChild(i) {
978
- return _renderChild2(i, i, {
979
- control: control
980
- });
1126
+ renderElement: function renderElement(i) {
1127
+ return _renderElement(elems[i]);
981
1128
  },
982
- renderOptions: renderOptions
1129
+ className: cc(className),
1130
+ style: style
983
1131
  };
984
1132
  }
985
- var defaultDataProps = function defaultDataProps(definition, field, groupContext, control, options) {
986
- var _field$options$length, _field$options, _definition$renderOpt;
987
- return {
988
- control: control,
989
- field: field,
990
- id: "c" + control.uniqueId,
991
- options: ((_field$options$length = (_field$options = field.options) == null ? void 0 : _field$options.length) != null ? _field$options$length : 0) === 0 ? null : field.options,
992
- readonly: !!options.readonly,
993
- renderOptions: (_definition$renderOpt = definition.renderOptions) != null ? _definition$renderOpt : {
994
- type: "Standard"
995
- },
996
- required: !!definition.required,
997
- hidden: !!options.hidden
998
- };
999
- };
1000
- function renderControlLayout(c, renderer, childCount, childRenderer, dataProps, dataOptions, groupContext, childControl, schemaField) {
1133
+ function renderControlLayout(_ref4) {
1134
+ var c = _ref4.definition,
1135
+ renderer = _ref4.renderer,
1136
+ childCount = _ref4.childCount,
1137
+ childRenderer = _ref4.renderChild,
1138
+ childControl = _ref4.control,
1139
+ schemaField = _ref4.schemaField,
1140
+ dataContext = _ref4.dataContext,
1141
+ dataOptions = _ref4.formOptions,
1142
+ dataProps = _ref4.createDataProps,
1143
+ displayControl = _ref4.displayControl,
1144
+ style = _ref4.style;
1001
1145
  if (isDataControlDefinition(c)) {
1002
1146
  return renderData(c);
1003
1147
  }
@@ -1011,7 +1155,7 @@ function renderControlLayout(c, renderer, childCount, childRenderer, dataProps,
1011
1155
  }));
1012
1156
  }
1013
1157
  return {
1014
- children: renderer.renderGroup(groupProps(c.groupOptions, childCount, childRenderer, groupContext.groupControl)),
1158
+ processLayout: renderer.renderGroup(groupProps(c.groupOptions, childCount, childRenderer, dataContext.groupControl, c.styleClass, style)),
1015
1159
  label: {
1016
1160
  label: c.title,
1017
1161
  type: exports.LabelType.Group,
@@ -1025,7 +1169,9 @@ function renderControlLayout(c, renderer, childCount, childRenderer, dataProps,
1025
1169
  children: renderer.renderAction({
1026
1170
  actionText: (_c$title = c.title) != null ? _c$title : c.actionId,
1027
1171
  actionId: c.actionId,
1028
- onClick: function onClick() {}
1172
+ onClick: function onClick() {},
1173
+ className: cc(c.styleClass),
1174
+ style: style
1029
1175
  })
1030
1176
  };
1031
1177
  }
@@ -1033,42 +1179,34 @@ function renderControlLayout(c, renderer, childCount, childRenderer, dataProps,
1033
1179
  var _c$displayData;
1034
1180
  return {
1035
1181
  children: renderer.renderDisplay({
1036
- data: (_c$displayData = c.displayData) != null ? _c$displayData : {}
1182
+ data: (_c$displayData = c.displayData) != null ? _c$displayData : {},
1183
+ className: cc(c.styleClass),
1184
+ style: style,
1185
+ display: displayControl
1037
1186
  })
1038
1187
  };
1039
1188
  }
1040
1189
  return {};
1041
- function renderData(c) {
1190
+ function renderData(c, elementControl) {
1042
1191
  if (!schemaField) return {
1043
1192
  children: "No schema field for: " + c.field
1044
1193
  };
1045
- if (isCompoundField(schemaField)) {
1046
- var label = {
1047
- hide: c.hideTitle,
1048
- label: controlTitle(c.title, schemaField),
1049
- type: schemaField.collection ? exports.LabelType.Control : exports.LabelType.Group
1050
- };
1051
- if (schemaField.collection) {
1052
- return {
1053
- label: label,
1054
- children: renderArray(renderer, controlTitle(c.title, schemaField), schemaField, !!c.required, childControl, compoundRenderer),
1055
- errorControl: childControl
1056
- };
1057
- }
1058
- return {
1059
- children: renderer.renderGroup(groupProps({
1060
- type: "Standard"
1061
- }, childCount, childRenderer, childControl)),
1062
- label: label,
1063
- errorControl: childControl
1064
- };
1065
- }
1066
- var props = dataProps(c, schemaField, groupContext, childControl, dataOptions);
1194
+ var props = dataProps({
1195
+ definition: c,
1196
+ field: schemaField,
1197
+ dataContext: dataContext,
1198
+ control: elementControl != null ? elementControl : childControl,
1199
+ options: dataOptions,
1200
+ style: style,
1201
+ childCount: childCount,
1202
+ renderChild: childRenderer,
1203
+ elementRenderer: elementControl == null && schemaField.collection ? function (element) {
1204
+ return renderLayoutParts(renderData(c, element), renderer).children;
1205
+ } : undefined
1206
+ });
1067
1207
  var labelText = !c.hideTitle ? controlTitle(c.title, schemaField) : undefined;
1068
1208
  return {
1069
- processLayout: renderer.renderData(props, schemaField.collection ? function () {
1070
- return renderArray(renderer, controlTitle(c.title, schemaField), schemaField, !!c.required, childControl, scalarRenderer(props));
1071
- } : undefined),
1209
+ processLayout: renderer.renderData(props),
1072
1210
  label: {
1073
1211
  type: exports.LabelType.Control,
1074
1212
  label: labelText,
@@ -1079,31 +1217,6 @@ function renderControlLayout(c, renderer, childCount, childRenderer, dataProps,
1079
1217
  errorControl: childControl
1080
1218
  };
1081
1219
  }
1082
- function compoundRenderer(i, control) {
1083
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1084
- key: control.uniqueId
1085
- }, renderer.renderGroup({
1086
- renderOptions: {
1087
- type: "Standard",
1088
- hideTitle: true
1089
- },
1090
- childCount: childCount,
1091
- renderChild: function renderChild(ci) {
1092
- return childRenderer(ci, ci, {
1093
- control: control
1094
- });
1095
- }
1096
- }));
1097
- }
1098
- function scalarRenderer(dataProps) {
1099
- return function (i, control) {
1100
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1101
- key: control.uniqueId
1102
- }, renderer.renderData(_extends({}, dataProps, {
1103
- control: control
1104
- }), undefined)({}).children);
1105
- };
1106
- }
1107
1220
  }
1108
1221
  function appendMarkup(k, markup) {
1109
1222
  return function (layout) {
@@ -1134,28 +1247,36 @@ function wrapMarkupAt(pos, wrap) {
1134
1247
  return wrapMarkup(layoutKeyForPlacement(pos), wrap);
1135
1248
  }
1136
1249
  function renderLayoutParts(props, renderer) {
1137
- var _props$processLayout, _processed$adornments;
1138
- var processed = (_props$processLayout = props.processLayout == null ? void 0 : props.processLayout(props)) != null ? _props$processLayout : props;
1250
+ var _props$processLayout;
1251
+ var _ref5 = (_props$processLayout = props.processLayout == null ? void 0 : props.processLayout(props)) != null ? _props$processLayout : props,
1252
+ className = _ref5.className,
1253
+ children = _ref5.children,
1254
+ style = _ref5.style,
1255
+ errorControl = _ref5.errorControl,
1256
+ label = _ref5.label,
1257
+ adornments = _ref5.adornments;
1139
1258
  var layout = {
1140
- children: processed.children,
1141
- errorControl: processed.errorControl
1259
+ children: children,
1260
+ errorControl: errorControl,
1261
+ style: style,
1262
+ className: cc(className)
1142
1263
  };
1143
- ((_processed$adornments = processed.adornments) != null ? _processed$adornments : []).sort(function (a, b) {
1264
+ (adornments != null ? adornments : []).sort(function (a, b) {
1144
1265
  return a.priority - b.priority;
1145
1266
  }).forEach(function (x) {
1146
1267
  return x.apply(layout);
1147
1268
  });
1148
- var l = processed.label;
1149
- layout.label = l && !l.hide ? renderer.renderLabel(l, layout.labelStart, layout.labelEnd) : undefined;
1269
+ layout.label = label && !label.hide ? renderer.renderLabel(label, layout.labelStart, layout.labelEnd) : undefined;
1150
1270
  return layout;
1151
1271
  }
1152
1272
  function controlTitle(title, field) {
1153
1273
  return title ? title : fieldDisplayName(field);
1154
1274
  }
1155
1275
 
1156
- var _excluded = ["control", "convert"],
1157
- _excluded2 = ["errorText", "value", "onChange"],
1158
- _excluded3 = ["state", "options", "className", "convert", "required", "emptyText", "requiredText"];
1276
+ var _excluded = ["data", "display", "className", "style"],
1277
+ _excluded2 = ["control", "convert"],
1278
+ _excluded3 = ["errorText", "value", "onChange"],
1279
+ _excluded4 = ["state", "options", "className", "convert", "required", "emptyText", "requiredText"];
1159
1280
  function createFormRenderer(customRenderers, defaultRenderers) {
1160
1281
  var _customRenderers$find;
1161
1282
  if (customRenderers === void 0) {
@@ -1209,7 +1330,7 @@ function createFormRenderer(customRenderers, defaultRenderers) {
1209
1330
  })) != null ? _labelRenderers$find : defaultRenderers.label;
1210
1331
  return renderer.render(props, labelStart, labelEnd, formRenderers);
1211
1332
  }
1212
- function renderData(props, asArray) {
1333
+ function renderData(props) {
1213
1334
  var _dataRegistrations$fi;
1214
1335
  var renderType = props.renderOptions.type,
1215
1336
  field = props.field;
@@ -1218,7 +1339,7 @@ function createFormRenderer(customRenderers, defaultRenderers) {
1218
1339
  var _x$collection, _field$collection, _x$options;
1219
1340
  return ((_x$collection = x.collection) != null ? _x$collection : false) === ((_field$collection = field.collection) != null ? _field$collection : false) && ((_x$options = x.options) != null ? _x$options : false) === options && isOneOf(x.schemaType, field.type) && isOneOf(x.renderType, renderType) && (!x.match || x.match(props));
1220
1341
  })) != null ? _dataRegistrations$fi : defaultRenderers.data;
1221
- var result = renderer.render(props, asArray, formRenderers);
1342
+ var result = renderer.render(props, formRenderers);
1222
1343
  if (typeof result === "function") return result;
1223
1344
  return function (l) {
1224
1345
  return _extends({}, l, {
@@ -1232,7 +1353,13 @@ function createFormRenderer(customRenderers, defaultRenderers) {
1232
1353
  var renderer = (_groupRegistrations$f = groupRegistrations.find(function (x) {
1233
1354
  return isOneOf(x.renderType, renderType);
1234
1355
  })) != null ? _groupRegistrations$f : defaultRenderers.group;
1235
- return renderer.render(props, formRenderers);
1356
+ var result = renderer.render(props, formRenderers);
1357
+ if (typeof result === "function") return result;
1358
+ return function (l) {
1359
+ return _extends({}, l, {
1360
+ children: result
1361
+ });
1362
+ };
1236
1363
  }
1237
1364
  function renderAction(props) {
1238
1365
  var _actionRenderers$find;
@@ -1297,29 +1424,29 @@ function createDefaultArrayRenderer(options) {
1297
1424
  removeActionClass = _ref2.removeActionClass,
1298
1425
  addActionClass = _ref2.addActionClass;
1299
1426
  function render(_ref3, _ref4) {
1300
- var childCount = _ref3.childCount,
1301
- renderChild = _ref3.renderChild,
1427
+ var elementCount = _ref3.elementCount,
1428
+ renderElement = _ref3.renderElement,
1302
1429
  addAction = _ref3.addAction,
1303
1430
  removeAction = _ref3.removeAction,
1304
- childKey = _ref3.childKey,
1431
+ elementKey = _ref3.elementKey,
1305
1432
  required = _ref3.required;
1306
1433
  var renderAction = _ref4.renderAction;
1307
- var showRemove = !required || childCount > 1;
1434
+ var showRemove = !required || elementCount > 1;
1308
1435
  return /*#__PURE__*/React__default["default"].createElement("div", null, /*#__PURE__*/React__default["default"].createElement("div", {
1309
1436
  className: clsx__default["default"](className, removeAction && removableClass)
1310
1437
  }, Array.from({
1311
- length: childCount
1438
+ length: elementCount
1312
1439
  }, function (_, x) {
1313
1440
  return removeAction ? /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
1314
- key: childKey(x)
1441
+ key: elementKey(x)
1315
1442
  }, /*#__PURE__*/React__default["default"].createElement("div", {
1316
1443
  className: clsx__default["default"](childClass, removableChildClass)
1317
- }, renderChild(x)), /*#__PURE__*/React__default["default"].createElement("div", {
1444
+ }, renderElement(x)), /*#__PURE__*/React__default["default"].createElement("div", {
1318
1445
  className: removeActionClass
1319
1446
  }, showRemove && renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
1320
- key: childKey(x),
1447
+ key: elementKey(x),
1321
1448
  className: childClass
1322
- }, renderChild(x));
1449
+ }, renderElement(x));
1323
1450
  })), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
1324
1451
  className: addActionClass
1325
1452
  }, renderAction(addAction)));
@@ -1337,7 +1464,9 @@ function createDefaultGroupRenderer(options) {
1337
1464
  _ref5$defaultGridColu = _ref5.defaultGridColumns,
1338
1465
  defaultGridColumns = _ref5$defaultGridColu === void 0 ? 2 : _ref5$defaultGridColu,
1339
1466
  gridClassName = _ref5.gridClassName,
1340
- standardClassName = _ref5.standardClassName;
1467
+ standardClassName = _ref5.standardClassName,
1468
+ flexClassName = _ref5.flexClassName,
1469
+ defaultFlexGap = _ref5.defaultFlexGap;
1341
1470
  function defaultGridStyles(_ref6) {
1342
1471
  var _ref6$columns = _ref6.columns,
1343
1472
  columns = _ref6$columns === void 0 ? defaultGridColumns : _ref6$columns;
@@ -1349,23 +1478,37 @@ function createDefaultGroupRenderer(options) {
1349
1478
  }
1350
1479
  };
1351
1480
  }
1481
+ function flexStyles(options) {
1482
+ return {
1483
+ className: flexClassName,
1484
+ style: {
1485
+ display: "flex",
1486
+ gap: options.gap ? options.gap : defaultFlexGap,
1487
+ flexDirection: options.direction ? options.direction : undefined
1488
+ }
1489
+ };
1490
+ }
1352
1491
  function render(props) {
1353
1492
  var childCount = props.childCount,
1354
1493
  renderChild = props.renderChild,
1355
1494
  renderOptions = props.renderOptions;
1356
- var _ref7 = isGridRenderer(renderOptions) ? gridStyles(renderOptions) : {
1495
+ var _ref7 = isGridRenderer(renderOptions) ? gridStyles(renderOptions) : isFlexRenderer(renderOptions) ? flexStyles(renderOptions) : {
1357
1496
  className: standardClassName
1358
1497
  },
1359
1498
  style = _ref7.style,
1360
1499
  gcn = _ref7.className;
1361
- return /*#__PURE__*/React__default["default"].createElement("div", {
1362
- className: clsx__default["default"](className, gcn),
1363
- style: style
1364
- }, Array.from({
1365
- length: childCount
1366
- }, function (_, x) {
1367
- return renderChild(x);
1368
- }));
1500
+ return function (cp) {
1501
+ return _extends({}, cp, {
1502
+ children: /*#__PURE__*/React__default["default"].createElement("div", {
1503
+ className: clsx__default["default"](props.className, className, gcn),
1504
+ style: style
1505
+ }, Array.from({
1506
+ length: childCount
1507
+ }, function (_, x) {
1508
+ return renderChild(x);
1509
+ }))
1510
+ });
1511
+ };
1369
1512
  }
1370
1513
  return {
1371
1514
  type: "group",
@@ -1377,27 +1520,47 @@ function createDefaultDisplayRenderer(options) {
1377
1520
  options = {};
1378
1521
  }
1379
1522
  return {
1380
- render: function render(_ref8) {
1381
- var data = _ref8.data;
1382
- switch (data.type) {
1383
- case exports.DisplayDataType.Text:
1384
- return /*#__PURE__*/React__default["default"].createElement("div", {
1385
- className: options.textClassName
1386
- }, data.text);
1387
- case exports.DisplayDataType.Html:
1388
- return /*#__PURE__*/React__default["default"].createElement("div", {
1389
- className: options.htmlClassName,
1390
- dangerouslySetInnerHTML: {
1391
- __html: data.html
1392
- }
1393
- });
1394
- default:
1395
- return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown display type: ", data.type);
1396
- }
1523
+ render: function render(props) {
1524
+ return /*#__PURE__*/React__default["default"].createElement(DefaultDisplay, _extends({}, options, props));
1397
1525
  },
1398
1526
  type: "display"
1399
1527
  };
1400
1528
  }
1529
+ function DefaultDisplay(_ref8) {
1530
+ var _effect = core.useComponentTracking();
1531
+ try {
1532
+ var _display$value;
1533
+ var data = _ref8.data,
1534
+ display = _ref8.display,
1535
+ className = _ref8.className,
1536
+ style = _ref8.style,
1537
+ options = _objectWithoutPropertiesLoose(_ref8, _excluded);
1538
+ switch (data.type) {
1539
+ case exports.DisplayDataType.Icon:
1540
+ return /*#__PURE__*/React__default["default"].createElement("i", {
1541
+ style: style,
1542
+ className: clsx__default["default"](className, display ? display.value : data.iconClass)
1543
+ });
1544
+ case exports.DisplayDataType.Text:
1545
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1546
+ style: style,
1547
+ className: clsx__default["default"](className, options.textClassName)
1548
+ }, display ? display.value : data.text);
1549
+ case exports.DisplayDataType.Html:
1550
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1551
+ style: style,
1552
+ className: clsx__default["default"](className, options.htmlClassName),
1553
+ dangerouslySetInnerHTML: {
1554
+ __html: display ? (_display$value = display.value) != null ? _display$value : "" : data.html
1555
+ }
1556
+ });
1557
+ default:
1558
+ return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown display type: ", data.type);
1559
+ }
1560
+ } finally {
1561
+ _effect();
1562
+ }
1563
+ }
1401
1564
  var DefaultBoolOptions = [{
1402
1565
  name: "Yes",
1403
1566
  value: true
@@ -1417,31 +1580,69 @@ function createDefaultDataRenderer(options) {
1417
1580
  }, options),
1418
1581
  inputClass = _optionRenderer$boole.inputClass,
1419
1582
  booleanOptions = _optionRenderer$boole.booleanOptions,
1420
- optionRenderer = _optionRenderer$boole.optionRenderer;
1421
- return createDataRenderer(function (props, asArray, renderers) {
1422
- if (asArray) {
1423
- return asArray();
1424
- }
1425
- var renderType = props.renderOptions.type;
1583
+ optionRenderer = _optionRenderer$boole.optionRenderer,
1584
+ displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
1585
+ return createDataRenderer(function (props, renderers) {
1426
1586
  var fieldType = props.field.type;
1587
+ if (props.toArrayProps) {
1588
+ return function (p) {
1589
+ return _extends({}, p, {
1590
+ children: renderers.renderArray(props.toArrayProps())
1591
+ });
1592
+ };
1593
+ }
1594
+ if (fieldType === exports.FieldType.Compound) {
1595
+ return renderers.renderGroup({
1596
+ style: props.style,
1597
+ className: props.className,
1598
+ renderOptions: {
1599
+ type: "Standard",
1600
+ hideTitle: true
1601
+ },
1602
+ renderChild: function renderChild(i) {
1603
+ return props.renderChild(i, i, {
1604
+ control: props.control
1605
+ });
1606
+ },
1607
+ childCount: props.childCount
1608
+ });
1609
+ }
1610
+ var renderOptions = props.renderOptions;
1611
+ var renderType = renderOptions.type;
1427
1612
  if (fieldType == exports.FieldType.Any) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, "No control for Any");
1613
+ if (isDisplayOnlyRenderer(renderOptions)) return function (p) {
1614
+ return _extends({}, p, {
1615
+ className: displayOnlyClass,
1616
+ children: /*#__PURE__*/React__default["default"].createElement(DefaultDisplayOnly, {
1617
+ field: props.field,
1618
+ schemaInterface: props.dataContext.schemaInterface,
1619
+ control: props.control,
1620
+ className: props.className,
1621
+ style: props.style,
1622
+ emptyText: renderOptions.emptyText
1623
+ })
1624
+ });
1625
+ };
1428
1626
  var isBool = fieldType === exports.FieldType.Bool;
1429
1627
  if (booleanOptions != null && isBool && props.options == null) {
1430
1628
  return renderers.renderData(_extends({}, props, {
1431
1629
  options: booleanOptions
1432
- }), undefined);
1630
+ }));
1433
1631
  }
1434
1632
  if (renderType === exports.DataRenderType.Standard && hasOptions(props)) {
1435
- return optionRenderer.render(props, undefined, renderers);
1633
+ return optionRenderer.render(props, renderers);
1436
1634
  }
1437
1635
  switch (renderType) {
1438
1636
  case exports.DataRenderType.Dropdown:
1439
- return selectRenderer.render(props, undefined, renderers);
1637
+ return selectRenderer.render(props, renderers);
1440
1638
  }
1441
1639
  return renderType === exports.DataRenderType.Checkbox ? /*#__PURE__*/React__default["default"].createElement(core.Fcheckbox, {
1640
+ style: props.style,
1641
+ className: props.className,
1442
1642
  control: props.control
1443
1643
  }) : /*#__PURE__*/React__default["default"].createElement(ControlInput, {
1444
- className: inputClass,
1644
+ className: clsx__default["default"](props.className, inputClass),
1645
+ style: props.style,
1445
1646
  id: props.id,
1446
1647
  readOnly: props.readonly,
1447
1648
  control: props.control,
@@ -1449,17 +1650,37 @@ function createDefaultDataRenderer(options) {
1449
1650
  });
1450
1651
  });
1451
1652
  }
1452
- function ControlInput(_ref9) {
1453
- var _effect = core.useComponentTracking();
1653
+ function DefaultDisplayOnly(_ref9) {
1654
+ var _effect2 = core.useComponentTracking();
1454
1655
  try {
1656
+ var _ref10;
1455
1657
  var control = _ref9.control,
1456
- convert = _ref9.convert,
1457
- props = _objectWithoutPropertiesLoose(_ref9, _excluded);
1658
+ className = _ref9.className,
1659
+ emptyText = _ref9.emptyText,
1660
+ schemaInterface = _ref9.schemaInterface,
1661
+ field = _ref9.field,
1662
+ style = _ref9.style;
1663
+ var v = control.value;
1664
+ var text = (_ref10 = schemaInterface.isEmptyValue(field, v) ? emptyText : schemaInterface.textValue(field, v)) != null ? _ref10 : "";
1665
+ return /*#__PURE__*/React__default["default"].createElement("div", {
1666
+ style: style,
1667
+ className: className
1668
+ }, text);
1669
+ } finally {
1670
+ _effect2();
1671
+ }
1672
+ }
1673
+ function ControlInput(_ref11) {
1674
+ var _effect3 = core.useComponentTracking();
1675
+ try {
1676
+ var control = _ref11.control,
1677
+ convert = _ref11.convert,
1678
+ props = _objectWithoutPropertiesLoose(_ref11, _excluded2);
1458
1679
  var _formControlProps = core.formControlProps(control),
1459
1680
  errorText = _formControlProps.errorText,
1460
1681
  value = _formControlProps.value,
1461
1682
  onChange = _formControlProps.onChange,
1462
- inputProps = _objectWithoutPropertiesLoose(_formControlProps, _excluded2);
1683
+ inputProps = _objectWithoutPropertiesLoose(_formControlProps, _excluded3);
1463
1684
  return /*#__PURE__*/React__default["default"].createElement("input", _extends({}, inputProps, {
1464
1685
  type: convert[0],
1465
1686
  value: value == null ? "" : convert[2](value),
@@ -1468,16 +1689,23 @@ function ControlInput(_ref9) {
1468
1689
  }
1469
1690
  }, props));
1470
1691
  } finally {
1471
- _effect();
1692
+ _effect3();
1472
1693
  }
1473
1694
  }
1474
1695
  function createDefaultAdornmentRenderer(options) {
1475
1696
  return {
1476
1697
  type: "adornment",
1477
- render: function render(_ref10) {
1478
- var adornment = _ref10.adornment;
1698
+ render: function render(_ref12) {
1699
+ var adornment = _ref12.adornment;
1479
1700
  return {
1480
- apply: function apply() {},
1701
+ apply: function apply(rl) {
1702
+ if (isIconAdornment(adornment)) {
1703
+ var _adornment$placement;
1704
+ return appendMarkupAt((_adornment$placement = adornment.placement) != null ? _adornment$placement : exports.AdornmentPlacement.ControlStart, /*#__PURE__*/React__default["default"].createElement("i", {
1705
+ className: adornment.iconClass
1706
+ }))(rl);
1707
+ }
1708
+ },
1481
1709
  priority: 0,
1482
1710
  adornment: adornment
1483
1711
  };
@@ -1505,9 +1733,19 @@ function createDefaultLayoutRenderer(options) {
1505
1733
  options = {};
1506
1734
  }
1507
1735
  return createLayoutRenderer(function (props, renderers) {
1508
- return /*#__PURE__*/React__default["default"].createElement(DefaultLayout, _extends({
1509
- layout: renderLayoutParts(props, renderers)
1510
- }, options));
1736
+ var layout = renderLayoutParts(_extends({}, props, {
1737
+ className: clsx__default["default"](props.className, options.className)
1738
+ }), renderers);
1739
+ return {
1740
+ children: /*#__PURE__*/React__default["default"].createElement(DefaultLayout, _extends({
1741
+ layout: layout
1742
+ }, options)),
1743
+ className: layout.className,
1744
+ style: layout.style,
1745
+ divRef: function divRef(e) {
1746
+ return e && props.errorControl ? props.errorControl.meta.scrollElement = e : undefined;
1747
+ }
1748
+ };
1511
1749
  });
1512
1750
  }
1513
1751
  function createClassStyledRenderers() {
@@ -1563,6 +1801,9 @@ function isArrayRegistration(x) {
1563
1801
  function isOneOf(x, v) {
1564
1802
  return x == null ? true : Array.isArray(x) ? x.includes(v) : v === x;
1565
1803
  }
1804
+ function isIconAdornment(a) {
1805
+ return a.type === exports.ControlAdornmentType.Icon;
1806
+ }
1566
1807
  function createLayoutRenderer(render, options) {
1567
1808
  return _extends({
1568
1809
  type: "layout",
@@ -1606,7 +1847,7 @@ function createSelectRenderer(options) {
1606
1847
  }
1607
1848
  return createDataRenderer(function (props, asArray) {
1608
1849
  return /*#__PURE__*/React__default["default"].createElement(SelectDataRenderer, {
1609
- className: options.className,
1850
+ className: clsx__default["default"](props.className, options.className),
1610
1851
  state: props.control,
1611
1852
  id: props.id,
1612
1853
  options: props.options,
@@ -1619,19 +1860,19 @@ function createSelectRenderer(options) {
1619
1860
  options: true
1620
1861
  });
1621
1862
  }
1622
- function SelectDataRenderer(_ref11) {
1623
- var _effect2 = core.useComponentTracking();
1863
+ function SelectDataRenderer(_ref13) {
1864
+ var _effect4 = core.useComponentTracking();
1624
1865
  try {
1625
- var state = _ref11.state,
1626
- options = _ref11.options,
1627
- className = _ref11.className,
1628
- convert = _ref11.convert,
1629
- required = _ref11.required,
1630
- _ref11$emptyText = _ref11.emptyText,
1631
- emptyText = _ref11$emptyText === void 0 ? "N/A" : _ref11$emptyText,
1632
- _ref11$requiredText = _ref11.requiredText,
1633
- requiredText = _ref11$requiredText === void 0 ? "<please select>" : _ref11$requiredText,
1634
- props = _objectWithoutPropertiesLoose(_ref11, _excluded3);
1866
+ var state = _ref13.state,
1867
+ options = _ref13.options,
1868
+ className = _ref13.className,
1869
+ convert = _ref13.convert,
1870
+ required = _ref13.required,
1871
+ _ref13$emptyText = _ref13.emptyText,
1872
+ emptyText = _ref13$emptyText === void 0 ? "N/A" : _ref13$emptyText,
1873
+ _ref13$requiredText = _ref13.requiredText,
1874
+ requiredText = _ref13$requiredText === void 0 ? "<please select>" : _ref13$requiredText,
1875
+ props = _objectWithoutPropertiesLoose(_ref13, _excluded4);
1635
1876
  var value = state.value,
1636
1877
  disabled = state.disabled;
1637
1878
  var _useState = React.useState(!required || value == null),
@@ -1658,7 +1899,7 @@ function SelectDataRenderer(_ref11) {
1658
1899
  }, x.name);
1659
1900
  }));
1660
1901
  } finally {
1661
- _effect2();
1902
+ _effect4();
1662
1903
  }
1663
1904
  }
1664
1905
  function createSelectConversion(ft) {
@@ -1718,18 +1959,18 @@ function createInputConversion(ft) {
1718
1959
  }
1719
1960
  }
1720
1961
  function createDefaultVisibilityRenderer() {
1721
- return createVisibilityRenderer(function (cv, ch) {
1722
- return /*#__PURE__*/React__default["default"].createElement(DefaultVisibility, {
1723
- visibility: cv,
1724
- children: ch
1725
- });
1962
+ return createVisibilityRenderer(function (props) {
1963
+ return /*#__PURE__*/React__default["default"].createElement(DefaultVisibility, props);
1726
1964
  });
1727
1965
  }
1728
- function DefaultVisibility(_ref12) {
1729
- var _effect3 = core.useComponentTracking();
1966
+ function DefaultVisibility(_ref14) {
1967
+ var _effect5 = core.useComponentTracking();
1730
1968
  try {
1731
- var visibility = _ref12.visibility,
1732
- children = _ref12.children;
1969
+ var visibility = _ref14.visibility,
1970
+ children = _ref14.children,
1971
+ className = _ref14.className,
1972
+ style = _ref14.style,
1973
+ divRef = _ref14.divRef;
1733
1974
  var v = visibility.value;
1734
1975
  React.useEffect(function () {
1735
1976
  if (v) {
@@ -1741,35 +1982,33 @@ function DefaultVisibility(_ref12) {
1741
1982
  });
1742
1983
  }
1743
1984
  }, [v == null ? void 0 : v.visible]);
1744
- return v != null && v.visible ? children() : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
1985
+ return v != null && v.visible ? /*#__PURE__*/React__default["default"].createElement("div", {
1986
+ className: clsx__default["default"](className),
1987
+ style: style,
1988
+ ref: divRef
1989
+ }, children) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
1745
1990
  } finally {
1746
- _effect3();
1991
+ _effect5();
1747
1992
  }
1748
1993
  }
1749
- function DefaultLayout(_ref13) {
1750
- var _effect4 = core.useComponentTracking();
1994
+ function DefaultLayout(_ref15) {
1995
+ var _effect6 = core.useComponentTracking();
1751
1996
  try {
1752
- var className = _ref13.className,
1753
- errorClass = _ref13.errorClass,
1754
- _ref13$layout = _ref13.layout,
1755
- controlEnd = _ref13$layout.controlEnd,
1756
- controlStart = _ref13$layout.controlStart,
1757
- label = _ref13$layout.label,
1758
- children = _ref13$layout.children,
1759
- errorControl = _ref13$layout.errorControl;
1997
+ var errorClass = _ref15.errorClass,
1998
+ className = _ref15.className,
1999
+ _ref15$layout = _ref15.layout,
2000
+ controlEnd = _ref15$layout.controlEnd,
2001
+ controlStart = _ref15$layout.controlStart,
2002
+ label = _ref15$layout.label,
2003
+ children = _ref15$layout.children,
2004
+ errorControl = _ref15$layout.errorControl;
1760
2005
  var ec = errorControl;
1761
2006
  var errorText = ec && ec.touched ? ec.error : undefined;
1762
- var refCb = React.useCallback(function (e) {
1763
- if (ec) ec.meta.scrollElement = e;
1764
- }, [ec]);
1765
- return /*#__PURE__*/React__default["default"].createElement("div", {
1766
- className: className,
1767
- ref: refCb
1768
- }, label, controlStart, children, errorText && /*#__PURE__*/React__default["default"].createElement("div", {
2007
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, label, controlStart, children, errorText && /*#__PURE__*/React__default["default"].createElement("div", {
1769
2008
  className: errorClass
1770
2009
  }, errorText), controlEnd);
1771
2010
  } finally {
1772
- _effect4();
2011
+ _effect6();
1773
2012
  }
1774
2013
  }
1775
2014
 
@@ -1786,8 +2025,9 @@ var defaultTailwindTheme = {
1786
2025
  addActionClass: "my-2"
1787
2026
  },
1788
2027
  group: {
1789
- standardClassName: "space-y-4",
1790
- gridClassName: "gap-x-2 gap-y-4"
2028
+ standardClassName: "flex flex-col gap-4",
2029
+ gridClassName: "gap-x-2 gap-y-4",
2030
+ flexClassName: "gap-2"
1791
2031
  },
1792
2032
  action: {
1793
2033
  className: "bg-primary rounded-lg p-3 text-white"
@@ -1795,12 +2035,17 @@ var defaultTailwindTheme = {
1795
2035
  layout: {
1796
2036
  className: "flex flex-col",
1797
2037
  errorClass: "text-sm text-danger-500"
2038
+ },
2039
+ data: {
2040
+ displayOnlyClass: "flex flex-row items-center gap-2"
1798
2041
  }
1799
2042
  };
1800
2043
 
1801
2044
  exports.AppendAdornmentPriority = AppendAdornmentPriority;
1802
2045
  exports.ControlInput = ControlInput;
1803
2046
  exports.DefaultBoolOptions = DefaultBoolOptions;
2047
+ exports.DefaultDisplay = DefaultDisplay;
2048
+ exports.DefaultDisplayOnly = DefaultDisplayOnly;
1804
2049
  exports.DefaultLayout = DefaultLayout;
1805
2050
  exports.DefaultVisibility = DefaultVisibility;
1806
2051
  exports.SelectDataRenderer = SelectDataRenderer;
@@ -1837,12 +2082,16 @@ exports.createSelectConversion = createSelectConversion;
1837
2082
  exports.createSelectRenderer = createSelectRenderer;
1838
2083
  exports.createVisibilityRenderer = createVisibilityRenderer;
1839
2084
  exports.dataControl = dataControl;
2085
+ exports.defaultArrayProps = defaultArrayProps;
1840
2086
  exports.defaultCompoundField = defaultCompoundField;
1841
2087
  exports.defaultControlForField = defaultControlForField;
1842
2088
  exports.defaultDataProps = defaultDataProps;
1843
2089
  exports.defaultEvalHooks = defaultEvalHooks;
2090
+ exports.defaultIsEmpty = defaultIsEmpty;
1844
2091
  exports.defaultScalarField = defaultScalarField;
2092
+ exports.defaultSchemaInterface = defaultSchemaInterface;
1845
2093
  exports.defaultTailwindTheme = defaultTailwindTheme;
2094
+ exports.defaultTextValue = defaultTextValue;
1846
2095
  exports.defaultUseEvalExpressionHook = defaultUseEvalExpressionHook;
1847
2096
  exports.defaultValueForField = defaultValueForField;
1848
2097
  exports.defaultValueForFields = defaultValueForFields;
@@ -1858,10 +2107,13 @@ exports.fieldHasTag = fieldHasTag;
1858
2107
  exports.findCompoundField = findCompoundField;
1859
2108
  exports.findField = findField;
1860
2109
  exports.findScalarField = findScalarField;
2110
+ exports.getAllReferencedClasses = getAllReferencedClasses;
1861
2111
  exports.getControlData = getControlData;
2112
+ exports.getDisplayOnlyOptions = getDisplayOnlyOptions;
1862
2113
  exports.getTypeField = getTypeField;
1863
2114
  exports.groupedControl = groupedControl;
1864
2115
  exports.hasOptions = hasOptions;
2116
+ exports.hideDisplayOnly = hideDisplayOnly;
1865
2117
  exports.htmlDisplayControl = htmlDisplayControl;
1866
2118
  exports.intField = intField;
1867
2119
  exports.isActionControlsDefinition = isActionControlsDefinition;
@@ -1870,9 +2122,12 @@ exports.isControlReadonly = isControlReadonly;
1870
2122
  exports.isDataControl = isDataControl;
1871
2123
  exports.isDataControlDefinition = isDataControlDefinition;
1872
2124
  exports.isDisplayControlsDefinition = isDisplayControlsDefinition;
2125
+ exports.isDisplayOnlyRenderer = isDisplayOnlyRenderer;
2126
+ exports.isFlexRenderer = isFlexRenderer;
1873
2127
  exports.isGridRenderer = isGridRenderer;
1874
2128
  exports.isGroupControl = isGroupControl;
1875
2129
  exports.isGroupControlsDefinition = isGroupControlsDefinition;
2130
+ exports.isIconAdornment = isIconAdornment;
1876
2131
  exports.isScalarField = isScalarField;
1877
2132
  exports.jsonataExpr = jsonataExpr;
1878
2133
  exports.layoutKeyForPlacement = layoutKeyForPlacement;
@@ -1890,8 +2145,10 @@ exports.useControlDefinitionForSchema = useControlDefinitionForSchema;
1890
2145
  exports.useControlRenderer = useControlRenderer;
1891
2146
  exports.useEvalDefaultValueHook = useEvalDefaultValueHook;
1892
2147
  exports.useEvalDisabledHook = useEvalDisabledHook;
2148
+ exports.useEvalDisplayHook = useEvalDisplayHook;
1893
2149
  exports.useEvalDynamicHook = useEvalDynamicHook;
1894
2150
  exports.useEvalReadonlyHook = useEvalReadonlyHook;
2151
+ exports.useEvalStyleHook = useEvalStyleHook;
1895
2152
  exports.useEvalVisibilityHook = useEvalVisibilityHook;
1896
2153
  exports.useJsonataExpression = useJsonataExpression;
1897
2154
  exports.useUpdatedRef = useUpdatedRef;