@ng-formworks/core 18.6.2 → 18.6.5
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/esm2022/lib/shared/form-group.functions.mjs +34 -44
- package/esm2022/lib/shared/format-regex.constants.mjs +5 -1
- package/esm2022/lib/shared/json-schema.functions.mjs +45 -9
- package/esm2022/lib/shared/json.validators.mjs +2 -2
- package/esm2022/lib/shared/layout.functions.mjs +7 -5
- package/esm2022/lib/widget-library/index.mjs +4 -2
- package/esm2022/lib/widget-library/one-of.component.mjs +2 -2
- package/esm2022/lib/widget-library/root.component.mjs +2 -1
- package/esm2022/lib/widget-library/select.component.mjs +13 -13
- package/esm2022/lib/widget-library/selectcheckbox.component.mjs +183 -0
- package/esm2022/lib/widget-library/widget-library.module.mjs +4 -3
- package/esm2022/lib/widget-library/widget-library.service.mjs +10 -5
- package/fesm2022/ng-formworks-core.mjs +386 -173
- package/fesm2022/ng-formworks-core.mjs.map +1 -1
- package/lib/shared/format-regex.constants.d.ts +1 -0
- package/lib/shared/json-schema.functions.d.ts +0 -1
- package/lib/shared/validator.functions.d.ts +1 -1
- package/lib/widget-library/index.d.ts +1 -0
- package/lib/widget-library/selectcheckbox.component.d.ts +55 -0
- package/lib/widget-library/widget-library.module.d.ts +7 -6
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, inject, input, viewChild, ViewContainerRef, Component, Directive, Input, ChangeDetectionStrategy, ViewChild, signal, ElementRef, NgZone,
|
|
4
|
+
import { Injectable, inject, input, viewChild, ViewContainerRef, Component, Directive, Input, ChangeDetectionStrategy, ViewChild, signal, ElementRef, NgZone, Inject, NgModule, forwardRef, ChangeDetectorRef, output } from '@angular/core';
|
|
5
5
|
import * as i2 from '@angular/forms';
|
|
6
6
|
import { UntypedFormControl, UntypedFormArray, UntypedFormGroup, FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
7
7
|
import addFormats from 'ajv-formats';
|
|
@@ -2488,6 +2488,10 @@ const jsonSchemaFormatTests = {
|
|
|
2488
2488
|
// Modified to allow incomplete entries, such as
|
|
2489
2489
|
// "2000-03-14T01:59:26.535" (needs "Z") or "2000-03-14T01:59" (needs ":00Z")
|
|
2490
2490
|
'date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d(?::[0-5]\d)?(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,
|
|
2491
|
+
// "2000-03-14T01:59:26.535" (doesn't need "Z") or "2000-03-14T01:59" (needs ":00Z")
|
|
2492
|
+
//'iso-date-time':^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(Z|([+-]\d{2}:\d{2}))?$
|
|
2493
|
+
//for now same as 'date-time' until better tested
|
|
2494
|
+
'iso-date-time': /^\d\d\d\d-[0-1]\d-[0-3]\d[t\s][0-2]\d:[0-5]\d(?::[0-5]\d)?(?:\.\d+)?(?:z|[+-]\d\d:\d\d)?$/i,
|
|
2491
2495
|
// email (sources from jsen validator):
|
|
2492
2496
|
// http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363
|
|
2493
2497
|
// http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')
|
|
@@ -2856,7 +2860,7 @@ class JsonValidators {
|
|
|
2856
2860
|
}
|
|
2857
2861
|
else {
|
|
2858
2862
|
// Allow JavaScript Date objects
|
|
2859
|
-
isValid = ['date', 'time', 'date-time'].includes(requiredFormat) &&
|
|
2863
|
+
isValid = ['date', 'time', 'iso-date-time'].includes(requiredFormat) &&
|
|
2860
2864
|
Object.prototype.toString.call(currentValue) === '[object Date]';
|
|
2861
2865
|
}
|
|
2862
2866
|
return xor(isValid, invert) ?
|
|
@@ -4072,7 +4076,10 @@ function getInputType(schema, layoutNode = null) {
|
|
|
4072
4076
|
return {
|
|
4073
4077
|
'color': 'color',
|
|
4074
4078
|
'date': 'date',
|
|
4075
|
-
|
|
4079
|
+
//as per ajv date-time requires a timezone but input
|
|
4080
|
+
//datetime-local doesn't
|
|
4081
|
+
//'date-time': 'datetime-local',
|
|
4082
|
+
'iso-date-time': 'datetime-local',
|
|
4076
4083
|
'email': 'email',
|
|
4077
4084
|
'uri': 'url',
|
|
4078
4085
|
}[schema.format] || 'text';
|
|
@@ -4586,8 +4593,32 @@ function fixRequiredArrayProperties(schema) {
|
|
|
4586
4593
|
* @param schema:any
|
|
4587
4594
|
* @param negate:boolean=false
|
|
4588
4595
|
* @returns
|
|
4589
|
-
|
|
4590
4596
|
*/
|
|
4597
|
+
//TODO also handle ifs with mixed conditional such as allOf/oneOf etc
|
|
4598
|
+
/*
|
|
4599
|
+
|
|
4600
|
+
"if": {
|
|
4601
|
+
"allOf": [
|
|
4602
|
+
{
|
|
4603
|
+
"properties": {
|
|
4604
|
+
"animalType": {
|
|
4605
|
+
"enum": ["Cat", "Fish"]
|
|
4606
|
+
}
|
|
4607
|
+
}
|
|
4608
|
+
},
|
|
4609
|
+
{
|
|
4610
|
+
"properties": {
|
|
4611
|
+
"color": {
|
|
4612
|
+
"const": "orange"
|
|
4613
|
+
}
|
|
4614
|
+
}
|
|
4615
|
+
}
|
|
4616
|
+
]
|
|
4617
|
+
}
|
|
4618
|
+
|
|
4619
|
+
|
|
4620
|
+
|
|
4621
|
+
*/
|
|
4591
4622
|
function convertJSONSchemaIfToCondition(schema, layoutNode, negate = false) {
|
|
4592
4623
|
let conditionFun = "";
|
|
4593
4624
|
let condition = {};
|
|
@@ -4612,17 +4643,26 @@ function convertJSONSchemaIfToCondition(schema, layoutNode, negate = false) {
|
|
|
4612
4643
|
.join("")
|
|
4613
4644
|
: "";
|
|
4614
4645
|
let modelPath = parentPath ? `model.${parentPath}` : "model";
|
|
4615
|
-
let checkPath = modelPath.split(
|
|
4616
|
-
.
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4646
|
+
let checkPath = modelPath.split('.')
|
|
4647
|
+
.map((_, index, array) => {
|
|
4648
|
+
return array.slice(0, index + 1).join('.'); // Build each part of the path dynamically
|
|
4649
|
+
}).join(' && '); // Join the parts with '&&'
|
|
4650
|
+
// .reduce((accumulator, currentPart, index) => {
|
|
4651
|
+
// const currentExpression = index === 0 ? currentPart : `${accumulator}.${currentPart}`;
|
|
4652
|
+
// return index === 0 ? currentExpression : `${accumulator} && ${currentExpression}`;
|
|
4653
|
+
// }, '');
|
|
4620
4654
|
if (schema.if) {
|
|
4621
4655
|
Object.keys(schema.if.properties).forEach((ifProp, ind) => {
|
|
4622
4656
|
let amper = ind > 0 ? "&" : "";
|
|
4623
4657
|
//Note the model value is first converted to string and so is the condition
|
|
4624
4658
|
//so that booleans and numbers can also be compared
|
|
4625
|
-
|
|
4659
|
+
//changed to an includesList to handle cases such as
|
|
4660
|
+
const includesList = hasOwn(schema.if.properties[ifProp], "const") ? [schema.if.properties[ifProp].const]
|
|
4661
|
+
: hasOwn(schema.if.properties[ifProp], "enum") ? schema.if.properties[ifProp].enum
|
|
4662
|
+
: [];
|
|
4663
|
+
const includesListAsStr = includesList.map(val => { return `"${val}"`; });
|
|
4664
|
+
conditionFun += `${amper} ${checkPath} && [${includesListAsStr}].includes(${modelPath}.${ifProp}+"")`;
|
|
4665
|
+
//conditionFun+=`${amper} ${checkPath} && ${modelPath}.${ifProp}+""=='${schema.if.properties[ifProp].const}'`
|
|
4626
4666
|
});
|
|
4627
4667
|
}
|
|
4628
4668
|
condition["functionBody"] = `return ${notOp}(${conditionFun})`;
|
|
@@ -5052,7 +5092,7 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5052
5092
|
["then", "else"].forEach(con => {
|
|
5053
5093
|
if (hasOwn(schema, con)) {
|
|
5054
5094
|
const keySchemaPointer = `/${con}`;
|
|
5055
|
-
let thenFGTemplate = buildFormGroupTemplate(jsf, nodeValue,
|
|
5095
|
+
let thenFGTemplate = buildFormGroupTemplate(jsf, nodeValue, setValues, //false,//JsonPointer.get(nodeValue, keySchemaPointer), setValues,
|
|
5056
5096
|
schemaPointer + keySchemaPointer, dataPointer, templatePointer + `/controls/${con}`);
|
|
5057
5097
|
Object.assign(controls, thenFGTemplate.controls);
|
|
5058
5098
|
}
|
|
@@ -5113,7 +5153,8 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5113
5153
|
if (foundKeys && foundKeys.length > 0) {
|
|
5114
5154
|
const keySchemaPointer = `/${ofType}/${ind}`;
|
|
5115
5155
|
//console.log(`found:${keySchemaPointer}`);
|
|
5116
|
-
let newNodeValue =
|
|
5156
|
+
let newNodeValue = nodeValue;
|
|
5157
|
+
//JsonPointer.get(nodeValue, dataPointer);
|
|
5117
5158
|
//JsonPointer.get(nodeValue, keySchemaPointer);
|
|
5118
5159
|
if (ofType == "oneOf") {
|
|
5119
5160
|
newNodeValue = nodeValue;
|
|
@@ -5144,9 +5185,16 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5144
5185
|
let oneOfItemSchema = JsonPointer.get(jsf.schema, controlItem.schemaPointer);
|
|
5145
5186
|
//JsonPointer.get(schema,pointerPath);
|
|
5146
5187
|
let dPointer = controlItem.schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
5147
|
-
.replace(/(if|then|else|properties)\//g, '');
|
|
5188
|
+
.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g, '/-/');
|
|
5189
|
+
dPointer = dPointer.indexOf(dataPointer) == 0
|
|
5190
|
+
? dPointer.substring(dataPointer.length) : dPointer;
|
|
5191
|
+
//dataPointer+"/"+controlItem.schemaPointer.split("/").slice(-1)[0];
|
|
5192
|
+
////controlItem.schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
5193
|
+
////.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g,'/-/');
|
|
5148
5194
|
//JsonPointer.toDataPointer(controlItem.schemaPointer,jsf.schema);
|
|
5149
|
-
|
|
5195
|
+
//console.log(`dataPointer:${dataPointer}\ndPointer:${dPointer}`)
|
|
5196
|
+
let dVal = //JsonPointer.get(jsf.formValues,dPointer);
|
|
5197
|
+
JsonPointer.get(nodeValue, dPointer);
|
|
5150
5198
|
let fkey = key;
|
|
5151
5199
|
let oneOfItemValue = dVal;
|
|
5152
5200
|
/*
|
|
@@ -5289,43 +5337,22 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5289
5337
|
["then", "else"].forEach(con => {
|
|
5290
5338
|
if (hasOwn(schema, con)) {
|
|
5291
5339
|
const keySchemaPointer = `/${con}`;
|
|
5292
|
-
let thenTFGTemplate = buildFormGroupTemplate(jsf, nodeValue,
|
|
5340
|
+
let thenTFGTemplate = buildFormGroupTemplate(jsf, nodeValue, setValues, //false,
|
|
5341
|
+
schemaPointer + keySchemaPointer, dataPointer, templatePointer + `/controls/${con}`);
|
|
5293
5342
|
//NB same property can be in both then and else
|
|
5294
5343
|
//so key must be the unique path to control
|
|
5295
5344
|
//let ifItemSchema=JsonPointer.get(schema,keySchemaPointer);
|
|
5296
5345
|
//let ifItemValue;
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
//then set it to default otherwise to its nodevalue
|
|
5308
|
-
ifItemValue=ifItemSchema.default
|
|
5309
|
-
ifItemValue[key]=ifItemSchema.properties[key]?.default;
|
|
5310
|
-
}
|
|
5311
|
-
if(ifItemSchema.properties && jsf.formValues!=undefined){
|
|
5312
|
-
ifItemValue ={};
|
|
5313
|
-
//nodeValue||{};
|
|
5314
|
-
ifItemValue[key]=nodeValue&&nodeValue[key];
|
|
5315
|
-
}
|
|
5316
|
-
if(!ifItemSchema.properties && jsf.formValues==undefined){
|
|
5317
|
-
ifItemValue=ifItemSchema.default;
|
|
5318
|
-
}
|
|
5319
|
-
if(hasOwn(cItem,"value")){
|
|
5320
|
-
if(!jsf.ajv.validate(ifItemSchema,ifItemValue)){
|
|
5321
|
-
cItem.value.value=null;
|
|
5322
|
-
}else{
|
|
5323
|
-
cItem.value.value=ifItemValue[key];
|
|
5324
|
-
}
|
|
5325
|
-
}
|
|
5326
|
-
*/
|
|
5327
|
-
controls[controlKey] = cItem;
|
|
5328
|
-
});
|
|
5346
|
+
if (hasOwn(thenTFGTemplate, 'controls')) {
|
|
5347
|
+
Object.keys(thenTFGTemplate.controls).forEach(key => {
|
|
5348
|
+
let controlKey = thenTFGTemplate.controls[key].schemaPointer;
|
|
5349
|
+
if (controlKey) {
|
|
5350
|
+
controlKey = path2ControlKey(controlKey);
|
|
5351
|
+
let cItem = Object.assign({}, thenTFGTemplate.controls[key]);
|
|
5352
|
+
controls[controlKey] = cItem;
|
|
5353
|
+
}
|
|
5354
|
+
});
|
|
5355
|
+
}
|
|
5329
5356
|
}
|
|
5330
5357
|
});
|
|
5331
5358
|
}
|
|
@@ -5562,7 +5589,8 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5562
5589
|
// If dataPointer input is not a valid JSON pointer, check to
|
|
5563
5590
|
// see if it is instead a valid object path, using dot notaion
|
|
5564
5591
|
if (typeof dataPointer === 'string') {
|
|
5565
|
-
const
|
|
5592
|
+
const controlPath = !!schemaPointer ? path2ControlKey(schemaPointer) : dataPointer;
|
|
5593
|
+
const formControl = formGroup.get(controlPath);
|
|
5566
5594
|
if (formControl) {
|
|
5567
5595
|
return formControl;
|
|
5568
5596
|
}
|
|
@@ -5582,7 +5610,8 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5582
5610
|
// try using formGroup.get() to return the control
|
|
5583
5611
|
if (typeof formGroup.get === 'function' &&
|
|
5584
5612
|
dataPointerArray.every(key => key.indexOf('.') === -1)) {
|
|
5585
|
-
const
|
|
5613
|
+
const controlPath = !!schemaPointer ? path2ControlKey(schemaPointer) : dataPointerArray.join('.');
|
|
5614
|
+
const formControl = formGroup.get(controlPath);
|
|
5586
5615
|
if (formControl) {
|
|
5587
5616
|
return formControl;
|
|
5588
5617
|
}
|
|
@@ -5595,15 +5624,16 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5595
5624
|
if (hasOwn(subGroup, 'controls')) {
|
|
5596
5625
|
subGroup = subGroup.controls;
|
|
5597
5626
|
}
|
|
5598
|
-
if (
|
|
5627
|
+
if (schemaPointer && hasOwn(subGroup, path2ControlKey(schemaPointer))) {
|
|
5628
|
+
subGroup = subGroup[path2ControlKey(schemaPointer)];
|
|
5629
|
+
return subGroup;
|
|
5630
|
+
}
|
|
5631
|
+
else if (isArray(subGroup) && (key === '-')) {
|
|
5599
5632
|
subGroup = subGroup[subGroup.length - 1];
|
|
5600
5633
|
}
|
|
5601
5634
|
else if (hasOwn(subGroup, key)) {
|
|
5602
5635
|
subGroup = subGroup[key];
|
|
5603
5636
|
}
|
|
5604
|
-
else if (schemaPointer && hasOwn(subGroup, path2ControlKey(schemaPointer))) {
|
|
5605
|
-
subGroup = subGroup[path2ControlKey(schemaPointer)];
|
|
5606
|
-
}
|
|
5607
5637
|
else {
|
|
5608
5638
|
console.error(`getControl error: Unable to find "${key}" item in FormGroup.`);
|
|
5609
5639
|
console.error(dataPointer);
|
|
@@ -6481,7 +6511,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6481
6511
|
if (hasOwn(schema, con)) {
|
|
6482
6512
|
const keySchemaPointer = `/${con}`;
|
|
6483
6513
|
const negateClause = con == "else";
|
|
6484
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6514
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6485
6515
|
if (innerItem) {
|
|
6486
6516
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6487
6517
|
if (isArray(innerItem)) {
|
|
@@ -6708,7 +6738,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6708
6738
|
if (hasOwn(schema, con)) {
|
|
6709
6739
|
const keySchemaPointer = `/${con}`;
|
|
6710
6740
|
const negateClause = con == "else";
|
|
6711
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6741
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6712
6742
|
if (innerItem) {
|
|
6713
6743
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6714
6744
|
if (isArray(innerItem)) {
|
|
@@ -6716,17 +6746,19 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6716
6746
|
//item.schemaPointer = schemaPointer + keySchemaPointer + item.dataPointer;
|
|
6717
6747
|
//item.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6718
6748
|
newSection.push(item);
|
|
6719
|
-
newNode = newSection
|
|
6749
|
+
/////// newNode = newSection
|
|
6720
6750
|
});
|
|
6721
6751
|
}
|
|
6722
6752
|
else {
|
|
6723
6753
|
//innerItem.schemaPointer = schemaPointer + keySchemaPointer + innerItem.dataPointer;
|
|
6724
6754
|
//innerItem.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6725
|
-
newNode = innerItem
|
|
6755
|
+
///////newNode = innerItem
|
|
6756
|
+
newSection.push(innerItem);
|
|
6726
6757
|
}
|
|
6727
6758
|
}
|
|
6728
6759
|
}
|
|
6729
6760
|
});
|
|
6761
|
+
newNode = newSection;
|
|
6730
6762
|
}
|
|
6731
6763
|
return newNode;
|
|
6732
6764
|
}
|
|
@@ -8911,7 +8943,7 @@ class OneOfComponent {
|
|
|
8911
8943
|
let controlSchema = JsonPointer.get(this.jsf.schema, parts.join("/"));
|
|
8912
8944
|
let schemaPointer = parts.join("/");
|
|
8913
8945
|
let dPointer = schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
8914
|
-
.replace(/(if|then|else|properties)\//g, '');
|
|
8946
|
+
.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g, '/-/');
|
|
8915
8947
|
//JsonPointer.toDataPointer(parts.join("/"),this.jsf.schema);
|
|
8916
8948
|
let dVal = JsonPointer.get(this.jsf.formValues, dPointer);
|
|
8917
8949
|
let compareVal = dVal; //formValue;
|
|
@@ -9284,6 +9316,7 @@ class RootComponent {
|
|
|
9284
9316
|
}
|
|
9285
9317
|
sortableInit(sortable) {
|
|
9286
9318
|
this.sortableObj = sortable;
|
|
9319
|
+
//Sortable.utils.on(this.sortableObj.el,"nulling",(s)=>{console.log("event nulling sortablejs")})
|
|
9287
9320
|
///NB issue caused by sortablejs when it its destroyed
|
|
9288
9321
|
//this mainly affects checkboxes coupled with conditions
|
|
9289
9322
|
//-the value is rechecked
|
|
@@ -9714,13 +9747,13 @@ class SelectComponent {
|
|
|
9714
9747
|
[name]="controlName">
|
|
9715
9748
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9716
9749
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9717
|
-
[
|
|
9750
|
+
[ngValue]="selectItem?.value">
|
|
9718
9751
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9719
9752
|
</option>
|
|
9720
9753
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9721
9754
|
[label]="selectItem?.group">
|
|
9722
9755
|
<option *ngFor="let subItem of selectItem.items"
|
|
9723
|
-
[
|
|
9756
|
+
[ngValue]="subItem?.value">
|
|
9724
9757
|
<span [innerHTML]="subItem?.name"></span>
|
|
9725
9758
|
</option>
|
|
9726
9759
|
</optgroup>
|
|
@@ -9738,14 +9771,14 @@ class SelectComponent {
|
|
|
9738
9771
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9739
9772
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9740
9773
|
[selected]="selectItem?.value === controlValue"
|
|
9741
|
-
[
|
|
9774
|
+
[ngValue]="selectItem?.value">
|
|
9742
9775
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9743
9776
|
</option>
|
|
9744
9777
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9745
9778
|
[label]="selectItem?.group">
|
|
9746
9779
|
<option *ngFor="let subItem of selectItem.items"
|
|
9747
9780
|
[attr.selected]="subItem?.value === controlValue"
|
|
9748
|
-
[
|
|
9781
|
+
[ngValue]="subItem?.value">
|
|
9749
9782
|
<span [innerHTML]="subItem?.name"></span>
|
|
9750
9783
|
</option>
|
|
9751
9784
|
</optgroup>
|
|
@@ -9765,14 +9798,14 @@ class SelectComponent {
|
|
|
9765
9798
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9766
9799
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9767
9800
|
[selected]="selectItem?.value === controlValue"
|
|
9768
|
-
[
|
|
9801
|
+
[ngValue]="selectItem?.value">
|
|
9769
9802
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9770
9803
|
</option>
|
|
9771
9804
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9772
9805
|
[label]="selectItem?.group">
|
|
9773
9806
|
<option *ngFor="let subItem of selectItem.items"
|
|
9774
9807
|
[attr.selected]="subItem?.value === controlValue"
|
|
9775
|
-
[
|
|
9808
|
+
[ngValue]="subItem?.value">
|
|
9776
9809
|
<span [innerHTML]="subItem?.name"></span>
|
|
9777
9810
|
</option>
|
|
9778
9811
|
</optgroup>
|
|
@@ -9803,13 +9836,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
9803
9836
|
[name]="controlName">
|
|
9804
9837
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9805
9838
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9806
|
-
[
|
|
9839
|
+
[ngValue]="selectItem?.value">
|
|
9807
9840
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9808
9841
|
</option>
|
|
9809
9842
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9810
9843
|
[label]="selectItem?.group">
|
|
9811
9844
|
<option *ngFor="let subItem of selectItem.items"
|
|
9812
|
-
[
|
|
9845
|
+
[ngValue]="subItem?.value">
|
|
9813
9846
|
<span [innerHTML]="subItem?.name"></span>
|
|
9814
9847
|
</option>
|
|
9815
9848
|
</optgroup>
|
|
@@ -9827,14 +9860,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
9827
9860
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9828
9861
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9829
9862
|
[selected]="selectItem?.value === controlValue"
|
|
9830
|
-
[
|
|
9863
|
+
[ngValue]="selectItem?.value">
|
|
9831
9864
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9832
9865
|
</option>
|
|
9833
9866
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9834
9867
|
[label]="selectItem?.group">
|
|
9835
9868
|
<option *ngFor="let subItem of selectItem.items"
|
|
9836
9869
|
[attr.selected]="subItem?.value === controlValue"
|
|
9837
|
-
[
|
|
9870
|
+
[ngValue]="subItem?.value">
|
|
9838
9871
|
<span [innerHTML]="subItem?.name"></span>
|
|
9839
9872
|
</option>
|
|
9840
9873
|
</optgroup>
|
|
@@ -9854,14 +9887,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
9854
9887
|
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
9855
9888
|
<option *ngIf="!isArray(selectItem?.items)"
|
|
9856
9889
|
[selected]="selectItem?.value === controlValue"
|
|
9857
|
-
[
|
|
9890
|
+
[ngValue]="selectItem?.value">
|
|
9858
9891
|
<span [innerHTML]="selectItem?.name"></span>
|
|
9859
9892
|
</option>
|
|
9860
9893
|
<optgroup *ngIf="isArray(selectItem?.items)"
|
|
9861
9894
|
[label]="selectItem?.group">
|
|
9862
9895
|
<option *ngFor="let subItem of selectItem.items"
|
|
9863
9896
|
[attr.selected]="subItem?.value === controlValue"
|
|
9864
|
-
[
|
|
9897
|
+
[ngValue]="subItem?.value">
|
|
9865
9898
|
<span [innerHTML]="subItem?.name"></span>
|
|
9866
9899
|
</option>
|
|
9867
9900
|
</optgroup>
|
|
@@ -9947,40 +9980,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
9947
9980
|
}]
|
|
9948
9981
|
}] });
|
|
9949
9982
|
|
|
9950
|
-
class TabComponent {
|
|
9951
|
-
constructor() {
|
|
9952
|
-
this.jsf = inject(JsonSchemaFormService);
|
|
9953
|
-
this.layoutNode = input(undefined);
|
|
9954
|
-
this.layoutIndex = input(undefined);
|
|
9955
|
-
this.dataIndex = input(undefined);
|
|
9956
|
-
}
|
|
9957
|
-
ngOnInit() {
|
|
9958
|
-
this.options = this.layoutNode().options || {};
|
|
9959
|
-
}
|
|
9960
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9961
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: TabComponent, selector: "tab-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
9962
|
-
<div [class]="options?.htmlClass || ''">
|
|
9963
|
-
<root-widget
|
|
9964
|
-
[dataIndex]="dataIndex()"
|
|
9965
|
-
[layoutIndex]="layoutIndex()"
|
|
9966
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9967
|
-
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
9968
|
-
}
|
|
9969
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabComponent, decorators: [{
|
|
9970
|
-
type: Component,
|
|
9971
|
-
args: [{
|
|
9972
|
-
// tslint:disable-next-line:component-selector
|
|
9973
|
-
selector: 'tab-widget',
|
|
9974
|
-
template: `
|
|
9975
|
-
<div [class]="options?.htmlClass || ''">
|
|
9976
|
-
<root-widget
|
|
9977
|
-
[dataIndex]="dataIndex()"
|
|
9978
|
-
[layoutIndex]="layoutIndex()"
|
|
9979
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9980
|
-
</div>`,
|
|
9981
|
-
}]
|
|
9982
|
-
}] });
|
|
9983
|
-
|
|
9984
9983
|
class TemplateComponent {
|
|
9985
9984
|
constructor() {
|
|
9986
9985
|
this.jsf = inject(JsonSchemaFormService);
|
|
@@ -10199,13 +10198,17 @@ class WidgetLibraryService {
|
|
|
10199
10198
|
// See: http://ulion.github.io/jsonform/playground/?example=fields-checkboxbuttons
|
|
10200
10199
|
// Widgets included for compatibility with React JSON Schema Form API
|
|
10201
10200
|
'updown': 'number',
|
|
10202
|
-
'date-time': 'datetime-local',
|
|
10201
|
+
//'date-time': 'datetime-local',
|
|
10202
|
+
//as per ajv date-time requires a timezone but input
|
|
10203
|
+
//datetime-local doesn't
|
|
10204
|
+
'iso-date-time': 'datetime-local',
|
|
10203
10205
|
'alt-datetime': 'datetime-local',
|
|
10204
10206
|
'alt-date': 'date',
|
|
10205
10207
|
// Widgets included for compatibility with Angular Schema Form API
|
|
10206
10208
|
'wizard': 'section', // TODO: Sequential panels with "Next" and "Previous" buttons
|
|
10207
10209
|
// Widgets included for compatibility with other libraries
|
|
10208
10210
|
'textline': 'text',
|
|
10211
|
+
'selectcheckbox': SelectCheckboxComponent,
|
|
10209
10212
|
// Recommended 3rd-party add-on widgets (TODO: create wrappers for these...)
|
|
10210
10213
|
// 'ng2-select': Select control replacement - http://valor-software.com/ng2-select/
|
|
10211
10214
|
// 'flatpickr': Flatpickr date picker - https://github.com/chmln/flatpickr
|
|
@@ -10322,73 +10325,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
10322
10325
|
}]
|
|
10323
10326
|
}], ctorParameters: () => [] });
|
|
10324
10327
|
|
|
10325
|
-
const BASIC_WIDGETS = [
|
|
10326
|
-
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10327
|
-
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10328
|
-
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10329
|
-
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10330
|
-
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10331
|
-
TemplateComponent, TextareaComponent
|
|
10332
|
-
];
|
|
10333
|
-
|
|
10334
|
-
class WidgetLibraryModule {
|
|
10335
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10336
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, declarations: [AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent, CheckboxesComponent, FileComponent, HiddenComponent, InputComponent, MessageComponent, NoneComponent, NumberComponent, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, OrderableDirective, ElementAttributeDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, i2$1.SortablejsModule], exports: [AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent, CheckboxesComponent, FileComponent, HiddenComponent, InputComponent, MessageComponent, NoneComponent, NumberComponent, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, OrderableDirective, ElementAttributeDirective] }); }
|
|
10337
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10338
|
-
SortablejsModule.forRoot({
|
|
10339
|
-
//disabled:false,
|
|
10340
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10341
|
-
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10342
|
-
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10343
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10344
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10345
|
-
//console.log(evt.related);
|
|
10346
|
-
return false;
|
|
10347
|
-
}
|
|
10348
|
-
}
|
|
10349
|
-
})] }); }
|
|
10350
|
-
}
|
|
10351
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10352
|
-
type: NgModule,
|
|
10353
|
-
args: [{
|
|
10354
|
-
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10355
|
-
SortablejsModule.forRoot({
|
|
10356
|
-
//disabled:false,
|
|
10357
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10358
|
-
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10359
|
-
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10360
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10361
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10362
|
-
//console.log(evt.related);
|
|
10363
|
-
return false;
|
|
10364
|
-
}
|
|
10365
|
-
}
|
|
10366
|
-
})],
|
|
10367
|
-
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10368
|
-
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10369
|
-
}]
|
|
10370
|
-
}] });
|
|
10371
|
-
|
|
10372
|
-
// No framework - plain HTML controls (styles from form layout only)
|
|
10373
|
-
class NoFrameworkModule {
|
|
10374
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10375
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10376
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10377
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10378
|
-
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10379
|
-
}
|
|
10380
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10381
|
-
type: NgModule,
|
|
10382
|
-
args: [{
|
|
10383
|
-
imports: [CommonModule, WidgetLibraryModule],
|
|
10384
|
-
declarations: [NoFrameworkComponent],
|
|
10385
|
-
exports: [NoFrameworkComponent],
|
|
10386
|
-
providers: [
|
|
10387
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10388
|
-
]
|
|
10389
|
-
}]
|
|
10390
|
-
}] });
|
|
10391
|
-
|
|
10392
10328
|
// Possible future frameworks:
|
|
10393
10329
|
// - Foundation 6:
|
|
10394
10330
|
// http://justindavis.co/2017/06/15/using-foundation-6-in-angular-4/
|
|
@@ -10554,6 +10490,283 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
10554
10490
|
args: [Framework]
|
|
10555
10491
|
}] }] });
|
|
10556
10492
|
|
|
10493
|
+
//component created as a fallback for the checkbox/sortabljs issue
|
|
10494
|
+
//its meant to display a select as a checkbox
|
|
10495
|
+
class SelectCheckboxComponent {
|
|
10496
|
+
constructor() {
|
|
10497
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10498
|
+
this.jsfFLService = inject(FrameworkLibraryService);
|
|
10499
|
+
this.controlDisabled = false;
|
|
10500
|
+
this.boundControl = false;
|
|
10501
|
+
this.selectList = [];
|
|
10502
|
+
this.selectListFlatGroup = [];
|
|
10503
|
+
this.isArray = isArray;
|
|
10504
|
+
this.layoutNode = input(undefined);
|
|
10505
|
+
this.layoutIndex = input(undefined);
|
|
10506
|
+
this.dataIndex = input(undefined);
|
|
10507
|
+
this.frameworkStyles = {
|
|
10508
|
+
daisyui: { selectClass: "select-box", optionClass: "checkbox tw:dui-checkbox", optionChecked: "active", optionUnchecked: "" },
|
|
10509
|
+
"bootstrap-3": { selectClass: "select-box", optionClass: "bs3-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10510
|
+
"bootstrap-4": { selectClass: "select-box", optionClass: "bs4-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10511
|
+
"bootstrap-5": { selectClass: " select-box", optionClass: "form-check-input display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10512
|
+
//"material-design":{selectClass:" ",optionClass:" "}
|
|
10513
|
+
};
|
|
10514
|
+
}
|
|
10515
|
+
ngOnInit() {
|
|
10516
|
+
this.options = this.layoutNode().options || {};
|
|
10517
|
+
this.activeFramework = this.jsfFLService.activeFramework.name;
|
|
10518
|
+
this.selectList = buildTitleMap(
|
|
10519
|
+
//this.options.titleMap || this.options.enumNames,
|
|
10520
|
+
//TODO review-title is set to null in the setTitle() method of CssFrameworkComponent
|
|
10521
|
+
this.options.enumNames || (this.options?.title && [this.options?.title])
|
|
10522
|
+
|| [this.layoutNode().name],
|
|
10523
|
+
//this.options.enum,
|
|
10524
|
+
[true],
|
|
10525
|
+
//make required true to avoid creating 'none' select option
|
|
10526
|
+
true, !!this.options.flatList);
|
|
10527
|
+
//the selectListFlatGroup array will be used to update the formArray values
|
|
10528
|
+
//while the selectList array will be bound to the form select
|
|
10529
|
+
//as either a grouped select or a flat select
|
|
10530
|
+
/*
|
|
10531
|
+
this.selectListFlatGroup = buildTitleMap(
|
|
10532
|
+
this.options.titleMap || this.options.enumNames,
|
|
10533
|
+
this.options.enum, !!this.options.required, true
|
|
10534
|
+
)
|
|
10535
|
+
*/
|
|
10536
|
+
this.jsf.initializeControl(this);
|
|
10537
|
+
this.selectValue = [this.controlValue];
|
|
10538
|
+
}
|
|
10539
|
+
deselectAll() {
|
|
10540
|
+
this.selectListFlatGroup.forEach(selItem => {
|
|
10541
|
+
selItem.checked = false;
|
|
10542
|
+
});
|
|
10543
|
+
}
|
|
10544
|
+
updateValue(event) {
|
|
10545
|
+
this.options.showErrors = true;
|
|
10546
|
+
this.controlValue = this.selectValue[0];
|
|
10547
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10548
|
+
}
|
|
10549
|
+
onSelectClicked($event) {
|
|
10550
|
+
this.selectValue = this.selectValue && this.selectValue[0] ? [false] : [true];
|
|
10551
|
+
this.controlValue = this.selectValue[0];
|
|
10552
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10553
|
+
}
|
|
10554
|
+
ngOnDestroy() {
|
|
10555
|
+
let nullVal = this.options.multiple ? [null] : null;
|
|
10556
|
+
this.formControl.reset(nullVal);
|
|
10557
|
+
this.controlValue = null;
|
|
10558
|
+
}
|
|
10559
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10560
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: SelectCheckboxComponent, selector: "selectcheckbox-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
10561
|
+
<div
|
|
10562
|
+
[class]="options?.htmlClass || ''">
|
|
10563
|
+
<select *ngIf="boundControl"
|
|
10564
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10565
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10566
|
+
[attr.required]="options?.required"
|
|
10567
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10568
|
+
[multiple]="true"
|
|
10569
|
+
[id]="'control' + layoutNode()?._id"
|
|
10570
|
+
[name]="controlName"
|
|
10571
|
+
[ngModel]="selectValue"
|
|
10572
|
+
>
|
|
10573
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10574
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10575
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10576
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10577
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10578
|
+
[value]="selectItem?.value"
|
|
10579
|
+
(click)="onSelectClicked($event)"
|
|
10580
|
+
type="checkbox"
|
|
10581
|
+
>
|
|
10582
|
+
</option>
|
|
10583
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10584
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10585
|
+
</ng-template>
|
|
10586
|
+
</select>
|
|
10587
|
+
<select *ngIf="!boundControl"
|
|
10588
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10589
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10590
|
+
[attr.required]="options?.required"
|
|
10591
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10592
|
+
[multiple]="true"
|
|
10593
|
+
[disabled]="controlDisabled"
|
|
10594
|
+
[id]="'control' + layoutNode()?._id"
|
|
10595
|
+
[name]="controlName"
|
|
10596
|
+
(change)="updateValue($event)">
|
|
10597
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10598
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10599
|
+
[selected]="selectItem?.value === controlValue"
|
|
10600
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10601
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10602
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10603
|
+
[value]="selectItem?.value"
|
|
10604
|
+
type="checkbox">
|
|
10605
|
+
</option>
|
|
10606
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10607
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10608
|
+
</ng-template>
|
|
10609
|
+
</select>
|
|
10610
|
+
|
|
10611
|
+
</div>`, isInline: true, styles: [".select-box{font-size:16px;border:none;appearance:none;-webkit-appearance:none;-moz-appearance:none;height:25px;overflow:hidden;text-overflow:ellipsis;background-color:#fff;color:#000;background-color:transparent}.select-box:focus{outline:none}.select-option{font-size:20px;color:#000;background-color:#fff;display:inline-block}.unchecked:before{content:\"\\2610\";left:5px;top:50%;transform:translateY(-50%);font-size:30px}.checked:before{content:\"\\2611\";left:5px;top:50%;transform:translateY(-50%);font-size:30px}.select-option:checked{background-image:linear-gradient(0deg,#fff 0% 100%);color:#000}.select-box[multiple]:focus{background-color:transparent;color:#00f;-webkit-text-fill-color:black}.display-inline-block{display:inline-block}.bs4-option,.bs3-option{width:14px;height:14px;border:solid 1px;color:#a9a9a9;min-block-size:auto;border-radius:3px}.bs4-option:checked[type=checkbox],.bs3-option:checked[type=checkbox]{background-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!--%20License%3A%20MIT.%20Made%20by%20jaynewey%3A%20https%3A%2F%2Fgithub.com%2Fjaynewey%2Fcharm-icons%20--%3E%3Csvg%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222.5%22%3E%3Cpolyline%20points%3D%224%208.75%2C6.25%2012.25%2C13.25%203.5%22%2F%3E%3C%2Fsvg%3E);background-color:#00ced1}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
|
|
10612
|
+
}
|
|
10613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SelectCheckboxComponent, decorators: [{
|
|
10614
|
+
type: Component,
|
|
10615
|
+
args: [{ selector: 'selectcheckbox-widget', template: `
|
|
10616
|
+
<div
|
|
10617
|
+
[class]="options?.htmlClass || ''">
|
|
10618
|
+
<select *ngIf="boundControl"
|
|
10619
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10620
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10621
|
+
[attr.required]="options?.required"
|
|
10622
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10623
|
+
[multiple]="true"
|
|
10624
|
+
[id]="'control' + layoutNode()?._id"
|
|
10625
|
+
[name]="controlName"
|
|
10626
|
+
[ngModel]="selectValue"
|
|
10627
|
+
>
|
|
10628
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10629
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10630
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10631
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10632
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10633
|
+
[value]="selectItem?.value"
|
|
10634
|
+
(click)="onSelectClicked($event)"
|
|
10635
|
+
type="checkbox"
|
|
10636
|
+
>
|
|
10637
|
+
</option>
|
|
10638
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10639
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10640
|
+
</ng-template>
|
|
10641
|
+
</select>
|
|
10642
|
+
<select *ngIf="!boundControl"
|
|
10643
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10644
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10645
|
+
[attr.required]="options?.required"
|
|
10646
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10647
|
+
[multiple]="true"
|
|
10648
|
+
[disabled]="controlDisabled"
|
|
10649
|
+
[id]="'control' + layoutNode()?._id"
|
|
10650
|
+
[name]="controlName"
|
|
10651
|
+
(change)="updateValue($event)">
|
|
10652
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10653
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10654
|
+
[selected]="selectItem?.value === controlValue"
|
|
10655
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10656
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10657
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10658
|
+
[value]="selectItem?.value"
|
|
10659
|
+
type="checkbox">
|
|
10660
|
+
</option>
|
|
10661
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10662
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10663
|
+
</ng-template>
|
|
10664
|
+
</select>
|
|
10665
|
+
|
|
10666
|
+
</div>`, standalone: false, styles: [".select-box{font-size:16px;border:none;appearance:none;-webkit-appearance:none;-moz-appearance:none;height:25px;overflow:hidden;text-overflow:ellipsis;background-color:#fff;color:#000;background-color:transparent}.select-box:focus{outline:none}.select-option{font-size:20px;color:#000;background-color:#fff;display:inline-block}.unchecked:before{content:\"\\2610\";left:5px;top:50%;transform:translateY(-50%);font-size:30px}.checked:before{content:\"\\2611\";left:5px;top:50%;transform:translateY(-50%);font-size:30px}.select-option:checked{background-image:linear-gradient(0deg,#fff 0% 100%);color:#000}.select-box[multiple]:focus{background-color:transparent;color:#00f;-webkit-text-fill-color:black}.display-inline-block{display:inline-block}.bs4-option,.bs3-option{width:14px;height:14px;border:solid 1px;color:#a9a9a9;min-block-size:auto;border-radius:3px}.bs4-option:checked[type=checkbox],.bs3-option:checked[type=checkbox]{background-image:url(data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%3C!--%20License%3A%20MIT.%20Made%20by%20jaynewey%3A%20https%3A%2F%2Fgithub.com%2Fjaynewey%2Fcharm-icons%20--%3E%3Csvg%20viewBox%3D%220%200%2016%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20version%3D%221.1%22%20fill%3D%22none%22%20stroke%3D%22%23000000%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%222.5%22%3E%3Cpolyline%20points%3D%224%208.75%2C6.25%2012.25%2C13.25%203.5%22%2F%3E%3C%2Fsvg%3E);background-color:#00ced1}\n"] }]
|
|
10667
|
+
}] });
|
|
10668
|
+
|
|
10669
|
+
class TabComponent {
|
|
10670
|
+
constructor() {
|
|
10671
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10672
|
+
this.layoutNode = input(undefined);
|
|
10673
|
+
this.layoutIndex = input(undefined);
|
|
10674
|
+
this.dataIndex = input(undefined);
|
|
10675
|
+
}
|
|
10676
|
+
ngOnInit() {
|
|
10677
|
+
this.options = this.layoutNode().options || {};
|
|
10678
|
+
}
|
|
10679
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10680
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: TabComponent, selector: "tab-widget", inputs: { layoutNode: { classPropertyName: "layoutNode", publicName: "layoutNode", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
10681
|
+
<div [class]="options?.htmlClass || ''">
|
|
10682
|
+
<root-widget
|
|
10683
|
+
[dataIndex]="dataIndex()"
|
|
10684
|
+
[layoutIndex]="layoutIndex()"
|
|
10685
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10686
|
+
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
10687
|
+
}
|
|
10688
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: TabComponent, decorators: [{
|
|
10689
|
+
type: Component,
|
|
10690
|
+
args: [{
|
|
10691
|
+
// tslint:disable-next-line:component-selector
|
|
10692
|
+
selector: 'tab-widget',
|
|
10693
|
+
template: `
|
|
10694
|
+
<div [class]="options?.htmlClass || ''">
|
|
10695
|
+
<root-widget
|
|
10696
|
+
[dataIndex]="dataIndex()"
|
|
10697
|
+
[layoutIndex]="layoutIndex()"
|
|
10698
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10699
|
+
</div>`,
|
|
10700
|
+
}]
|
|
10701
|
+
}] });
|
|
10702
|
+
|
|
10703
|
+
const BASIC_WIDGETS = [
|
|
10704
|
+
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10705
|
+
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10706
|
+
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10707
|
+
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10708
|
+
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10709
|
+
TemplateComponent, TextareaComponent, SelectCheckboxComponent
|
|
10710
|
+
];
|
|
10711
|
+
|
|
10712
|
+
class WidgetLibraryModule {
|
|
10713
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10714
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, declarations: [AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent, CheckboxesComponent, FileComponent, HiddenComponent, InputComponent, MessageComponent, NoneComponent, NumberComponent, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, SelectCheckboxComponent, OrderableDirective, ElementAttributeDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, i2$1.SortablejsModule], exports: [AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent, CheckboxesComponent, FileComponent, HiddenComponent, InputComponent, MessageComponent, NoneComponent, NumberComponent, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, SelectCheckboxComponent, OrderableDirective, ElementAttributeDirective] }); }
|
|
10715
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10716
|
+
SortablejsModule.forRoot({
|
|
10717
|
+
//disabled:false,
|
|
10718
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10719
|
+
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10720
|
+
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10721
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10722
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10723
|
+
//console.log(evt.related);
|
|
10724
|
+
return false;
|
|
10725
|
+
}
|
|
10726
|
+
}
|
|
10727
|
+
})] }); }
|
|
10728
|
+
}
|
|
10729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10730
|
+
type: NgModule,
|
|
10731
|
+
args: [{
|
|
10732
|
+
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10733
|
+
SortablejsModule.forRoot({
|
|
10734
|
+
//disabled:false,
|
|
10735
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10736
|
+
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10737
|
+
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10738
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10739
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10740
|
+
//console.log(evt.related);
|
|
10741
|
+
return false;
|
|
10742
|
+
}
|
|
10743
|
+
}
|
|
10744
|
+
})],
|
|
10745
|
+
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10746
|
+
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10747
|
+
}]
|
|
10748
|
+
}] });
|
|
10749
|
+
|
|
10750
|
+
// No framework - plain HTML controls (styles from form layout only)
|
|
10751
|
+
class NoFrameworkModule {
|
|
10752
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10753
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10754
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10755
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10756
|
+
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10757
|
+
}
|
|
10758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10759
|
+
type: NgModule,
|
|
10760
|
+
args: [{
|
|
10761
|
+
imports: [CommonModule, WidgetLibraryModule],
|
|
10762
|
+
declarations: [NoFrameworkComponent],
|
|
10763
|
+
exports: [NoFrameworkComponent],
|
|
10764
|
+
providers: [
|
|
10765
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10766
|
+
]
|
|
10767
|
+
}]
|
|
10768
|
+
}] });
|
|
10769
|
+
|
|
10557
10770
|
const JSON_SCHEMA_FORM_VALUE_ACCESSOR = {
|
|
10558
10771
|
provide: NG_VALUE_ACCESSOR,
|
|
10559
10772
|
useExisting: forwardRef(() => JsonSchemaFormComponent),
|
|
@@ -11341,5 +11554,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
11341
11554
|
* Generated bundle index. Do not edit.
|
|
11342
11555
|
*/
|
|
11343
11556
|
|
|
11344
|
-
export { AddReferenceComponent, BASIC_WIDGETS, ButtonComponent, CheckboxComponent, CheckboxesComponent, ElementAttributeDirective, FileComponent, Framework, FrameworkLibraryService, HiddenComponent, InputComponent, JsonPointer, JsonSchemaFormComponent, JsonSchemaFormModule, JsonSchemaFormService, JsonValidators, MessageComponent, NoneComponent, NumberComponent, OneOfComponent, OrderableDirective, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, WidgetLibraryModule, WidgetLibraryService, _executeAsyncValidators, _executeValidators, _mergeErrors, _mergeObjects, _toPromise, addClasses, buildFormGroup, buildFormGroupTemplate, buildLayout, buildLayoutFromSchema, buildSchemaFromData, buildSchemaFromLayout, buildTitleMap, checkInlineType, combineAllOf, commonItems, convertSchemaToDraft6, copy, deValidationMessages, enValidationMessages, esValidationMessages, fixRequiredArrayProperties, fixTitle, forEach, forEachCopy, formatFormData, frValidationMessages, getControl, getControlValidators, getFromSchema, getInputType, getLayoutNode, getSubSchema, getTitleMapFromOneOf, getType, hasNonNullValue, hasOwn, hasValue, inArray, isArray, isBoolean, isDate, isDefined, isEmpty, isFunction, isInputRequired, isInteger, isMap, isNumber, isObject, isObservable, isPrimitive, isPromise, isSet, isString, isType, itValidationMessages, mapLayout, mergeFilteredObject, mergeSchemas, path2ControlKey, ptValidationMessages, removeRecursiveReferences, resolveSchemaReferences, setControl, setRequiredFields, toJavaScriptType, toObservable, toSchemaType, toTitleCase, uniqueItems, updateInputOptions, xor, zhValidationMessages };
|
|
11557
|
+
export { AddReferenceComponent, BASIC_WIDGETS, ButtonComponent, CheckboxComponent, CheckboxesComponent, ElementAttributeDirective, FileComponent, Framework, FrameworkLibraryService, HiddenComponent, InputComponent, JsonPointer, JsonSchemaFormComponent, JsonSchemaFormModule, JsonSchemaFormService, JsonValidators, MessageComponent, NoneComponent, NumberComponent, OneOfComponent, OrderableDirective, RadiosComponent, RootComponent, SectionComponent, SelectCheckboxComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, WidgetLibraryModule, WidgetLibraryService, _executeAsyncValidators, _executeValidators, _mergeErrors, _mergeObjects, _toPromise, addClasses, buildFormGroup, buildFormGroupTemplate, buildLayout, buildLayoutFromSchema, buildSchemaFromData, buildSchemaFromLayout, buildTitleMap, checkInlineType, combineAllOf, commonItems, convertSchemaToDraft6, copy, deValidationMessages, enValidationMessages, esValidationMessages, fixRequiredArrayProperties, fixTitle, forEach, forEachCopy, formatFormData, frValidationMessages, getControl, getControlValidators, getFromSchema, getInputType, getLayoutNode, getSubSchema, getTitleMapFromOneOf, getType, hasNonNullValue, hasOwn, hasValue, inArray, isArray, isBoolean, isDate, isDefined, isEmpty, isFunction, isInputRequired, isInteger, isMap, isNumber, isObject, isObservable, isPrimitive, isPromise, isSet, isString, isType, itValidationMessages, mapLayout, mergeFilteredObject, mergeSchemas, path2ControlKey, ptValidationMessages, removeRecursiveReferences, resolveSchemaReferences, setControl, setRequiredFields, toJavaScriptType, toObservable, toSchemaType, toTitleCase, uniqueItems, updateInputOptions, xor, zhValidationMessages };
|
|
11345
11558
|
//# sourceMappingURL=ng-formworks-core.mjs.map
|