@react-typed-forms/schemas 11.17.0 → 11.18.1

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,8 +1,9 @@
1
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;
5
- export interface DefaultArrayRendererOptions {
4
+ import { ArrayActionOptions } from "../types";
5
+ export declare function createDefaultArrayDataRenderer(defaultActions?: ArrayActionOptions): DataRendererRegistration;
6
+ export interface DefaultArrayRendererOptions extends ArrayActionOptions {
6
7
  className?: string;
7
8
  removableClass?: string;
8
9
  childClass?: string;
@@ -1,6 +1,6 @@
1
1
  import React, { FC, Key, ReactElement, ReactNode } from "react";
2
2
  import { Control } from "@react-typed-forms/core";
3
- import { AdornmentPlacement, ControlAdornment, ControlDefinition, DataControlDefinition, DisplayData, FieldOption, GroupRenderOptions, RenderOptions, SchemaField, SchemaInterface, SchemaValidator } from "./types";
3
+ import { AdornmentPlacement, ArrayRenderOptions, ControlAdornment, ControlDefinition, DataControlDefinition, DisplayData, FieldOption, GroupRenderOptions, RenderOptions, SchemaField, SchemaInterface, SchemaValidator } from "./types";
4
4
  import { ControlDataContext, JsonPath } from "./util";
5
5
  import { EvalExpressionHook, UseEvalExpressionHook } from "./hooks";
6
6
  import { ValidationContext } from "./validators";
@@ -218,7 +218,7 @@ export declare function getLengthRestrictions(definition: DataControlDefinition)
218
218
  min: number | null | undefined;
219
219
  max: number | null | undefined;
220
220
  };
221
- export declare function createArrayActions(control: Control<any[]>, field: SchemaField, addText?: string | null, removeText?: string | null, noAdd?: boolean | null, noRemove?: boolean | null): Pick<ArrayRendererProps, "addAction" | "removeAction" | "arrayControl">;
221
+ export declare function createArrayActions(control: Control<any[]>, field: SchemaField, options?: Pick<ArrayRenderOptions, "addText" | "removeText" | "noAdd" | "noRemove" | "addActionId" | "removeActionId">): Pick<ArrayRendererProps, "addAction" | "removeAction" | "arrayControl">;
222
222
  export declare function applyArrayLengthRestrictions({ arrayControl, min, max, addAction: aa, removeAction: ra, required, }: Pick<ArrayRendererProps, "addAction" | "removeAction" | "arrayControl" | "min" | "max" | "required">, disable?: boolean): Pick<ArrayRendererProps, "addAction" | "removeAction"> & {
223
223
  addDisabled: boolean;
224
224
  removeDisabled: boolean;
@@ -2,7 +2,7 @@ import { DefaultDisplayRendererOptions } from "./components/DefaultDisplay";
2
2
  import { DefaultLayoutRendererOptions } from "./components/DefaultLayout";
3
3
  import { ActionRendererRegistration, AdornmentRendererRegistration, DataRendererRegistration, DefaultRenderers, GroupRendererRegistration, LabelRendererRegistration } from "./renderers";
4
4
  import { CSSProperties, ReactElement, ReactNode } from "react";
5
- import { FieldOption, GridRenderer } from "./types";
5
+ import { ArrayActionOptions, FieldOption, GridRenderer } from "./types";
6
6
  import { SelectRendererOptions } from "./components/SelectDataRenderer";
7
7
  import { Control } from "@react-typed-forms/core";
8
8
  import { DefaultArrayRendererOptions } from "./components/DefaultArrayRenderer";
@@ -49,6 +49,7 @@ interface DefaultDataRendererOptions {
49
49
  optionRenderer?: DataRendererRegistration;
50
50
  multilineClass?: string;
51
51
  jsonataClass?: string;
52
+ arrayOptions?: ArrayActionOptions;
52
53
  }
53
54
  export declare function createDefaultDataRenderer(options?: DefaultDataRendererOptions): DataRendererRegistration;
54
55
  export interface DefaultAccordionRendererOptions {
package/lib/index.js CHANGED
@@ -683,6 +683,24 @@ function findFieldPath(fields, fieldPath) {
683
683
  }
684
684
  return foundFields.length === fieldNames.length ? foundFields : undefined;
685
685
  }
686
+ function mergeObjects(o1, o2, doMerge) {
687
+ if (doMerge === void 0) {
688
+ doMerge = function doMerge(_, v1, v2) {
689
+ return v1 != null ? v1 : v2;
690
+ };
691
+ }
692
+ if (!o1) return o2;
693
+ if (!o2) return o1;
694
+ var result = _extends({}, o1);
695
+ for (var key in o2) {
696
+ if (o2.hasOwnProperty(key)) {
697
+ var value1 = o1[key];
698
+ var value2 = o2[key];
699
+ result[key] = doMerge(key, value1, value2);
700
+ }
701
+ }
702
+ return result;
703
+ }
686
704
 
687
705
  function buildSchema(def) {
688
706
  return Object.entries(def).map(function (x) {
@@ -1921,13 +1939,20 @@ function getLengthRestrictions(definition) {
1921
1939
  max: lengthVal == null ? void 0 : lengthVal.max
1922
1940
  };
1923
1941
  }
1924
- function createArrayActions(control, field, addText, removeText, noAdd, noRemove) {
1942
+ function createArrayActions(control, field, options) {
1925
1943
  var _field$displayName;
1926
1944
  var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
1945
+ var _ref7 = options != null ? options : {},
1946
+ addText = _ref7.addText,
1947
+ noAdd = _ref7.noAdd,
1948
+ removeText = _ref7.removeText,
1949
+ noRemove = _ref7.noRemove,
1950
+ removeActionId = _ref7.removeActionId,
1951
+ addActionId = _ref7.addActionId;
1927
1952
  return {
1928
1953
  arrayControl: control,
1929
1954
  addAction: !noAdd ? {
1930
- actionId: "add",
1955
+ actionId: addActionId ? addActionId : "add",
1931
1956
  actionText: addText ? addText : "Add " + noun,
1932
1957
  onClick: function onClick() {
1933
1958
  return core.addElement(control, elementValueForField(field));
@@ -1935,7 +1960,7 @@ function createArrayActions(control, field, addText, removeText, noAdd, noRemove
1935
1960
  } : undefined,
1936
1961
  removeAction: !noRemove ? function (i) {
1937
1962
  return {
1938
- actionId: "remove",
1963
+ actionId: removeActionId ? removeActionId : "remove",
1939
1964
  actionText: removeText ? removeText : "Remove",
1940
1965
  onClick: function onClick() {
1941
1966
  return core.removeElement(control, i);
@@ -1944,14 +1969,14 @@ function createArrayActions(control, field, addText, removeText, noAdd, noRemove
1944
1969
  } : undefined
1945
1970
  };
1946
1971
  }
1947
- function applyArrayLengthRestrictions(_ref7, disable) {
1972
+ function applyArrayLengthRestrictions(_ref8, disable) {
1948
1973
  var _arrayControl$element, _arrayControl$element2;
1949
- var arrayControl = _ref7.arrayControl,
1950
- min = _ref7.min,
1951
- max = _ref7.max,
1952
- aa = _ref7.addAction,
1953
- ra = _ref7.removeAction,
1954
- required = _ref7.required;
1974
+ var arrayControl = _ref8.arrayControl,
1975
+ min = _ref8.min,
1976
+ max = _ref8.max,
1977
+ aa = _ref8.addAction,
1978
+ ra = _ref8.removeAction,
1979
+ required = _ref8.required;
1955
1980
  var _applyLengthRestricti = applyLengthRestrictions((_arrayControl$element = (_arrayControl$element2 = arrayControl.elements) == null ? void 0 : _arrayControl$element2.length) != null ? _arrayControl$element : 0, min == null && required ? 1 : min, max, true, true),
1956
1981
  removeAllowed = _applyLengthRestricti[0],
1957
1982
  addAllowed = _applyLengthRestricti[1];
@@ -2372,7 +2397,7 @@ function createInputConversion(ft) {
2372
2397
  }
2373
2398
  }
2374
2399
 
2375
- function createDefaultArrayDataRenderer() {
2400
+ function createDefaultArrayDataRenderer(defaultActions) {
2376
2401
  return createDataRenderer(function (_ref, renderers) {
2377
2402
  var definition = _ref.definition,
2378
2403
  control = _ref.control,
@@ -2383,13 +2408,18 @@ function createDefaultArrayDataRenderer() {
2383
2408
  className = _ref.className,
2384
2409
  style = _ref.style,
2385
2410
  renderOptions = _ref.renderOptions;
2386
- var _ref2 = isArrayRenderer(renderOptions) ? renderOptions : {},
2387
- addText = _ref2.addText,
2388
- noAdd = _ref2.noAdd,
2389
- noRemove = _ref2.noRemove,
2390
- removeText = _ref2.removeText;
2411
+ var _mergeObjects = mergeObjects(isArrayRenderer(renderOptions) ? renderOptions : {}, defaultActions),
2412
+ addText = _mergeObjects.addText,
2413
+ noAdd = _mergeObjects.noAdd,
2414
+ noRemove = _mergeObjects.noRemove,
2415
+ removeText = _mergeObjects.removeText;
2391
2416
  var childOptions = isArrayRenderer(renderOptions) ? renderOptions.childOptions : undefined;
2392
- var arrayProps = _extends({}, createArrayActions(control, field, addText, removeText, noAdd, noRemove), {
2417
+ var arrayProps = _extends({}, createArrayActions(control, field, {
2418
+ addText: addText,
2419
+ removeText: removeText,
2420
+ noAdd: noAdd,
2421
+ noRemove: noRemove
2422
+ }), {
2393
2423
  required: required,
2394
2424
  renderElement: function renderElement(i) {
2395
2425
  var _control$elements$i$u, _control$elements;
@@ -2414,8 +2444,8 @@ function createDefaultArrayDataRenderer() {
2414
2444
  }
2415
2445
  function createDefaultArrayRenderer(options) {
2416
2446
  return {
2417
- render: function render(props, _ref3) {
2418
- var renderAction = _ref3.renderAction;
2447
+ render: function render(props, _ref2) {
2448
+ var renderAction = _ref2.renderAction;
2419
2449
  return /*#__PURE__*/React__default["default"].createElement(DefaultArrayRenderer, _extends({}, props, options, {
2420
2450
  renderAction: renderAction
2421
2451
  }));
@@ -2868,13 +2898,15 @@ function createDefaultDataRenderer(options) {
2868
2898
  booleanOptions = _optionRenderer$boole.booleanOptions,
2869
2899
  optionRenderer = _optionRenderer$boole.optionRenderer,
2870
2900
  displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
2871
- var arrayRenderer = createDefaultArrayDataRenderer();
2901
+ var arrayRenderer = createDefaultArrayDataRenderer(options.arrayOptions);
2872
2902
  return createDataRenderer(function (props, renderers) {
2873
2903
  var field = props.field;
2874
2904
  var fieldType = field.type;
2875
2905
  var renderOptions = props.renderOptions;
2876
- if (field.collection && props.elementIndex == null) return arrayRenderer.render(props, renderers);
2877
2906
  var renderType = renderOptions.type;
2907
+ if (field.collection && props.elementIndex == null && renderType == exports.DataRenderType.Standard) {
2908
+ return arrayRenderer.render(props, renderers);
2909
+ }
2878
2910
  if (fieldType === exports.FieldType.Compound) {
2879
2911
  var _ref5;
2880
2912
  var groupOptions = (_ref5 = isDataGroupRenderer(renderOptions) ? renderOptions.groupOptions : undefined) != null ? _ref5 : {
@@ -3364,6 +3396,7 @@ exports.makeScalarField = makeScalarField;
3364
3396
  exports.matchesType = matchesType;
3365
3397
  exports.mergeField = mergeField;
3366
3398
  exports.mergeFields = mergeFields;
3399
+ exports.mergeObjects = mergeObjects;
3367
3400
  exports.renderControlLayout = renderControlLayout;
3368
3401
  exports.renderLayoutParts = renderLayoutParts;
3369
3402
  exports.rendererClass = rendererClass;