@react-typed-forms/schemas 1.0.0-dev.17 → 1.0.0-dev.19
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/.rush/temp/operation/build/state.json +1 -1
- package/.rush/temp/shrinkwrap-deps.json +5 -1
- package/lib/controlRender.d.ts +112 -100
- package/lib/hooks.d.ts +11 -9
- package/lib/index.d.ts +7 -5
- package/lib/index.js +1132 -139
- package/lib/index.js.map +1 -1
- package/lib/renderers.d.ts +153 -0
- package/lib/schemaBuilder.d.ts +87 -87
- package/lib/tailwind.d.ts +2 -0
- package/lib/types.d.ts +265 -234
- package/lib/util.d.ts +22 -3
- package/package.json +8 -4
- package/src/controlRender.tsx +172 -275
- package/src/hooks.tsx +441 -0
- package/src/index.ts +2 -0
- package/src/renderers.tsx +855 -0
- package/src/tailwind.tsx +21 -0
- package/src/types.ts +56 -17
- package/src/util.ts +204 -1
- package/src/hooks.ts +0 -173
package/lib/index.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
var React = require('react');
|
|
2
2
|
var core = require('@react-typed-forms/core');
|
|
3
|
+
var jsonata = require('jsonata');
|
|
4
|
+
var clsx = require('clsx');
|
|
3
5
|
|
|
4
6
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
5
7
|
|
|
6
8
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
|
+
var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
|
|
10
|
+
var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
|
|
7
11
|
|
|
8
12
|
function _extends() {
|
|
9
13
|
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
@@ -19,6 +23,49 @@ function _extends() {
|
|
|
19
23
|
};
|
|
20
24
|
return _extends.apply(this, arguments);
|
|
21
25
|
}
|
|
26
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
27
|
+
if (source == null) return {};
|
|
28
|
+
var target = {};
|
|
29
|
+
var sourceKeys = Object.keys(source);
|
|
30
|
+
var key, i;
|
|
31
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
32
|
+
key = sourceKeys[i];
|
|
33
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
34
|
+
target[key] = source[key];
|
|
35
|
+
}
|
|
36
|
+
return target;
|
|
37
|
+
}
|
|
38
|
+
function _unsupportedIterableToArray(o, minLen) {
|
|
39
|
+
if (!o) return;
|
|
40
|
+
if (typeof o === "string") return _arrayLikeToArray(o, minLen);
|
|
41
|
+
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
42
|
+
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
43
|
+
if (n === "Map" || n === "Set") return Array.from(o);
|
|
44
|
+
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
|
|
45
|
+
}
|
|
46
|
+
function _arrayLikeToArray(arr, len) {
|
|
47
|
+
if (len == null || len > arr.length) len = arr.length;
|
|
48
|
+
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
49
|
+
return arr2;
|
|
50
|
+
}
|
|
51
|
+
function _createForOfIteratorHelperLoose(o, allowArrayLike) {
|
|
52
|
+
var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
|
|
53
|
+
if (it) return (it = it.call(o)).next.bind(it);
|
|
54
|
+
if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
|
|
55
|
+
if (it) o = it;
|
|
56
|
+
var i = 0;
|
|
57
|
+
return function () {
|
|
58
|
+
if (i >= o.length) return {
|
|
59
|
+
done: true
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
done: false,
|
|
63
|
+
value: o[i++]
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
68
|
+
}
|
|
22
69
|
|
|
23
70
|
exports.FieldType = void 0;
|
|
24
71
|
(function (FieldType) {
|
|
@@ -52,10 +99,18 @@ exports.ExpressionType = void 0;
|
|
|
52
99
|
ExpressionType["FieldValue"] = "FieldValue";
|
|
53
100
|
ExpressionType["UserMatch"] = "UserMatch";
|
|
54
101
|
})(exports.ExpressionType || (exports.ExpressionType = {}));
|
|
102
|
+
exports.AdornmentPlacement = void 0;
|
|
103
|
+
(function (AdornmentPlacement) {
|
|
104
|
+
AdornmentPlacement["ControlStart"] = "ControlStart";
|
|
105
|
+
AdornmentPlacement["ControlEnd"] = "ControlEnd";
|
|
106
|
+
AdornmentPlacement["LabelStart"] = "LabelStart";
|
|
107
|
+
AdornmentPlacement["LabelEnd"] = "LabelEnd";
|
|
108
|
+
})(exports.AdornmentPlacement || (exports.AdornmentPlacement = {}));
|
|
55
109
|
exports.ControlAdornmentType = void 0;
|
|
56
110
|
(function (ControlAdornmentType) {
|
|
57
111
|
ControlAdornmentType["Tooltip"] = "Tooltip";
|
|
58
112
|
ControlAdornmentType["Accordion"] = "Accordion";
|
|
113
|
+
ControlAdornmentType["HelpText"] = "HelpText";
|
|
59
114
|
})(exports.ControlAdornmentType || (exports.ControlAdornmentType = {}));
|
|
60
115
|
exports.DataRenderType = void 0;
|
|
61
116
|
(function (DataRenderType) {
|
|
@@ -68,6 +123,8 @@ exports.DataRenderType = void 0;
|
|
|
68
123
|
DataRenderType["Synchronised"] = "Synchronised";
|
|
69
124
|
DataRenderType["IconSelector"] = "IconSelector";
|
|
70
125
|
DataRenderType["DateTime"] = "DateTime";
|
|
126
|
+
DataRenderType["Checkbox"] = "Checkbox";
|
|
127
|
+
DataRenderType["Dropdown"] = "Dropdown";
|
|
71
128
|
})(exports.DataRenderType || (exports.DataRenderType = {}));
|
|
72
129
|
exports.SyncTextType = void 0;
|
|
73
130
|
(function (SyncTextType) {
|
|
@@ -86,6 +143,16 @@ exports.DisplayDataType = void 0;
|
|
|
86
143
|
DisplayDataType["Text"] = "Text";
|
|
87
144
|
DisplayDataType["Html"] = "Html";
|
|
88
145
|
})(exports.DisplayDataType || (exports.DisplayDataType = {}));
|
|
146
|
+
exports.ValidatorType = void 0;
|
|
147
|
+
(function (ValidatorType) {
|
|
148
|
+
ValidatorType["Jsonata"] = "Jsonata";
|
|
149
|
+
ValidatorType["Date"] = "Date";
|
|
150
|
+
})(exports.ValidatorType || (exports.ValidatorType = {}));
|
|
151
|
+
exports.DateComparison = void 0;
|
|
152
|
+
(function (DateComparison) {
|
|
153
|
+
DateComparison["NotBefore"] = "NotBefore";
|
|
154
|
+
DateComparison["NotAfter"] = "NotAfter";
|
|
155
|
+
})(exports.DateComparison || (exports.DateComparison = {}));
|
|
89
156
|
function isDataControlDefinition(x) {
|
|
90
157
|
return x.type === exports.ControlDefinitionType.Data;
|
|
91
158
|
}
|
|
@@ -131,6 +198,9 @@ function visibility(expr) {
|
|
|
131
198
|
expr: expr
|
|
132
199
|
};
|
|
133
200
|
}
|
|
201
|
+
function isGridRenderer(options) {
|
|
202
|
+
return options.type === exports.GroupRenderType.Grid;
|
|
203
|
+
}
|
|
134
204
|
|
|
135
205
|
function buildSchema(def) {
|
|
136
206
|
return Object.entries(def).map(function (x) {
|
|
@@ -206,50 +276,6 @@ function defaultCompoundField(field, displayName, collection) {
|
|
|
206
276
|
};
|
|
207
277
|
}
|
|
208
278
|
|
|
209
|
-
function fieldHasTag(field, tag) {
|
|
210
|
-
var _field$tags;
|
|
211
|
-
return Boolean((_field$tags = field.tags) == null ? void 0 : _field$tags.includes(tag));
|
|
212
|
-
}
|
|
213
|
-
function fieldDisplayName(field) {
|
|
214
|
-
var _field$displayName;
|
|
215
|
-
return (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
var _FormRendererComponentsContext = null;
|
|
219
|
-
function FormRendererComponentsContext() {
|
|
220
|
-
if (!_FormRendererComponentsContext) {
|
|
221
|
-
_FormRendererComponentsContext = React.createContext(undefined);
|
|
222
|
-
}
|
|
223
|
-
return _FormRendererComponentsContext;
|
|
224
|
-
}
|
|
225
|
-
function FormRendererProvider(_ref) {
|
|
226
|
-
var _effect = core.useComponentTracking();
|
|
227
|
-
try {
|
|
228
|
-
var value = _ref.value,
|
|
229
|
-
children = _ref.children;
|
|
230
|
-
var _FormRendererComponen = FormRendererComponentsContext(),
|
|
231
|
-
Provider = _FormRendererComponen.Provider;
|
|
232
|
-
return /*#__PURE__*/React__default["default"].createElement(Provider, {
|
|
233
|
-
value: value,
|
|
234
|
-
children: children
|
|
235
|
-
});
|
|
236
|
-
} finally {
|
|
237
|
-
_effect();
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
function useFormRendererComponents() {
|
|
241
|
-
var c = React.useContext(FormRendererComponentsContext());
|
|
242
|
-
if (!c) {
|
|
243
|
-
throw "Need to use FormRendererComponentContext.Provider";
|
|
244
|
-
}
|
|
245
|
-
return c;
|
|
246
|
-
}
|
|
247
|
-
function isScalarField(sf) {
|
|
248
|
-
return !isCompoundField(sf);
|
|
249
|
-
}
|
|
250
|
-
function isCompoundField(sf) {
|
|
251
|
-
return sf.type === exports.FieldType.Compound;
|
|
252
|
-
}
|
|
253
279
|
function applyDefaultValues(v, fields) {
|
|
254
280
|
if (!v) return defaultValueForFields(fields);
|
|
255
281
|
var applyValue = fields.filter(function (x) {
|
|
@@ -303,18 +329,142 @@ function findField(fields, field) {
|
|
|
303
329
|
return x.field === field;
|
|
304
330
|
});
|
|
305
331
|
}
|
|
332
|
+
function isScalarField(sf) {
|
|
333
|
+
return !isCompoundField(sf);
|
|
334
|
+
}
|
|
335
|
+
function isCompoundField(sf) {
|
|
336
|
+
return sf.type === exports.FieldType.Compound;
|
|
337
|
+
}
|
|
338
|
+
function isDataControl(c) {
|
|
339
|
+
return c.type === exports.ControlDefinitionType.Data;
|
|
340
|
+
}
|
|
341
|
+
function isGroupControl(c) {
|
|
342
|
+
return c.type === exports.ControlDefinitionType.Group;
|
|
343
|
+
}
|
|
344
|
+
function fieldHasTag(field, tag) {
|
|
345
|
+
var _field$tags;
|
|
346
|
+
return Boolean((_field$tags = field.tags) == null ? void 0 : _field$tags.includes(tag));
|
|
347
|
+
}
|
|
348
|
+
function fieldDisplayName(field) {
|
|
349
|
+
var _field$displayName;
|
|
350
|
+
return (_field$displayName = field.displayName) != null ? _field$displayName : field.field;
|
|
351
|
+
}
|
|
352
|
+
function hasOptions(o) {
|
|
353
|
+
var _o$options$length, _o$options;
|
|
354
|
+
return ((_o$options$length = (_o$options = o.options) == null ? void 0 : _o$options.length) != null ? _o$options$length : 0) > 0;
|
|
355
|
+
}
|
|
356
|
+
function defaultControlForField(sf) {
|
|
357
|
+
if (isCompoundField(sf)) {
|
|
358
|
+
return {
|
|
359
|
+
type: exports.ControlDefinitionType.Group,
|
|
360
|
+
title: sf.displayName,
|
|
361
|
+
compoundField: sf.field,
|
|
362
|
+
groupOptions: {
|
|
363
|
+
type: exports.GroupRenderType.Grid,
|
|
364
|
+
hideTitle: false
|
|
365
|
+
},
|
|
366
|
+
children: sf.children.map(defaultControlForField)
|
|
367
|
+
};
|
|
368
|
+
} else if (isScalarField(sf)) {
|
|
369
|
+
var _sf$tags;
|
|
370
|
+
var htmlEditor = (_sf$tags = sf.tags) == null ? void 0 : _sf$tags.includes("_HtmlEditor");
|
|
371
|
+
return {
|
|
372
|
+
type: exports.ControlDefinitionType.Data,
|
|
373
|
+
title: sf.displayName,
|
|
374
|
+
field: sf.field,
|
|
375
|
+
required: sf.required,
|
|
376
|
+
renderOptions: {
|
|
377
|
+
type: htmlEditor ? exports.DataRenderType.HtmlEditor : exports.DataRenderType.Standard
|
|
378
|
+
}
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
throw "Unknown schema field";
|
|
382
|
+
}
|
|
383
|
+
function findReferencedControl(field, control) {
|
|
384
|
+
if (isDataControl(control) && field === control.field) return control;
|
|
385
|
+
if (isGroupControl(control)) {
|
|
386
|
+
if (control.compoundField) return field === control.compoundField ? control : undefined;
|
|
387
|
+
return findReferencedControlInArray(field, control.children);
|
|
388
|
+
}
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
function findReferencedControlInArray(field, controls) {
|
|
392
|
+
for (var _iterator = _createForOfIteratorHelperLoose(controls), _step; !(_step = _iterator()).done;) {
|
|
393
|
+
var c = _step.value;
|
|
394
|
+
var ref = findReferencedControl(field, c);
|
|
395
|
+
if (ref) return ref;
|
|
396
|
+
}
|
|
397
|
+
return undefined;
|
|
398
|
+
}
|
|
399
|
+
function addMissingControls(fields, controls) {
|
|
400
|
+
var changes = fields.flatMap(function (x) {
|
|
401
|
+
if (fieldHasTag(x, "_NoControl")) return [];
|
|
402
|
+
var existing = findReferencedControlInArray(x.field, controls);
|
|
403
|
+
if (!existing || isCompoundField(x)) return {
|
|
404
|
+
field: x,
|
|
405
|
+
existing: existing
|
|
406
|
+
};
|
|
407
|
+
return [];
|
|
408
|
+
});
|
|
409
|
+
var changedCompounds = controls.map(function (x) {
|
|
410
|
+
var ex = changes.find(function (c) {
|
|
411
|
+
return c.existing === x;
|
|
412
|
+
});
|
|
413
|
+
if (!ex) return x;
|
|
414
|
+
var cf = x;
|
|
415
|
+
return _extends({}, cf, {
|
|
416
|
+
children: addMissingControls(ex.field.children, cf.children)
|
|
417
|
+
});
|
|
418
|
+
});
|
|
419
|
+
return changedCompounds.concat(changes.filter(function (x) {
|
|
420
|
+
return !x.existing;
|
|
421
|
+
}).map(function (x) {
|
|
422
|
+
return defaultControlForField(x.field);
|
|
423
|
+
}));
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
var _FormRendererComponentsContext = null;
|
|
427
|
+
function FormRendererComponentsContext() {
|
|
428
|
+
if (!_FormRendererComponentsContext) {
|
|
429
|
+
_FormRendererComponentsContext = React.createContext(undefined);
|
|
430
|
+
}
|
|
431
|
+
return _FormRendererComponentsContext;
|
|
432
|
+
}
|
|
433
|
+
function FormRendererProvider(_ref) {
|
|
434
|
+
var _effect = core.useComponentTracking();
|
|
435
|
+
try {
|
|
436
|
+
var value = _ref.value,
|
|
437
|
+
children = _ref.children;
|
|
438
|
+
var _FormRendererComponen = FormRendererComponentsContext(),
|
|
439
|
+
Provider = _FormRendererComponen.Provider;
|
|
440
|
+
return /*#__PURE__*/React__default["default"].createElement(Provider, {
|
|
441
|
+
value: value,
|
|
442
|
+
children: children
|
|
443
|
+
});
|
|
444
|
+
} finally {
|
|
445
|
+
_effect();
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
function useFormRendererComponents() {
|
|
449
|
+
var c = React.useContext(FormRendererComponentsContext());
|
|
450
|
+
if (!c) {
|
|
451
|
+
throw "Need to use FormRendererComponentContext.Provider";
|
|
452
|
+
}
|
|
453
|
+
return c;
|
|
454
|
+
}
|
|
306
455
|
function controlTitle(title, field) {
|
|
307
456
|
return title ? title : fieldDisplayName(field);
|
|
308
457
|
}
|
|
309
|
-
function renderControl(definition, formState, hooks, key
|
|
458
|
+
function renderControl(definition, formState, hooks, key) {
|
|
310
459
|
var fields = formState.fields;
|
|
311
460
|
return visitControlDefinition(definition, {
|
|
312
461
|
data: function data(def) {
|
|
313
462
|
var fieldData = findScalarField(fields, def.field);
|
|
314
|
-
if (!fieldData) return /*#__PURE__*/React__default["default"].createElement("h1",
|
|
463
|
+
if (!fieldData) return /*#__PURE__*/React__default["default"].createElement("h1", {
|
|
464
|
+
key: key
|
|
465
|
+
}, "No schema field for: ", def.field);
|
|
315
466
|
return /*#__PURE__*/React__default["default"].createElement(DataRenderer, {
|
|
316
467
|
key: key,
|
|
317
|
-
wrapElem: wrapElem,
|
|
318
468
|
formState: formState,
|
|
319
469
|
hooks: hooks,
|
|
320
470
|
controlDef: def,
|
|
@@ -326,8 +476,7 @@ function renderControl(definition, formState, hooks, key, wrapChild) {
|
|
|
326
476
|
key: key,
|
|
327
477
|
hooks: hooks,
|
|
328
478
|
groupDef: d,
|
|
329
|
-
formState: formState
|
|
330
|
-
wrapElem: wrapElem
|
|
479
|
+
formState: formState
|
|
331
480
|
});
|
|
332
481
|
},
|
|
333
482
|
action: function action(d) {
|
|
@@ -335,7 +484,6 @@ function renderControl(definition, formState, hooks, key, wrapChild) {
|
|
|
335
484
|
key: key,
|
|
336
485
|
hooks: hooks,
|
|
337
486
|
formState: formState,
|
|
338
|
-
wrapElem: wrapElem,
|
|
339
487
|
actionDef: d
|
|
340
488
|
});
|
|
341
489
|
},
|
|
@@ -344,17 +492,12 @@ function renderControl(definition, formState, hooks, key, wrapChild) {
|
|
|
344
492
|
key: key,
|
|
345
493
|
hooks: hooks,
|
|
346
494
|
formState: formState,
|
|
347
|
-
wrapElem: wrapElem,
|
|
348
495
|
displayDef: d
|
|
349
496
|
});
|
|
350
497
|
}
|
|
351
498
|
}, function () {
|
|
352
499
|
return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown control: ", definition.type);
|
|
353
500
|
});
|
|
354
|
-
function wrapElem(e) {
|
|
355
|
-
var _wrapChild;
|
|
356
|
-
return (_wrapChild = wrapChild == null ? void 0 : wrapChild(key, e)) != null ? _wrapChild : e;
|
|
357
|
-
}
|
|
358
501
|
}
|
|
359
502
|
/** @trackControls */
|
|
360
503
|
function DataRenderer(_ref2) {
|
|
@@ -364,17 +507,10 @@ function DataRenderer(_ref2) {
|
|
|
364
507
|
var hooks = _ref2.hooks,
|
|
365
508
|
formState = _ref2.formState,
|
|
366
509
|
controlDef = _ref2.controlDef,
|
|
367
|
-
wrapElem = _ref2.wrapElem,
|
|
368
510
|
fieldData = _ref2.fieldData;
|
|
369
511
|
var renderer = useFormRendererComponents();
|
|
370
|
-
var props = hooks.useDataProperties(formState, controlDef, fieldData);
|
|
371
|
-
|
|
372
|
-
formEditState: formState,
|
|
373
|
-
field: fieldData,
|
|
374
|
-
definition: controlDef,
|
|
375
|
-
properties: props
|
|
376
|
-
};
|
|
377
|
-
return wrapElem(((_props$customRender = props.customRender) != null ? _props$customRender : renderer.renderData)(scalarProps, props.control, false, renderer));
|
|
512
|
+
var props = hooks.useDataProperties(formState, controlDef, fieldData, renderer);
|
|
513
|
+
return ((_props$customRender = props.customRender) != null ? _props$customRender : renderer.renderData)(props);
|
|
378
514
|
} finally {
|
|
379
515
|
_effect2();
|
|
380
516
|
}
|
|
@@ -385,15 +521,11 @@ function ActionRenderer(_ref3) {
|
|
|
385
521
|
try {
|
|
386
522
|
var hooks = _ref3.hooks,
|
|
387
523
|
formState = _ref3.formState,
|
|
388
|
-
wrapElem = _ref3.wrapElem,
|
|
389
524
|
actionDef = _ref3.actionDef;
|
|
390
525
|
var _useFormRendererCompo = useFormRendererComponents(),
|
|
391
526
|
renderAction = _useFormRendererCompo.renderAction;
|
|
392
527
|
var actionControlProperties = hooks.useActionProperties(formState, actionDef);
|
|
393
|
-
return
|
|
394
|
-
definition: actionDef,
|
|
395
|
-
properties: actionControlProperties
|
|
396
|
-
}));
|
|
528
|
+
return renderAction(actionControlProperties);
|
|
397
529
|
} finally {
|
|
398
530
|
_effect3();
|
|
399
531
|
}
|
|
@@ -404,32 +536,10 @@ function GroupRenderer(_ref4) {
|
|
|
404
536
|
try {
|
|
405
537
|
var hooks = _ref4.hooks,
|
|
406
538
|
formState = _ref4.formState,
|
|
407
|
-
groupDef = _ref4.groupDef
|
|
408
|
-
wrapElem = _ref4.wrapElem;
|
|
539
|
+
groupDef = _ref4.groupDef;
|
|
409
540
|
var renderers = useFormRendererComponents();
|
|
410
|
-
var groupProps = hooks.useGroupProperties(formState, groupDef, hooks);
|
|
411
|
-
|
|
412
|
-
if (compoundField) {
|
|
413
|
-
return wrapElem(renderers.renderCompound({
|
|
414
|
-
definition: groupDef,
|
|
415
|
-
field: compoundField,
|
|
416
|
-
properties: groupProps,
|
|
417
|
-
renderChild: function renderChild(k, c, data, wrapChild) {
|
|
418
|
-
return renderControl(c, _extends({}, formState, {
|
|
419
|
-
fields: compoundField.children,
|
|
420
|
-
data: data
|
|
421
|
-
}), groupProps.hooks, k, wrapChild);
|
|
422
|
-
}
|
|
423
|
-
}, formState.data.fields[compoundField.field], renderers));
|
|
424
|
-
}
|
|
425
|
-
return wrapElem(renderers.renderGroup({
|
|
426
|
-
definition: groupDef,
|
|
427
|
-
childCount: groupDef.children.length,
|
|
428
|
-
properties: groupProps,
|
|
429
|
-
renderChild: function renderChild(c, wrapChild) {
|
|
430
|
-
return renderControl(groupDef.children[c], formState, groupProps.hooks, c, wrapChild);
|
|
431
|
-
}
|
|
432
|
-
}));
|
|
541
|
+
var groupProps = hooks.useGroupProperties(formState, groupDef, hooks, renderers);
|
|
542
|
+
return renderers.renderGroup(groupProps);
|
|
433
543
|
} finally {
|
|
434
544
|
_effect4();
|
|
435
545
|
}
|
|
@@ -439,16 +549,12 @@ function DisplayRenderer(_ref5) {
|
|
|
439
549
|
var _effect5 = core.useComponentTracking();
|
|
440
550
|
try {
|
|
441
551
|
var hooks = _ref5.hooks,
|
|
442
|
-
wrapElem = _ref5.wrapElem,
|
|
443
552
|
formState = _ref5.formState,
|
|
444
553
|
displayDef = _ref5.displayDef;
|
|
445
554
|
var _useFormRendererCompo2 = useFormRendererComponents(),
|
|
446
555
|
renderDisplay = _useFormRendererCompo2.renderDisplay;
|
|
447
556
|
var displayProps = hooks.useDisplayProperties(formState, displayDef);
|
|
448
|
-
return
|
|
449
|
-
definition: displayDef,
|
|
450
|
-
properties: displayProps
|
|
451
|
-
}));
|
|
557
|
+
return renderDisplay(displayProps);
|
|
452
558
|
} finally {
|
|
453
559
|
_effect5();
|
|
454
560
|
}
|
|
@@ -461,30 +567,80 @@ function controlForField(field, formState) {
|
|
|
461
567
|
function fieldForControl(c) {
|
|
462
568
|
return isDataControl(c) ? c.field : isGroupControl(c) ? c.compoundField : undefined;
|
|
463
569
|
}
|
|
464
|
-
|
|
465
|
-
|
|
570
|
+
var AlwaysVisible = {
|
|
571
|
+
value: true,
|
|
572
|
+
canChange: false
|
|
573
|
+
};
|
|
574
|
+
function createAction(label, onClick, actionId) {
|
|
575
|
+
return {
|
|
576
|
+
definition: {
|
|
577
|
+
type: exports.ControlDefinitionType.Action,
|
|
578
|
+
actionId: actionId != null ? actionId : label,
|
|
579
|
+
title: label
|
|
580
|
+
},
|
|
581
|
+
visible: AlwaysVisible,
|
|
582
|
+
onClick: onClick
|
|
583
|
+
};
|
|
466
584
|
}
|
|
467
|
-
function
|
|
468
|
-
|
|
585
|
+
function visitControlData(definition, _ref7, cb) {
|
|
586
|
+
var fields = _ref7.fields,
|
|
587
|
+
_data = _ref7.data;
|
|
588
|
+
return visitControlDefinition(definition, {
|
|
589
|
+
data: function data(def) {
|
|
590
|
+
var fieldData = findScalarField(fields, def.field);
|
|
591
|
+
if (!fieldData) return undefined;
|
|
592
|
+
return cb(def, _data.fields[fieldData.field]);
|
|
593
|
+
},
|
|
594
|
+
group: function group(d) {
|
|
595
|
+
if (d.compoundField) {
|
|
596
|
+
var compound = findCompoundField(fields, d.compoundField);
|
|
597
|
+
if (!compound) return;
|
|
598
|
+
fields = compound.children;
|
|
599
|
+
_data = _data.fields[compound.field];
|
|
600
|
+
}
|
|
601
|
+
var childState = {
|
|
602
|
+
fields: fields,
|
|
603
|
+
data: _data
|
|
604
|
+
};
|
|
605
|
+
for (var _iterator = _createForOfIteratorHelperLoose(d.children), _step; !(_step = _iterator()).done;) {
|
|
606
|
+
var c = _step.value;
|
|
607
|
+
var res = visitControlData(c, childState, cb);
|
|
608
|
+
if (res !== undefined) return res;
|
|
609
|
+
}
|
|
610
|
+
return undefined;
|
|
611
|
+
},
|
|
612
|
+
action: function action(d) {
|
|
613
|
+
return undefined;
|
|
614
|
+
},
|
|
615
|
+
display: function display(d) {
|
|
616
|
+
return undefined;
|
|
617
|
+
}
|
|
618
|
+
}, function () {
|
|
619
|
+
return undefined;
|
|
620
|
+
});
|
|
469
621
|
}
|
|
470
622
|
|
|
471
|
-
function useDefaultValue(definition, field, formState,
|
|
623
|
+
function useDefaultValue(definition, field, formState, hooks) {
|
|
472
624
|
var _definition$dynamic;
|
|
473
625
|
var valueExpression = (_definition$dynamic = definition.dynamic) == null ? void 0 : _definition$dynamic.find(function (x) {
|
|
474
626
|
return x.type === exports.DynamicPropertyType.DefaultValue;
|
|
475
627
|
});
|
|
476
628
|
if (valueExpression) {
|
|
477
|
-
return useExpression(valueExpression.expr, formState);
|
|
629
|
+
return hooks.useExpression(valueExpression.expr, formState).value;
|
|
478
630
|
}
|
|
479
631
|
return field.defaultValue;
|
|
480
632
|
}
|
|
481
|
-
function useIsControlVisible(definition, formState,
|
|
482
|
-
var _definition$dynamic2, _ref2;
|
|
633
|
+
function useIsControlVisible(definition, formState, hooks) {
|
|
634
|
+
var _definition$dynamic2, _ref2, _onlyForTypes$length;
|
|
483
635
|
var visibleExpression = (_definition$dynamic2 = definition.dynamic) == null ? void 0 : _definition$dynamic2.find(function (x) {
|
|
484
636
|
return x.type === exports.DynamicPropertyType.Visible;
|
|
485
637
|
});
|
|
486
638
|
if (visibleExpression && visibleExpression.expr) {
|
|
487
|
-
|
|
639
|
+
var exprValue = hooks.useExpression(visibleExpression.expr, formState).value;
|
|
640
|
+
return {
|
|
641
|
+
value: Boolean(exprValue),
|
|
642
|
+
canChange: true
|
|
643
|
+
};
|
|
488
644
|
}
|
|
489
645
|
var schemaFields = formState.fields;
|
|
490
646
|
var _useMemo = React.useMemo(function () {
|
|
@@ -503,74 +659,886 @@ function useIsControlVisible(definition, formState, useExpression) {
|
|
|
503
659
|
compoundField = _useMemo.compoundField;
|
|
504
660
|
var fieldName = fieldForControl(definition);
|
|
505
661
|
var onlyForTypes = (_ref2 = fieldName ? findField(schemaFields, fieldName) : undefined) == null ? void 0 : _ref2.onlyForTypes;
|
|
506
|
-
|
|
662
|
+
var canChange = Boolean(compoundField || ((_onlyForTypes$length = onlyForTypes == null ? void 0 : onlyForTypes.length) != null ? _onlyForTypes$length : 0) > 0);
|
|
663
|
+
var value = (!compoundField || compoundField.value != null) && (!onlyForTypes || onlyForTypes.length === 0 || Boolean(typeControl.value && onlyForTypes.includes(typeControl.value)));
|
|
664
|
+
return {
|
|
665
|
+
value: value,
|
|
666
|
+
canChange: canChange
|
|
667
|
+
};
|
|
507
668
|
}
|
|
508
|
-
function getDefaultScalarControlProperties(definition, field, visible, defaultValue, control,
|
|
509
|
-
var _definition$required, _ref3;
|
|
669
|
+
function getDefaultScalarControlProperties(definition, field, visible, defaultValue, control, formState) {
|
|
670
|
+
var _definition$renderOpt, _definition$required, _ref3, _formState$readonly;
|
|
510
671
|
return {
|
|
672
|
+
definition: definition,
|
|
673
|
+
field: field,
|
|
511
674
|
defaultValue: defaultValue,
|
|
512
675
|
options: getOptionsForScalarField(field),
|
|
676
|
+
renderOptions: (_definition$renderOpt = definition.renderOptions) != null ? _definition$renderOpt : {
|
|
677
|
+
type: exports.DataRenderType.Standard
|
|
678
|
+
},
|
|
513
679
|
required: (_definition$required = definition.required) != null ? _definition$required : false,
|
|
514
680
|
visible: visible,
|
|
515
|
-
readonly: (_ref3 = readonly != null ? readonly : definition.readonly) != null ? _ref3 : false,
|
|
516
|
-
control: control
|
|
681
|
+
readonly: (_ref3 = (_formState$readonly = formState.readonly) != null ? _formState$readonly : definition.readonly) != null ? _ref3 : false,
|
|
682
|
+
control: control,
|
|
683
|
+
formState: formState
|
|
517
684
|
};
|
|
518
685
|
}
|
|
519
686
|
function getOptionsForScalarField(field) {
|
|
520
|
-
var
|
|
521
|
-
var opts =
|
|
687
|
+
var _opts$length;
|
|
688
|
+
var opts = field.options;
|
|
522
689
|
if ((_opts$length = opts == null ? void 0 : opts.length) != null ? _opts$length : 0 > 0) {
|
|
523
690
|
return opts;
|
|
524
691
|
}
|
|
525
692
|
return undefined;
|
|
526
693
|
}
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
694
|
+
function createDefaultSchemaHooks() {
|
|
695
|
+
function useExpression(expr, formState) {
|
|
696
|
+
switch (expr.type) {
|
|
697
|
+
case exports.ExpressionType.Jsonata:
|
|
698
|
+
var jExpr = expr;
|
|
699
|
+
var compiledExpr = React.useMemo(function () {
|
|
700
|
+
return jsonata__default["default"](jExpr.expression);
|
|
701
|
+
}, [jExpr.expression]);
|
|
702
|
+
var control = core.useControl();
|
|
703
|
+
core.useControlEffect(function () {
|
|
704
|
+
return formState.data.value;
|
|
705
|
+
}, function (v) {
|
|
706
|
+
try {
|
|
707
|
+
return Promise.resolve(compiledExpr.evaluate(v)).then(function (_compiledExpr$evaluat) {
|
|
708
|
+
control.value = _compiledExpr$evaluat;
|
|
709
|
+
});
|
|
710
|
+
} catch (e) {
|
|
711
|
+
return Promise.reject(e);
|
|
712
|
+
}
|
|
713
|
+
});
|
|
714
|
+
return control;
|
|
715
|
+
case exports.ExpressionType.FieldValue:
|
|
716
|
+
var fvExpr = expr;
|
|
717
|
+
return core.useComputed(function () {
|
|
718
|
+
var fv = controlForField(fvExpr.field, formState).value;
|
|
719
|
+
return Array.isArray(fv) ? fv.includes(fvExpr.value) : fv === fvExpr.value;
|
|
720
|
+
});
|
|
721
|
+
default:
|
|
722
|
+
return core.useControl(undefined);
|
|
723
|
+
}
|
|
724
|
+
}
|
|
725
|
+
function useValidators(formState, isVisible, control, required, validators) {
|
|
726
|
+
if (required) core.useValidator(control, function (v) {
|
|
727
|
+
return isVisible && (v == null || v == "") ? "Please enter a value" : null;
|
|
728
|
+
}, "required");
|
|
729
|
+
validators == null || validators.forEach(function (v, i) {
|
|
730
|
+
switch (v.type) {
|
|
731
|
+
case exports.ValidatorType.Date:
|
|
732
|
+
processDateValidator(v);
|
|
733
|
+
break;
|
|
734
|
+
case exports.ValidatorType.Jsonata:
|
|
735
|
+
var errorMsg = useExpression(v, formState);
|
|
736
|
+
core.useControlEffect(function () {
|
|
737
|
+
return [isVisible, errorMsg.value];
|
|
738
|
+
}, function (_ref4) {
|
|
739
|
+
var isVisible = _ref4[0],
|
|
740
|
+
msg = _ref4[1];
|
|
741
|
+
return control.setError(v.type + i, isVisible ? msg : null);
|
|
742
|
+
}, true);
|
|
743
|
+
break;
|
|
744
|
+
}
|
|
745
|
+
function processDateValidator(dv) {
|
|
746
|
+
var comparisonDate;
|
|
747
|
+
if (dv.fixedDate) {
|
|
748
|
+
comparisonDate = Date.parse(dv.fixedDate);
|
|
749
|
+
} else {
|
|
750
|
+
var nowDate = new Date();
|
|
751
|
+
comparisonDate = Date.UTC(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate());
|
|
752
|
+
if (dv.daysFromCurrent) {
|
|
753
|
+
comparisonDate += dv.daysFromCurrent * 86400000;
|
|
754
|
+
}
|
|
755
|
+
}
|
|
756
|
+
core.useValidator(control, function (v) {
|
|
757
|
+
if (v) {
|
|
758
|
+
var selDate = Date.parse(v);
|
|
759
|
+
var notAfter = dv.comparison === exports.DateComparison.NotAfter;
|
|
760
|
+
if (notAfter ? selDate > comparisonDate : selDate < comparisonDate) {
|
|
761
|
+
return "Date must not be " + (notAfter ? "after" : "before") + " " + new Date(comparisonDate).toDateString();
|
|
762
|
+
}
|
|
763
|
+
}
|
|
764
|
+
return null;
|
|
765
|
+
}, "date" + i);
|
|
766
|
+
}
|
|
767
|
+
});
|
|
534
768
|
}
|
|
535
|
-
};
|
|
536
|
-
function createFormEditHooks(useExpression) {
|
|
537
769
|
return {
|
|
538
770
|
useExpression: useExpression,
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
771
|
+
useValidators: useValidators
|
|
772
|
+
};
|
|
773
|
+
}
|
|
774
|
+
var defaultFormEditHooks = createFormEditHooks(createDefaultSchemaHooks());
|
|
775
|
+
function createFormEditHooks(schemaHooks) {
|
|
776
|
+
return {
|
|
777
|
+
schemaHooks: schemaHooks,
|
|
778
|
+
useDataProperties: function useDataProperties(formState, definition, field, renderer) {
|
|
779
|
+
var visible = useIsControlVisible(definition, formState, schemaHooks);
|
|
780
|
+
var isVisible = visible.value && !formState.invisible;
|
|
781
|
+
var defaultValue = useDefaultValue(definition, field, formState, schemaHooks);
|
|
542
782
|
var scalarControl = formState.data.fields[field.field];
|
|
543
783
|
React.useEffect(function () {
|
|
544
|
-
if (!
|
|
784
|
+
if (!isVisible) scalarControl.value = null;else if (scalarControl.current.value == null) {
|
|
545
785
|
scalarControl.value = defaultValue;
|
|
546
786
|
}
|
|
547
|
-
}, [
|
|
548
|
-
|
|
787
|
+
}, [isVisible, defaultValue]);
|
|
788
|
+
var dataProps = getDefaultScalarControlProperties(definition, field, visible, defaultValue, scalarControl, formState);
|
|
789
|
+
schemaHooks.useValidators(formState, isVisible, scalarControl, dataProps.required, definition.validators);
|
|
790
|
+
React.useEffect(function () {
|
|
791
|
+
var subscription = scalarControl.subscribe(function (c) {
|
|
792
|
+
return c.touched = true;
|
|
793
|
+
}, core.ControlChange.Validate);
|
|
794
|
+
return function () {
|
|
795
|
+
return scalarControl.unsubscribe(subscription);
|
|
796
|
+
};
|
|
797
|
+
}, []);
|
|
798
|
+
if (!field.collection) return dataProps;
|
|
799
|
+
return _extends({}, dataProps, {
|
|
800
|
+
array: defaultArrayRendererProps(scalarControl, field, definition, dataProps.readonly, function (c) {
|
|
801
|
+
return renderer.renderData(_extends({}, dataProps, {
|
|
802
|
+
control: c
|
|
803
|
+
}));
|
|
804
|
+
})
|
|
805
|
+
});
|
|
549
806
|
},
|
|
550
807
|
useDisplayProperties: function useDisplayProperties(fs, definition) {
|
|
551
|
-
var visible = useIsControlVisible(definition, fs,
|
|
808
|
+
var visible = useIsControlVisible(definition, fs, schemaHooks);
|
|
552
809
|
return {
|
|
553
|
-
visible: visible
|
|
810
|
+
visible: visible,
|
|
811
|
+
definition: definition
|
|
554
812
|
};
|
|
555
813
|
},
|
|
556
|
-
useGroupProperties: function useGroupProperties(fs, definition, hooks) {
|
|
557
|
-
var
|
|
558
|
-
|
|
814
|
+
useGroupProperties: function useGroupProperties(fs, definition, hooks, renderers) {
|
|
815
|
+
var _definition$groupOpti;
|
|
816
|
+
var visible = useIsControlVisible(definition, fs, schemaHooks);
|
|
817
|
+
var field = definition.compoundField ? findCompoundField(fs.fields, definition.compoundField) : undefined;
|
|
818
|
+
var newFs = _extends({}, fs, {
|
|
819
|
+
fields: field ? field.children : fs.fields,
|
|
820
|
+
data: field ? fs.data.fields[field.field] : fs.data,
|
|
821
|
+
invisible: !visible.value || fs.invisible
|
|
822
|
+
});
|
|
823
|
+
var groupProps = {
|
|
559
824
|
visible: visible,
|
|
560
|
-
hooks: hooks
|
|
825
|
+
hooks: hooks,
|
|
826
|
+
hideTitle: (_definition$groupOpti = definition.groupOptions.hideTitle) != null ? _definition$groupOpti : false,
|
|
827
|
+
childCount: definition.children.length,
|
|
828
|
+
renderChild: function renderChild(i) {
|
|
829
|
+
return renderControl(definition.children[i], newFs, hooks, i);
|
|
830
|
+
},
|
|
831
|
+
definition: definition
|
|
561
832
|
};
|
|
833
|
+
if (field != null && field.collection) {
|
|
834
|
+
return _extends({}, groupProps, {
|
|
835
|
+
array: defaultArrayRendererProps(newFs.data, field, definition, fs.readonly, function (e) {
|
|
836
|
+
return renderers.renderGroup(_extends({}, groupProps, {
|
|
837
|
+
hideTitle: true,
|
|
838
|
+
renderChild: function renderChild(i) {
|
|
839
|
+
return renderControl(definition.children[i], _extends({}, newFs, {
|
|
840
|
+
data: e
|
|
841
|
+
}), hooks, i);
|
|
842
|
+
}
|
|
843
|
+
}));
|
|
844
|
+
})
|
|
845
|
+
});
|
|
846
|
+
}
|
|
847
|
+
return groupProps;
|
|
562
848
|
},
|
|
563
849
|
useActionProperties: function useActionProperties(formState, definition) {
|
|
564
|
-
var visible = useIsControlVisible(definition, formState,
|
|
850
|
+
var visible = useIsControlVisible(definition, formState, schemaHooks);
|
|
565
851
|
return {
|
|
566
852
|
visible: visible,
|
|
567
|
-
onClick: function onClick() {}
|
|
853
|
+
onClick: function onClick() {},
|
|
854
|
+
definition: definition
|
|
855
|
+
};
|
|
856
|
+
}
|
|
857
|
+
};
|
|
858
|
+
}
|
|
859
|
+
function defaultArrayRendererProps(control, field, definition, readonly, renderElem) {
|
|
860
|
+
var _control$elements$len, _control$elements;
|
|
861
|
+
return {
|
|
862
|
+
control: control,
|
|
863
|
+
childCount: (_control$elements$len = (_control$elements = control.elements) == null ? void 0 : _control$elements.length) != null ? _control$elements$len : 0,
|
|
864
|
+
field: field,
|
|
865
|
+
definition: definition,
|
|
866
|
+
addAction: !readonly ? {
|
|
867
|
+
definition: {
|
|
868
|
+
title: "Add " + controlTitle(definition.title, field),
|
|
869
|
+
type: exports.ControlDefinitionType.Action,
|
|
870
|
+
actionId: "addElement"
|
|
871
|
+
},
|
|
872
|
+
visible: {
|
|
873
|
+
value: true,
|
|
874
|
+
canChange: false
|
|
875
|
+
},
|
|
876
|
+
onClick: function onClick() {
|
|
877
|
+
return core.addElement(control, elementValueForField(field));
|
|
878
|
+
}
|
|
879
|
+
} : undefined,
|
|
880
|
+
removeAction: !readonly ? function (i) {
|
|
881
|
+
return {
|
|
882
|
+
definition: {
|
|
883
|
+
title: "Remove",
|
|
884
|
+
type: exports.ControlDefinitionType.Action,
|
|
885
|
+
actionId: "removeElement"
|
|
886
|
+
},
|
|
887
|
+
visible: {
|
|
888
|
+
value: true,
|
|
889
|
+
canChange: false
|
|
890
|
+
},
|
|
891
|
+
onClick: function onClick() {
|
|
892
|
+
return core.removeElement(control, control.elements[i]);
|
|
893
|
+
}
|
|
568
894
|
};
|
|
895
|
+
} : undefined,
|
|
896
|
+
childKey: function childKey(i) {
|
|
897
|
+
return control.elements[i].uniqueId;
|
|
898
|
+
},
|
|
899
|
+
renderChild: function renderChild(i) {
|
|
900
|
+
var c = control.elements[i];
|
|
901
|
+
return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
|
|
902
|
+
key: c.uniqueId
|
|
903
|
+
}, renderElem(c));
|
|
569
904
|
}
|
|
570
905
|
};
|
|
571
906
|
}
|
|
907
|
+
function useControlsWithDefaults(definition, sf) {
|
|
908
|
+
return React.useMemo(function () {
|
|
909
|
+
return definition.children.length ? definition : _extends({}, definition, {
|
|
910
|
+
children: addMissingControls(sf, [])
|
|
911
|
+
});
|
|
912
|
+
}, [sf, definition]);
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
var _excluded = ["control", "convert"],
|
|
916
|
+
_excluded2 = ["errorText", "value", "onChange"],
|
|
917
|
+
_excluded3 = ["state", "options", "className", "convert", "required", "emptyText", "requiredText"];
|
|
918
|
+
function createFormRenderer(customRenderers, defaultRenderers) {
|
|
919
|
+
var _customRenderers$find, _customRenderers$find2;
|
|
920
|
+
if (customRenderers === void 0) {
|
|
921
|
+
customRenderers = [];
|
|
922
|
+
}
|
|
923
|
+
if (defaultRenderers === void 0) {
|
|
924
|
+
defaultRenderers = createClassStyledRenderers();
|
|
925
|
+
}
|
|
926
|
+
var dataRegistrations = customRenderers.filter(isDataRegistration);
|
|
927
|
+
var adornmentRegistrations = customRenderers.filter(isAdornmentRegistration);
|
|
928
|
+
var labelRenderer = (_customRenderers$find = customRenderers.find(isLabelRegistration)) != null ? _customRenderers$find : defaultRenderers.label;
|
|
929
|
+
var renderVisibility = ((_customRenderers$find2 = customRenderers.find(isVisibilityRegistration)) != null ? _customRenderers$find2 : defaultRenderers.visibility).render;
|
|
930
|
+
var formRenderers = {
|
|
931
|
+
renderAction: renderAction,
|
|
932
|
+
renderData: _renderData,
|
|
933
|
+
renderGroup: _renderGroup,
|
|
934
|
+
renderDisplay: renderDisplay,
|
|
935
|
+
renderLabel: renderLabel,
|
|
936
|
+
renderArray: renderArray,
|
|
937
|
+
renderVisibility: renderVisibility,
|
|
938
|
+
renderAdornment: renderAdornment
|
|
939
|
+
};
|
|
940
|
+
function renderAdornment(props) {
|
|
941
|
+
var _adornmentRegistratio;
|
|
942
|
+
var renderer = (_adornmentRegistratio = adornmentRegistrations.find(function (x) {
|
|
943
|
+
return isOneOf(x.adornmentType, props.definition.type);
|
|
944
|
+
})) != null ? _adornmentRegistratio : defaultRenderers.adornment;
|
|
945
|
+
return renderer.render(props);
|
|
946
|
+
}
|
|
947
|
+
function renderArray(props) {
|
|
948
|
+
return defaultRenderers.array.render(props, formRenderers);
|
|
949
|
+
}
|
|
950
|
+
function renderLabel(props, elem) {
|
|
951
|
+
return labelRenderer.render(props, elem, formRenderers);
|
|
952
|
+
}
|
|
953
|
+
function withAdornments(definition, adornments) {
|
|
954
|
+
var _definition$adornment, _definition$adornment2;
|
|
955
|
+
var rAdornments = adornments ? adornments : (_definition$adornment = (_definition$adornment2 = definition.adornments) == null ? void 0 : _definition$adornment2.map(function (x, i) {
|
|
956
|
+
return renderAdornment({
|
|
957
|
+
definition: x,
|
|
958
|
+
key: i
|
|
959
|
+
});
|
|
960
|
+
})) != null ? _definition$adornment : [];
|
|
961
|
+
function combineAdornments(placement) {
|
|
962
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, rAdornments.filter(function (x) {
|
|
963
|
+
return x.child && x.child[0] === placement;
|
|
964
|
+
}).map(function (x) {
|
|
965
|
+
return x.child[1];
|
|
966
|
+
}));
|
|
967
|
+
}
|
|
968
|
+
return [rAdornments, combineAdornments, function (mainElem) {
|
|
969
|
+
return !adornments ? mainElem : rAdornments.reduce(function (e, n) {
|
|
970
|
+
var _n$wrap;
|
|
971
|
+
return (_n$wrap = n.wrap == null ? void 0 : n.wrap(e)) != null ? _n$wrap : e;
|
|
972
|
+
}, mainElem);
|
|
973
|
+
}];
|
|
974
|
+
}
|
|
975
|
+
function _renderData(props, adornments) {
|
|
976
|
+
var _dataRegistrations$fi;
|
|
977
|
+
var definition = props.definition,
|
|
978
|
+
renderType = props.renderOptions.type,
|
|
979
|
+
visible = props.visible,
|
|
980
|
+
required = props.required,
|
|
981
|
+
control = props.control,
|
|
982
|
+
field = props.field;
|
|
983
|
+
var options = hasOptions(props);
|
|
984
|
+
var renderer = (_dataRegistrations$fi = dataRegistrations.find(function (x) {
|
|
985
|
+
var _x$collection, _field$collection, _x$options;
|
|
986
|
+
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));
|
|
987
|
+
})) != null ? _dataRegistrations$fi : defaultRenderers.data;
|
|
988
|
+
var _withAdornments = withAdornments(definition, adornments),
|
|
989
|
+
rAdornments = _withAdornments[0],
|
|
990
|
+
renderAdornment = _withAdornments[1],
|
|
991
|
+
wrapElem = _withAdornments[2];
|
|
992
|
+
return wrapElem(renderer.render(props, createLabel, _extends({}, formRenderers, {
|
|
993
|
+
renderData: function renderData(p) {
|
|
994
|
+
return _renderData(p, rAdornments);
|
|
995
|
+
}
|
|
996
|
+
})));
|
|
997
|
+
function createLabel(labelProps) {
|
|
998
|
+
var _labelProps$title;
|
|
999
|
+
return _extends({
|
|
1000
|
+
visible: visible,
|
|
1001
|
+
required: required,
|
|
1002
|
+
control: control,
|
|
1003
|
+
forId: "c" + control.uniqueId,
|
|
1004
|
+
renderAdornment: renderAdornment
|
|
1005
|
+
}, labelProps, {
|
|
1006
|
+
title: (_labelProps$title = labelProps == null ? void 0 : labelProps.title) != null ? _labelProps$title : controlTitle(definition.title, field)
|
|
1007
|
+
});
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
function _renderGroup(props, adornments) {
|
|
1011
|
+
var definition = props.definition,
|
|
1012
|
+
visible = props.visible,
|
|
1013
|
+
field = props.field;
|
|
1014
|
+
var _withAdornments2 = withAdornments(props.definition, adornments),
|
|
1015
|
+
rAdornments = _withAdornments2[0],
|
|
1016
|
+
renderAdornment = _withAdornments2[1],
|
|
1017
|
+
wrapElem = _withAdornments2[2];
|
|
1018
|
+
var title = props.hideTitle ? undefined : field ? controlTitle(definition.title, field) : definition.title;
|
|
1019
|
+
return wrapElem(defaultRenderers.group.render(props, createLabel, _extends({}, formRenderers, {
|
|
1020
|
+
renderGroup: function renderGroup(p) {
|
|
1021
|
+
return _renderGroup(p, rAdornments);
|
|
1022
|
+
}
|
|
1023
|
+
})));
|
|
1024
|
+
function createLabel(labelProps) {
|
|
1025
|
+
return _extends({
|
|
1026
|
+
required: false,
|
|
1027
|
+
visible: visible,
|
|
1028
|
+
group: true,
|
|
1029
|
+
renderAdornment: renderAdornment,
|
|
1030
|
+
title: title
|
|
1031
|
+
}, labelProps);
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
function renderAction(props, adornments) {
|
|
1035
|
+
var _customRenderers$find3;
|
|
1036
|
+
var renderer = (_customRenderers$find3 = customRenderers.find(isActionRegistration)) != null ? _customRenderers$find3 : defaultRenderers.action;
|
|
1037
|
+
var _withAdornments3 = withAdornments(props.definition, adornments),
|
|
1038
|
+
wrapElem = _withAdornments3[2];
|
|
1039
|
+
return wrapElem(renderer.render(props, formRenderers));
|
|
1040
|
+
}
|
|
1041
|
+
function renderDisplay(props, adornments) {
|
|
1042
|
+
var _withAdornments4 = withAdornments(props.definition, adornments),
|
|
1043
|
+
wrapElem = _withAdornments4[2];
|
|
1044
|
+
return wrapElem(defaultRenderers.display.render(props, formRenderers));
|
|
1045
|
+
}
|
|
1046
|
+
return formRenderers;
|
|
1047
|
+
}
|
|
1048
|
+
function createDefaultActionRenderer(options) {
|
|
1049
|
+
if (options === void 0) {
|
|
1050
|
+
options = {};
|
|
1051
|
+
}
|
|
1052
|
+
function render(_ref, _ref2) {
|
|
1053
|
+
var visible = _ref.visible,
|
|
1054
|
+
onClick = _ref.onClick,
|
|
1055
|
+
title = _ref.definition.title;
|
|
1056
|
+
var renderVisibility = _ref2.renderVisibility;
|
|
1057
|
+
return renderVisibility(visible, /*#__PURE__*/React__default["default"].createElement("button", {
|
|
1058
|
+
className: options.className,
|
|
1059
|
+
onClick: onClick
|
|
1060
|
+
}, title));
|
|
1061
|
+
}
|
|
1062
|
+
return {
|
|
1063
|
+
render: render,
|
|
1064
|
+
type: "action"
|
|
1065
|
+
};
|
|
1066
|
+
}
|
|
1067
|
+
function createDefaultLabelRenderer(options) {
|
|
1068
|
+
if (options === void 0) {
|
|
1069
|
+
options = {
|
|
1070
|
+
requiredElement: /*#__PURE__*/React__default["default"].createElement("span", null, " *")
|
|
1071
|
+
};
|
|
1072
|
+
}
|
|
1073
|
+
return {
|
|
1074
|
+
render: function render(p, elem, _ref3) {
|
|
1075
|
+
var renderVisibility = _ref3.renderVisibility;
|
|
1076
|
+
return renderVisibility(p.visible, /*#__PURE__*/React__default["default"].createElement(DefaultLabelRenderer, _extends({}, p, options, {
|
|
1077
|
+
children: elem
|
|
1078
|
+
})));
|
|
1079
|
+
},
|
|
1080
|
+
type: "label"
|
|
1081
|
+
};
|
|
1082
|
+
}
|
|
1083
|
+
function DefaultLabelRenderer(_ref4) {
|
|
1084
|
+
var _effect = core.useComponentTracking();
|
|
1085
|
+
try {
|
|
1086
|
+
var className = _ref4.className,
|
|
1087
|
+
labelClass = _ref4.labelClass,
|
|
1088
|
+
title = _ref4.title,
|
|
1089
|
+
forId = _ref4.forId,
|
|
1090
|
+
required = _ref4.required,
|
|
1091
|
+
children = _ref4.children,
|
|
1092
|
+
group = _ref4.group,
|
|
1093
|
+
groupLabelClass = _ref4.groupLabelClass,
|
|
1094
|
+
renderAdornment = _ref4.renderAdornment,
|
|
1095
|
+
requiredElement = _ref4.requiredElement;
|
|
1096
|
+
return title ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1097
|
+
className: className
|
|
1098
|
+
}, renderAdornment(exports.AdornmentPlacement.LabelStart), /*#__PURE__*/React__default["default"].createElement("label", {
|
|
1099
|
+
htmlFor: forId,
|
|
1100
|
+
className: clsx__default["default"](labelClass, group && groupLabelClass)
|
|
1101
|
+
}, title, required && requiredElement), renderAdornment(exports.AdornmentPlacement.LabelEnd), renderAdornment(exports.AdornmentPlacement.ControlStart), children, renderAdornment(exports.AdornmentPlacement.ControlEnd)) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, children);
|
|
1102
|
+
} finally {
|
|
1103
|
+
_effect();
|
|
1104
|
+
}
|
|
1105
|
+
}
|
|
1106
|
+
function createDefaultArrayRenderer(options) {
|
|
1107
|
+
var _ref5 = options != null ? options : {},
|
|
1108
|
+
className = _ref5.className,
|
|
1109
|
+
removableClass = _ref5.removableClass,
|
|
1110
|
+
childClass = _ref5.childClass,
|
|
1111
|
+
removableChildClass = _ref5.removableChildClass,
|
|
1112
|
+
removeActionClass = _ref5.removeActionClass,
|
|
1113
|
+
addActionClass = _ref5.addActionClass;
|
|
1114
|
+
function render(_ref6, _ref7) {
|
|
1115
|
+
var childCount = _ref6.childCount,
|
|
1116
|
+
renderChild = _ref6.renderChild,
|
|
1117
|
+
addAction = _ref6.addAction,
|
|
1118
|
+
removeAction = _ref6.removeAction,
|
|
1119
|
+
childKey = _ref6.childKey;
|
|
1120
|
+
var renderAction = _ref7.renderAction;
|
|
1121
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1122
|
+
className: clsx__default["default"](className, removeAction && removableClass)
|
|
1123
|
+
}, Array.from({
|
|
1124
|
+
length: childCount
|
|
1125
|
+
}, function (_, x) {
|
|
1126
|
+
return removeAction ? /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
|
|
1127
|
+
key: childKey(x)
|
|
1128
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1129
|
+
className: clsx__default["default"](childClass, removableChildClass)
|
|
1130
|
+
}, renderChild(x)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1131
|
+
className: removeActionClass
|
|
1132
|
+
}, renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1133
|
+
key: childKey(x),
|
|
1134
|
+
className: childClass
|
|
1135
|
+
}, renderChild(x));
|
|
1136
|
+
})), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1137
|
+
className: addActionClass
|
|
1138
|
+
}, renderAction(addAction)));
|
|
1139
|
+
}
|
|
1140
|
+
return {
|
|
1141
|
+
render: render,
|
|
1142
|
+
type: "array"
|
|
1143
|
+
};
|
|
1144
|
+
}
|
|
1145
|
+
function createDefaultGroupRenderer(options) {
|
|
1146
|
+
var _ref8 = options != null ? options : {},
|
|
1147
|
+
className = _ref8.className,
|
|
1148
|
+
_ref8$gridStyles = _ref8.gridStyles,
|
|
1149
|
+
gridStyles = _ref8$gridStyles === void 0 ? defaultGridStyles : _ref8$gridStyles,
|
|
1150
|
+
_ref8$defaultGridColu = _ref8.defaultGridColumns,
|
|
1151
|
+
defaultGridColumns = _ref8$defaultGridColu === void 0 ? 2 : _ref8$defaultGridColu,
|
|
1152
|
+
gridClassName = _ref8.gridClassName,
|
|
1153
|
+
standardClassName = _ref8.standardClassName;
|
|
1154
|
+
function defaultGridStyles(_ref9) {
|
|
1155
|
+
var _ref9$columns = _ref9.columns,
|
|
1156
|
+
columns = _ref9$columns === void 0 ? defaultGridColumns : _ref9$columns;
|
|
1157
|
+
return {
|
|
1158
|
+
className: gridClassName,
|
|
1159
|
+
style: {
|
|
1160
|
+
display: "grid",
|
|
1161
|
+
gridTemplateColumns: "repeat(" + columns + ", 1fr)"
|
|
1162
|
+
}
|
|
1163
|
+
};
|
|
1164
|
+
}
|
|
1165
|
+
function render(props, defaultLabel, _ref10) {
|
|
1166
|
+
var renderLabel = _ref10.renderLabel,
|
|
1167
|
+
renderArray = _ref10.renderArray;
|
|
1168
|
+
var childCount = props.childCount,
|
|
1169
|
+
renderChild = props.renderChild,
|
|
1170
|
+
definition = props.definition;
|
|
1171
|
+
return renderLabel(defaultLabel(), props.array ? renderArray(props.array) : renderChildren());
|
|
1172
|
+
function renderChildren() {
|
|
1173
|
+
var groupOptions = definition.groupOptions;
|
|
1174
|
+
var _ref11 = isGridRenderer(groupOptions) ? gridStyles(groupOptions) : {
|
|
1175
|
+
className: standardClassName
|
|
1176
|
+
},
|
|
1177
|
+
style = _ref11.style,
|
|
1178
|
+
gcn = _ref11.className;
|
|
1179
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1180
|
+
className: clsx__default["default"](className, gcn),
|
|
1181
|
+
style: style
|
|
1182
|
+
}, Array.from({
|
|
1183
|
+
length: childCount
|
|
1184
|
+
}, function (_, x) {
|
|
1185
|
+
return renderChild(x);
|
|
1186
|
+
}));
|
|
1187
|
+
}
|
|
1188
|
+
}
|
|
1189
|
+
return {
|
|
1190
|
+
type: "group",
|
|
1191
|
+
render: render
|
|
1192
|
+
};
|
|
1193
|
+
}
|
|
1194
|
+
function createDefaultDisplayRenderer(options) {
|
|
1195
|
+
if (options === void 0) {
|
|
1196
|
+
options = {};
|
|
1197
|
+
}
|
|
1198
|
+
function doRender(_ref12) {
|
|
1199
|
+
var displayData = _ref12.definition.displayData;
|
|
1200
|
+
switch (displayData.type) {
|
|
1201
|
+
case exports.DisplayDataType.Text:
|
|
1202
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1203
|
+
className: options.textClassName
|
|
1204
|
+
}, displayData.text);
|
|
1205
|
+
case exports.DisplayDataType.Html:
|
|
1206
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1207
|
+
className: options.htmlClassName,
|
|
1208
|
+
dangerouslySetInnerHTML: {
|
|
1209
|
+
__html: displayData.html
|
|
1210
|
+
}
|
|
1211
|
+
});
|
|
1212
|
+
default:
|
|
1213
|
+
return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown display type: ", displayData.type);
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
return {
|
|
1217
|
+
render: function render(p, _ref13) {
|
|
1218
|
+
var renderVisibility = _ref13.renderVisibility;
|
|
1219
|
+
return renderVisibility(p.visible, doRender(p));
|
|
1220
|
+
},
|
|
1221
|
+
type: "display"
|
|
1222
|
+
};
|
|
1223
|
+
}
|
|
1224
|
+
var DefaultBoolOptions = [{
|
|
1225
|
+
name: "Yes",
|
|
1226
|
+
value: true
|
|
1227
|
+
}, {
|
|
1228
|
+
name: "No",
|
|
1229
|
+
value: false
|
|
1230
|
+
}];
|
|
1231
|
+
function createDefaultDataRenderer(options) {
|
|
1232
|
+
var _options$selectOption;
|
|
1233
|
+
if (options === void 0) {
|
|
1234
|
+
options = {};
|
|
1235
|
+
}
|
|
1236
|
+
var selectRenderer = createSelectRenderer((_options$selectOption = options.selectOptions) != null ? _options$selectOption : {});
|
|
1237
|
+
var _optionRenderer$boole = _extends({
|
|
1238
|
+
optionRenderer: selectRenderer,
|
|
1239
|
+
booleanOptions: DefaultBoolOptions
|
|
1240
|
+
}, options),
|
|
1241
|
+
inputClass = _optionRenderer$boole.inputClass,
|
|
1242
|
+
booleanOptions = _optionRenderer$boole.booleanOptions,
|
|
1243
|
+
optionRenderer = _optionRenderer$boole.optionRenderer;
|
|
1244
|
+
return createDataRenderer(function (props, defaultLabel, renderers) {
|
|
1245
|
+
if (props.array) {
|
|
1246
|
+
return renderers.renderArray(props.array);
|
|
1247
|
+
}
|
|
1248
|
+
var renderType = props.renderOptions.type;
|
|
1249
|
+
var fieldType = props.field.type;
|
|
1250
|
+
var isBool = fieldType === exports.FieldType.Bool;
|
|
1251
|
+
if (booleanOptions != null && isBool && props.options == null) {
|
|
1252
|
+
return renderers.renderData(_extends({}, props, {
|
|
1253
|
+
options: booleanOptions
|
|
1254
|
+
}));
|
|
1255
|
+
}
|
|
1256
|
+
if (renderType === exports.DataRenderType.Standard && hasOptions(props)) {
|
|
1257
|
+
return optionRenderer.render(props, defaultLabel, renderers);
|
|
1258
|
+
}
|
|
1259
|
+
switch (renderType) {
|
|
1260
|
+
case exports.DataRenderType.Dropdown:
|
|
1261
|
+
return selectRenderer.render(props, defaultLabel, renderers);
|
|
1262
|
+
}
|
|
1263
|
+
var l = defaultLabel();
|
|
1264
|
+
return renderers.renderLabel(l, renderType === exports.DataRenderType.Checkbox ? /*#__PURE__*/React__default["default"].createElement(core.Fcheckbox, {
|
|
1265
|
+
control: props.control
|
|
1266
|
+
}) : /*#__PURE__*/React__default["default"].createElement(ControlInput, {
|
|
1267
|
+
className: inputClass,
|
|
1268
|
+
id: l.forId,
|
|
1269
|
+
readOnly: props.readonly,
|
|
1270
|
+
control: props.control,
|
|
1271
|
+
convert: createInputConversion(props.field.type)
|
|
1272
|
+
}));
|
|
1273
|
+
});
|
|
1274
|
+
}
|
|
1275
|
+
function ControlInput(_ref14) {
|
|
1276
|
+
var _effect2 = core.useComponentTracking();
|
|
1277
|
+
try {
|
|
1278
|
+
var control = _ref14.control,
|
|
1279
|
+
convert = _ref14.convert,
|
|
1280
|
+
props = _objectWithoutPropertiesLoose(_ref14, _excluded);
|
|
1281
|
+
var _formControlProps = core.formControlProps(control),
|
|
1282
|
+
errorText = _formControlProps.errorText,
|
|
1283
|
+
value = _formControlProps.value,
|
|
1284
|
+
onChange = _formControlProps.onChange,
|
|
1285
|
+
inputProps = _objectWithoutPropertiesLoose(_formControlProps, _excluded2);
|
|
1286
|
+
return /*#__PURE__*/React__default["default"].createElement("input", _extends({}, inputProps, {
|
|
1287
|
+
type: convert[0],
|
|
1288
|
+
value: value == null ? "" : convert[2](value),
|
|
1289
|
+
onChange: function onChange(e) {
|
|
1290
|
+
control.value = convert[1](e.target.value);
|
|
1291
|
+
}
|
|
1292
|
+
}, props));
|
|
1293
|
+
} finally {
|
|
1294
|
+
_effect2();
|
|
1295
|
+
}
|
|
1296
|
+
}
|
|
1297
|
+
function createDefaultAdornmentRenderer(options) {
|
|
1298
|
+
return {
|
|
1299
|
+
type: "adornment",
|
|
1300
|
+
render: function render() {
|
|
1301
|
+
return {};
|
|
1302
|
+
}
|
|
1303
|
+
};
|
|
1304
|
+
}
|
|
1305
|
+
function createDefaultVisibilityRenderer(options) {
|
|
1306
|
+
return {
|
|
1307
|
+
type: "visibility",
|
|
1308
|
+
render: function render(visible, children) {
|
|
1309
|
+
return visible.value ? children : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
1310
|
+
}
|
|
1311
|
+
};
|
|
1312
|
+
}
|
|
1313
|
+
function createDefaultRenderers(options) {
|
|
1314
|
+
if (options === void 0) {
|
|
1315
|
+
options = {};
|
|
1316
|
+
}
|
|
1317
|
+
return {
|
|
1318
|
+
data: createDefaultDataRenderer(options.data),
|
|
1319
|
+
display: createDefaultDisplayRenderer(options.display),
|
|
1320
|
+
action: createDefaultActionRenderer(options.action),
|
|
1321
|
+
array: createDefaultArrayRenderer(options.array),
|
|
1322
|
+
group: createDefaultGroupRenderer(options.group),
|
|
1323
|
+
label: createDefaultLabelRenderer(options.label),
|
|
1324
|
+
visibility: createDefaultVisibilityRenderer(),
|
|
1325
|
+
adornment: createDefaultAdornmentRenderer()
|
|
1326
|
+
};
|
|
1327
|
+
}
|
|
1328
|
+
function createClassStyledRenderers() {
|
|
1329
|
+
return createDefaultRenderers({
|
|
1330
|
+
label: {
|
|
1331
|
+
className: "control"
|
|
1332
|
+
},
|
|
1333
|
+
group: {
|
|
1334
|
+
className: "group"
|
|
1335
|
+
},
|
|
1336
|
+
array: {
|
|
1337
|
+
className: "control-array"
|
|
1338
|
+
},
|
|
1339
|
+
action: {
|
|
1340
|
+
className: "action"
|
|
1341
|
+
},
|
|
1342
|
+
data: {
|
|
1343
|
+
inputClass: "data"
|
|
1344
|
+
},
|
|
1345
|
+
display: {
|
|
1346
|
+
htmlClassName: "html",
|
|
1347
|
+
textClassName: "text"
|
|
1348
|
+
}
|
|
1349
|
+
});
|
|
1350
|
+
}
|
|
1351
|
+
function isAdornmentRegistration(x) {
|
|
1352
|
+
return x.type === "adornment";
|
|
1353
|
+
}
|
|
1354
|
+
function isDataRegistration(x) {
|
|
1355
|
+
return x.type === "data";
|
|
1356
|
+
}
|
|
1357
|
+
function isLabelRegistration(x) {
|
|
1358
|
+
return x.type === "label";
|
|
1359
|
+
}
|
|
1360
|
+
function isActionRegistration(x) {
|
|
1361
|
+
return x.type === "action";
|
|
1362
|
+
}
|
|
1363
|
+
function isVisibilityRegistration(x) {
|
|
1364
|
+
return x.type === "visibility";
|
|
1365
|
+
}
|
|
1366
|
+
function isOneOf(x, v) {
|
|
1367
|
+
return x == null ? true : Array.isArray(x) ? x.includes(v) : v === x;
|
|
1368
|
+
}
|
|
1369
|
+
function createDataRenderer(render, options) {
|
|
1370
|
+
return _extends({
|
|
1371
|
+
type: "data",
|
|
1372
|
+
render: render
|
|
1373
|
+
}, options);
|
|
1374
|
+
}
|
|
1375
|
+
function createDataRendererLabelled(_render, options) {
|
|
1376
|
+
return _extends({
|
|
1377
|
+
type: "data",
|
|
1378
|
+
render: function render(props, defaultLabel, renderers) {
|
|
1379
|
+
var dl = defaultLabel();
|
|
1380
|
+
return renderers.renderLabel(dl, _render(props, dl.forId, renderers));
|
|
1381
|
+
}
|
|
1382
|
+
}, options);
|
|
1383
|
+
}
|
|
1384
|
+
function createLabelRenderer(options) {
|
|
1385
|
+
return _extends({
|
|
1386
|
+
type: "label"
|
|
1387
|
+
}, options);
|
|
1388
|
+
}
|
|
1389
|
+
function createAdornmentRenderer(render, options) {
|
|
1390
|
+
return _extends({
|
|
1391
|
+
type: "adornment"
|
|
1392
|
+
}, options, {
|
|
1393
|
+
render: render
|
|
1394
|
+
});
|
|
1395
|
+
}
|
|
1396
|
+
function createSelectRenderer(options) {
|
|
1397
|
+
if (options === void 0) {
|
|
1398
|
+
options = {};
|
|
1399
|
+
}
|
|
1400
|
+
return createDataRendererLabelled(function (props, id) {
|
|
1401
|
+
return /*#__PURE__*/React__default["default"].createElement(SelectDataRenderer, {
|
|
1402
|
+
className: options.className,
|
|
1403
|
+
state: props.control,
|
|
1404
|
+
id: id,
|
|
1405
|
+
options: props.options,
|
|
1406
|
+
required: props.required,
|
|
1407
|
+
emptyText: options.emptyText,
|
|
1408
|
+
requiredText: options.requiredText,
|
|
1409
|
+
convert: createSelectConversion(props.field.type)
|
|
1410
|
+
});
|
|
1411
|
+
}, {
|
|
1412
|
+
options: true
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1415
|
+
function SelectDataRenderer(_ref15) {
|
|
1416
|
+
var _effect3 = core.useComponentTracking();
|
|
1417
|
+
try {
|
|
1418
|
+
var state = _ref15.state,
|
|
1419
|
+
options = _ref15.options,
|
|
1420
|
+
className = _ref15.className,
|
|
1421
|
+
convert = _ref15.convert,
|
|
1422
|
+
required = _ref15.required,
|
|
1423
|
+
_ref15$emptyText = _ref15.emptyText,
|
|
1424
|
+
emptyText = _ref15$emptyText === void 0 ? "N/A" : _ref15$emptyText,
|
|
1425
|
+
_ref15$requiredText = _ref15.requiredText,
|
|
1426
|
+
requiredText = _ref15$requiredText === void 0 ? "<please select>" : _ref15$requiredText,
|
|
1427
|
+
props = _objectWithoutPropertiesLoose(_ref15, _excluded3);
|
|
1428
|
+
var value = state.value,
|
|
1429
|
+
disabled = state.disabled;
|
|
1430
|
+
var _useState = React.useState(!required || value == null),
|
|
1431
|
+
showEmpty = _useState[0];
|
|
1432
|
+
var optionStringMap = React.useMemo(function () {
|
|
1433
|
+
return Object.fromEntries(options.map(function (x) {
|
|
1434
|
+
return [convert(x.value), x.value];
|
|
1435
|
+
}));
|
|
1436
|
+
}, [options]);
|
|
1437
|
+
return /*#__PURE__*/React__default["default"].createElement("select", _extends({}, props, {
|
|
1438
|
+
className: className,
|
|
1439
|
+
onChange: function onChange(v) {
|
|
1440
|
+
return state.value = optionStringMap[v.target.value];
|
|
1441
|
+
},
|
|
1442
|
+
value: convert(value),
|
|
1443
|
+
disabled: disabled
|
|
1444
|
+
}), showEmpty && /*#__PURE__*/React__default["default"].createElement("option", {
|
|
1445
|
+
value: ""
|
|
1446
|
+
}, required ? requiredText : emptyText), options.map(function (x, i) {
|
|
1447
|
+
return /*#__PURE__*/React__default["default"].createElement("option", {
|
|
1448
|
+
key: i,
|
|
1449
|
+
value: convert(x.value),
|
|
1450
|
+
disabled: x.disabled
|
|
1451
|
+
}, x.name);
|
|
1452
|
+
}));
|
|
1453
|
+
} finally {
|
|
1454
|
+
_effect3();
|
|
1455
|
+
}
|
|
1456
|
+
}
|
|
1457
|
+
function createSelectConversion(ft) {
|
|
1458
|
+
switch (ft) {
|
|
1459
|
+
case exports.FieldType.String:
|
|
1460
|
+
case exports.FieldType.Int:
|
|
1461
|
+
case exports.FieldType.Double:
|
|
1462
|
+
return function (a) {
|
|
1463
|
+
return a;
|
|
1464
|
+
};
|
|
1465
|
+
default:
|
|
1466
|
+
return function (a) {
|
|
1467
|
+
var _a$toString;
|
|
1468
|
+
return (_a$toString = a == null ? void 0 : a.toString()) != null ? _a$toString : "";
|
|
1469
|
+
};
|
|
1470
|
+
}
|
|
1471
|
+
}
|
|
1472
|
+
function createInputConversion(ft) {
|
|
1473
|
+
switch (ft) {
|
|
1474
|
+
case exports.FieldType.String:
|
|
1475
|
+
return ["text", function (a) {
|
|
1476
|
+
return a;
|
|
1477
|
+
}, function (a) {
|
|
1478
|
+
return a;
|
|
1479
|
+
}];
|
|
1480
|
+
case exports.FieldType.Bool:
|
|
1481
|
+
return ["text", function (a) {
|
|
1482
|
+
return a === "true";
|
|
1483
|
+
}, function (a) {
|
|
1484
|
+
var _a$toString2;
|
|
1485
|
+
return (_a$toString2 = a == null ? void 0 : a.toString()) != null ? _a$toString2 : "";
|
|
1486
|
+
}];
|
|
1487
|
+
case exports.FieldType.Int:
|
|
1488
|
+
return ["number", function (a) {
|
|
1489
|
+
return a !== "" ? parseInt(a) : null;
|
|
1490
|
+
}, function (a) {
|
|
1491
|
+
return a == null ? "" : a;
|
|
1492
|
+
}];
|
|
1493
|
+
case exports.FieldType.Date:
|
|
1494
|
+
return ["date", function (a) {
|
|
1495
|
+
return a;
|
|
1496
|
+
}, function (a) {
|
|
1497
|
+
return a;
|
|
1498
|
+
}];
|
|
1499
|
+
case exports.FieldType.Double:
|
|
1500
|
+
return ["number", function (a) {
|
|
1501
|
+
return parseFloat(a);
|
|
1502
|
+
}, function (a) {
|
|
1503
|
+
return a;
|
|
1504
|
+
}];
|
|
1505
|
+
default:
|
|
1506
|
+
return ["text", function (a) {
|
|
1507
|
+
return a;
|
|
1508
|
+
}, function (a) {
|
|
1509
|
+
return a;
|
|
1510
|
+
}];
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
|
|
1514
|
+
var defaultTailwindTheme = {
|
|
1515
|
+
label: {
|
|
1516
|
+
className: "flex flex-col",
|
|
1517
|
+
groupLabelClass: "font-bold",
|
|
1518
|
+
requiredElement: /*#__PURE__*/React__default["default"].createElement("span", {
|
|
1519
|
+
className: "text-red-500"
|
|
1520
|
+
}, " *")
|
|
1521
|
+
},
|
|
1522
|
+
array: {
|
|
1523
|
+
removableClass: "grid grid-cols-[1fr_auto] items-center gap-x-2",
|
|
1524
|
+
childClass: "grow"
|
|
1525
|
+
},
|
|
1526
|
+
group: {
|
|
1527
|
+
standardClassName: "space-y-4",
|
|
1528
|
+
gridClassName: "gap-x-2 gap-y-4"
|
|
1529
|
+
},
|
|
1530
|
+
action: {
|
|
1531
|
+
className: "bg-primary rounded-lg p-3 text-white"
|
|
1532
|
+
}
|
|
1533
|
+
};
|
|
572
1534
|
|
|
1535
|
+
exports.AlwaysVisible = AlwaysVisible;
|
|
1536
|
+
exports.ControlInput = ControlInput;
|
|
1537
|
+
exports.DefaultBoolOptions = DefaultBoolOptions;
|
|
1538
|
+
exports.DefaultLabelRenderer = DefaultLabelRenderer;
|
|
573
1539
|
exports.FormRendererProvider = FormRendererProvider;
|
|
1540
|
+
exports.SelectDataRenderer = SelectDataRenderer;
|
|
1541
|
+
exports.addMissingControls = addMissingControls;
|
|
574
1542
|
exports.applyDefaultForField = applyDefaultForField;
|
|
575
1543
|
exports.applyDefaultValues = applyDefaultValues;
|
|
576
1544
|
exports.boolField = boolField;
|
|
@@ -578,11 +1546,32 @@ exports.buildSchema = buildSchema;
|
|
|
578
1546
|
exports.compoundField = compoundField;
|
|
579
1547
|
exports.controlForField = controlForField;
|
|
580
1548
|
exports.controlTitle = controlTitle;
|
|
1549
|
+
exports.createAction = createAction;
|
|
1550
|
+
exports.createAdornmentRenderer = createAdornmentRenderer;
|
|
1551
|
+
exports.createDataRenderer = createDataRenderer;
|
|
1552
|
+
exports.createDataRendererLabelled = createDataRendererLabelled;
|
|
1553
|
+
exports.createDefaultActionRenderer = createDefaultActionRenderer;
|
|
1554
|
+
exports.createDefaultAdornmentRenderer = createDefaultAdornmentRenderer;
|
|
1555
|
+
exports.createDefaultArrayRenderer = createDefaultArrayRenderer;
|
|
1556
|
+
exports.createDefaultDataRenderer = createDefaultDataRenderer;
|
|
1557
|
+
exports.createDefaultDisplayRenderer = createDefaultDisplayRenderer;
|
|
1558
|
+
exports.createDefaultGroupRenderer = createDefaultGroupRenderer;
|
|
1559
|
+
exports.createDefaultLabelRenderer = createDefaultLabelRenderer;
|
|
1560
|
+
exports.createDefaultRenderers = createDefaultRenderers;
|
|
1561
|
+
exports.createDefaultSchemaHooks = createDefaultSchemaHooks;
|
|
1562
|
+
exports.createDefaultVisibilityRenderer = createDefaultVisibilityRenderer;
|
|
581
1563
|
exports.createFormEditHooks = createFormEditHooks;
|
|
1564
|
+
exports.createFormRenderer = createFormRenderer;
|
|
1565
|
+
exports.createInputConversion = createInputConversion;
|
|
1566
|
+
exports.createLabelRenderer = createLabelRenderer;
|
|
1567
|
+
exports.createSelectConversion = createSelectConversion;
|
|
1568
|
+
exports.createSelectRenderer = createSelectRenderer;
|
|
582
1569
|
exports.dataControl = dataControl;
|
|
583
1570
|
exports.defaultCompoundField = defaultCompoundField;
|
|
584
|
-
exports.
|
|
1571
|
+
exports.defaultControlForField = defaultControlForField;
|
|
1572
|
+
exports.defaultFormEditHooks = defaultFormEditHooks;
|
|
585
1573
|
exports.defaultScalarField = defaultScalarField;
|
|
1574
|
+
exports.defaultTailwindTheme = defaultTailwindTheme;
|
|
586
1575
|
exports.defaultValueForField = defaultValueForField;
|
|
587
1576
|
exports.defaultValueForFields = defaultValueForFields;
|
|
588
1577
|
exports.elementValueForField = elementValueForField;
|
|
@@ -595,12 +1584,14 @@ exports.findField = findField;
|
|
|
595
1584
|
exports.findScalarField = findScalarField;
|
|
596
1585
|
exports.getDefaultScalarControlProperties = getDefaultScalarControlProperties;
|
|
597
1586
|
exports.getOptionsForScalarField = getOptionsForScalarField;
|
|
1587
|
+
exports.hasOptions = hasOptions;
|
|
598
1588
|
exports.intField = intField;
|
|
599
1589
|
exports.isActionControlsDefinition = isActionControlsDefinition;
|
|
600
1590
|
exports.isCompoundField = isCompoundField;
|
|
601
1591
|
exports.isDataControl = isDataControl;
|
|
602
1592
|
exports.isDataControlDefinition = isDataControlDefinition;
|
|
603
1593
|
exports.isDisplayControlsDefinition = isDisplayControlsDefinition;
|
|
1594
|
+
exports.isGridRenderer = isGridRenderer;
|
|
604
1595
|
exports.isGroupControl = isGroupControl;
|
|
605
1596
|
exports.isGroupControlsDefinition = isGroupControlsDefinition;
|
|
606
1597
|
exports.isScalarField = isScalarField;
|
|
@@ -609,10 +1600,12 @@ exports.makeScalarField = makeScalarField;
|
|
|
609
1600
|
exports.renderControl = renderControl;
|
|
610
1601
|
exports.stringField = stringField;
|
|
611
1602
|
exports.stringOptionsField = stringOptionsField;
|
|
1603
|
+
exports.useControlsWithDefaults = useControlsWithDefaults;
|
|
612
1604
|
exports.useDefaultValue = useDefaultValue;
|
|
613
1605
|
exports.useFormRendererComponents = useFormRendererComponents;
|
|
614
1606
|
exports.useIsControlVisible = useIsControlVisible;
|
|
615
1607
|
exports.visibility = visibility;
|
|
1608
|
+
exports.visitControlData = visitControlData;
|
|
616
1609
|
exports.visitControlDefinition = visitControlDefinition;
|
|
617
1610
|
exports.withScalarOptions = withScalarOptions;
|
|
618
1611
|
//# sourceMappingURL=index.js.map
|