@react-typed-forms/schemas 11.14.1 → 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.
- package/lib/components/DefaultArrayRenderer.d.ts +2 -1
- package/lib/controlRender.d.ts +4 -3
- package/lib/index.js +124 -64
- package/lib/index.js.map +1 -1
- package/lib/renderers.d.ts +2 -1
- package/lib/types.d.ts +24 -2
- package/package.json +1 -1
|
@@ -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;
|
package/lib/controlRender.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import 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";
|
|
@@ -18,6 +18,9 @@ export interface FormRenderer {
|
|
|
18
18
|
}
|
|
19
19
|
export interface AdornmentProps {
|
|
20
20
|
adornment: ControlAdornment;
|
|
21
|
+
dataContext?: ControlDataContext;
|
|
22
|
+
parentContext: ControlDataContext;
|
|
23
|
+
useExpr?: UseEvalExpressionHook;
|
|
21
24
|
designMode?: boolean;
|
|
22
25
|
}
|
|
23
26
|
export declare const AppendAdornmentPriority = 0;
|
|
@@ -118,7 +121,6 @@ export interface DataRendererProps extends ParentRendererProps {
|
|
|
118
121
|
required: boolean;
|
|
119
122
|
options: FieldOption[] | undefined | null;
|
|
120
123
|
hidden: boolean;
|
|
121
|
-
toArrayProps?: () => ArrayRendererProps;
|
|
122
124
|
}
|
|
123
125
|
export interface ActionRendererProps {
|
|
124
126
|
actionId: string;
|
|
@@ -175,7 +177,6 @@ export declare function ControlRenderer({ definition, fields, renderer, options,
|
|
|
175
177
|
parentPath?: JsonPath[];
|
|
176
178
|
}): React.JSX.Element;
|
|
177
179
|
export declare function defaultDataProps({ definition, field, control, formOptions, style, allowedOptions, schemaInterface, ...props }: DataControlProps): DataRendererProps;
|
|
178
|
-
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;
|
|
179
180
|
export interface ChildRendererOptions {
|
|
180
181
|
elementIndex?: number;
|
|
181
182
|
dataContext?: ControlDataContext;
|
package/lib/index.js
CHANGED
|
@@ -75,6 +75,7 @@ exports.ControlAdornmentType = void 0;
|
|
|
75
75
|
ControlAdornmentType["Accordion"] = "Accordion";
|
|
76
76
|
ControlAdornmentType["HelpText"] = "HelpText";
|
|
77
77
|
ControlAdornmentType["Icon"] = "Icon";
|
|
78
|
+
ControlAdornmentType["SetField"] = "SetField";
|
|
78
79
|
})(exports.ControlAdornmentType || (exports.ControlAdornmentType = {}));
|
|
79
80
|
exports.DataRenderType = void 0;
|
|
80
81
|
(function (DataRenderType) {
|
|
@@ -94,6 +95,7 @@ exports.DataRenderType = void 0;
|
|
|
94
95
|
DataRenderType["Group"] = "Group";
|
|
95
96
|
DataRenderType["NullToggle"] = "NullToggle";
|
|
96
97
|
DataRenderType["Jsonata"] = "Jsonata";
|
|
98
|
+
DataRenderType["Array"] = "Array";
|
|
97
99
|
})(exports.DataRenderType || (exports.DataRenderType = {}));
|
|
98
100
|
exports.SyncTextType = void 0;
|
|
99
101
|
(function (SyncTextType) {
|
|
@@ -167,6 +169,9 @@ function isTextfieldRenderer(options) {
|
|
|
167
169
|
function isDataGroupRenderer(options) {
|
|
168
170
|
return options.type === exports.DataRenderType.Group;
|
|
169
171
|
}
|
|
172
|
+
function isArrayRenderer(options) {
|
|
173
|
+
return options.type === exports.DataRenderType.Array;
|
|
174
|
+
}
|
|
170
175
|
|
|
171
176
|
function _arrayLikeToArray(r, a) {
|
|
172
177
|
(null == a || a > r.length) && (a = r.length);
|
|
@@ -1570,7 +1575,10 @@ function useControlRenderer(definition, fields, renderer, options) {
|
|
|
1570
1575
|
if (parentControl.isNull) return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
1571
1576
|
var adornments = (_definition$adornment = (_definition$adornment2 = definition.adornments) == null ? void 0 : _definition$adornment2.map(function (x) {
|
|
1572
1577
|
return renderer.renderAdornment({
|
|
1573
|
-
adornment: x
|
|
1578
|
+
adornment: x,
|
|
1579
|
+
dataContext: controlDataContext,
|
|
1580
|
+
parentContext: parentDataContext,
|
|
1581
|
+
useExpr: useExpr
|
|
1574
1582
|
});
|
|
1575
1583
|
})) != null ? _definition$adornment : [];
|
|
1576
1584
|
var labelAndChildren = renderControlLayout({
|
|
@@ -1690,7 +1698,7 @@ function ControlRenderer(_ref3) {
|
|
|
1690
1698
|
}
|
|
1691
1699
|
}
|
|
1692
1700
|
function defaultDataProps(_ref4) {
|
|
1693
|
-
var
|
|
1701
|
+
var _allowedOptions$value, _definition$children, _definition$renderOpt2;
|
|
1694
1702
|
var definition = _ref4.definition,
|
|
1695
1703
|
field = _ref4.field,
|
|
1696
1704
|
control = _ref4.control,
|
|
@@ -1700,9 +1708,6 @@ function defaultDataProps(_ref4) {
|
|
|
1700
1708
|
_ref4$schemaInterface = _ref4.schemaInterface,
|
|
1701
1709
|
schemaInterface = _ref4$schemaInterface === void 0 ? defaultSchemaInterface : _ref4$schemaInterface,
|
|
1702
1710
|
props = _objectWithoutPropertiesLoose(_ref4, _excluded$4);
|
|
1703
|
-
var lengthVal = (_definition$validator = definition.validators) == null ? void 0 : _definition$validator.find(function (x) {
|
|
1704
|
-
return x.type === exports.ValidatorType.Length;
|
|
1705
|
-
});
|
|
1706
1711
|
var className = cc(definition.styleClass);
|
|
1707
1712
|
var required = !!definition.required;
|
|
1708
1713
|
var fieldOptions = schemaInterface.getOptions(field);
|
|
@@ -1731,53 +1736,7 @@ function defaultDataProps(_ref4) {
|
|
|
1731
1736
|
hidden: !!formOptions.hidden,
|
|
1732
1737
|
className: className,
|
|
1733
1738
|
style: style
|
|
1734
|
-
}, props
|
|
1735
|
-
toArrayProps: field.collection && props.elementIndex == null ? function () {
|
|
1736
|
-
return defaultArrayProps(control, field, required, style, className, function (elementIndex) {
|
|
1737
|
-
var _control$elements$ele, _control$elements;
|
|
1738
|
-
return props.renderChild((_control$elements$ele = (_control$elements = control.elements) == null ? void 0 : _control$elements[elementIndex].uniqueId) != null ? _control$elements$ele : elementIndex, {
|
|
1739
|
-
type: exports.ControlDefinitionType.Data,
|
|
1740
|
-
field: definition.field,
|
|
1741
|
-
children: definition.children,
|
|
1742
|
-
hideTitle: true
|
|
1743
|
-
}, {
|
|
1744
|
-
elementIndex: elementIndex,
|
|
1745
|
-
dataContext: props.parentContext
|
|
1746
|
-
});
|
|
1747
|
-
}, lengthVal == null ? void 0 : lengthVal.min, lengthVal == null ? void 0 : lengthVal.max);
|
|
1748
|
-
} : undefined
|
|
1749
|
-
});
|
|
1750
|
-
}
|
|
1751
|
-
function defaultArrayProps(arrayControl, field, required, style, className, _renderElement, min, max) {
|
|
1752
|
-
var _field$displayName;
|
|
1753
|
-
var noun = (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
|
|
1754
|
-
return {
|
|
1755
|
-
arrayControl: arrayControl,
|
|
1756
|
-
required: required,
|
|
1757
|
-
addAction: {
|
|
1758
|
-
actionId: "add",
|
|
1759
|
-
actionText: "Add " + noun,
|
|
1760
|
-
onClick: function onClick() {
|
|
1761
|
-
return core.addElement(arrayControl, elementValueForField(field));
|
|
1762
|
-
}
|
|
1763
|
-
},
|
|
1764
|
-
removeAction: function removeAction(i) {
|
|
1765
|
-
return {
|
|
1766
|
-
actionId: "",
|
|
1767
|
-
actionText: "Remove",
|
|
1768
|
-
onClick: function onClick() {
|
|
1769
|
-
return core.removeElement(arrayControl, i);
|
|
1770
|
-
}
|
|
1771
|
-
};
|
|
1772
|
-
},
|
|
1773
|
-
renderElement: function renderElement(i) {
|
|
1774
|
-
return _renderElement(i);
|
|
1775
|
-
},
|
|
1776
|
-
className: cc(className),
|
|
1777
|
-
style: style,
|
|
1778
|
-
min: min,
|
|
1779
|
-
max: max
|
|
1780
|
-
};
|
|
1739
|
+
}, props);
|
|
1781
1740
|
}
|
|
1782
1741
|
function renderControlLayout(props) {
|
|
1783
1742
|
var c = props.definition,
|
|
@@ -1977,6 +1936,9 @@ function isIconAdornment(a) {
|
|
|
1977
1936
|
function isAccordionAdornment(a) {
|
|
1978
1937
|
return a.type === exports.ControlAdornmentType.Accordion;
|
|
1979
1938
|
}
|
|
1939
|
+
function isSetFieldAdornment(a) {
|
|
1940
|
+
return a.type === exports.ControlAdornmentType.SetField;
|
|
1941
|
+
}
|
|
1980
1942
|
function createLayoutRenderer(render, options) {
|
|
1981
1943
|
return _extends({
|
|
1982
1944
|
type: "layout",
|
|
@@ -2377,10 +2339,74 @@ function createInputConversion(ft) {
|
|
|
2377
2339
|
}
|
|
2378
2340
|
}
|
|
2379
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
|
+
}
|
|
2380
2406
|
function createDefaultArrayRenderer(options) {
|
|
2381
2407
|
return {
|
|
2382
|
-
render: function render(props,
|
|
2383
|
-
var renderAction =
|
|
2408
|
+
render: function render(props, _ref3) {
|
|
2409
|
+
var renderAction = _ref3.renderAction;
|
|
2384
2410
|
return /*#__PURE__*/React__default["default"].createElement(DefaultArrayRenderer, _extends({}, props, options, {
|
|
2385
2411
|
renderAction: renderAction
|
|
2386
2412
|
}));
|
|
@@ -2833,17 +2859,13 @@ function createDefaultDataRenderer(options) {
|
|
|
2833
2859
|
booleanOptions = _optionRenderer$boole.booleanOptions,
|
|
2834
2860
|
optionRenderer = _optionRenderer$boole.optionRenderer,
|
|
2835
2861
|
displayOnlyClass = _optionRenderer$boole.displayOnlyClass;
|
|
2862
|
+
var arrayRenderer = createDefaultArrayDataRenderer();
|
|
2836
2863
|
return createDataRenderer(function (props, renderers) {
|
|
2837
|
-
var
|
|
2864
|
+
var field = props.field;
|
|
2865
|
+
var fieldType = field.type;
|
|
2838
2866
|
var renderOptions = props.renderOptions;
|
|
2867
|
+
if (field.collection && props.elementIndex == null) return arrayRenderer.render(props, renderers);
|
|
2839
2868
|
var renderType = renderOptions.type;
|
|
2840
|
-
if (props.toArrayProps && renderType !== exports.DataRenderType.CheckList) {
|
|
2841
|
-
return function (p) {
|
|
2842
|
-
return _extends({}, p, {
|
|
2843
|
-
children: renderers.renderArray(props.toArrayProps())
|
|
2844
|
-
});
|
|
2845
|
-
};
|
|
2846
|
-
}
|
|
2847
2869
|
if (fieldType === exports.FieldType.Compound) {
|
|
2848
2870
|
var _ref5;
|
|
2849
2871
|
var groupOptions = (_ref5 = isDataGroupRenderer(renderOptions) ? renderOptions.groupOptions : undefined) != null ? _ref5 : {
|
|
@@ -2912,9 +2934,46 @@ function createDefaultAdornmentRenderer(options) {
|
|
|
2912
2934
|
type: "adornment",
|
|
2913
2935
|
render: function render(_ref6, renderers) {
|
|
2914
2936
|
var adornment = _ref6.adornment,
|
|
2915
|
-
designMode = _ref6.designMode
|
|
2937
|
+
designMode = _ref6.designMode,
|
|
2938
|
+
parentContext = _ref6.parentContext,
|
|
2939
|
+
useExpr = _ref6.useExpr;
|
|
2916
2940
|
return {
|
|
2917
2941
|
apply: function apply(rl) {
|
|
2942
|
+
if (isSetFieldAdornment(adornment) && useExpr) {
|
|
2943
|
+
var setFieldWrapper = function setFieldWrapper(_ref7) {
|
|
2944
|
+
var children = _ref7.children,
|
|
2945
|
+
adornment = _ref7.adornment,
|
|
2946
|
+
parentContext = _ref7.parentContext;
|
|
2947
|
+
var _dynamicHooks = dynamicHooks(parentContext),
|
|
2948
|
+
value = _dynamicHooks.value;
|
|
2949
|
+
var refField = findFieldPath(parentContext.fields, adornment.field);
|
|
2950
|
+
var otherField = refField ? lookupChildControl(parentContext, refField) : undefined;
|
|
2951
|
+
var always = !adornment.defaultOnly;
|
|
2952
|
+
core.useControlEffect(function () {
|
|
2953
|
+
return [value == null ? void 0 : value.value, (otherField == null ? void 0 : otherField.value) == null];
|
|
2954
|
+
}, function (_ref8) {
|
|
2955
|
+
var v = _ref8[0];
|
|
2956
|
+
otherField == null || otherField.setValue(function (x) {
|
|
2957
|
+
return always || x == null ? v : x;
|
|
2958
|
+
});
|
|
2959
|
+
}, true);
|
|
2960
|
+
return children;
|
|
2961
|
+
};
|
|
2962
|
+
var hook = useExpr(adornment.expression, function (x) {
|
|
2963
|
+
return x;
|
|
2964
|
+
});
|
|
2965
|
+
var dynamicHooks = useDynamicHooks({
|
|
2966
|
+
value: hook
|
|
2967
|
+
});
|
|
2968
|
+
var SetFieldWrapper = React.useCallback(setFieldWrapper, [dynamicHooks]);
|
|
2969
|
+
return wrapLayout(function (x) {
|
|
2970
|
+
return /*#__PURE__*/React__default["default"].createElement(SetFieldWrapper, {
|
|
2971
|
+
children: x,
|
|
2972
|
+
parentContext: parentContext,
|
|
2973
|
+
adornment: adornment
|
|
2974
|
+
});
|
|
2975
|
+
})(rl);
|
|
2976
|
+
}
|
|
2918
2977
|
if (isIconAdornment(adornment)) {
|
|
2919
2978
|
var _adornment$placement;
|
|
2920
2979
|
return appendMarkupAt((_adornment$placement = adornment.placement) != null ? _adornment$placement : exports.AdornmentPlacement.ControlStart, /*#__PURE__*/React__default["default"].createElement("i", {
|
|
@@ -3222,7 +3281,6 @@ exports.createVisibilityRenderer = createVisibilityRenderer;
|
|
|
3222
3281
|
exports.dataControl = dataControl;
|
|
3223
3282
|
exports.dateField = dateField;
|
|
3224
3283
|
exports.dateTimeField = dateTimeField;
|
|
3225
|
-
exports.defaultArrayProps = defaultArrayProps;
|
|
3226
3284
|
exports.defaultCompoundField = defaultCompoundField;
|
|
3227
3285
|
exports.defaultControlForField = defaultControlForField;
|
|
3228
3286
|
exports.defaultDataProps = defaultDataProps;
|
|
@@ -3264,6 +3322,7 @@ exports.htmlDisplayControl = htmlDisplayControl;
|
|
|
3264
3322
|
exports.intField = intField;
|
|
3265
3323
|
exports.isAccordionAdornment = isAccordionAdornment;
|
|
3266
3324
|
exports.isActionControlsDefinition = isActionControlsDefinition;
|
|
3325
|
+
exports.isArrayRenderer = isArrayRenderer;
|
|
3267
3326
|
exports.isCompoundField = isCompoundField;
|
|
3268
3327
|
exports.isControlDisabled = isControlDisabled;
|
|
3269
3328
|
exports.isControlReadonly = isControlReadonly;
|
|
@@ -3278,6 +3337,7 @@ exports.isGroupControl = isGroupControl;
|
|
|
3278
3337
|
exports.isGroupControlsDefinition = isGroupControlsDefinition;
|
|
3279
3338
|
exports.isIconAdornment = isIconAdornment;
|
|
3280
3339
|
exports.isScalarField = isScalarField;
|
|
3340
|
+
exports.isSetFieldAdornment = isSetFieldAdornment;
|
|
3281
3341
|
exports.isTextfieldRenderer = isTextfieldRenderer;
|
|
3282
3342
|
exports.jsonPathString = jsonPathString;
|
|
3283
3343
|
exports.jsonataExpr = jsonataExpr;
|