@react-typed-forms/schemas 11.15.0 → 11.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
- import { ArrayRendererRegistration } from "../renderers";
1
+ import { ArrayRendererRegistration, DataRendererRegistration } from "../renderers";
2
2
  import { ActionRendererProps, ArrayRendererProps } from "../controlRender";
3
3
  import React, { ReactNode } from "react";
4
+ export declare function createDefaultArrayDataRenderer(): DataRendererRegistration;
4
5
  export interface DefaultArrayRendererOptions {
5
6
  className?: string;
6
7
  removableClass?: string;
@@ -1,4 +1,4 @@
1
- import React, { CSSProperties, FC, Key, ReactElement, ReactNode } from "react";
1
+ import React, { FC, Key, ReactElement, ReactNode } from "react";
2
2
  import { Control } from "@react-typed-forms/core";
3
3
  import { AdornmentPlacement, ControlAdornment, ControlDefinition, DataControlDefinition, DisplayData, FieldOption, GroupRenderOptions, RenderOptions, SchemaField, SchemaInterface, SchemaValidator } from "./types";
4
4
  import { ControlDataContext, JsonPath } from "./util";
@@ -121,7 +121,6 @@ export interface DataRendererProps extends ParentRendererProps {
121
121
  required: boolean;
122
122
  options: FieldOption[] | undefined | null;
123
123
  hidden: boolean;
124
- toArrayProps?: () => ArrayRendererProps;
125
124
  }
126
125
  export interface ActionRendererProps {
127
126
  actionId: string;
@@ -178,7 +177,6 @@ export declare function ControlRenderer({ definition, fields, renderer, options,
178
177
  parentPath?: JsonPath[];
179
178
  }): React.JSX.Element;
180
179
  export declare function defaultDataProps({ definition, field, control, formOptions, style, allowedOptions, schemaInterface, ...props }: DataControlProps): DataRendererProps;
181
- export declare function defaultArrayProps(arrayControl: Control<any[] | undefined | null>, field: SchemaField, required: boolean, style: CSSProperties | undefined, className: string | undefined, renderElement: (elemIndex: number) => ReactNode, min: number | undefined | null, max: number | undefined | null): ArrayRendererProps;
182
180
  export interface ChildRendererOptions {
183
181
  elementIndex?: number;
184
182
  dataContext?: ControlDataContext;
package/lib/index.js CHANGED
@@ -95,6 +95,7 @@ exports.DataRenderType = void 0;
95
95
  DataRenderType["Group"] = "Group";
96
96
  DataRenderType["NullToggle"] = "NullToggle";
97
97
  DataRenderType["Jsonata"] = "Jsonata";
98
+ DataRenderType["Array"] = "Array";
98
99
  })(exports.DataRenderType || (exports.DataRenderType = {}));
99
100
  exports.SyncTextType = void 0;
100
101
  (function (SyncTextType) {
@@ -168,6 +169,9 @@ function isTextfieldRenderer(options) {
168
169
  function isDataGroupRenderer(options) {
169
170
  return options.type === exports.DataRenderType.Group;
170
171
  }
172
+ function isArrayRenderer(options) {
173
+ return options.type === exports.DataRenderType.Array;
174
+ }
171
175
 
172
176
  function _arrayLikeToArray(r, a) {
173
177
  (null == a || a > r.length) && (a = r.length);
@@ -1694,7 +1698,7 @@ function ControlRenderer(_ref3) {
1694
1698
  }
1695
1699
  }
1696
1700
  function defaultDataProps(_ref4) {
1697
- var _definition$validator, _allowedOptions$value, _definition$children, _definition$renderOpt2;
1701
+ var _allowedOptions$value, _definition$children, _definition$renderOpt2;
1698
1702
  var definition = _ref4.definition,
1699
1703
  field = _ref4.field,
1700
1704
  control = _ref4.control,
@@ -1704,9 +1708,6 @@ function defaultDataProps(_ref4) {
1704
1708
  _ref4$schemaInterface = _ref4.schemaInterface,
1705
1709
  schemaInterface = _ref4$schemaInterface === void 0 ? defaultSchemaInterface : _ref4$schemaInterface,
1706
1710
  props = _objectWithoutPropertiesLoose(_ref4, _excluded$4);
1707
- var lengthVal = (_definition$validator = definition.validators) == null ? void 0 : _definition$validator.find(function (x) {
1708
- return x.type === exports.ValidatorType.Length;
1709
- });
1710
1711
  var className = cc(definition.styleClass);
1711
1712
  var required = !!definition.required;
1712
1713
  var fieldOptions = schemaInterface.getOptions(field);
@@ -1735,53 +1736,7 @@ function defaultDataProps(_ref4) {
1735
1736
  hidden: !!formOptions.hidden,
1736
1737
  className: className,
1737
1738
  style: style
1738
- }, props, {
1739
- toArrayProps: field.collection && props.elementIndex == null ? function () {
1740
- return defaultArrayProps(control, field, required, style, className, function (elementIndex) {
1741
- var _control$elements$ele, _control$elements;
1742
- return props.renderChild((_control$elements$ele = (_control$elements = control.elements) == null ? void 0 : _control$elements[elementIndex].uniqueId) != null ? _control$elements$ele : elementIndex, {
1743
- type: exports.ControlDefinitionType.Data,
1744
- field: definition.field,
1745
- children: definition.children,
1746
- hideTitle: true
1747
- }, {
1748
- elementIndex: elementIndex,
1749
- dataContext: props.parentContext
1750
- });
1751
- }, lengthVal == null ? void 0 : lengthVal.min, lengthVal == null ? void 0 : lengthVal.max);
1752
- } : undefined
1753
- });
1754
- }
1755
- function defaultArrayProps(arrayControl, field, required, style, className, _renderElement, min, max) {
1756
- var _field$displayName;
1757
- var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
1758
- return {
1759
- arrayControl: arrayControl,
1760
- required: required,
1761
- addAction: {
1762
- actionId: "add",
1763
- actionText: "Add " + noun,
1764
- onClick: function onClick() {
1765
- return core.addElement(arrayControl, elementValueForField(field));
1766
- }
1767
- },
1768
- removeAction: function removeAction(i) {
1769
- return {
1770
- actionId: "",
1771
- actionText: "Remove",
1772
- onClick: function onClick() {
1773
- return core.removeElement(arrayControl, i);
1774
- }
1775
- };
1776
- },
1777
- renderElement: function renderElement(i) {
1778
- return _renderElement(i);
1779
- },
1780
- className: cc(className),
1781
- style: style,
1782
- min: min,
1783
- max: max
1784
- };
1739
+ }, props);
1785
1740
  }
1786
1741
  function renderControlLayout(props) {
1787
1742
  var c = props.definition,
@@ -2384,10 +2339,74 @@ function createInputConversion(ft) {
2384
2339
  }
2385
2340
  }
2386
2341
 
2342
+ function createDefaultArrayDataRenderer() {
2343
+ return createDataRenderer(function (_ref, renderers) {
2344
+ var _definition$validator, _field$displayName;
2345
+ var definition = _ref.definition,
2346
+ control = _ref.control,
2347
+ required = _ref.required,
2348
+ field = _ref.field,
2349
+ renderChild = _ref.renderChild,
2350
+ parentContext = _ref.parentContext,
2351
+ className = _ref.className,
2352
+ style = _ref.style,
2353
+ renderOptions = _ref.renderOptions;
2354
+ var lengthVal = (_definition$validator = definition.validators) == null ? void 0 : _definition$validator.find(function (x) {
2355
+ return x.type === exports.ValidatorType.Length;
2356
+ });
2357
+ var _ref2 = isArrayRenderer(renderOptions) ? renderOptions : {},
2358
+ addText = _ref2.addText,
2359
+ noAdd = _ref2.noAdd,
2360
+ noRemove = _ref2.noRemove,
2361
+ removeText = _ref2.removeText;
2362
+ var childOptions = isArrayRenderer(renderOptions) ? renderOptions.childOptions : undefined;
2363
+ var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
2364
+ var arrayProps = {
2365
+ arrayControl: control,
2366
+ required: required,
2367
+ addAction: !noAdd ? {
2368
+ actionId: "add",
2369
+ actionText: addText ? addText : "Add " + noun,
2370
+ onClick: function onClick() {
2371
+ return core.addElement(control, elementValueForField(field));
2372
+ }
2373
+ } : undefined,
2374
+ removeAction: !noRemove ? function (i) {
2375
+ return {
2376
+ actionId: "",
2377
+ actionText: removeText ? removeText : "Remove",
2378
+ onClick: function onClick() {
2379
+ return core.removeElement(control, i);
2380
+ }
2381
+ };
2382
+ } : undefined,
2383
+ renderElement: function renderElement(i) {
2384
+ var _control$elements$i$u, _control$elements;
2385
+ return renderChild((_control$elements$i$u = (_control$elements = control.elements) == null ? void 0 : _control$elements[i].uniqueId) != null ? _control$elements$i$u : i, {
2386
+ type: exports.ControlDefinitionType.Data,
2387
+ field: definition.field,
2388
+ children: definition.children,
2389
+ renderOptions: childOptions != null ? childOptions : {
2390
+ type: exports.DataRenderType.Standard
2391
+ },
2392
+ hideTitle: true
2393
+ }, {
2394
+ elementIndex: i,
2395
+ dataContext: parentContext
2396
+ });
2397
+ },
2398
+ className: cc(className),
2399
+ style: style,
2400
+ min: lengthVal == null ? void 0 : lengthVal.min,
2401
+ max: lengthVal == null ? void 0 : lengthVal.max
2402
+ };
2403
+ return renderers.renderArray(arrayProps);
2404
+ });
2405
+ }
2387
2406
  function createDefaultArrayRenderer(options) {
2388
2407
  return {
2389
- render: function render(props, _ref) {
2390
- var renderAction = _ref.renderAction;
2408
+ render: function render(props, _ref3) {
2409
+ var renderAction = _ref3.renderAction;
2391
2410
  return /*#__PURE__*/React__default["default"].createElement(DefaultArrayRenderer, _extends({}, props, options, {
2392
2411
  renderAction: renderAction
2393
2412
  }));
@@ -2840,17 +2859,13 @@ function createDefaultDataRenderer(options) {
2840
2859
  booleanOptions = _optionRenderer$boole.booleanOptions,
2841
2860
  optionRenderer = _optionRenderer$boole.optionRenderer,
2842
2861
  displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
2862
+ var arrayRenderer = createDefaultArrayDataRenderer();
2843
2863
  return createDataRenderer(function (props, renderers) {
2844
- var fieldType = props.field.type;
2864
+ var field = props.field;
2865
+ var fieldType = field.type;
2845
2866
  var renderOptions = props.renderOptions;
2867
+ if (field.collection && props.elementIndex == null) return arrayRenderer.render(props, renderers);
2846
2868
  var renderType = renderOptions.type;
2847
- if (props.toArrayProps && renderType !== exports.DataRenderType.CheckList) {
2848
- return function (p) {
2849
- return _extends({}, p, {
2850
- children: renderers.renderArray(props.toArrayProps())
2851
- });
2852
- };
2853
- }
2854
2869
  if (fieldType === exports.FieldType.Compound) {
2855
2870
  var _ref5;
2856
2871
  var groupOptions = (_ref5 = isDataGroupRenderer(renderOptions) ? renderOptions.groupOptions : undefined) != null ? _ref5 : {
@@ -2950,9 +2965,9 @@ function createDefaultAdornmentRenderer(options) {
2950
2965
  var dynamicHooks = useDynamicHooks({
2951
2966
  value: hook
2952
2967
  });
2953
- var _SetFieldWrapper = React.useCallback(setFieldWrapper, [dynamicHooks]);
2968
+ var SetFieldWrapper = React.useCallback(setFieldWrapper, [dynamicHooks]);
2954
2969
  return wrapLayout(function (x) {
2955
- return /*#__PURE__*/React__default["default"].createElement(_SetFieldWrapper, {
2970
+ return /*#__PURE__*/React__default["default"].createElement(SetFieldWrapper, {
2956
2971
  children: x,
2957
2972
  parentContext: parentContext,
2958
2973
  adornment: adornment
@@ -3266,7 +3281,6 @@ exports.createVisibilityRenderer = createVisibilityRenderer;
3266
3281
  exports.dataControl = dataControl;
3267
3282
  exports.dateField = dateField;
3268
3283
  exports.dateTimeField = dateTimeField;
3269
- exports.defaultArrayProps = defaultArrayProps;
3270
3284
  exports.defaultCompoundField = defaultCompoundField;
3271
3285
  exports.defaultControlForField = defaultControlForField;
3272
3286
  exports.defaultDataProps = defaultDataProps;
@@ -3308,6 +3322,7 @@ exports.htmlDisplayControl = htmlDisplayControl;
3308
3322
  exports.intField = intField;
3309
3323
  exports.isAccordionAdornment = isAccordionAdornment;
3310
3324
  exports.isActionControlsDefinition = isActionControlsDefinition;
3325
+ exports.isArrayRenderer = isArrayRenderer;
3311
3326
  exports.isCompoundField = isCompoundField;
3312
3327
  exports.isControlDisabled = isControlDisabled;
3313
3328
  exports.isControlReadonly = isControlReadonly;