@react-typed-forms/schemas 1.0.0-dev.2 → 1.0.0-dev.20
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/.babelrc +4 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/package-deps_build.json +7 -7
- package/.rush/temp/shrinkwrap-deps.json +458 -7
- package/lib/controlRender.d.ts +81 -64
- package/lib/hooks.d.ts +11 -9
- package/lib/index.d.ts +3 -0
- package/lib/index.js +1621 -19
- package/lib/index.js.map +1 -0
- package/lib/renderers.d.ts +154 -0
- package/lib/schemaBuilder.d.ts +38 -34
- package/lib/tailwind.d.ts +2 -0
- package/lib/types.d.ts +101 -36
- package/lib/util.d.ts +22 -0
- package/package.json +13 -8
- package/src/controlRender.tsx +229 -321
- package/src/hooks.tsx +441 -0
- package/src/index.ts +3 -0
- package/src/renderers.tsx +870 -0
- package/src/schemaBuilder.ts +7 -4
- package/src/tailwind.tsx +21 -0
- package/src/types.ts +173 -39
- package/src/util.ts +212 -0
- package/tsconfig.json +4 -3
- package/lib/controlRender.js +0 -230
- package/lib/hooks.js +0 -93
- package/lib/schemaBuilder.js +0 -67
- package/lib/types.js +0 -68
- package/schemas.build.log +0 -2
- package/src/hooks.ts +0 -164
package/lib/index.js
CHANGED
|
@@ -1,20 +1,1622 @@
|
|
|
1
|
-
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
for (var
|
|
1
|
+
var React = require('react');
|
|
2
|
+
var core = require('@react-typed-forms/core');
|
|
3
|
+
var jsonata = require('jsonata');
|
|
4
|
+
var clsx = require('clsx');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
|
+
var jsonata__default = /*#__PURE__*/_interopDefaultLegacy(jsonata);
|
|
10
|
+
var clsx__default = /*#__PURE__*/_interopDefaultLegacy(clsx);
|
|
11
|
+
|
|
12
|
+
function _extends() {
|
|
13
|
+
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
14
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
15
|
+
var source = arguments[i];
|
|
16
|
+
for (var key in source) {
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
18
|
+
target[key] = source[key];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return target;
|
|
23
|
+
};
|
|
24
|
+
return _extends.apply(this, arguments);
|
|
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
|
+
}
|
|
69
|
+
|
|
70
|
+
exports.FieldType = void 0;
|
|
71
|
+
(function (FieldType) {
|
|
72
|
+
FieldType["String"] = "String";
|
|
73
|
+
FieldType["Bool"] = "Bool";
|
|
74
|
+
FieldType["Int"] = "Int";
|
|
75
|
+
FieldType["Date"] = "Date";
|
|
76
|
+
FieldType["DateTime"] = "DateTime";
|
|
77
|
+
FieldType["Double"] = "Double";
|
|
78
|
+
FieldType["EntityRef"] = "EntityRef";
|
|
79
|
+
FieldType["Compound"] = "Compound";
|
|
80
|
+
FieldType["AutoId"] = "AutoId";
|
|
81
|
+
FieldType["Image"] = "Image";
|
|
82
|
+
FieldType["Any"] = "Any";
|
|
83
|
+
})(exports.FieldType || (exports.FieldType = {}));
|
|
84
|
+
exports.ControlDefinitionType = void 0;
|
|
85
|
+
(function (ControlDefinitionType) {
|
|
86
|
+
ControlDefinitionType["Data"] = "Data";
|
|
87
|
+
ControlDefinitionType["Group"] = "Group";
|
|
88
|
+
ControlDefinitionType["Display"] = "Display";
|
|
89
|
+
ControlDefinitionType["Action"] = "Action";
|
|
90
|
+
})(exports.ControlDefinitionType || (exports.ControlDefinitionType = {}));
|
|
91
|
+
exports.DynamicPropertyType = void 0;
|
|
92
|
+
(function (DynamicPropertyType) {
|
|
93
|
+
DynamicPropertyType["Visible"] = "Visible";
|
|
94
|
+
DynamicPropertyType["DefaultValue"] = "DefaultValue";
|
|
95
|
+
})(exports.DynamicPropertyType || (exports.DynamicPropertyType = {}));
|
|
96
|
+
exports.ExpressionType = void 0;
|
|
97
|
+
(function (ExpressionType) {
|
|
98
|
+
ExpressionType["Jsonata"] = "Jsonata";
|
|
99
|
+
ExpressionType["FieldValue"] = "FieldValue";
|
|
100
|
+
ExpressionType["UserMatch"] = "UserMatch";
|
|
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 = {}));
|
|
109
|
+
exports.ControlAdornmentType = void 0;
|
|
110
|
+
(function (ControlAdornmentType) {
|
|
111
|
+
ControlAdornmentType["Tooltip"] = "Tooltip";
|
|
112
|
+
ControlAdornmentType["Accordion"] = "Accordion";
|
|
113
|
+
ControlAdornmentType["HelpText"] = "HelpText";
|
|
114
|
+
})(exports.ControlAdornmentType || (exports.ControlAdornmentType = {}));
|
|
115
|
+
exports.DataRenderType = void 0;
|
|
116
|
+
(function (DataRenderType) {
|
|
117
|
+
DataRenderType["Standard"] = "Standard";
|
|
118
|
+
DataRenderType["Radio"] = "Radio";
|
|
119
|
+
DataRenderType["HtmlEditor"] = "HtmlEditor";
|
|
120
|
+
DataRenderType["IconList"] = "IconList";
|
|
121
|
+
DataRenderType["CheckList"] = "CheckList";
|
|
122
|
+
DataRenderType["UserSelection"] = "UserSelection";
|
|
123
|
+
DataRenderType["Synchronised"] = "Synchronised";
|
|
124
|
+
DataRenderType["IconSelector"] = "IconSelector";
|
|
125
|
+
DataRenderType["DateTime"] = "DateTime";
|
|
126
|
+
DataRenderType["Checkbox"] = "Checkbox";
|
|
127
|
+
DataRenderType["Dropdown"] = "Dropdown";
|
|
128
|
+
})(exports.DataRenderType || (exports.DataRenderType = {}));
|
|
129
|
+
exports.SyncTextType = void 0;
|
|
130
|
+
(function (SyncTextType) {
|
|
131
|
+
SyncTextType["Camel"] = "Camel";
|
|
132
|
+
SyncTextType["Snake"] = "Snake";
|
|
133
|
+
SyncTextType["Pascal"] = "Pascal";
|
|
134
|
+
})(exports.SyncTextType || (exports.SyncTextType = {}));
|
|
135
|
+
exports.GroupRenderType = void 0;
|
|
136
|
+
(function (GroupRenderType) {
|
|
137
|
+
GroupRenderType["Standard"] = "Standard";
|
|
138
|
+
GroupRenderType["Grid"] = "Grid";
|
|
139
|
+
GroupRenderType["GroupElement"] = "GroupElement";
|
|
140
|
+
})(exports.GroupRenderType || (exports.GroupRenderType = {}));
|
|
141
|
+
exports.DisplayDataType = void 0;
|
|
142
|
+
(function (DisplayDataType) {
|
|
143
|
+
DisplayDataType["Text"] = "Text";
|
|
144
|
+
DisplayDataType["Html"] = "Html";
|
|
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 = {}));
|
|
156
|
+
function isDataControlDefinition(x) {
|
|
157
|
+
return x.type === exports.ControlDefinitionType.Data;
|
|
158
|
+
}
|
|
159
|
+
function isGroupControlsDefinition(x) {
|
|
160
|
+
return x.type === exports.ControlDefinitionType.Group;
|
|
161
|
+
}
|
|
162
|
+
function isDisplayControlsDefinition(x) {
|
|
163
|
+
return x.type === exports.ControlDefinitionType.Display;
|
|
164
|
+
}
|
|
165
|
+
function isActionControlsDefinition(x) {
|
|
166
|
+
return x.type === exports.ControlDefinitionType.Action;
|
|
167
|
+
}
|
|
168
|
+
function visitControlDefinition(x, visitor, defaultValue) {
|
|
169
|
+
switch (x.type) {
|
|
170
|
+
case exports.ControlDefinitionType.Action:
|
|
171
|
+
return visitor.action(x);
|
|
172
|
+
case exports.ControlDefinitionType.Data:
|
|
173
|
+
return visitor.data(x);
|
|
174
|
+
case exports.ControlDefinitionType.Display:
|
|
175
|
+
return visitor.display(x);
|
|
176
|
+
case exports.ControlDefinitionType.Group:
|
|
177
|
+
return visitor.group(x);
|
|
178
|
+
default:
|
|
179
|
+
return defaultValue(x);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function dataControl(field, options) {
|
|
183
|
+
return _extends({
|
|
184
|
+
type: exports.ControlDefinitionType.Data,
|
|
185
|
+
field: field
|
|
186
|
+
}, options);
|
|
187
|
+
}
|
|
188
|
+
function fieldValueExpr(field, value) {
|
|
189
|
+
return {
|
|
190
|
+
type: exports.ExpressionType.FieldValue,
|
|
191
|
+
field: field,
|
|
192
|
+
value: value
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function visibility(expr) {
|
|
196
|
+
return {
|
|
197
|
+
type: exports.DynamicPropertyType.Visible,
|
|
198
|
+
expr: expr
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
function isGridRenderer(options) {
|
|
202
|
+
return options.type === exports.GroupRenderType.Grid;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function buildSchema(def) {
|
|
206
|
+
return Object.entries(def).map(function (x) {
|
|
207
|
+
return x[1](x[0]);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
function stringField(displayName, options) {
|
|
211
|
+
return makeScalarField(_extends({
|
|
212
|
+
type: exports.FieldType.String,
|
|
213
|
+
displayName: displayName
|
|
214
|
+
}, options));
|
|
215
|
+
}
|
|
216
|
+
function stringOptionsField(displayName) {
|
|
217
|
+
return makeScalarField({
|
|
218
|
+
type: exports.FieldType.String,
|
|
219
|
+
displayName: displayName,
|
|
220
|
+
options: [].slice.call(arguments, 1)
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
function withScalarOptions(options, v) {
|
|
224
|
+
return function (n) {
|
|
225
|
+
return _extends({}, v(n), options);
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function makeScalarField(options) {
|
|
229
|
+
return function (n) {
|
|
230
|
+
return _extends({}, defaultScalarField(n, n), options);
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
function makeCompoundField(options) {
|
|
234
|
+
return function (n) {
|
|
235
|
+
return _extends({}, defaultCompoundField(n, n, false), options);
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function intField(displayName, options) {
|
|
239
|
+
return makeScalarField(_extends({
|
|
240
|
+
type: exports.FieldType.Int,
|
|
241
|
+
displayName: displayName
|
|
242
|
+
}, options));
|
|
243
|
+
}
|
|
244
|
+
function boolField(displayName, options) {
|
|
245
|
+
return makeScalarField(_extends({
|
|
246
|
+
type: exports.FieldType.Bool,
|
|
247
|
+
displayName: displayName
|
|
248
|
+
}, options));
|
|
249
|
+
}
|
|
250
|
+
function compoundField(displayName, fields, other) {
|
|
251
|
+
return function (field) {
|
|
252
|
+
return _extends({}, defaultCompoundField(field, displayName, false), other, {
|
|
253
|
+
children: fields
|
|
254
|
+
});
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
function defaultScalarField(field, displayName) {
|
|
258
|
+
return {
|
|
259
|
+
field: field,
|
|
260
|
+
displayName: displayName,
|
|
261
|
+
type: exports.FieldType.String
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
function defaultCompoundField(field, displayName, collection) {
|
|
265
|
+
return {
|
|
266
|
+
tags: [],
|
|
267
|
+
field: field,
|
|
268
|
+
displayName: displayName,
|
|
269
|
+
type: exports.FieldType.Compound,
|
|
270
|
+
collection: collection,
|
|
271
|
+
system: false,
|
|
272
|
+
treeChildren: false,
|
|
273
|
+
children: [],
|
|
274
|
+
onlyForTypes: [],
|
|
275
|
+
required: true
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
function applyDefaultValues(v, fields) {
|
|
280
|
+
if (!v) return defaultValueForFields(fields);
|
|
281
|
+
var applyValue = fields.filter(function (x) {
|
|
282
|
+
return isCompoundField(x) || !(x.field in v);
|
|
283
|
+
});
|
|
284
|
+
if (!applyValue.length) return v;
|
|
285
|
+
var out = _extends({}, v);
|
|
286
|
+
applyValue.forEach(function (x) {
|
|
287
|
+
out[x.field] = x.field in v ? applyDefaultForField(v[x.field], x, fields) : defaultValueForField(x);
|
|
288
|
+
});
|
|
289
|
+
return out;
|
|
290
|
+
}
|
|
291
|
+
function applyDefaultForField(v, field, parent, notElement) {
|
|
292
|
+
if (field.collection && !notElement) {
|
|
293
|
+
return (v != null ? v : []).map(function (x) {
|
|
294
|
+
return applyDefaultForField(x, field, parent, true);
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
if (isCompoundField(field)) {
|
|
298
|
+
if (!v && !field.required) return v;
|
|
299
|
+
return applyDefaultValues(v, field.treeChildren ? parent : field.children);
|
|
300
|
+
}
|
|
301
|
+
return defaultValueForField(field);
|
|
302
|
+
}
|
|
303
|
+
function defaultValueForFields(fields) {
|
|
304
|
+
return Object.fromEntries(fields.map(function (x) {
|
|
305
|
+
return [x.field, defaultValueForField(x)];
|
|
306
|
+
}));
|
|
307
|
+
}
|
|
308
|
+
function defaultValueForField(sf) {
|
|
309
|
+
if (isCompoundField(sf)) {
|
|
310
|
+
return sf.required ? sf.collection ? [] : defaultValueForFields(sf.children) : undefined;
|
|
311
|
+
}
|
|
312
|
+
if (sf.collection) return [];
|
|
313
|
+
return sf.defaultValue;
|
|
314
|
+
}
|
|
315
|
+
function elementValueForField(sf) {
|
|
316
|
+
if (isCompoundField(sf)) {
|
|
317
|
+
return defaultValueForFields(sf.children);
|
|
318
|
+
}
|
|
319
|
+
return sf.defaultValue;
|
|
320
|
+
}
|
|
321
|
+
function findScalarField(fields, field) {
|
|
322
|
+
return findField(fields, field);
|
|
323
|
+
}
|
|
324
|
+
function findCompoundField(fields, field) {
|
|
325
|
+
return findField(fields, field);
|
|
326
|
+
}
|
|
327
|
+
function findField(fields, field) {
|
|
328
|
+
return fields.find(function (x) {
|
|
329
|
+
return x.field === field;
|
|
330
|
+
});
|
|
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
|
+
}
|
|
455
|
+
function controlTitle(title, field) {
|
|
456
|
+
return title ? title : fieldDisplayName(field);
|
|
457
|
+
}
|
|
458
|
+
function renderControl(definition, formState, hooks, key) {
|
|
459
|
+
var fields = formState.fields;
|
|
460
|
+
return visitControlDefinition(definition, {
|
|
461
|
+
data: function data(def) {
|
|
462
|
+
var fieldData = findScalarField(fields, def.field);
|
|
463
|
+
if (!fieldData) return /*#__PURE__*/React__default["default"].createElement("h1", {
|
|
464
|
+
key: key
|
|
465
|
+
}, "No schema field for: ", def.field);
|
|
466
|
+
return /*#__PURE__*/React__default["default"].createElement(DataRenderer, {
|
|
467
|
+
key: key,
|
|
468
|
+
formState: formState,
|
|
469
|
+
hooks: hooks,
|
|
470
|
+
controlDef: def,
|
|
471
|
+
fieldData: fieldData
|
|
472
|
+
});
|
|
473
|
+
},
|
|
474
|
+
group: function group(d) {
|
|
475
|
+
return /*#__PURE__*/React__default["default"].createElement(GroupRenderer, {
|
|
476
|
+
key: key,
|
|
477
|
+
hooks: hooks,
|
|
478
|
+
groupDef: d,
|
|
479
|
+
formState: formState
|
|
480
|
+
});
|
|
481
|
+
},
|
|
482
|
+
action: function action(d) {
|
|
483
|
+
return /*#__PURE__*/React__default["default"].createElement(ActionRenderer, {
|
|
484
|
+
key: key,
|
|
485
|
+
hooks: hooks,
|
|
486
|
+
formState: formState,
|
|
487
|
+
actionDef: d
|
|
488
|
+
});
|
|
489
|
+
},
|
|
490
|
+
display: function display(d) {
|
|
491
|
+
return /*#__PURE__*/React__default["default"].createElement(DisplayRenderer, {
|
|
492
|
+
key: key,
|
|
493
|
+
hooks: hooks,
|
|
494
|
+
formState: formState,
|
|
495
|
+
displayDef: d
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}, function () {
|
|
499
|
+
return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown control: ", definition.type);
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
/** @trackControls */
|
|
503
|
+
function DataRenderer(_ref2) {
|
|
504
|
+
var _effect2 = core.useComponentTracking();
|
|
505
|
+
try {
|
|
506
|
+
var _props$customRender;
|
|
507
|
+
var hooks = _ref2.hooks,
|
|
508
|
+
formState = _ref2.formState,
|
|
509
|
+
controlDef = _ref2.controlDef,
|
|
510
|
+
fieldData = _ref2.fieldData;
|
|
511
|
+
var renderer = useFormRendererComponents();
|
|
512
|
+
var props = hooks.useDataProperties(formState, controlDef, fieldData, renderer);
|
|
513
|
+
return ((_props$customRender = props.customRender) != null ? _props$customRender : renderer.renderData)(props);
|
|
514
|
+
} finally {
|
|
515
|
+
_effect2();
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
/** @trackControls */ /** @trackControls */
|
|
519
|
+
function ActionRenderer(_ref3) {
|
|
520
|
+
var _effect3 = core.useComponentTracking();
|
|
521
|
+
try {
|
|
522
|
+
var hooks = _ref3.hooks,
|
|
523
|
+
formState = _ref3.formState,
|
|
524
|
+
actionDef = _ref3.actionDef;
|
|
525
|
+
var _useFormRendererCompo = useFormRendererComponents(),
|
|
526
|
+
renderAction = _useFormRendererCompo.renderAction;
|
|
527
|
+
var actionControlProperties = hooks.useActionProperties(formState, actionDef);
|
|
528
|
+
return renderAction(actionControlProperties);
|
|
529
|
+
} finally {
|
|
530
|
+
_effect3();
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
/** @trackControls */ /** @trackControls */
|
|
534
|
+
function GroupRenderer(_ref4) {
|
|
535
|
+
var _effect4 = core.useComponentTracking();
|
|
536
|
+
try {
|
|
537
|
+
var hooks = _ref4.hooks,
|
|
538
|
+
formState = _ref4.formState,
|
|
539
|
+
groupDef = _ref4.groupDef;
|
|
540
|
+
var renderers = useFormRendererComponents();
|
|
541
|
+
var groupProps = hooks.useGroupProperties(formState, groupDef, hooks, renderers);
|
|
542
|
+
return renderers.renderGroup(groupProps);
|
|
543
|
+
} finally {
|
|
544
|
+
_effect4();
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
/** @trackControls */ /** @trackControls */
|
|
548
|
+
function DisplayRenderer(_ref5) {
|
|
549
|
+
var _effect5 = core.useComponentTracking();
|
|
550
|
+
try {
|
|
551
|
+
var hooks = _ref5.hooks,
|
|
552
|
+
formState = _ref5.formState,
|
|
553
|
+
displayDef = _ref5.displayDef;
|
|
554
|
+
var _useFormRendererCompo2 = useFormRendererComponents(),
|
|
555
|
+
renderDisplay = _useFormRendererCompo2.renderDisplay;
|
|
556
|
+
var displayProps = hooks.useDisplayProperties(formState, displayDef);
|
|
557
|
+
return renderDisplay(displayProps);
|
|
558
|
+
} finally {
|
|
559
|
+
_effect5();
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
function controlForField(field, formState) {
|
|
563
|
+
var _ref6;
|
|
564
|
+
var refField = findField(formState.fields, field);
|
|
565
|
+
return (_ref6 = refField && formState.data.fields[refField.field]) != null ? _ref6 : core.newControl(undefined);
|
|
566
|
+
}
|
|
567
|
+
function fieldForControl(c) {
|
|
568
|
+
return isDataControl(c) ? c.field : isGroupControl(c) ? c.compoundField : undefined;
|
|
569
|
+
}
|
|
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
|
+
};
|
|
584
|
+
}
|
|
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
|
+
});
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
function useDefaultValue(definition, field, formState, hooks) {
|
|
624
|
+
var _definition$dynamic;
|
|
625
|
+
var valueExpression = (_definition$dynamic = definition.dynamic) == null ? void 0 : _definition$dynamic.find(function (x) {
|
|
626
|
+
return x.type === exports.DynamicPropertyType.DefaultValue;
|
|
627
|
+
});
|
|
628
|
+
if (valueExpression) {
|
|
629
|
+
return hooks.useExpression(valueExpression.expr, formState).value;
|
|
630
|
+
}
|
|
631
|
+
return field.defaultValue;
|
|
632
|
+
}
|
|
633
|
+
function useIsControlVisible(definition, formState, hooks) {
|
|
634
|
+
var _definition$dynamic2, _ref2, _onlyForTypes$length;
|
|
635
|
+
var visibleExpression = (_definition$dynamic2 = definition.dynamic) == null ? void 0 : _definition$dynamic2.find(function (x) {
|
|
636
|
+
return x.type === exports.DynamicPropertyType.Visible;
|
|
637
|
+
});
|
|
638
|
+
if (visibleExpression && visibleExpression.expr) {
|
|
639
|
+
var exprValue = hooks.useExpression(visibleExpression.expr, formState).value;
|
|
640
|
+
return {
|
|
641
|
+
value: Boolean(exprValue),
|
|
642
|
+
canChange: true
|
|
643
|
+
};
|
|
644
|
+
}
|
|
645
|
+
var schemaFields = formState.fields;
|
|
646
|
+
var _useMemo = React.useMemo(function () {
|
|
647
|
+
var _ref, _formState$data$field;
|
|
648
|
+
var typeField = schemaFields.find(function (x) {
|
|
649
|
+
return isScalarField(x) && x.isTypeField;
|
|
650
|
+
});
|
|
651
|
+
var typeControl = (_ref = typeField && ((_formState$data$field = formState.data.fields) == null ? void 0 : _formState$data$field[typeField.field])) != null ? _ref : core.newControl(undefined);
|
|
652
|
+
var compoundField = isGroupControl(definition) && definition.compoundField ? formState.data.fields[definition.compoundField] : undefined;
|
|
653
|
+
return {
|
|
654
|
+
typeControl: typeControl,
|
|
655
|
+
compoundField: compoundField
|
|
656
|
+
};
|
|
657
|
+
}, [schemaFields, formState.data]),
|
|
658
|
+
typeControl = _useMemo.typeControl,
|
|
659
|
+
compoundField = _useMemo.compoundField;
|
|
660
|
+
var fieldName = fieldForControl(definition);
|
|
661
|
+
var onlyForTypes = (_ref2 = fieldName ? findField(schemaFields, fieldName) : undefined) == null ? void 0 : _ref2.onlyForTypes;
|
|
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
|
+
};
|
|
668
|
+
}
|
|
669
|
+
function getDefaultScalarControlProperties(definition, field, visible, defaultValue, control, formState) {
|
|
670
|
+
var _definition$renderOpt, _definition$required, _ref3, _formState$readonly;
|
|
671
|
+
return {
|
|
672
|
+
definition: definition,
|
|
673
|
+
field: field,
|
|
674
|
+
defaultValue: defaultValue,
|
|
675
|
+
options: getOptionsForScalarField(field),
|
|
676
|
+
renderOptions: (_definition$renderOpt = definition.renderOptions) != null ? _definition$renderOpt : {
|
|
677
|
+
type: exports.DataRenderType.Standard
|
|
678
|
+
},
|
|
679
|
+
required: (_definition$required = definition.required) != null ? _definition$required : false,
|
|
680
|
+
visible: visible,
|
|
681
|
+
readonly: (_ref3 = (_formState$readonly = formState.readonly) != null ? _formState$readonly : definition.readonly) != null ? _ref3 : false,
|
|
682
|
+
control: control,
|
|
683
|
+
formState: formState
|
|
684
|
+
};
|
|
685
|
+
}
|
|
686
|
+
function getOptionsForScalarField(field) {
|
|
687
|
+
var _opts$length;
|
|
688
|
+
var opts = field.options;
|
|
689
|
+
if ((_opts$length = opts == null ? void 0 : opts.length) != null ? _opts$length : 0 > 0) {
|
|
690
|
+
return opts;
|
|
691
|
+
}
|
|
692
|
+
return undefined;
|
|
693
|
+
}
|
|
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
|
+
});
|
|
768
|
+
}
|
|
769
|
+
return {
|
|
770
|
+
useExpression: useExpression,
|
|
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);
|
|
782
|
+
var scalarControl = formState.data.fields[field.field];
|
|
783
|
+
React.useEffect(function () {
|
|
784
|
+
if (!isVisible) scalarControl.value = null;else if (scalarControl.current.value == null) {
|
|
785
|
+
scalarControl.value = defaultValue;
|
|
786
|
+
}
|
|
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
|
+
});
|
|
806
|
+
},
|
|
807
|
+
useDisplayProperties: function useDisplayProperties(fs, definition) {
|
|
808
|
+
var visible = useIsControlVisible(definition, fs, schemaHooks);
|
|
809
|
+
return {
|
|
810
|
+
visible: visible,
|
|
811
|
+
definition: definition
|
|
812
|
+
};
|
|
813
|
+
},
|
|
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 = {
|
|
824
|
+
visible: visible,
|
|
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
|
|
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;
|
|
848
|
+
},
|
|
849
|
+
useActionProperties: function useActionProperties(formState, definition) {
|
|
850
|
+
var visible = useIsControlVisible(definition, formState, schemaHooks);
|
|
851
|
+
return {
|
|
852
|
+
visible: visible,
|
|
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
|
+
}
|
|
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));
|
|
904
|
+
}
|
|
905
|
+
};
|
|
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, _customRenderers$find3;
|
|
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 arrayRenderer = (_customRenderers$find2 = customRenderers.find(isArrayRegistration)) != null ? _customRenderers$find2 : defaultRenderers.array;
|
|
930
|
+
var renderVisibility = ((_customRenderers$find3 = customRenderers.find(isVisibilityRegistration)) != null ? _customRenderers$find3 : defaultRenderers.visibility).render;
|
|
931
|
+
var formRenderers = {
|
|
932
|
+
renderAction: renderAction,
|
|
933
|
+
renderData: _renderData,
|
|
934
|
+
renderGroup: _renderGroup,
|
|
935
|
+
renderDisplay: renderDisplay,
|
|
936
|
+
renderLabel: renderLabel,
|
|
937
|
+
renderArray: renderArray,
|
|
938
|
+
renderVisibility: renderVisibility,
|
|
939
|
+
renderAdornment: renderAdornment
|
|
940
|
+
};
|
|
941
|
+
function renderAdornment(props) {
|
|
942
|
+
var _adornmentRegistratio;
|
|
943
|
+
var renderer = (_adornmentRegistratio = adornmentRegistrations.find(function (x) {
|
|
944
|
+
return isOneOf(x.adornmentType, props.definition.type);
|
|
945
|
+
})) != null ? _adornmentRegistratio : defaultRenderers.adornment;
|
|
946
|
+
return renderer.render(props);
|
|
947
|
+
}
|
|
948
|
+
function renderArray(props) {
|
|
949
|
+
return arrayRenderer.render(props, formRenderers);
|
|
950
|
+
}
|
|
951
|
+
function renderLabel(props, elem) {
|
|
952
|
+
return labelRenderer.render(props, elem, formRenderers);
|
|
953
|
+
}
|
|
954
|
+
function withAdornments(definition, adornments) {
|
|
955
|
+
var _definition$adornment, _definition$adornment2;
|
|
956
|
+
var rAdornments = adornments ? adornments : (_definition$adornment = (_definition$adornment2 = definition.adornments) == null ? void 0 : _definition$adornment2.map(function (x, i) {
|
|
957
|
+
return renderAdornment({
|
|
958
|
+
definition: x,
|
|
959
|
+
key: i
|
|
960
|
+
});
|
|
961
|
+
})) != null ? _definition$adornment : [];
|
|
962
|
+
function combineAdornments(placement) {
|
|
963
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, rAdornments.filter(function (x) {
|
|
964
|
+
return x.child && x.child[0] === placement;
|
|
965
|
+
}).map(function (x) {
|
|
966
|
+
return x.child[1];
|
|
967
|
+
}));
|
|
968
|
+
}
|
|
969
|
+
return [rAdornments, combineAdornments, function (mainElem) {
|
|
970
|
+
return !adornments ? mainElem : rAdornments.reduce(function (e, n) {
|
|
971
|
+
var _n$wrap;
|
|
972
|
+
return (_n$wrap = n.wrap == null ? void 0 : n.wrap(e)) != null ? _n$wrap : e;
|
|
973
|
+
}, mainElem);
|
|
974
|
+
}];
|
|
975
|
+
}
|
|
976
|
+
function _renderData(props, adornments) {
|
|
977
|
+
var _dataRegistrations$fi;
|
|
978
|
+
var definition = props.definition,
|
|
979
|
+
renderType = props.renderOptions.type,
|
|
980
|
+
visible = props.visible,
|
|
981
|
+
required = props.required,
|
|
982
|
+
control = props.control,
|
|
983
|
+
field = props.field;
|
|
984
|
+
var options = hasOptions(props);
|
|
985
|
+
var renderer = (_dataRegistrations$fi = dataRegistrations.find(function (x) {
|
|
986
|
+
var _x$collection, _field$collection, _x$options;
|
|
987
|
+
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));
|
|
988
|
+
})) != null ? _dataRegistrations$fi : defaultRenderers.data;
|
|
989
|
+
var _withAdornments = withAdornments(definition, adornments),
|
|
990
|
+
rAdornments = _withAdornments[0],
|
|
991
|
+
renderAdornment = _withAdornments[1],
|
|
992
|
+
wrapElem = _withAdornments[2];
|
|
993
|
+
return wrapElem(renderer.render(props, createLabel, _extends({}, formRenderers, {
|
|
994
|
+
renderData: function renderData(p) {
|
|
995
|
+
return _renderData(p, rAdornments);
|
|
996
|
+
}
|
|
997
|
+
})));
|
|
998
|
+
function createLabel(labelProps) {
|
|
999
|
+
var _labelProps$title;
|
|
1000
|
+
return _extends({
|
|
1001
|
+
visible: visible,
|
|
1002
|
+
required: required,
|
|
1003
|
+
control: control,
|
|
1004
|
+
forId: "c" + control.uniqueId,
|
|
1005
|
+
renderAdornment: renderAdornment
|
|
1006
|
+
}, labelProps, {
|
|
1007
|
+
title: (_labelProps$title = labelProps == null ? void 0 : labelProps.title) != null ? _labelProps$title : controlTitle(definition.title, field)
|
|
1008
|
+
});
|
|
1009
|
+
}
|
|
1010
|
+
}
|
|
1011
|
+
function _renderGroup(props, adornments) {
|
|
1012
|
+
var definition = props.definition,
|
|
1013
|
+
visible = props.visible,
|
|
1014
|
+
field = props.field;
|
|
1015
|
+
var _withAdornments2 = withAdornments(props.definition, adornments),
|
|
1016
|
+
rAdornments = _withAdornments2[0],
|
|
1017
|
+
renderAdornment = _withAdornments2[1],
|
|
1018
|
+
wrapElem = _withAdornments2[2];
|
|
1019
|
+
var title = props.hideTitle ? undefined : field ? controlTitle(definition.title, field) : definition.title;
|
|
1020
|
+
return wrapElem(defaultRenderers.group.render(props, createLabel, _extends({}, formRenderers, {
|
|
1021
|
+
renderGroup: function renderGroup(p) {
|
|
1022
|
+
return _renderGroup(p, rAdornments);
|
|
1023
|
+
}
|
|
1024
|
+
})));
|
|
1025
|
+
function createLabel(labelProps) {
|
|
1026
|
+
return _extends({
|
|
1027
|
+
required: false,
|
|
1028
|
+
visible: visible,
|
|
1029
|
+
group: true,
|
|
1030
|
+
renderAdornment: renderAdornment,
|
|
1031
|
+
title: title
|
|
1032
|
+
}, labelProps);
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
function renderAction(props, adornments) {
|
|
1036
|
+
var _customRenderers$find4;
|
|
1037
|
+
var renderer = (_customRenderers$find4 = customRenderers.find(isActionRegistration)) != null ? _customRenderers$find4 : defaultRenderers.action;
|
|
1038
|
+
var _withAdornments3 = withAdornments(props.definition, adornments),
|
|
1039
|
+
wrapElem = _withAdornments3[2];
|
|
1040
|
+
return wrapElem(renderer.render(props, formRenderers));
|
|
1041
|
+
}
|
|
1042
|
+
function renderDisplay(props, adornments) {
|
|
1043
|
+
var _withAdornments4 = withAdornments(props.definition, adornments),
|
|
1044
|
+
wrapElem = _withAdornments4[2];
|
|
1045
|
+
return wrapElem(defaultRenderers.display.render(props, formRenderers));
|
|
1046
|
+
}
|
|
1047
|
+
return formRenderers;
|
|
1048
|
+
}
|
|
1049
|
+
function createDefaultActionRenderer(options) {
|
|
1050
|
+
if (options === void 0) {
|
|
1051
|
+
options = {};
|
|
1052
|
+
}
|
|
1053
|
+
function render(_ref, _ref2) {
|
|
1054
|
+
var visible = _ref.visible,
|
|
1055
|
+
onClick = _ref.onClick,
|
|
1056
|
+
title = _ref.definition.title;
|
|
1057
|
+
var renderVisibility = _ref2.renderVisibility;
|
|
1058
|
+
return renderVisibility(visible, /*#__PURE__*/React__default["default"].createElement("button", {
|
|
1059
|
+
className: options.className,
|
|
1060
|
+
onClick: onClick
|
|
1061
|
+
}, title));
|
|
1062
|
+
}
|
|
1063
|
+
return {
|
|
1064
|
+
render: render,
|
|
1065
|
+
type: "action"
|
|
1066
|
+
};
|
|
1067
|
+
}
|
|
1068
|
+
function createDefaultLabelRenderer(options) {
|
|
1069
|
+
if (options === void 0) {
|
|
1070
|
+
options = {
|
|
1071
|
+
requiredElement: /*#__PURE__*/React__default["default"].createElement("span", null, " *")
|
|
1072
|
+
};
|
|
1073
|
+
}
|
|
1074
|
+
return {
|
|
1075
|
+
render: function render(p, elem, _ref3) {
|
|
1076
|
+
var renderVisibility = _ref3.renderVisibility;
|
|
1077
|
+
return renderVisibility(p.visible, /*#__PURE__*/React__default["default"].createElement(DefaultLabelRenderer, _extends({}, p, options, {
|
|
1078
|
+
children: elem
|
|
1079
|
+
})));
|
|
1080
|
+
},
|
|
1081
|
+
type: "label"
|
|
1082
|
+
};
|
|
1083
|
+
}
|
|
1084
|
+
function DefaultLabelRenderer(_ref4) {
|
|
1085
|
+
var _effect = core.useComponentTracking();
|
|
1086
|
+
try {
|
|
1087
|
+
var className = _ref4.className,
|
|
1088
|
+
labelClass = _ref4.labelClass,
|
|
1089
|
+
title = _ref4.title,
|
|
1090
|
+
forId = _ref4.forId,
|
|
1091
|
+
required = _ref4.required,
|
|
1092
|
+
children = _ref4.children,
|
|
1093
|
+
group = _ref4.group,
|
|
1094
|
+
groupLabelClass = _ref4.groupLabelClass,
|
|
1095
|
+
renderAdornment = _ref4.renderAdornment,
|
|
1096
|
+
requiredElement = _ref4.requiredElement;
|
|
1097
|
+
return title ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1098
|
+
className: className
|
|
1099
|
+
}, renderAdornment(exports.AdornmentPlacement.LabelStart), /*#__PURE__*/React__default["default"].createElement("label", {
|
|
1100
|
+
htmlFor: forId,
|
|
1101
|
+
className: clsx__default["default"](labelClass, group && groupLabelClass)
|
|
1102
|
+
}, 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);
|
|
1103
|
+
} finally {
|
|
1104
|
+
_effect();
|
|
1105
|
+
}
|
|
1106
|
+
}
|
|
1107
|
+
function createDefaultArrayRenderer(options) {
|
|
1108
|
+
var _ref5 = options != null ? options : {},
|
|
1109
|
+
className = _ref5.className,
|
|
1110
|
+
removableClass = _ref5.removableClass,
|
|
1111
|
+
childClass = _ref5.childClass,
|
|
1112
|
+
removableChildClass = _ref5.removableChildClass,
|
|
1113
|
+
removeActionClass = _ref5.removeActionClass,
|
|
1114
|
+
addActionClass = _ref5.addActionClass;
|
|
1115
|
+
function render(_ref6, _ref7) {
|
|
1116
|
+
var childCount = _ref6.childCount,
|
|
1117
|
+
renderChild = _ref6.renderChild,
|
|
1118
|
+
addAction = _ref6.addAction,
|
|
1119
|
+
removeAction = _ref6.removeAction,
|
|
1120
|
+
childKey = _ref6.childKey;
|
|
1121
|
+
var renderAction = _ref7.renderAction;
|
|
1122
|
+
return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1123
|
+
className: clsx__default["default"](className, removeAction && removableClass)
|
|
1124
|
+
}, Array.from({
|
|
1125
|
+
length: childCount
|
|
1126
|
+
}, function (_, x) {
|
|
1127
|
+
return removeAction ? /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
|
|
1128
|
+
key: childKey(x)
|
|
1129
|
+
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1130
|
+
className: clsx__default["default"](childClass, removableChildClass)
|
|
1131
|
+
}, renderChild(x)), /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1132
|
+
className: removeActionClass
|
|
1133
|
+
}, renderAction(removeAction(x)))) : /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1134
|
+
key: childKey(x),
|
|
1135
|
+
className: childClass
|
|
1136
|
+
}, renderChild(x));
|
|
1137
|
+
})), addAction && /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1138
|
+
className: addActionClass
|
|
1139
|
+
}, renderAction(addAction)));
|
|
1140
|
+
}
|
|
1141
|
+
return {
|
|
1142
|
+
render: render,
|
|
1143
|
+
type: "array"
|
|
1144
|
+
};
|
|
1145
|
+
}
|
|
1146
|
+
function createDefaultGroupRenderer(options) {
|
|
1147
|
+
var _ref8 = options != null ? options : {},
|
|
1148
|
+
className = _ref8.className,
|
|
1149
|
+
_ref8$gridStyles = _ref8.gridStyles,
|
|
1150
|
+
gridStyles = _ref8$gridStyles === void 0 ? defaultGridStyles : _ref8$gridStyles,
|
|
1151
|
+
_ref8$defaultGridColu = _ref8.defaultGridColumns,
|
|
1152
|
+
defaultGridColumns = _ref8$defaultGridColu === void 0 ? 2 : _ref8$defaultGridColu,
|
|
1153
|
+
gridClassName = _ref8.gridClassName,
|
|
1154
|
+
standardClassName = _ref8.standardClassName;
|
|
1155
|
+
function defaultGridStyles(_ref9) {
|
|
1156
|
+
var _ref9$columns = _ref9.columns,
|
|
1157
|
+
columns = _ref9$columns === void 0 ? defaultGridColumns : _ref9$columns;
|
|
1158
|
+
return {
|
|
1159
|
+
className: gridClassName,
|
|
1160
|
+
style: {
|
|
1161
|
+
display: "grid",
|
|
1162
|
+
gridTemplateColumns: "repeat(" + columns + ", 1fr)"
|
|
1163
|
+
}
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
function render(props, defaultLabel, _ref10) {
|
|
1167
|
+
var renderLabel = _ref10.renderLabel,
|
|
1168
|
+
renderArray = _ref10.renderArray;
|
|
1169
|
+
var childCount = props.childCount,
|
|
1170
|
+
renderChild = props.renderChild,
|
|
1171
|
+
definition = props.definition;
|
|
1172
|
+
return renderLabel(defaultLabel(), props.array ? renderArray(props.array) : renderChildren());
|
|
1173
|
+
function renderChildren() {
|
|
1174
|
+
var groupOptions = definition.groupOptions;
|
|
1175
|
+
var _ref11 = isGridRenderer(groupOptions) ? gridStyles(groupOptions) : {
|
|
1176
|
+
className: standardClassName
|
|
1177
|
+
},
|
|
1178
|
+
style = _ref11.style,
|
|
1179
|
+
gcn = _ref11.className;
|
|
1180
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1181
|
+
className: clsx__default["default"](className, gcn),
|
|
1182
|
+
style: style
|
|
1183
|
+
}, Array.from({
|
|
1184
|
+
length: childCount
|
|
1185
|
+
}, function (_, x) {
|
|
1186
|
+
return renderChild(x);
|
|
1187
|
+
}));
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
return {
|
|
1191
|
+
type: "group",
|
|
1192
|
+
render: render
|
|
1193
|
+
};
|
|
1194
|
+
}
|
|
1195
|
+
function createDefaultDisplayRenderer(options) {
|
|
1196
|
+
if (options === void 0) {
|
|
1197
|
+
options = {};
|
|
1198
|
+
}
|
|
1199
|
+
function doRender(_ref12) {
|
|
1200
|
+
var displayData = _ref12.definition.displayData;
|
|
1201
|
+
switch (displayData.type) {
|
|
1202
|
+
case exports.DisplayDataType.Text:
|
|
1203
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1204
|
+
className: options.textClassName
|
|
1205
|
+
}, displayData.text);
|
|
1206
|
+
case exports.DisplayDataType.Html:
|
|
1207
|
+
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1208
|
+
className: options.htmlClassName,
|
|
1209
|
+
dangerouslySetInnerHTML: {
|
|
1210
|
+
__html: displayData.html
|
|
1211
|
+
}
|
|
1212
|
+
});
|
|
1213
|
+
default:
|
|
1214
|
+
return /*#__PURE__*/React__default["default"].createElement("h1", null, "Unknown display type: ", displayData.type);
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
return {
|
|
1218
|
+
render: function render(p, _ref13) {
|
|
1219
|
+
var renderVisibility = _ref13.renderVisibility;
|
|
1220
|
+
return renderVisibility(p.visible, doRender(p));
|
|
1221
|
+
},
|
|
1222
|
+
type: "display"
|
|
1223
|
+
};
|
|
1224
|
+
}
|
|
1225
|
+
var DefaultBoolOptions = [{
|
|
1226
|
+
name: "Yes",
|
|
1227
|
+
value: true
|
|
1228
|
+
}, {
|
|
1229
|
+
name: "No",
|
|
1230
|
+
value: false
|
|
1231
|
+
}];
|
|
1232
|
+
function createDefaultDataRenderer(options) {
|
|
1233
|
+
var _options$selectOption;
|
|
1234
|
+
if (options === void 0) {
|
|
1235
|
+
options = {};
|
|
1236
|
+
}
|
|
1237
|
+
var selectRenderer = createSelectRenderer((_options$selectOption = options.selectOptions) != null ? _options$selectOption : {});
|
|
1238
|
+
var _optionRenderer$boole = _extends({
|
|
1239
|
+
optionRenderer: selectRenderer,
|
|
1240
|
+
booleanOptions: DefaultBoolOptions
|
|
1241
|
+
}, options),
|
|
1242
|
+
inputClass = _optionRenderer$boole.inputClass,
|
|
1243
|
+
booleanOptions = _optionRenderer$boole.booleanOptions,
|
|
1244
|
+
optionRenderer = _optionRenderer$boole.optionRenderer;
|
|
1245
|
+
return createDataRenderer(function (props, defaultLabel, renderers) {
|
|
1246
|
+
if (props.array) {
|
|
1247
|
+
return renderers.renderArray(props.array);
|
|
1248
|
+
}
|
|
1249
|
+
var renderType = props.renderOptions.type;
|
|
1250
|
+
var fieldType = props.field.type;
|
|
1251
|
+
var isBool = fieldType === exports.FieldType.Bool;
|
|
1252
|
+
if (booleanOptions != null && isBool && props.options == null) {
|
|
1253
|
+
return renderers.renderData(_extends({}, props, {
|
|
1254
|
+
options: booleanOptions
|
|
1255
|
+
}));
|
|
1256
|
+
}
|
|
1257
|
+
if (renderType === exports.DataRenderType.Standard && hasOptions(props)) {
|
|
1258
|
+
return optionRenderer.render(props, defaultLabel, renderers);
|
|
1259
|
+
}
|
|
1260
|
+
switch (renderType) {
|
|
1261
|
+
case exports.DataRenderType.Dropdown:
|
|
1262
|
+
return selectRenderer.render(props, defaultLabel, renderers);
|
|
1263
|
+
}
|
|
1264
|
+
var l = defaultLabel();
|
|
1265
|
+
return renderers.renderLabel(l, renderType === exports.DataRenderType.Checkbox ? /*#__PURE__*/React__default["default"].createElement(core.Fcheckbox, {
|
|
1266
|
+
control: props.control
|
|
1267
|
+
}) : /*#__PURE__*/React__default["default"].createElement(ControlInput, {
|
|
1268
|
+
className: inputClass,
|
|
1269
|
+
id: l.forId,
|
|
1270
|
+
readOnly: props.readonly,
|
|
1271
|
+
control: props.control,
|
|
1272
|
+
convert: createInputConversion(props.field.type)
|
|
1273
|
+
}));
|
|
1274
|
+
});
|
|
1275
|
+
}
|
|
1276
|
+
function ControlInput(_ref14) {
|
|
1277
|
+
var _effect2 = core.useComponentTracking();
|
|
1278
|
+
try {
|
|
1279
|
+
var control = _ref14.control,
|
|
1280
|
+
convert = _ref14.convert,
|
|
1281
|
+
props = _objectWithoutPropertiesLoose(_ref14, _excluded);
|
|
1282
|
+
var _formControlProps = core.formControlProps(control),
|
|
1283
|
+
errorText = _formControlProps.errorText,
|
|
1284
|
+
value = _formControlProps.value,
|
|
1285
|
+
onChange = _formControlProps.onChange,
|
|
1286
|
+
inputProps = _objectWithoutPropertiesLoose(_formControlProps, _excluded2);
|
|
1287
|
+
return /*#__PURE__*/React__default["default"].createElement("input", _extends({}, inputProps, {
|
|
1288
|
+
type: convert[0],
|
|
1289
|
+
value: value == null ? "" : convert[2](value),
|
|
1290
|
+
onChange: function onChange(e) {
|
|
1291
|
+
control.value = convert[1](e.target.value);
|
|
1292
|
+
}
|
|
1293
|
+
}, props));
|
|
1294
|
+
} finally {
|
|
1295
|
+
_effect2();
|
|
1296
|
+
}
|
|
1297
|
+
}
|
|
1298
|
+
function createDefaultAdornmentRenderer(options) {
|
|
1299
|
+
return {
|
|
1300
|
+
type: "adornment",
|
|
1301
|
+
render: function render() {
|
|
1302
|
+
return {};
|
|
1303
|
+
}
|
|
1304
|
+
};
|
|
1305
|
+
}
|
|
1306
|
+
function createDefaultVisibilityRenderer(options) {
|
|
1307
|
+
return {
|
|
1308
|
+
type: "visibility",
|
|
1309
|
+
render: function render(visible, children) {
|
|
1310
|
+
return visible.value ? children : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
1311
|
+
}
|
|
1312
|
+
};
|
|
1313
|
+
}
|
|
1314
|
+
function createDefaultRenderers(options) {
|
|
1315
|
+
if (options === void 0) {
|
|
1316
|
+
options = {};
|
|
1317
|
+
}
|
|
1318
|
+
return {
|
|
1319
|
+
data: createDefaultDataRenderer(options.data),
|
|
1320
|
+
display: createDefaultDisplayRenderer(options.display),
|
|
1321
|
+
action: createDefaultActionRenderer(options.action),
|
|
1322
|
+
array: createDefaultArrayRenderer(options.array),
|
|
1323
|
+
group: createDefaultGroupRenderer(options.group),
|
|
1324
|
+
label: createDefaultLabelRenderer(options.label),
|
|
1325
|
+
visibility: createDefaultVisibilityRenderer(),
|
|
1326
|
+
adornment: createDefaultAdornmentRenderer()
|
|
1327
|
+
};
|
|
1328
|
+
}
|
|
1329
|
+
function createClassStyledRenderers() {
|
|
1330
|
+
return createDefaultRenderers({
|
|
1331
|
+
label: {
|
|
1332
|
+
className: "control"
|
|
1333
|
+
},
|
|
1334
|
+
group: {
|
|
1335
|
+
className: "group"
|
|
1336
|
+
},
|
|
1337
|
+
array: {
|
|
1338
|
+
className: "control-array"
|
|
1339
|
+
},
|
|
1340
|
+
action: {
|
|
1341
|
+
className: "action"
|
|
1342
|
+
},
|
|
1343
|
+
data: {
|
|
1344
|
+
inputClass: "data"
|
|
1345
|
+
},
|
|
1346
|
+
display: {
|
|
1347
|
+
htmlClassName: "html",
|
|
1348
|
+
textClassName: "text"
|
|
1349
|
+
}
|
|
1350
|
+
});
|
|
1351
|
+
}
|
|
1352
|
+
function isAdornmentRegistration(x) {
|
|
1353
|
+
return x.type === "adornment";
|
|
1354
|
+
}
|
|
1355
|
+
function isDataRegistration(x) {
|
|
1356
|
+
return x.type === "data";
|
|
1357
|
+
}
|
|
1358
|
+
function isLabelRegistration(x) {
|
|
1359
|
+
return x.type === "label";
|
|
1360
|
+
}
|
|
1361
|
+
function isActionRegistration(x) {
|
|
1362
|
+
return x.type === "action";
|
|
1363
|
+
}
|
|
1364
|
+
function isArrayRegistration(x) {
|
|
1365
|
+
return x.type === "array";
|
|
1366
|
+
}
|
|
1367
|
+
function isVisibilityRegistration(x) {
|
|
1368
|
+
return x.type === "visibility";
|
|
1369
|
+
}
|
|
1370
|
+
function isOneOf(x, v) {
|
|
1371
|
+
return x == null ? true : Array.isArray(x) ? x.includes(v) : v === x;
|
|
1372
|
+
}
|
|
1373
|
+
function createArrayRenderer(render, options) {
|
|
1374
|
+
return _extends({
|
|
1375
|
+
type: "array",
|
|
1376
|
+
render: render
|
|
1377
|
+
}, options);
|
|
1378
|
+
}
|
|
1379
|
+
function createDataRenderer(render, options) {
|
|
1380
|
+
return _extends({
|
|
1381
|
+
type: "data",
|
|
1382
|
+
render: render
|
|
1383
|
+
}, options);
|
|
1384
|
+
}
|
|
1385
|
+
function createDataRendererLabelled(_render, options) {
|
|
1386
|
+
return _extends({
|
|
1387
|
+
type: "data",
|
|
1388
|
+
render: function render(props, defaultLabel, renderers) {
|
|
1389
|
+
var dl = defaultLabel();
|
|
1390
|
+
return renderers.renderLabel(dl, _render(props, dl.forId, renderers));
|
|
1391
|
+
}
|
|
1392
|
+
}, options);
|
|
1393
|
+
}
|
|
1394
|
+
function createLabelRenderer(options) {
|
|
1395
|
+
return _extends({
|
|
1396
|
+
type: "label"
|
|
1397
|
+
}, options);
|
|
1398
|
+
}
|
|
1399
|
+
function createAdornmentRenderer(render, options) {
|
|
1400
|
+
return _extends({
|
|
1401
|
+
type: "adornment"
|
|
1402
|
+
}, options, {
|
|
1403
|
+
render: render
|
|
1404
|
+
});
|
|
1405
|
+
}
|
|
1406
|
+
function createSelectRenderer(options) {
|
|
1407
|
+
if (options === void 0) {
|
|
1408
|
+
options = {};
|
|
1409
|
+
}
|
|
1410
|
+
return createDataRendererLabelled(function (props, id) {
|
|
1411
|
+
return /*#__PURE__*/React__default["default"].createElement(SelectDataRenderer, {
|
|
1412
|
+
className: options.className,
|
|
1413
|
+
state: props.control,
|
|
1414
|
+
id: id,
|
|
1415
|
+
options: props.options,
|
|
1416
|
+
required: props.required,
|
|
1417
|
+
emptyText: options.emptyText,
|
|
1418
|
+
requiredText: options.requiredText,
|
|
1419
|
+
convert: createSelectConversion(props.field.type)
|
|
1420
|
+
});
|
|
1421
|
+
}, {
|
|
1422
|
+
options: true
|
|
1423
|
+
});
|
|
1424
|
+
}
|
|
1425
|
+
function SelectDataRenderer(_ref15) {
|
|
1426
|
+
var _effect3 = core.useComponentTracking();
|
|
1427
|
+
try {
|
|
1428
|
+
var state = _ref15.state,
|
|
1429
|
+
options = _ref15.options,
|
|
1430
|
+
className = _ref15.className,
|
|
1431
|
+
convert = _ref15.convert,
|
|
1432
|
+
required = _ref15.required,
|
|
1433
|
+
_ref15$emptyText = _ref15.emptyText,
|
|
1434
|
+
emptyText = _ref15$emptyText === void 0 ? "N/A" : _ref15$emptyText,
|
|
1435
|
+
_ref15$requiredText = _ref15.requiredText,
|
|
1436
|
+
requiredText = _ref15$requiredText === void 0 ? "<please select>" : _ref15$requiredText,
|
|
1437
|
+
props = _objectWithoutPropertiesLoose(_ref15, _excluded3);
|
|
1438
|
+
var value = state.value,
|
|
1439
|
+
disabled = state.disabled;
|
|
1440
|
+
var _useState = React.useState(!required || value == null),
|
|
1441
|
+
showEmpty = _useState[0];
|
|
1442
|
+
var optionStringMap = React.useMemo(function () {
|
|
1443
|
+
return Object.fromEntries(options.map(function (x) {
|
|
1444
|
+
return [convert(x.value), x.value];
|
|
1445
|
+
}));
|
|
1446
|
+
}, [options]);
|
|
1447
|
+
return /*#__PURE__*/React__default["default"].createElement("select", _extends({}, props, {
|
|
1448
|
+
className: className,
|
|
1449
|
+
onChange: function onChange(v) {
|
|
1450
|
+
return state.value = optionStringMap[v.target.value];
|
|
1451
|
+
},
|
|
1452
|
+
value: convert(value),
|
|
1453
|
+
disabled: disabled
|
|
1454
|
+
}), showEmpty && /*#__PURE__*/React__default["default"].createElement("option", {
|
|
1455
|
+
value: ""
|
|
1456
|
+
}, required ? requiredText : emptyText), options.map(function (x, i) {
|
|
1457
|
+
return /*#__PURE__*/React__default["default"].createElement("option", {
|
|
1458
|
+
key: i,
|
|
1459
|
+
value: convert(x.value),
|
|
1460
|
+
disabled: x.disabled
|
|
1461
|
+
}, x.name);
|
|
1462
|
+
}));
|
|
1463
|
+
} finally {
|
|
1464
|
+
_effect3();
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
function createSelectConversion(ft) {
|
|
1468
|
+
switch (ft) {
|
|
1469
|
+
case exports.FieldType.String:
|
|
1470
|
+
case exports.FieldType.Int:
|
|
1471
|
+
case exports.FieldType.Double:
|
|
1472
|
+
return function (a) {
|
|
1473
|
+
return a;
|
|
1474
|
+
};
|
|
1475
|
+
default:
|
|
1476
|
+
return function (a) {
|
|
1477
|
+
var _a$toString;
|
|
1478
|
+
return (_a$toString = a == null ? void 0 : a.toString()) != null ? _a$toString : "";
|
|
1479
|
+
};
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
function createInputConversion(ft) {
|
|
1483
|
+
switch (ft) {
|
|
1484
|
+
case exports.FieldType.String:
|
|
1485
|
+
return ["text", function (a) {
|
|
1486
|
+
return a;
|
|
1487
|
+
}, function (a) {
|
|
1488
|
+
return a;
|
|
1489
|
+
}];
|
|
1490
|
+
case exports.FieldType.Bool:
|
|
1491
|
+
return ["text", function (a) {
|
|
1492
|
+
return a === "true";
|
|
1493
|
+
}, function (a) {
|
|
1494
|
+
var _a$toString2;
|
|
1495
|
+
return (_a$toString2 = a == null ? void 0 : a.toString()) != null ? _a$toString2 : "";
|
|
1496
|
+
}];
|
|
1497
|
+
case exports.FieldType.Int:
|
|
1498
|
+
return ["number", function (a) {
|
|
1499
|
+
return a !== "" ? parseInt(a) : null;
|
|
1500
|
+
}, function (a) {
|
|
1501
|
+
return a == null ? "" : a;
|
|
1502
|
+
}];
|
|
1503
|
+
case exports.FieldType.Date:
|
|
1504
|
+
return ["date", function (a) {
|
|
1505
|
+
return a;
|
|
1506
|
+
}, function (a) {
|
|
1507
|
+
return a;
|
|
1508
|
+
}];
|
|
1509
|
+
case exports.FieldType.Double:
|
|
1510
|
+
return ["number", function (a) {
|
|
1511
|
+
return parseFloat(a);
|
|
1512
|
+
}, function (a) {
|
|
1513
|
+
return a;
|
|
1514
|
+
}];
|
|
1515
|
+
default:
|
|
1516
|
+
return ["text", function (a) {
|
|
1517
|
+
return a;
|
|
1518
|
+
}, function (a) {
|
|
1519
|
+
return a;
|
|
1520
|
+
}];
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
var defaultTailwindTheme = {
|
|
1525
|
+
label: {
|
|
1526
|
+
className: "flex flex-col",
|
|
1527
|
+
groupLabelClass: "font-bold",
|
|
1528
|
+
requiredElement: /*#__PURE__*/React__default["default"].createElement("span", {
|
|
1529
|
+
className: "text-red-500"
|
|
1530
|
+
}, " *")
|
|
1531
|
+
},
|
|
1532
|
+
array: {
|
|
1533
|
+
removableClass: "grid grid-cols-[1fr_auto] items-center gap-x-2",
|
|
1534
|
+
childClass: "grow"
|
|
1535
|
+
},
|
|
1536
|
+
group: {
|
|
1537
|
+
standardClassName: "space-y-4",
|
|
1538
|
+
gridClassName: "gap-x-2 gap-y-4"
|
|
1539
|
+
},
|
|
1540
|
+
action: {
|
|
1541
|
+
className: "bg-primary rounded-lg p-3 text-white"
|
|
1542
|
+
}
|
|
15
1543
|
};
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1544
|
+
|
|
1545
|
+
exports.AlwaysVisible = AlwaysVisible;
|
|
1546
|
+
exports.ControlInput = ControlInput;
|
|
1547
|
+
exports.DefaultBoolOptions = DefaultBoolOptions;
|
|
1548
|
+
exports.DefaultLabelRenderer = DefaultLabelRenderer;
|
|
1549
|
+
exports.FormRendererProvider = FormRendererProvider;
|
|
1550
|
+
exports.SelectDataRenderer = SelectDataRenderer;
|
|
1551
|
+
exports.addMissingControls = addMissingControls;
|
|
1552
|
+
exports.applyDefaultForField = applyDefaultForField;
|
|
1553
|
+
exports.applyDefaultValues = applyDefaultValues;
|
|
1554
|
+
exports.boolField = boolField;
|
|
1555
|
+
exports.buildSchema = buildSchema;
|
|
1556
|
+
exports.compoundField = compoundField;
|
|
1557
|
+
exports.controlForField = controlForField;
|
|
1558
|
+
exports.controlTitle = controlTitle;
|
|
1559
|
+
exports.createAction = createAction;
|
|
1560
|
+
exports.createAdornmentRenderer = createAdornmentRenderer;
|
|
1561
|
+
exports.createArrayRenderer = createArrayRenderer;
|
|
1562
|
+
exports.createDataRenderer = createDataRenderer;
|
|
1563
|
+
exports.createDataRendererLabelled = createDataRendererLabelled;
|
|
1564
|
+
exports.createDefaultActionRenderer = createDefaultActionRenderer;
|
|
1565
|
+
exports.createDefaultAdornmentRenderer = createDefaultAdornmentRenderer;
|
|
1566
|
+
exports.createDefaultArrayRenderer = createDefaultArrayRenderer;
|
|
1567
|
+
exports.createDefaultDataRenderer = createDefaultDataRenderer;
|
|
1568
|
+
exports.createDefaultDisplayRenderer = createDefaultDisplayRenderer;
|
|
1569
|
+
exports.createDefaultGroupRenderer = createDefaultGroupRenderer;
|
|
1570
|
+
exports.createDefaultLabelRenderer = createDefaultLabelRenderer;
|
|
1571
|
+
exports.createDefaultRenderers = createDefaultRenderers;
|
|
1572
|
+
exports.createDefaultSchemaHooks = createDefaultSchemaHooks;
|
|
1573
|
+
exports.createDefaultVisibilityRenderer = createDefaultVisibilityRenderer;
|
|
1574
|
+
exports.createFormEditHooks = createFormEditHooks;
|
|
1575
|
+
exports.createFormRenderer = createFormRenderer;
|
|
1576
|
+
exports.createInputConversion = createInputConversion;
|
|
1577
|
+
exports.createLabelRenderer = createLabelRenderer;
|
|
1578
|
+
exports.createSelectConversion = createSelectConversion;
|
|
1579
|
+
exports.createSelectRenderer = createSelectRenderer;
|
|
1580
|
+
exports.dataControl = dataControl;
|
|
1581
|
+
exports.defaultCompoundField = defaultCompoundField;
|
|
1582
|
+
exports.defaultControlForField = defaultControlForField;
|
|
1583
|
+
exports.defaultFormEditHooks = defaultFormEditHooks;
|
|
1584
|
+
exports.defaultScalarField = defaultScalarField;
|
|
1585
|
+
exports.defaultTailwindTheme = defaultTailwindTheme;
|
|
1586
|
+
exports.defaultValueForField = defaultValueForField;
|
|
1587
|
+
exports.defaultValueForFields = defaultValueForFields;
|
|
1588
|
+
exports.elementValueForField = elementValueForField;
|
|
1589
|
+
exports.fieldDisplayName = fieldDisplayName;
|
|
1590
|
+
exports.fieldForControl = fieldForControl;
|
|
1591
|
+
exports.fieldHasTag = fieldHasTag;
|
|
1592
|
+
exports.fieldValueExpr = fieldValueExpr;
|
|
1593
|
+
exports.findCompoundField = findCompoundField;
|
|
1594
|
+
exports.findField = findField;
|
|
1595
|
+
exports.findScalarField = findScalarField;
|
|
1596
|
+
exports.getDefaultScalarControlProperties = getDefaultScalarControlProperties;
|
|
1597
|
+
exports.getOptionsForScalarField = getOptionsForScalarField;
|
|
1598
|
+
exports.hasOptions = hasOptions;
|
|
1599
|
+
exports.intField = intField;
|
|
1600
|
+
exports.isActionControlsDefinition = isActionControlsDefinition;
|
|
1601
|
+
exports.isCompoundField = isCompoundField;
|
|
1602
|
+
exports.isDataControl = isDataControl;
|
|
1603
|
+
exports.isDataControlDefinition = isDataControlDefinition;
|
|
1604
|
+
exports.isDisplayControlsDefinition = isDisplayControlsDefinition;
|
|
1605
|
+
exports.isGridRenderer = isGridRenderer;
|
|
1606
|
+
exports.isGroupControl = isGroupControl;
|
|
1607
|
+
exports.isGroupControlsDefinition = isGroupControlsDefinition;
|
|
1608
|
+
exports.isScalarField = isScalarField;
|
|
1609
|
+
exports.makeCompoundField = makeCompoundField;
|
|
1610
|
+
exports.makeScalarField = makeScalarField;
|
|
1611
|
+
exports.renderControl = renderControl;
|
|
1612
|
+
exports.stringField = stringField;
|
|
1613
|
+
exports.stringOptionsField = stringOptionsField;
|
|
1614
|
+
exports.useControlsWithDefaults = useControlsWithDefaults;
|
|
1615
|
+
exports.useDefaultValue = useDefaultValue;
|
|
1616
|
+
exports.useFormRendererComponents = useFormRendererComponents;
|
|
1617
|
+
exports.useIsControlVisible = useIsControlVisible;
|
|
1618
|
+
exports.visibility = visibility;
|
|
1619
|
+
exports.visitControlData = visitControlData;
|
|
1620
|
+
exports.visitControlDefinition = visitControlDefinition;
|
|
1621
|
+
exports.withScalarOptions = withScalarOptions;
|
|
1622
|
+
//# sourceMappingURL=index.js.map
|