@react-typed-forms/schemas 11.16.0 → 11.18.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,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
+ import { ArrayActionOptions } from "../types";
4
5
  export declare function createDefaultArrayDataRenderer(): DataRendererRegistration;
5
- export interface DefaultArrayRendererOptions {
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";
@@ -214,6 +214,11 @@ export declare function appendMarkupAt(pos: AdornmentPlacement, markup: ReactNod
214
214
  export declare function wrapMarkupAt(pos: AdornmentPlacement, wrap: (ex: ReactNode) => ReactNode): (layout: RenderedLayout) => void;
215
215
  export declare function renderLayoutParts(props: ControlLayoutProps, renderer: FormRenderer): RenderedLayout;
216
216
  export declare function controlTitle(title: string | undefined | null, field: SchemaField): string;
217
+ export declare function getLengthRestrictions(definition: DataControlDefinition): {
218
+ min: number | null | undefined;
219
+ max: number | null | undefined;
220
+ };
221
+ export declare function createArrayActions(control: Control<any[]>, field: SchemaField, options?: Pick<ArrayRenderOptions, "addText" | "removeText" | "noAdd" | "noRemove" | "addActionId" | "removeActionId">): Pick<ArrayRendererProps, "addAction" | "removeAction" | "arrayControl">;
217
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"> & {
218
223
  addDisabled: boolean;
219
224
  removeDisabled: boolean;
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) {
@@ -1911,14 +1929,54 @@ function renderLayoutParts(props, renderer) {
1911
1929
  function controlTitle(title, field) {
1912
1930
  return title ? title : fieldDisplayName(field);
1913
1931
  }
1914
- function applyArrayLengthRestrictions(_ref7, disable) {
1932
+ function getLengthRestrictions(definition) {
1933
+ var _definition$validator;
1934
+ var lengthVal = (_definition$validator = definition.validators) == null ? void 0 : _definition$validator.find(function (x) {
1935
+ return x.type === exports.ValidatorType.Length;
1936
+ });
1937
+ return {
1938
+ min: lengthVal == null ? void 0 : lengthVal.min,
1939
+ max: lengthVal == null ? void 0 : lengthVal.max
1940
+ };
1941
+ }
1942
+ function createArrayActions(control, field, options) {
1943
+ var _field$displayName;
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;
1952
+ return {
1953
+ arrayControl: control,
1954
+ addAction: !noAdd ? {
1955
+ actionId: addActionId ? addActionId : "add",
1956
+ actionText: addText ? addText : "Add " + noun,
1957
+ onClick: function onClick() {
1958
+ return core.addElement(control, elementValueForField(field));
1959
+ }
1960
+ } : undefined,
1961
+ removeAction: !noRemove ? function (i) {
1962
+ return {
1963
+ actionId: removeActionId ? removeActionId : "remove",
1964
+ actionText: removeText ? removeText : "Remove",
1965
+ onClick: function onClick() {
1966
+ return core.removeElement(control, i);
1967
+ }
1968
+ };
1969
+ } : undefined
1970
+ };
1971
+ }
1972
+ function applyArrayLengthRestrictions(_ref8, disable) {
1915
1973
  var _arrayControl$element, _arrayControl$element2;
1916
- var arrayControl = _ref7.arrayControl,
1917
- min = _ref7.min,
1918
- max = _ref7.max,
1919
- aa = _ref7.addAction,
1920
- ra = _ref7.removeAction,
1921
- 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;
1922
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),
1923
1981
  removeAllowed = _applyLengthRestricti[0],
1924
1982
  addAllowed = _applyLengthRestricti[1];
@@ -2341,7 +2399,6 @@ function createInputConversion(ft) {
2341
2399
 
2342
2400
  function createDefaultArrayDataRenderer() {
2343
2401
  return createDataRenderer(function (_ref, renderers) {
2344
- var _definition$validator, _field$displayName;
2345
2402
  var definition = _ref.definition,
2346
2403
  control = _ref.control,
2347
2404
  required = _ref.required,
@@ -2351,35 +2408,19 @@ function createDefaultArrayDataRenderer() {
2351
2408
  className = _ref.className,
2352
2409
  style = _ref.style,
2353
2410
  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
2411
  var _ref2 = isArrayRenderer(renderOptions) ? renderOptions : {},
2358
2412
  addText = _ref2.addText,
2359
2413
  noAdd = _ref2.noAdd,
2360
2414
  noRemove = _ref2.noRemove,
2361
2415
  removeText = _ref2.removeText;
2362
2416
  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,
2417
+ var arrayProps = _extends({}, createArrayActions(control, field, {
2418
+ addText: addText,
2419
+ removeText: removeText,
2420
+ noAdd: noAdd,
2421
+ noRemove: noRemove
2422
+ }), {
2366
2423
  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
2424
  renderElement: function renderElement(i) {
2384
2425
  var _control$elements$i$u, _control$elements;
2385
2426
  return renderChild((_control$elements$i$u = (_control$elements = control.elements) == null ? void 0 : _control$elements[i].uniqueId) != null ? _control$elements$i$u : i, {
@@ -2396,10 +2437,8 @@ function createDefaultArrayDataRenderer() {
2396
2437
  });
2397
2438
  },
2398
2439
  className: cc(className),
2399
- style: style,
2400
- min: lengthVal == null ? void 0 : lengthVal.min,
2401
- max: lengthVal == null ? void 0 : lengthVal.max
2402
- };
2440
+ style: style
2441
+ }, getLengthRestrictions(definition));
2403
2442
  return renderers.renderArray(arrayProps);
2404
2443
  });
2405
2444
  }
@@ -3254,6 +3293,7 @@ exports.controlTitle = controlTitle;
3254
3293
  exports.createAction = createAction;
3255
3294
  exports.createActionRenderer = createActionRenderer;
3256
3295
  exports.createAdornmentRenderer = createAdornmentRenderer;
3296
+ exports.createArrayActions = createArrayActions;
3257
3297
  exports.createArrayRenderer = createArrayRenderer;
3258
3298
  exports.createButtonActionRenderer = createButtonActionRenderer;
3259
3299
  exports.createCheckListRenderer = createCheckListRenderer;
@@ -3313,6 +3353,7 @@ exports.findScalarField = findScalarField;
3313
3353
  exports.getAllReferencedClasses = getAllReferencedClasses;
3314
3354
  exports.getControlData = getControlData;
3315
3355
  exports.getDisplayOnlyOptions = getDisplayOnlyOptions;
3356
+ exports.getLengthRestrictions = getLengthRestrictions;
3316
3357
  exports.getOverrideClass = getOverrideClass;
3317
3358
  exports.getTypeField = getTypeField;
3318
3359
  exports.groupedControl = groupedControl;
@@ -3353,6 +3394,7 @@ exports.makeScalarField = makeScalarField;
3353
3394
  exports.matchesType = matchesType;
3354
3395
  exports.mergeField = mergeField;
3355
3396
  exports.mergeFields = mergeFields;
3397
+ exports.mergeObjects = mergeObjects;
3356
3398
  exports.renderControlLayout = renderControlLayout;
3357
3399
  exports.renderLayoutParts = renderLayoutParts;
3358
3400
  exports.rendererClass = rendererClass;