@ng-formworks/core 17.6.2 → 17.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/esm2022/lib/shared/form-group.functions.mjs +34 -44
- package/esm2022/lib/shared/json-schema.functions.mjs +41 -8
- 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/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 +6 -4
- package/fesm2022/ng-formworks-core.mjs +361 -158
- package/fesm2022/ng-formworks-core.mjs.map +1 -1
- 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 +2 -1
- 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);
|
|
@@ -6477,7 +6500,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6477
6500
|
if (hasOwn(schema, con)) {
|
|
6478
6501
|
const keySchemaPointer = `/${con}`;
|
|
6479
6502
|
const negateClause = con == "else";
|
|
6480
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6503
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6481
6504
|
if (innerItem) {
|
|
6482
6505
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6483
6506
|
if (isArray(innerItem)) {
|
|
@@ -6704,7 +6727,7 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6704
6727
|
if (hasOwn(schema, con)) {
|
|
6705
6728
|
const keySchemaPointer = `/${con}`;
|
|
6706
6729
|
const negateClause = con == "else";
|
|
6707
|
-
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue
|
|
6730
|
+
const innerItem = buildLayoutFromSchema(jsf, widgetLibrary, nodeValue[con], schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
|
|
6708
6731
|
if (innerItem) {
|
|
6709
6732
|
applyITEConditions(innerItem, schemaPointer, keySchemaPointer, negateClause);
|
|
6710
6733
|
if (isArray(innerItem)) {
|
|
@@ -6712,17 +6735,19 @@ function buildLayoutFromSchema(jsf, widgetLibrary, nodeValue = null, schemaPoint
|
|
|
6712
6735
|
//item.schemaPointer = schemaPointer + keySchemaPointer + item.dataPointer;
|
|
6713
6736
|
//item.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6714
6737
|
newSection.push(item);
|
|
6715
|
-
newNode = newSection
|
|
6738
|
+
/////// newNode = newSection
|
|
6716
6739
|
});
|
|
6717
6740
|
}
|
|
6718
6741
|
else {
|
|
6719
6742
|
//innerItem.schemaPointer = schemaPointer + keySchemaPointer + innerItem.dataPointer;
|
|
6720
6743
|
//innerItem.options.condition = convertJSONSchemaIfToCondition(schema, negateClause);
|
|
6721
|
-
newNode = innerItem
|
|
6744
|
+
///////newNode = innerItem
|
|
6745
|
+
newSection.push(innerItem);
|
|
6722
6746
|
}
|
|
6723
6747
|
}
|
|
6724
6748
|
}
|
|
6725
6749
|
});
|
|
6750
|
+
newNode = newSection;
|
|
6726
6751
|
}
|
|
6727
6752
|
return newNode;
|
|
6728
6753
|
}
|
|
@@ -8908,7 +8933,7 @@ class OneOfComponent {
|
|
|
8908
8933
|
let controlSchema = JsonPointer.get(this.jsf.schema, parts.join("/"));
|
|
8909
8934
|
let schemaPointer = parts.join("/");
|
|
8910
8935
|
let dPointer = schemaPointer.replace(/(anyOf|allOf|oneOf|none)\/[\d]+\//g, '')
|
|
8911
|
-
.replace(/(if|then|else|properties)\//g, '');
|
|
8936
|
+
.replace(/(if|then|else|properties)\//g, '').replace(/\/items\//g, '/-/');
|
|
8912
8937
|
//JsonPointer.toDataPointer(parts.join("/"),this.jsf.schema);
|
|
8913
8938
|
let dVal = JsonPointer.get(this.jsf.formValues, dPointer);
|
|
8914
8939
|
let compareVal = dVal; //formValue;
|
|
@@ -9281,6 +9306,7 @@ class RootComponent {
|
|
|
9281
9306
|
}
|
|
9282
9307
|
sortableInit(sortable) {
|
|
9283
9308
|
this.sortableObj = sortable;
|
|
9309
|
+
//Sortable.utils.on(this.sortableObj.el,"nulling",(s)=>{console.log("event nulling sortablejs")})
|
|
9284
9310
|
///NB issue caused by sortablejs when it its destroyed
|
|
9285
9311
|
//this mainly affects checkboxes coupled with conditions
|
|
9286
9312
|
//-the value is rechecked
|
|
@@ -9944,40 +9970,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
9944
9970
|
}]
|
|
9945
9971
|
}] });
|
|
9946
9972
|
|
|
9947
|
-
class TabComponent {
|
|
9948
|
-
constructor() {
|
|
9949
|
-
this.jsf = inject(JsonSchemaFormService);
|
|
9950
|
-
this.layoutNode = input(undefined);
|
|
9951
|
-
this.layoutIndex = input(undefined);
|
|
9952
|
-
this.dataIndex = input(undefined);
|
|
9953
|
-
}
|
|
9954
|
-
ngOnInit() {
|
|
9955
|
-
this.options = this.layoutNode().options || {};
|
|
9956
|
-
}
|
|
9957
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9958
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", 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: `
|
|
9959
|
-
<div [class]="options?.htmlClass || ''">
|
|
9960
|
-
<root-widget
|
|
9961
|
-
[dataIndex]="dataIndex()"
|
|
9962
|
-
[layoutIndex]="layoutIndex()"
|
|
9963
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9964
|
-
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
9965
|
-
}
|
|
9966
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabComponent, decorators: [{
|
|
9967
|
-
type: Component,
|
|
9968
|
-
args: [{
|
|
9969
|
-
// tslint:disable-next-line:component-selector
|
|
9970
|
-
selector: 'tab-widget',
|
|
9971
|
-
template: `
|
|
9972
|
-
<div [class]="options?.htmlClass || ''">
|
|
9973
|
-
<root-widget
|
|
9974
|
-
[dataIndex]="dataIndex()"
|
|
9975
|
-
[layoutIndex]="layoutIndex()"
|
|
9976
|
-
[layout]="layoutNode().items"></root-widget>
|
|
9977
|
-
</div>`,
|
|
9978
|
-
}]
|
|
9979
|
-
}] });
|
|
9980
|
-
|
|
9981
9973
|
class TemplateComponent {
|
|
9982
9974
|
constructor() {
|
|
9983
9975
|
this.jsf = inject(JsonSchemaFormService);
|
|
@@ -10203,6 +10195,7 @@ class WidgetLibraryService {
|
|
|
10203
10195
|
'wizard': 'section',
|
|
10204
10196
|
// Widgets included for compatibility with other libraries
|
|
10205
10197
|
'textline': 'text',
|
|
10198
|
+
'selectcheckbox': SelectCheckboxComponent,
|
|
10206
10199
|
// Recommended 3rd-party add-on widgets (TODO: create wrappers for these...)
|
|
10207
10200
|
// 'ng2-select': Select control replacement - http://valor-software.com/ng2-select/
|
|
10208
10201
|
// 'flatpickr': Flatpickr date picker - https://github.com/chmln/flatpickr
|
|
@@ -10319,73 +10312,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
10319
10312
|
}]
|
|
10320
10313
|
}], ctorParameters: () => [] });
|
|
10321
10314
|
|
|
10322
|
-
const BASIC_WIDGETS = [
|
|
10323
|
-
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10324
|
-
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10325
|
-
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10326
|
-
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10327
|
-
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10328
|
-
TemplateComponent, TextareaComponent
|
|
10329
|
-
];
|
|
10330
|
-
|
|
10331
|
-
class WidgetLibraryModule {
|
|
10332
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10333
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", 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] }); }
|
|
10334
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10335
|
-
SortablejsModule.forRoot({
|
|
10336
|
-
//disabled:false,
|
|
10337
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10338
|
-
filter: ".sortable-filter",
|
|
10339
|
-
preventOnFilter: false,
|
|
10340
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10341
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10342
|
-
//console.log(evt.related);
|
|
10343
|
-
return false;
|
|
10344
|
-
}
|
|
10345
|
-
}
|
|
10346
|
-
})] }); }
|
|
10347
|
-
}
|
|
10348
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10349
|
-
type: NgModule,
|
|
10350
|
-
args: [{
|
|
10351
|
-
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10352
|
-
SortablejsModule.forRoot({
|
|
10353
|
-
//disabled:false,
|
|
10354
|
-
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10355
|
-
filter: ".sortable-filter",
|
|
10356
|
-
preventOnFilter: false,
|
|
10357
|
-
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10358
|
-
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10359
|
-
//console.log(evt.related);
|
|
10360
|
-
return false;
|
|
10361
|
-
}
|
|
10362
|
-
}
|
|
10363
|
-
})],
|
|
10364
|
-
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10365
|
-
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10366
|
-
}]
|
|
10367
|
-
}] });
|
|
10368
|
-
|
|
10369
|
-
// No framework - plain HTML controls (styles from form layout only)
|
|
10370
|
-
class NoFrameworkModule {
|
|
10371
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10372
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10373
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10374
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10375
|
-
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10376
|
-
}
|
|
10377
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10378
|
-
type: NgModule,
|
|
10379
|
-
args: [{
|
|
10380
|
-
imports: [CommonModule, WidgetLibraryModule],
|
|
10381
|
-
declarations: [NoFrameworkComponent],
|
|
10382
|
-
exports: [NoFrameworkComponent],
|
|
10383
|
-
providers: [
|
|
10384
|
-
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10385
|
-
]
|
|
10386
|
-
}]
|
|
10387
|
-
}] });
|
|
10388
|
-
|
|
10389
10315
|
// Possible future frameworks:
|
|
10390
10316
|
// - Foundation 6:
|
|
10391
10317
|
// http://justindavis.co/2017/06/15/using-foundation-6-in-angular-4/
|
|
@@ -10551,6 +10477,283 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
10551
10477
|
args: [Framework]
|
|
10552
10478
|
}] }] });
|
|
10553
10479
|
|
|
10480
|
+
//component created as a fallback for the checkbox/sortabljs issue
|
|
10481
|
+
//its meant to display a select as a checkbox
|
|
10482
|
+
class SelectCheckboxComponent {
|
|
10483
|
+
constructor() {
|
|
10484
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10485
|
+
this.jsfFLService = inject(FrameworkLibraryService);
|
|
10486
|
+
this.controlDisabled = false;
|
|
10487
|
+
this.boundControl = false;
|
|
10488
|
+
this.selectList = [];
|
|
10489
|
+
this.selectListFlatGroup = [];
|
|
10490
|
+
this.isArray = isArray;
|
|
10491
|
+
this.layoutNode = input(undefined);
|
|
10492
|
+
this.layoutIndex = input(undefined);
|
|
10493
|
+
this.dataIndex = input(undefined);
|
|
10494
|
+
this.frameworkStyles = {
|
|
10495
|
+
daisyui: { selectClass: "select-box", optionClass: "checkbox tw:dui-checkbox", optionChecked: "active", optionUnchecked: "" },
|
|
10496
|
+
"bootstrap-3": { selectClass: "select-box", optionClass: "bs3-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10497
|
+
"bootstrap-4": { selectClass: "select-box", optionClass: "bs4-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10498
|
+
"bootstrap-5": { selectClass: " select-box", optionClass: "form-check-input display-inline-block", optionChecked: "active", optionUnchecked: "" },
|
|
10499
|
+
//"material-design":{selectClass:" ",optionClass:" "}
|
|
10500
|
+
};
|
|
10501
|
+
}
|
|
10502
|
+
ngOnInit() {
|
|
10503
|
+
this.options = this.layoutNode().options || {};
|
|
10504
|
+
this.activeFramework = this.jsfFLService.activeFramework.name;
|
|
10505
|
+
this.selectList = buildTitleMap(
|
|
10506
|
+
//this.options.titleMap || this.options.enumNames,
|
|
10507
|
+
//TODO review-title is set to null in the setTitle() method of CssFrameworkComponent
|
|
10508
|
+
this.options.enumNames || (this.options?.title && [this.options?.title])
|
|
10509
|
+
|| [this.layoutNode().name],
|
|
10510
|
+
//this.options.enum,
|
|
10511
|
+
[true],
|
|
10512
|
+
//make required true to avoid creating 'none' select option
|
|
10513
|
+
true, !!this.options.flatList);
|
|
10514
|
+
//the selectListFlatGroup array will be used to update the formArray values
|
|
10515
|
+
//while the selectList array will be bound to the form select
|
|
10516
|
+
//as either a grouped select or a flat select
|
|
10517
|
+
/*
|
|
10518
|
+
this.selectListFlatGroup = buildTitleMap(
|
|
10519
|
+
this.options.titleMap || this.options.enumNames,
|
|
10520
|
+
this.options.enum, !!this.options.required, true
|
|
10521
|
+
)
|
|
10522
|
+
*/
|
|
10523
|
+
this.jsf.initializeControl(this);
|
|
10524
|
+
this.selectValue = [this.controlValue];
|
|
10525
|
+
}
|
|
10526
|
+
deselectAll() {
|
|
10527
|
+
this.selectListFlatGroup.forEach(selItem => {
|
|
10528
|
+
selItem.checked = false;
|
|
10529
|
+
});
|
|
10530
|
+
}
|
|
10531
|
+
updateValue(event) {
|
|
10532
|
+
this.options.showErrors = true;
|
|
10533
|
+
this.controlValue = this.selectValue[0];
|
|
10534
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10535
|
+
}
|
|
10536
|
+
onSelectClicked($event) {
|
|
10537
|
+
this.selectValue = this.selectValue && this.selectValue[0] ? [false] : [true];
|
|
10538
|
+
this.controlValue = this.selectValue[0];
|
|
10539
|
+
this.jsf.updateValue(this, this.controlValue);
|
|
10540
|
+
}
|
|
10541
|
+
ngOnDestroy() {
|
|
10542
|
+
let nullVal = this.options.multiple ? [null] : null;
|
|
10543
|
+
this.formControl.reset(nullVal);
|
|
10544
|
+
this.controlValue = null;
|
|
10545
|
+
}
|
|
10546
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10547
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", 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: `
|
|
10548
|
+
<div
|
|
10549
|
+
[class]="options?.htmlClass || ''">
|
|
10550
|
+
<select *ngIf="boundControl"
|
|
10551
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10552
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10553
|
+
[attr.required]="options?.required"
|
|
10554
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10555
|
+
[multiple]="true"
|
|
10556
|
+
[id]="'control' + layoutNode()?._id"
|
|
10557
|
+
[name]="controlName"
|
|
10558
|
+
[ngModel]="selectValue"
|
|
10559
|
+
>
|
|
10560
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10561
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10562
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10563
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10564
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10565
|
+
[value]="selectItem?.value"
|
|
10566
|
+
(click)="onSelectClicked($event)"
|
|
10567
|
+
type="checkbox"
|
|
10568
|
+
>
|
|
10569
|
+
</option>
|
|
10570
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10571
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10572
|
+
</ng-template>
|
|
10573
|
+
</select>
|
|
10574
|
+
<select *ngIf="!boundControl"
|
|
10575
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10576
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10577
|
+
[attr.required]="options?.required"
|
|
10578
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10579
|
+
[multiple]="true"
|
|
10580
|
+
[disabled]="controlDisabled"
|
|
10581
|
+
[id]="'control' + layoutNode()?._id"
|
|
10582
|
+
[name]="controlName"
|
|
10583
|
+
(change)="updateValue($event)">
|
|
10584
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10585
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10586
|
+
[selected]="selectItem?.value === controlValue"
|
|
10587
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10588
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10589
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10590
|
+
[value]="selectItem?.value"
|
|
10591
|
+
type="checkbox">
|
|
10592
|
+
</option>
|
|
10593
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10594
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10595
|
+
</ng-template>
|
|
10596
|
+
</select>
|
|
10597
|
+
|
|
10598
|
+
</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"] }] }); }
|
|
10599
|
+
}
|
|
10600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectCheckboxComponent, decorators: [{
|
|
10601
|
+
type: Component,
|
|
10602
|
+
args: [{ selector: 'selectcheckbox-widget', template: `
|
|
10603
|
+
<div
|
|
10604
|
+
[class]="options?.htmlClass || ''">
|
|
10605
|
+
<select *ngIf="boundControl"
|
|
10606
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10607
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10608
|
+
[attr.required]="options?.required"
|
|
10609
|
+
[class]=" frameworkStyles[activeFramework].selectClass"
|
|
10610
|
+
[multiple]="true"
|
|
10611
|
+
[id]="'control' + layoutNode()?._id"
|
|
10612
|
+
[name]="controlName"
|
|
10613
|
+
[ngModel]="selectValue"
|
|
10614
|
+
>
|
|
10615
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10616
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10617
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10618
|
+
[class.active]="selectItem?.value === controlValue"
|
|
10619
|
+
[class.unchecked-notusing]="selectItem?.value != controlValue"
|
|
10620
|
+
[value]="selectItem?.value"
|
|
10621
|
+
(click)="onSelectClicked($event)"
|
|
10622
|
+
type="checkbox"
|
|
10623
|
+
>
|
|
10624
|
+
</option>
|
|
10625
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10626
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10627
|
+
</ng-template>
|
|
10628
|
+
</select>
|
|
10629
|
+
<select *ngIf="!boundControl"
|
|
10630
|
+
[attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
|
|
10631
|
+
[attr.readonly]="options?.readonly ? 'readonly' : null"
|
|
10632
|
+
[attr.required]="options?.required"
|
|
10633
|
+
[class]="frameworkStyles[activeFramework].selectClass +' select-box'"
|
|
10634
|
+
[multiple]="true"
|
|
10635
|
+
[disabled]="controlDisabled"
|
|
10636
|
+
[id]="'control' + layoutNode()?._id"
|
|
10637
|
+
[name]="controlName"
|
|
10638
|
+
(change)="updateValue($event)">
|
|
10639
|
+
<ng-template ngFor let-selectItem [ngForOf]="selectList">
|
|
10640
|
+
<option *ngIf="!isArray(selectItem?.items)"
|
|
10641
|
+
[selected]="selectItem?.value === controlValue"
|
|
10642
|
+
[class]="frameworkStyles[activeFramework].optionClass"
|
|
10643
|
+
[class.checked-notusing]="selectItem?.value === controlValue"
|
|
10644
|
+
[class.unchecked-notusing]]="selectItem?.value != controlValue"
|
|
10645
|
+
[value]="selectItem?.value"
|
|
10646
|
+
type="checkbox">
|
|
10647
|
+
</option>
|
|
10648
|
+
<!--NB the text is out of the option element to display besides the checkbox-->
|
|
10649
|
+
<span [innerHTML]="selectItem?.name"></span>
|
|
10650
|
+
</ng-template>
|
|
10651
|
+
</select>
|
|
10652
|
+
|
|
10653
|
+
</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"] }]
|
|
10654
|
+
}] });
|
|
10655
|
+
|
|
10656
|
+
class TabComponent {
|
|
10657
|
+
constructor() {
|
|
10658
|
+
this.jsf = inject(JsonSchemaFormService);
|
|
10659
|
+
this.layoutNode = input(undefined);
|
|
10660
|
+
this.layoutIndex = input(undefined);
|
|
10661
|
+
this.dataIndex = input(undefined);
|
|
10662
|
+
}
|
|
10663
|
+
ngOnInit() {
|
|
10664
|
+
this.options = this.layoutNode().options || {};
|
|
10665
|
+
}
|
|
10666
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10667
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", 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: `
|
|
10668
|
+
<div [class]="options?.htmlClass || ''">
|
|
10669
|
+
<root-widget
|
|
10670
|
+
[dataIndex]="dataIndex()"
|
|
10671
|
+
[layoutIndex]="layoutIndex()"
|
|
10672
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10673
|
+
</div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem"] }] }); }
|
|
10674
|
+
}
|
|
10675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TabComponent, decorators: [{
|
|
10676
|
+
type: Component,
|
|
10677
|
+
args: [{
|
|
10678
|
+
// tslint:disable-next-line:component-selector
|
|
10679
|
+
selector: 'tab-widget',
|
|
10680
|
+
template: `
|
|
10681
|
+
<div [class]="options?.htmlClass || ''">
|
|
10682
|
+
<root-widget
|
|
10683
|
+
[dataIndex]="dataIndex()"
|
|
10684
|
+
[layoutIndex]="layoutIndex()"
|
|
10685
|
+
[layout]="layoutNode().items"></root-widget>
|
|
10686
|
+
</div>`,
|
|
10687
|
+
}]
|
|
10688
|
+
}] });
|
|
10689
|
+
|
|
10690
|
+
const BASIC_WIDGETS = [
|
|
10691
|
+
AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
|
|
10692
|
+
CheckboxesComponent, FileComponent, HiddenComponent, InputComponent,
|
|
10693
|
+
MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
|
|
10694
|
+
RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
|
|
10695
|
+
SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
|
|
10696
|
+
TemplateComponent, TextareaComponent, SelectCheckboxComponent
|
|
10697
|
+
];
|
|
10698
|
+
|
|
10699
|
+
class WidgetLibraryModule {
|
|
10700
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10701
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", 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] }); }
|
|
10702
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10703
|
+
SortablejsModule.forRoot({
|
|
10704
|
+
//disabled:false,
|
|
10705
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10706
|
+
filter: ".sortable-filter",
|
|
10707
|
+
preventOnFilter: false,
|
|
10708
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10709
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10710
|
+
//console.log(evt.related);
|
|
10711
|
+
return false;
|
|
10712
|
+
}
|
|
10713
|
+
}
|
|
10714
|
+
})] }); }
|
|
10715
|
+
}
|
|
10716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetLibraryModule, decorators: [{
|
|
10717
|
+
type: NgModule,
|
|
10718
|
+
args: [{
|
|
10719
|
+
imports: [CommonModule, FormsModule, ReactiveFormsModule,
|
|
10720
|
+
SortablejsModule.forRoot({
|
|
10721
|
+
//disabled:false,
|
|
10722
|
+
//draggable:".draggableitem",//">:not(.nonsort)",//">.draggable-item",//":not(.nonsort)",//">*",//":not(.nonsort)",//":not(.non-draggable)",
|
|
10723
|
+
filter: ".sortable-filter",
|
|
10724
|
+
preventOnFilter: false,
|
|
10725
|
+
onMove: function (/**Event*/ evt, /**Event*/ originalEvent) {
|
|
10726
|
+
if (evt.related.classList.contains("sortable-fixed")) {
|
|
10727
|
+
//console.log(evt.related);
|
|
10728
|
+
return false;
|
|
10729
|
+
}
|
|
10730
|
+
}
|
|
10731
|
+
})],
|
|
10732
|
+
declarations: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective],
|
|
10733
|
+
exports: [...BASIC_WIDGETS, OrderableDirective, ElementAttributeDirective]
|
|
10734
|
+
}]
|
|
10735
|
+
}] });
|
|
10736
|
+
|
|
10737
|
+
// No framework - plain HTML controls (styles from form layout only)
|
|
10738
|
+
class NoFrameworkModule {
|
|
10739
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
10740
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
|
|
10741
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, providers: [
|
|
10742
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10743
|
+
], imports: [CommonModule, WidgetLibraryModule] }); }
|
|
10744
|
+
}
|
|
10745
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NoFrameworkModule, decorators: [{
|
|
10746
|
+
type: NgModule,
|
|
10747
|
+
args: [{
|
|
10748
|
+
imports: [CommonModule, WidgetLibraryModule],
|
|
10749
|
+
declarations: [NoFrameworkComponent],
|
|
10750
|
+
exports: [NoFrameworkComponent],
|
|
10751
|
+
providers: [
|
|
10752
|
+
{ provide: Framework, useClass: NoFramework, multi: true }
|
|
10753
|
+
]
|
|
10754
|
+
}]
|
|
10755
|
+
}] });
|
|
10756
|
+
|
|
10554
10757
|
const JSON_SCHEMA_FORM_VALUE_ACCESSOR = {
|
|
10555
10758
|
provide: NG_VALUE_ACCESSOR,
|
|
10556
10759
|
useExisting: forwardRef(() => JsonSchemaFormComponent),
|
|
@@ -11338,5 +11541,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
11338
11541
|
* Generated bundle index. Do not edit.
|
|
11339
11542
|
*/
|
|
11340
11543
|
|
|
11341
|
-
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 };
|
|
11544
|
+
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 };
|
|
11342
11545
|
//# sourceMappingURL=ng-formworks-core.mjs.map
|