@ng-formworks/core 19.6.2 → 19.6.3
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/fesm2022/ng-formworks-core.mjs +362 -159
- package/fesm2022/ng-formworks-core.mjs.map +1 -1
- package/lib/shared/json-schema.functions.d.ts +0 -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, Input, Directive, ChangeDetectionStrategy, ViewChild, signal, ElementRef, NgZone,
|
|
4
|
+
import { Injectable, inject, input, viewChild, ViewContainerRef, Component, Input, Directive, 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';
|
|
@@ -4586,8 +4586,32 @@ function fixRequiredArrayProperties(schema) {
|
|
|
4586
4586
|
* @param schema:any
|
|
4587
4587
|
* @param negate:boolean=false
|
|
4588
4588
|
* @returns
|
|
4589
|
-
|
|
4590
4589
|
*/
|
|
4590
|
+
//TODO also handle ifs with mixed conditional such as allOf/oneOf etc
|
|
4591
|
+
/*
|
|
4592
|
+
|
|
4593
|
+
"if": {
|
|
4594
|
+
"allOf": [
|
|
4595
|
+
{
|
|
4596
|
+
"properties": {
|
|
4597
|
+
"animalType": {
|
|
4598
|
+
"enum": ["Cat", "Fish"]
|
|
4599
|
+
}
|
|
4600
|
+
}
|
|
4601
|
+
},
|
|
4602
|
+
{
|
|
4603
|
+
"properties": {
|
|
4604
|
+
"color": {
|
|
4605
|
+
"const": "orange"
|
|
4606
|
+
}
|
|
4607
|
+
}
|
|
4608
|
+
}
|
|
4609
|
+
]
|
|
4610
|
+
}
|
|
4611
|
+
|
|
4612
|
+
|
|
4613
|
+
|
|
4614
|
+
*/
|
|
4591
4615
|
function convertJSONSchemaIfToCondition(schema, layoutNode, negate = false) {
|
|
4592
4616
|
let conditionFun = "";
|
|
4593
4617
|
let condition = {};
|
|
@@ -4612,17 +4636,26 @@ function convertJSONSchemaIfToCondition(schema, layoutNode, negate = false) {
|
|
|
4612
4636
|
.join("")
|
|
4613
4637
|
: "";
|
|
4614
4638
|
let modelPath = parentPath ? `model.${parentPath}` : "model";
|
|
4615
|
-
let checkPath = modelPath.split(
|
|
4616
|
-
.
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4639
|
+
let checkPath = modelPath.split('.')
|
|
4640
|
+
.map((_, index, array) => {
|
|
4641
|
+
return array.slice(0, index + 1).join('.'); // Build each part of the path dynamically
|
|
4642
|
+
}).join(' && '); // Join the parts with '&&'
|
|
4643
|
+
// .reduce((accumulator, currentPart, index) => {
|
|
4644
|
+
// const currentExpression = index === 0 ? currentPart : `${accumulator}.${currentPart}`;
|
|
4645
|
+
// return index === 0 ? currentExpression : `${accumulator} && ${currentExpression}`;
|
|
4646
|
+
// }, '');
|
|
4620
4647
|
if (schema.if) {
|
|
4621
4648
|
Object.keys(schema.if.properties).forEach((ifProp, ind) => {
|
|
4622
4649
|
let amper = ind > 0 ? "&" : "";
|
|
4623
4650
|
//Note the model value is first converted to string and so is the condition
|
|
4624
4651
|
//so that booleans and numbers can also be compared
|
|
4625
|
-
|
|
4652
|
+
//changed to an includesList to handle cases such as
|
|
4653
|
+
const includesList = hasOwn(schema.if.properties[ifProp], "const") ? [schema.if.properties[ifProp].const]
|
|
4654
|
+
: hasOwn(schema.if.properties[ifProp], "enum") ? schema.if.properties[ifProp].enum
|
|
4655
|
+
: [];
|
|
4656
|
+
const includesListAsStr = includesList.map(val => { return `"${val}"`; });
|
|
4657
|
+
conditionFun += `${amper} ${checkPath} && [${includesListAsStr}].includes(${modelPath}.${ifProp}+"")`;
|
|
4658
|
+
//conditionFun+=`${amper} ${checkPath} && ${modelPath}.${ifProp}+""=='${schema.if.properties[ifProp].const}'`
|
|
4626
4659
|
});
|
|
4627
4660
|
}
|
|
4628
4661
|
condition["functionBody"] = `return ${notOp}(${conditionFun})`;
|
|
@@ -5052,7 +5085,7 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5052
5085
|
["then", "else"].forEach(con => {
|
|
5053
5086
|
if (hasOwn(schema, con)) {
|
|
5054
5087
|
const keySchemaPointer = `/${con}`;
|
|
5055
|
-
let thenFGTemplate = buildFormGroupTemplate(jsf, nodeValue,
|
|
5088
|
+
let thenFGTemplate = buildFormGroupTemplate(jsf, nodeValue, setValues, //false,//JsonPointer.get(nodeValue, keySchemaPointer), setValues,
|
|
5056
5089
|
schemaPointer + keySchemaPointer, dataPointer, templatePointer + `/controls/${con}`);
|
|
5057
5090
|
Object.assign(controls, thenFGTemplate.controls);
|
|
5058
5091
|
}
|
|
@@ -5113,7 +5146,8 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5113
5146
|
if (foundKeys && foundKeys.length > 0) {
|
|
5114
5147
|
const keySchemaPointer = `/${ofType}/${ind}`;
|
|
5115
5148
|
//console.log(`found:${keySchemaPointer}`);
|
|
5116
|
-
let newNodeValue =
|
|
5149
|
+
let newNodeValue = nodeValue;
|
|
5150
|
+
//JsonPointer.get(nodeValue, dataPointer);
|
|
5117
5151
|
//JsonPointer.get(nodeValue, keySchemaPointer);
|
|
5118
5152
|
if (ofType == "oneOf") {
|
|
5119
5153
|
newNodeValue = nodeValue;
|
|
@@ -5144,9 +5178,16 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5144
5178
|
let oneOfItemSchema = JsonPointer.get(jsf.schema, controlItem.schemaPointer);
|
|
5145
5179
|
//JsonPointer.get(schema,pointerPath);
|
|
5146
5180
|
let dPointer = controlItem.schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
5147
|
-
.replace(/(if|then|else|properties)\//g, '');
|
|
5181
|
+
.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g, '/-/');
|
|
5182
|
+
dPointer = dPointer.indexOf(dataPointer) == 0
|
|
5183
|
+
? dPointer.substring(dataPointer.length) : dPointer;
|
|
5184
|
+
//dataPointer+"/"+controlItem.schemaPointer.split("/").slice(-1)[0];
|
|
5185
|
+
////controlItem.schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
5186
|
+
////.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g,'/-/');
|
|
5148
5187
|
//JsonPointer.toDataPointer(controlItem.schemaPointer,jsf.schema);
|
|
5149
|
-
|
|
5188
|
+
//console.log(`dataPointer:${dataPointer}\ndPointer:${dPointer}`)
|
|
5189
|
+
let dVal = //JsonPointer.get(jsf.formValues,dPointer);
|
|
5190
|
+
JsonPointer.get(nodeValue, dPointer);
|
|
5150
5191
|
let fkey = key;
|
|
5151
5192
|
let oneOfItemValue = dVal;
|
|
5152
5193
|
/*
|
|
@@ -5289,43 +5330,22 @@ function buildFormGroupTemplate(jsf, nodeValue = null, setValues = true, schemaP
|
|
|
5289
5330
|
["then", "else"].forEach(con => {
|
|
5290
5331
|
if (hasOwn(schema, con)) {
|
|
5291
5332
|
const keySchemaPointer = `/${con}`;
|
|
5292
|
-
let thenTFGTemplate = buildFormGroupTemplate(jsf, nodeValue,
|
|
5333
|
+
let thenTFGTemplate = buildFormGroupTemplate(jsf, nodeValue, setValues, //false,
|
|
5334
|
+
schemaPointer + keySchemaPointer, dataPointer, templatePointer + `/controls/${con}`);
|
|
5293
5335
|
//NB same property can be in both then and else
|
|
5294
5336
|
//so key must be the unique path to control
|
|
5295
5337
|
//let ifItemSchema=JsonPointer.get(schema,keySchemaPointer);
|
|
5296
5338
|
//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
|
-
});
|
|
5339
|
+
if (hasOwn(thenTFGTemplate, 'controls')) {
|
|
5340
|
+
Object.keys(thenTFGTemplate.controls).forEach(key => {
|
|
5341
|
+
let controlKey = thenTFGTemplate.controls[key].schemaPointer;
|
|
5342
|
+
if (controlKey) {
|
|
5343
|
+
controlKey = path2ControlKey(controlKey);
|
|
5344
|
+
let cItem = Object.assign({}, thenTFGTemplate.controls[key]);
|
|
5345
|
+
controls[controlKey] = cItem;
|
|
5346
|
+
}
|
|
5347
|
+
});
|
|
5348
|
+
}
|
|
5329
5349
|
}
|
|
5330
5350
|
});
|
|
5331
5351
|
}
|
|
@@ -5562,7 +5582,8 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5562
5582
|
// If dataPointer input is not a valid JSON pointer, check to
|
|
5563
5583
|
// see if it is instead a valid object path, using dot notaion
|
|
5564
5584
|
if (typeof dataPointer === 'string') {
|
|
5565
|
-
const
|
|
5585
|
+
const controlPath = !!schemaPointer ? path2ControlKey(schemaPointer) : dataPointer;
|
|
5586
|
+
const formControl = formGroup.get(controlPath);
|
|
5566
5587
|
if (formControl) {
|
|
5567
5588
|
return formControl;
|
|
5568
5589
|
}
|
|
@@ -5582,7 +5603,8 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5582
5603
|
// try using formGroup.get() to return the control
|
|
5583
5604
|
if (typeof formGroup.get === 'function' &&
|
|
5584
5605
|
dataPointerArray.every(key => key.indexOf('.') === -1)) {
|
|
5585
|
-
const
|
|
5606
|
+
const controlPath = !!schemaPointer ? path2ControlKey(schemaPointer) : dataPointerArray.join('.');
|
|
5607
|
+
const formControl = formGroup.get(controlPath);
|
|
5586
5608
|
if (formControl) {
|
|
5587
5609
|
return formControl;
|
|
5588
5610
|
}
|
|
@@ -5595,15 +5617,16 @@ function getControl(formGroup, dataPointer, returnGroup = false, schemaPointer)
|
|
|
5595
5617
|
if (hasOwn(subGroup, 'controls')) {
|
|
5596
5618
|
subGroup = subGroup.controls;
|
|
5597
5619
|
}
|
|
5598
|
-
if (
|
|
5620
|
+
if (schemaPointer && hasOwn(subGroup, path2ControlKey(schemaPointer))) {
|
|
5621
|
+
subGroup = subGroup[path2ControlKey(schemaPointer)];
|
|
5622
|
+
return subGroup;
|
|
5623
|
+
}
|
|
5624
|
+
else if (isArray(subGroup) && (key === '-')) {
|
|
5599
5625
|
subGroup = subGroup[subGroup.length - 1];
|
|
5600
5626
|
}
|
|
5601
5627
|
else if (hasOwn(subGroup, key)) {
|
|
5602
5628
|
subGroup = subGroup[key];
|
|
5603
5629
|
}
|
|
5604
|
-
else if (schemaPointer && hasOwn(subGroup, path2ControlKey(schemaPointer))) {
|
|
5605
|
-
subGroup = subGroup[path2ControlKey(schemaPointer)];
|
|
5606
|
-
}
|
|
5607
5630
|
else {
|
|
5608
5631
|
console.error(`getControl error: Unable to find "${key}" item in FormGroup.`);
|
|
5609
5632
|
console.error(dataPointer);
|
|
@@ -6481,7 +6504,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6481
6504
|
if (hasOwn(schema, con)) {
|
|
6482
6505
|
const keySchemaPointer = `/${con}`;
|
|
6483
6506
|
const negateClause = con == "else";
|
|
6484
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6507
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6485
6508
|
if (innerItem) {
|
|
6486
6509
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6487
6510
|
if (isArray(innerItem)) {
|
|
@@ -6708,7 +6731,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6708
6731
|
if (hasOwn(schema, con)) {
|
|
6709
6732
|
const keySchemaPointer = `/${con}`;
|
|
6710
6733
|
const negateClause = con == "else";
|
|
6711
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6734
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6712
6735
|
if (innerItem) {
|
|
6713
6736
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6714
6737
|
if (isArray(innerItem)) {
|
|
@@ -6716,17 +6739,19 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6716
6739
|
//item.schemaPointer = schemaPointer + keySchemaPointer + item.dataPointer;
|
|
6717
6740
|
//item.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6718
6741
|
newSection.push(item);
|
|
6719
|
-
newNode = newSection
|
|
6742
|
+
/////// newNode = newSection
|
|
6720
6743
|
});
|
|
6721
6744
|
}
|
|
6722
6745
|
else {
|
|
6723
6746
|
//innerItem.schemaPointer = schemaPointer + keySchemaPointer + innerItem.dataPointer;
|
|
6724
6747
|
//innerItem.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6725
|
-
newNode = innerItem
|
|
6748
|
+
///////newNode = innerItem
|
|
6749
|
+
newSection.push(innerItem);
|
|
6726
6750
|
}
|
|
6727
6751
|
}
|
|
6728
6752
|
}
|
|
6729
6753
|
});
|
|
6754
|
+
newNode = newSection;
|
|
6730
6755
|
}
|
|
6731
6756
|
return newNode;
|
|
6732
6757
|
}
|
|
@@ -8923,7 +8948,7 @@ class OneOfComponent {
|
|
|
8923
8948
|
let controlSchema = JsonPointer.get(this.jsf.schema, parts.join("/"));
|
|
8924
8949
|
let schemaPointer = parts.join("/");
|
|
8925
8950
|
let dPointer = schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
8926
|
-
.replace(/(if|then|else|properties)\//g, '');
|
|
8951
|
+
.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g, '/-/');
|
|
8927
8952
|
//JsonPointer.toDataPointer(parts.join("/"),this.jsf.schema);
|
|
8928
8953
|
let dVal = JsonPointer.get(this.jsf.formValues, dPointer);
|
|
8929
8954
|
let compareVal = dVal; //formValue;
|
|
@@ -9298,6 +9323,7 @@ class RootComponent {
|
|
|
9298
9323
|
}
|
|
9299
9324
|
sortableInit(sortable) {
|
|
9300
9325
|
this.sortableObj = sortable;
|
|
9326
|
+
//Sortable.utils.on(this.sortableObj.el,"nulling",(s)=>{console.log("event nulling sortablejs")})
|
|
9301
9327
|
///NB issue caused by sortablejs when it its destroyed
|
|
9302
9328
|
//this mainly affects checkboxes coupled with conditions
|
|
9303
9329
|
//-the value is rechecked
|
|
@@ -9963,41 +9989,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
9963
9989
|
}]
|
|
9964
9990
|
}] });
|
|
9965
9991
|
|
|
9966
|
-
class TabComponent {
|
|
9967
|
-
constructor() {
|
|
9968
|
-
this.jsf = inject(JsonSchemaFormService);
|
|
9969
|
-
this.layoutNode = input(undefined);
|
|
9970
|
-
this.layoutIndex = input(undefined);
|
|
9971
|
-
this.dataIndex = input(undefined);
|
|
9972
|
-
}
|
|
9973
|
-
ngOnInit() {
|
|
9974
|
-
this.options = this.layoutNode().options || {};
|
|
9975
|
-
}
|
|
9976
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9977
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: TabComponent, isStandalone: false, 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: `
|
|
9978
|
-
<div [class]="options?.htmlClass || ''">
|
|
9979
|
-
<root-widget
|
|
9980
|
-
[dataIndex]="dataIndex()"
|
|
9981
|
-
[layoutIndex]="layoutIndex()"
|
|
9982
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9983
|
-
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
9984
|
-
}
|
|
9985
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabComponent, decorators: [{
|
|
9986
|
-
type: Component,
|
|
9987
|
-
args: [{
|
|
9988
|
-
// tslint:disable-next-line:component-selector
|
|
9989
|
-
selector: 'tab-widget',
|
|
9990
|
-
template: `
|
|
9991
|
-
<div [class]="options?.htmlClass || ''">
|
|
9992
|
-
<root-widget
|
|
9993
|
-
[dataIndex]="dataIndex()"
|
|
9994
|
-
[layoutIndex]="layoutIndex()"
|
|
9995
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9996
|
-
</div>`,
|
|
9997
|
-
standalone: false
|
|
9998
|
-
}]
|
|
9999
|
-
}] });
|
|
10000
|
-
|
|
10001
9992
|
class TemplateComponent {
|
|
10002
9993
|
constructor() {
|
|
10003
9994
|
this.jsf = inject(JsonSchemaFormService);
|
|
@@ -10225,6 +10216,7 @@ class WidgetLibraryService {
|
|
|
10225
10216
|
'wizard': 'section', // TODO: Sequential panels with "Next" and "Previous" buttons
|
|
10226
10217
|
// Widgets included for compatibility with other libraries
|
|
10227
10218
|
'textline': 'text',
|
|
10219
|
+
'selectcheckbox': SelectCheckboxComponent,
|
|
10228
10220
|
// Recommended 3rd-party add-on widgets (TODO: create wrappers for these...)
|
|
10229
10221
|
// 'ng2-select': Select control replacement - http://valor-software.com/ng2-select/
|
|
10230
10222
|
// 'flatpickr': Flatpickr date picker - https://github.com/chmln/flatpickr
|
|
@@ -10341,73 +10333,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
10341
10333
|
}]
|
|
10342
10334
|
}], ctorParameters: () => [] });
|
|
10343
10335
|
|
|
10344
|
-
const BASIC_WIDGETS = [
|
|
10345
|
-
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10346
|
-
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10347
|
-
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10348
|
-
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10349
|
-
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10350
|
-
TemplateComponent, TextareaComponent
|
|
10351
|
-
];
|
|
10352
|
-
|
|
10353
|
-
class WidgetLibraryModule {
|
|
10354
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10355
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", 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] }); }
|
|
10356
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10357
|
-
SortablejsModule.forRoot({
|
|
10358
|
-
//disabled:false,
|
|
10359
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10360
|
-
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10361
|
-
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10362
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10363
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10364
|
-
//console.log(evt.related);
|
|
10365
|
-
return false;
|
|
10366
|
-
}
|
|
10367
|
-
}
|
|
10368
|
-
})] }); }
|
|
10369
|
-
}
|
|
10370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10371
|
-
type: NgModule,
|
|
10372
|
-
args: [{
|
|
10373
|
-
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10374
|
-
SortablejsModule.forRoot({
|
|
10375
|
-
//disabled:false,
|
|
10376
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10377
|
-
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10378
|
-
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10379
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10380
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10381
|
-
//console.log(evt.related);
|
|
10382
|
-
return false;
|
|
10383
|
-
}
|
|
10384
|
-
}
|
|
10385
|
-
})],
|
|
10386
|
-
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10387
|
-
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10388
|
-
}]
|
|
10389
|
-
}] });
|
|
10390
|
-
|
|
10391
|
-
// No framework - plain HTML controls (styles from form layout only)
|
|
10392
|
-
class NoFrameworkModule {
|
|
10393
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10394
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10395
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10396
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10397
|
-
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10398
|
-
}
|
|
10399
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10400
|
-
type: NgModule,
|
|
10401
|
-
args: [{
|
|
10402
|
-
imports: [CommonModule, WidgetLibraryModule],
|
|
10403
|
-
declarations: [NoFrameworkComponent],
|
|
10404
|
-
exports: [NoFrameworkComponent],
|
|
10405
|
-
providers: [
|
|
10406
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10407
|
-
]
|
|
10408
|
-
}]
|
|
10409
|
-
}] });
|
|
10410
|
-
|
|
10411
10336
|
// Possible future frameworks:
|
|
10412
10337
|
// - Foundation 6:
|
|
10413
10338
|
// http://justindavis.co/2017/06/15/using-foundation-6-in-angular-4/
|
|
@@ -10573,6 +10498,284 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
10573
10498
|
args: [Framework]
|
|
10574
10499
|
}] }] });
|
|
10575
10500
|
|
|
10501
|
+
//component created as a fallback for the checkbox/sortabljs issue
|
|
10502
|
+
//its meant to display a select as a checkbox
|
|
10503
|
+
class SelectCheckboxComponent {
|
|
10504
|
+
constructor() {
|
|
10505
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10506
|
+
this.jsfFLService = inject(FrameworkLibraryService);
|
|
10507
|
+
this.controlDisabled = false;
|
|
10508
|
+
this.boundControl = false;
|
|
10509
|
+
this.selectList = [];
|
|
10510
|
+
this.selectListFlatGroup = [];
|
|
10511
|
+
this.isArray = isArray;
|
|
10512
|
+
this.layoutNode = input(undefined);
|
|
10513
|
+
this.layoutIndex = input(undefined);
|
|
10514
|
+
this.dataIndex = input(undefined);
|
|
10515
|
+
this.frameworkStyles = {
|
|
10516
|
+
daisyui: { selectClass: "select-box", optionClass: "checkbox tw:dui-checkbox", optionChecked: "active", optionUnchecked: "" },
|
|
10517
|
+
"bootstrap-3": { selectClass: "select-box", optionClass: "bs3-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10518
|
+
"bootstrap-4": { selectClass: "select-box", optionClass: "bs4-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10519
|
+
"bootstrap-5": { selectClass: " select-box", optionClass: "form-check-input display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10520
|
+
//"material-design":{selectClass:" ",optionClass:" "}
|
|
10521
|
+
};
|
|
10522
|
+
}
|
|
10523
|
+
ngOnInit() {
|
|
10524
|
+
this.options = this.layoutNode().options || {};
|
|
10525
|
+
this.activeFramework = this.jsfFLService.activeFramework.name;
|
|
10526
|
+
this.selectList = buildTitleMap(
|
|
10527
|
+
//this.options.titleMap || this.options.enumNames,
|
|
10528
|
+
//TODO review-title is set to null in the setTitle() method of CssFrameworkComponent
|
|
10529
|
+
this.options.enumNames || (this.options?.title && [this.options?.title])
|
|
10530
|
+
|| [this.layoutNode().name],
|
|
10531
|
+
//this.options.enum,
|
|
10532
|
+
[true],
|
|
10533
|
+
//make required true to avoid creating 'none' select option
|
|
10534
|
+
true, !!this.options.flatList);
|
|
10535
|
+
//the selectListFlatGroup array will be used to update the formArray values
|
|
10536
|
+
//while the selectList array will be bound to the form select
|
|
10537
|
+
//as either a grouped select or a flat select
|
|
10538
|
+
/*
|
|
10539
|
+
this.selectListFlatGroup = buildTitleMap(
|
|
10540
|
+
this.options.titleMap || this.options.enumNames,
|
|
10541
|
+
this.options.enum, !!this.options.required, true
|
|
10542
|
+
)
|
|
10543
|
+
*/
|
|
10544
|
+
this.jsf.initializeControl(this);
|
|
10545
|
+
this.selectValue = [this.controlValue];
|
|
10546
|
+
}
|
|
10547
|
+
deselectAll() {
|
|
10548
|
+
this.selectListFlatGroup.forEach(selItem => {
|
|
10549
|
+
selItem.checked = false;
|
|
10550
|
+
});
|
|
10551
|
+
}
|
|
10552
|
+
updateValue(event) {
|
|
10553
|
+
this.options.showErrors = true;
|
|
10554
|
+
this.controlValue = this.selectValue[0];
|
|
10555
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10556
|
+
}
|
|
10557
|
+
onSelectClicked($event) {
|
|
10558
|
+
this.selectValue = this.selectValue && this.selectValue[0] ? [false] : [true];
|
|
10559
|
+
this.controlValue = this.selectValue[0];
|
|
10560
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10561
|
+
}
|
|
10562
|
+
ngOnDestroy() {
|
|
10563
|
+
let nullVal = this.options.multiple ? [null] : null;
|
|
10564
|
+
this.formControl.reset(nullVal);
|
|
10565
|
+
this.controlValue = null;
|
|
10566
|
+
}
|
|
10567
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SelectCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10568
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: SelectCheckboxComponent, isStandalone: false, 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: `
|
|
10569
|
+
<div
|
|
10570
|
+
[class]="options?.htmlClass || ''">
|
|
10571
|
+
<select *ngIf="boundControl"
|
|
10572
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10573
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10574
|
+
[attr.required]="options?.required"
|
|
10575
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10576
|
+
[multiple]="true"
|
|
10577
|
+
[id]="'control' + layoutNode()?._id"
|
|
10578
|
+
[name]="controlName"
|
|
10579
|
+
[ngModel]="selectValue"
|
|
10580
|
+
>
|
|
10581
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10582
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10583
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10584
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10585
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10586
|
+
[value]="selectItem?.value"
|
|
10587
|
+
(click)="onSelectClicked($event)"
|
|
10588
|
+
type="checkbox"
|
|
10589
|
+
>
|
|
10590
|
+
</option>
|
|
10591
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10592
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10593
|
+
</ng-template>
|
|
10594
|
+
</select>
|
|
10595
|
+
<select *ngIf="!boundControl"
|
|
10596
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10597
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10598
|
+
[attr.required]="options?.required"
|
|
10599
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10600
|
+
[multiple]="true"
|
|
10601
|
+
[disabled]="controlDisabled"
|
|
10602
|
+
[id]="'control' + layoutNode()?._id"
|
|
10603
|
+
[name]="controlName"
|
|
10604
|
+
(change)="updateValue($event)">
|
|
10605
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10606
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10607
|
+
[selected]="selectItem?.value === controlValue"
|
|
10608
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10609
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10610
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10611
|
+
[value]="selectItem?.value"
|
|
10612
|
+
type="checkbox">
|
|
10613
|
+
</option>
|
|
10614
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10615
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10616
|
+
</ng-template>
|
|
10617
|
+
</select>
|
|
10618
|
+
|
|
10619
|
+
</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"] }] }); }
|
|
10620
|
+
}
|
|
10621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SelectCheckboxComponent, decorators: [{
|
|
10622
|
+
type: Component,
|
|
10623
|
+
args: [{ selector: 'selectcheckbox-widget', template: `
|
|
10624
|
+
<div
|
|
10625
|
+
[class]="options?.htmlClass || ''">
|
|
10626
|
+
<select *ngIf="boundControl"
|
|
10627
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10628
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10629
|
+
[attr.required]="options?.required"
|
|
10630
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10631
|
+
[multiple]="true"
|
|
10632
|
+
[id]="'control' + layoutNode()?._id"
|
|
10633
|
+
[name]="controlName"
|
|
10634
|
+
[ngModel]="selectValue"
|
|
10635
|
+
>
|
|
10636
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10637
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10638
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10639
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10640
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10641
|
+
[value]="selectItem?.value"
|
|
10642
|
+
(click)="onSelectClicked($event)"
|
|
10643
|
+
type="checkbox"
|
|
10644
|
+
>
|
|
10645
|
+
</option>
|
|
10646
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10647
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10648
|
+
</ng-template>
|
|
10649
|
+
</select>
|
|
10650
|
+
<select *ngIf="!boundControl"
|
|
10651
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10652
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10653
|
+
[attr.required]="options?.required"
|
|
10654
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10655
|
+
[multiple]="true"
|
|
10656
|
+
[disabled]="controlDisabled"
|
|
10657
|
+
[id]="'control' + layoutNode()?._id"
|
|
10658
|
+
[name]="controlName"
|
|
10659
|
+
(change)="updateValue($event)">
|
|
10660
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10661
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10662
|
+
[selected]="selectItem?.value === controlValue"
|
|
10663
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10664
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10665
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10666
|
+
[value]="selectItem?.value"
|
|
10667
|
+
type="checkbox">
|
|
10668
|
+
</option>
|
|
10669
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10670
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10671
|
+
</ng-template>
|
|
10672
|
+
</select>
|
|
10673
|
+
|
|
10674
|
+
</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"] }]
|
|
10675
|
+
}] });
|
|
10676
|
+
|
|
10677
|
+
class TabComponent {
|
|
10678
|
+
constructor() {
|
|
10679
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10680
|
+
this.layoutNode = input(undefined);
|
|
10681
|
+
this.layoutIndex = input(undefined);
|
|
10682
|
+
this.dataIndex = input(undefined);
|
|
10683
|
+
}
|
|
10684
|
+
ngOnInit() {
|
|
10685
|
+
this.options = this.layoutNode().options || {};
|
|
10686
|
+
}
|
|
10687
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10688
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.14", type: TabComponent, isStandalone: false, 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: `
|
|
10689
|
+
<div [class]="options?.htmlClass || ''">
|
|
10690
|
+
<root-widget
|
|
10691
|
+
[dataIndex]="dataIndex()"
|
|
10692
|
+
[layoutIndex]="layoutIndex()"
|
|
10693
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10694
|
+
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
10695
|
+
}
|
|
10696
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TabComponent, decorators: [{
|
|
10697
|
+
type: Component,
|
|
10698
|
+
args: [{
|
|
10699
|
+
// tslint:disable-next-line:component-selector
|
|
10700
|
+
selector: 'tab-widget',
|
|
10701
|
+
template: `
|
|
10702
|
+
<div [class]="options?.htmlClass || ''">
|
|
10703
|
+
<root-widget
|
|
10704
|
+
[dataIndex]="dataIndex()"
|
|
10705
|
+
[layoutIndex]="layoutIndex()"
|
|
10706
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10707
|
+
</div>`,
|
|
10708
|
+
standalone: false
|
|
10709
|
+
}]
|
|
10710
|
+
}] });
|
|
10711
|
+
|
|
10712
|
+
const BASIC_WIDGETS = [
|
|
10713
|
+
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10714
|
+
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10715
|
+
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10716
|
+
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10717
|
+
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10718
|
+
TemplateComponent, TextareaComponent, SelectCheckboxComponent
|
|
10719
|
+
];
|
|
10720
|
+
|
|
10721
|
+
class WidgetLibraryModule {
|
|
10722
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10723
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", 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] }); }
|
|
10724
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10725
|
+
SortablejsModule.forRoot({
|
|
10726
|
+
//disabled:false,
|
|
10727
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10728
|
+
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10729
|
+
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10730
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10731
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10732
|
+
//console.log(evt.related);
|
|
10733
|
+
return false;
|
|
10734
|
+
}
|
|
10735
|
+
}
|
|
10736
|
+
})] }); }
|
|
10737
|
+
}
|
|
10738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10739
|
+
type: NgModule,
|
|
10740
|
+
args: [{
|
|
10741
|
+
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10742
|
+
SortablejsModule.forRoot({
|
|
10743
|
+
//disabled:false,
|
|
10744
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10745
|
+
filter: ".sortable-filter", //needed to disable dragging on input range elements, class needs to be added to the element or its parent
|
|
10746
|
+
preventOnFilter: false, //needed for input range elements slider do still work
|
|
10747
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10748
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10749
|
+
//console.log(evt.related);
|
|
10750
|
+
return false;
|
|
10751
|
+
}
|
|
10752
|
+
}
|
|
10753
|
+
})],
|
|
10754
|
+
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10755
|
+
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10756
|
+
}]
|
|
10757
|
+
}] });
|
|
10758
|
+
|
|
10759
|
+
// No framework - plain HTML controls (styles from form layout only)
|
|
10760
|
+
class NoFrameworkModule {
|
|
10761
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10762
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10763
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10764
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10765
|
+
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10766
|
+
}
|
|
10767
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10768
|
+
type: NgModule,
|
|
10769
|
+
args: [{
|
|
10770
|
+
imports: [CommonModule, WidgetLibraryModule],
|
|
10771
|
+
declarations: [NoFrameworkComponent],
|
|
10772
|
+
exports: [NoFrameworkComponent],
|
|
10773
|
+
providers: [
|
|
10774
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10775
|
+
]
|
|
10776
|
+
}]
|
|
10777
|
+
}] });
|
|
10778
|
+
|
|
10576
10779
|
const JSON_SCHEMA_FORM_VALUE_ACCESSOR = {
|
|
10577
10780
|
provide: NG_VALUE_ACCESSOR,
|
|
10578
10781
|
useExisting: forwardRef(() => JsonSchemaFormComponent),
|
|
@@ -11360,5 +11563,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
|
|
|
11360
11563
|
* Generated bundle index. Do not edit.
|
|
11361
11564
|
*/
|
|
11362
11565
|
|
|
11363
|
-
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 };
|
|
11566
|
+
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 };
|
|
11364
11567
|
//# sourceMappingURL=ng-formworks-core.mjs.map
|