@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.
@@ -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, NgModule, Inject, forwardRef, ChangeDetectorRef, output } from '@angular/core';
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
- .reduce((accumulator, currentPart, index) => {
4617
- const currentExpression = index === 0 ? currentPart : `${accumulator}.${currentPart}`;
4618
- return index === 0 ? currentExpression : `${accumulator} && ${currentExpression}`;
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
- conditionFun += `${amper} ${checkPath} && ${modelPath}.${ifProp}+""=='${schema.if.properties[ifProp].const}'`;
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, false, //JsonPointer.get(nodeValue, keySchemaPointer), setValues,
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 = JsonPointer.get(nodeValue, dataPointer);
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
- let dVal = JsonPointer.get(nodeValue, dPointer);
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, false, schemaPointer + keySchemaPointer, dataPointer, templatePointer + `/controls/${con}`);
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
- Object.keys(thenTFGTemplate.controls).forEach(key => {
5298
- let controlKey = thenTFGTemplate.controls[key].schemaPointer;
5299
- ////let controlItem=cloneDeep(thenTFGTemplate.controls[key]);
5300
- ////thenTFGTemplate.controls[key].schemaPointer || `${schemaPointer}${keySchemaPointer}/${key}`;
5301
- controlKey = path2ControlKey(controlKey);
5302
- let cItem = Object.assign({}, thenTFGTemplate.controls[key]);
5303
- ////cItem.schemaPointer = `${schemaPointer}${keySchemaPointer}/${key}`;
5304
- /*
5305
- if(ifItemSchema.properties && jsf.formValues===undefined){
5306
- //check if no form data values were supplied
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 formControl = formGroup.get(path2ControlKey(schemaPointer || "")) || formGroup.get(dataPointer);
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 formControl = formGroup.get(path2ControlKey(schemaPointer || "")) || formGroup.get(dataPointerArray.join('.'));
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 (isArray(subGroup) && (key === '-')) {
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.then, schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
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.then, schemaPointer + keySchemaPointer, dataPointer, false, null, null, forRefLibrary, dataPointerPrefix);
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