@ng-formworks/core 20.6.8 → 21.6.9

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,14 +1,14 @@
1
- import * as i1 from '@angular/common';
2
1
  import { CommonModule } from '@angular/common';
3
2
  import * as i0 from '@angular/core';
4
3
  import { Injectable, inject, input, viewChild, ViewContainerRef, Component, Input, Directive, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef, signal, Inject, ElementRef, NgZone, NgModule, forwardRef, output } from '@angular/core';
5
- import * as i2 from '@angular/forms';
4
+ import * as i1 from '@angular/forms';
6
5
  import { UntypedFormControl, UntypedFormArray, UntypedFormGroup, FormsModule, ReactiveFormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
7
6
  import addFormats from 'ajv-formats';
8
7
  import Ajv2019 from 'ajv/dist/2019';
9
8
  import jsonDraft6 from 'ajv/lib/refs/json-schema-draft-06.json';
10
9
  import jsonDraft7 from 'ajv/lib/refs/json-schema-draft-07.json';
11
10
  import cloneDeep from 'lodash/cloneDeep';
11
+ import _isArray from 'lodash/isArray';
12
12
  import { from, Observable, forkJoin, Subject, BehaviorSubject, lastValueFrom } from 'rxjs';
13
13
  import { some, isNil, isEmpty as isEmpty$1, pick, isObject as isObject$1, isEqual as isEqual$2, memoize } from 'lodash';
14
14
  import isEqual$1 from 'lodash/isEqual';
@@ -16,10 +16,9 @@ import { map, takeUntil } from 'rxjs/operators';
16
16
  import omit from 'lodash/omit';
17
17
  import filter from 'lodash/filter';
18
18
  import map$1 from 'lodash/map';
19
- import _isArray from 'lodash/isArray';
20
19
  import _isPlainObject from 'lodash/isPlainObject';
21
20
  import uniqueId from 'lodash/uniqueId';
22
- import * as i2$1 from '@angular/cdk/drag-drop';
21
+ import * as i1$1 from '@angular/cdk/drag-drop';
23
22
  import { DragDropModule } from '@angular/cdk/drag-drop';
24
23
  import { HttpClient } from '@angular/common/http';
25
24
 
@@ -29,10 +28,10 @@ class Framework {
29
28
  this.stylesheets = [];
30
29
  this.scripts = [];
31
30
  }
32
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: Framework, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
33
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: Framework }); }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: Framework, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
32
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: Framework }); }
34
33
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: Framework, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: Framework, decorators: [{
36
35
  type: Injectable
37
36
  }] });
38
37
 
@@ -1457,6 +1456,49 @@ function hasNonNullValue(obj) {
1457
1456
  return !isNil(value);
1458
1457
  });
1459
1458
  }
1459
+ /**
1460
+ * Recursively compares array sizes of nested arrays
1461
+ *
1462
+ * @param obj1 - The object to check.
1463
+ * @param obj2 - The object to check.
1464
+ * @returns `false` if at least one nested array size mismatches`.
1465
+ *
1466
+ * @example
1467
+ * const obj1 = { a: ['a','aa'], b:{c:[1,11,11]} };
1468
+ * const obj2 = { a: ['ee','dd'], b:{c:[2]} };
1469
+ *
1470
+ * console.log(compareObjectArraySizes(obj1,obj1)); // Output: false
1471
+ * mismatch will be on path b/c
1472
+ */
1473
+ function compareObjectArraySizes(obj1, obj2, comparePath = "") {
1474
+ if (isArray(obj1) && isArray(obj2)) {
1475
+ if (obj1.length != obj2.length) {
1476
+ console.log(`size mismatch at ${comparePath}`);
1477
+ return false; // immediately return false on mismatch
1478
+ }
1479
+ else {
1480
+ for (let ind = 0; ind < obj1.length; ind++) {
1481
+ const item1 = obj1[ind];
1482
+ const item2 = obj2[ind];
1483
+ const result = compareObjectArraySizes(item1, item2, `${comparePath}/${ind}`);
1484
+ if (result === false) {
1485
+ return false; // propagate false if mismatch is found
1486
+ }
1487
+ }
1488
+ }
1489
+ }
1490
+ if (isObject(obj1) && !isArray(obj1)) {
1491
+ for (let key in obj1) {
1492
+ if (obj2.hasOwnProperty(key)) {
1493
+ const result = compareObjectArraySizes(obj1[key], obj2[key], `${comparePath}/${key}`);
1494
+ if (result === false) {
1495
+ return false; // propagate false if mismatch is found
1496
+ }
1497
+ }
1498
+ }
1499
+ }
1500
+ return true; // all checks passed
1501
+ }
1460
1502
 
1461
1503
  class JsonPointer {
1462
1504
  /**
@@ -2473,10 +2515,10 @@ class JsonPointer {
2473
2515
  }
2474
2516
  console.error('parseObjectPath error: Input object path must be a string.');
2475
2517
  }
2476
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonPointer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2477
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonPointer }); }
2518
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonPointer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2519
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonPointer }); }
2478
2520
  }
2479
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonPointer, decorators: [{
2521
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonPointer, decorators: [{
2480
2522
  type: Injectable
2481
2523
  }] });
2482
2524
 
@@ -4643,14 +4685,7 @@ function convertJSONSchemaIfToCondition(schema, layoutNode, negate = false) {
4643
4685
  .join("")
4644
4686
  : "";
4645
4687
  let modelPath = parentPath ? `model.${parentPath}` : "model";
4646
- let checkPath = modelPath.split('.')
4647
- .map((_, index, array) => {
4648
- return array.slice(0, index + 1).join('.'); // Build each part of the path dynamically
4649
- }).join(' && '); // Join the parts with '&&'
4650
- // .reduce((accumulator, currentPart, index) => {
4651
- // const currentExpression = index === 0 ? currentPart : `${accumulator}.${currentPart}`;
4652
- // return index === 0 ? currentExpression : `${accumulator} && ${currentExpression}`;
4653
- // }, '');
4688
+ let checkPath = modelPath.replace(/\[/g, ".[").split('.').join("?.");
4654
4689
  if (schema.if) {
4655
4690
  Object.keys(schema.if.properties).forEach((ifProp, ind) => {
4656
4691
  let amper = ind > 0 ? "&" : "";
@@ -6201,7 +6236,7 @@ function buildLayout_original(jsf, widgetLibrary) {
6201
6236
  return formLayout;
6202
6237
  }
6203
6238
  //TODO-review:this implements a quick 'post' fix rather than an
6204
- //integrared ideal fix
6239
+ //integrated ideal fix
6205
6240
  function buildLayout(jsf, widgetLibrary) {
6206
6241
  let layout = buildLayout_original(jsf, widgetLibrary);
6207
6242
  if (jsf.formValues) {
@@ -6317,11 +6352,21 @@ function fixNestedArrayLayout(options) {
6317
6352
  : cloneDeep(builtLayout.items[0]); //copy first
6318
6353
  newItem._id = uniqueId("new_");
6319
6354
  builtLayout.items.unshift(newItem);
6355
+ // builtLayout.items=[newItem, ...builtLayout.items];
6320
6356
  }
6321
- if (builtLayout.options.listItems) {
6322
- builtLayout.options.listItems = numDataItems;
6357
+ }
6358
+ else if (numActualItems > numDataItems) {
6359
+ let numItemsToRemove = numActualItems - numDataItems;
6360
+ for (let i = 0; i < numItemsToRemove; i++) {
6361
+ builtLayout.items.pop();
6362
+ //builtLayout.items=builtLayout.items.slice(0, -1);
6363
+ //builtLayout.items.slice(0, -1);
6323
6364
  }
6324
6365
  }
6366
+ if (builtLayout.options.listItems) {
6367
+ builtLayout.options.listItems = numDataItems;
6368
+ }
6369
+ //builtLayout.items=[...builtLayout.items];
6325
6370
  indices[builtLayout.dataPointer] = indices[builtLayout.dataPointer] || -1;
6326
6371
  indexPos++;
6327
6372
  builtLayout.items.forEach((item, index) => {
@@ -7693,7 +7738,7 @@ class JsonSchemaFormService {
7693
7738
  // Set values of any related controls in copyValueTo array
7694
7739
  if (isArray(ctx.options.copyValueTo)) {
7695
7740
  for (const item of ctx.options.copyValueTo) {
7696
- const targetControl = getControl(this.formGroup, item);
7741
+ const targetControl = this.formGroup && getControl(this.formGroup, item);
7697
7742
  if (isObject(targetControl) &&
7698
7743
  typeof targetControl.setValue === 'function') {
7699
7744
  targetControl.setValue(value);
@@ -7768,7 +7813,8 @@ class JsonSchemaFormService {
7768
7813
  getFormControlValue(ctx) {
7769
7814
  if (!ctx || !ctx.layoutNode ||
7770
7815
  !isDefined(ctx.layoutNode().dataPointer) ||
7771
- ctx.layoutNode().type === '$ref') {
7816
+ ctx.layoutNode().type === '$ref'
7817
+ || this.formGroup == null) {
7772
7818
  return null;
7773
7819
  }
7774
7820
  const schemaPointer = ctx.layoutNode()?.isITEItem ? ctx.layoutNode()?.schemaPointer : null;
@@ -7778,7 +7824,7 @@ class JsonSchemaFormService {
7778
7824
  return control ? control.value : null;
7779
7825
  }
7780
7826
  getFormControlGroup(ctx) {
7781
- if (!ctx || !ctx.layoutNode || !isDefined(ctx.layoutNode().dataPointer)) {
7827
+ if (!ctx || !ctx.layoutNode || !isDefined(ctx.layoutNode().dataPointer) || this.formGroup == null) {
7782
7828
  return null;
7783
7829
  }
7784
7830
  const schemaPointer = ctx.layoutNode()?.isITEItem ? ctx.layoutNode()?.schemaPointer : null;
@@ -7906,10 +7952,66 @@ class JsonSchemaFormService {
7906
7952
  JsonPointer.remove(this.layout, this.getLayoutPointer(ctx));
7907
7953
  return true;
7908
7954
  }
7909
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7910
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormService }); }
7955
+ //TODO fix-doesnt seem to work for nested array
7956
+ adjustLayout(layout, newData, currLayoutIndex = [0], currDataIndex = []) {
7957
+ const createWidgetCtx = (layoutNode, layoutIndex, dataIndex) => {
7958
+ return {
7959
+ layoutNode: () => { return layoutNode; },
7960
+ layoutIndex: () => { return layoutIndex; },
7961
+ dataIndex: () => { return dataIndex; },
7962
+ };
7963
+ };
7964
+ // console.log(`adjustLayout currLayoutIndex:${currLayoutIndex}`);
7965
+ if (layout.items && _isArray(newData)) {
7966
+ let ctx = createWidgetCtx({
7967
+ ...layout,
7968
+ $ref: layout.$ref || layout.items[0]?.dataPointer,
7969
+ dataPointer: layout.items[0]?.dataPointer,
7970
+ arrayItem: true,
7971
+ arrayItemType: "list"
7972
+ }, [...currLayoutIndex.slice(0, currLayoutIndex.length - 1), layout.items.length - 1], [...currDataIndex.slice(0, currDataIndex.length - 1), layout.items.length - 1]);
7973
+ const lengthDifference = newData.length - layout.items.filter(litem => {
7974
+ return litem?.type != "$ref";
7975
+ }).length;
7976
+ if (lengthDifference > 0) {
7977
+ // Add missing controls if newData has more items
7978
+ for (let i = 0; i < lengthDifference; i++) {
7979
+ this.addItem(ctx);
7980
+ }
7981
+ }
7982
+ else if (lengthDifference < 0) {
7983
+ let numToRemove = layout.items.filter(litem => {
7984
+ return litem?.type != "$ref";
7985
+ })
7986
+ .length - newData.length;
7987
+ // Remove extra controls if newData has fewer items
7988
+ for (let i = 0; i < numToRemove; i++) {
7989
+ let oldDataIndex = ctx.dataIndex();
7990
+ let lastDataIndex = oldDataIndex[oldDataIndex.length - 1];
7991
+ let updatedLayoutIndex = [...currLayoutIndex.slice(0, currLayoutIndex.length - 1), 0];
7992
+ let updatedDataIndex = [...oldDataIndex.slice(0, oldDataIndex.length - 1), 0];
7993
+ ctx = createWidgetCtx(ctx.layoutNode(), updatedLayoutIndex, updatedDataIndex);
7994
+ let removed = this.removeItem(ctx);
7995
+ // if(removed){
7996
+ //}
7997
+ }
7998
+ }
7999
+ return;
8000
+ }
8001
+ if (_isArray(layout)) {
8002
+ layout.forEach((layoutNode, ind) => {
8003
+ //if(layoutNode.items){
8004
+ let layoutMappedData = layoutNode.dataPointer ? JsonPointer.get(newData, layoutNode.dataPointer)
8005
+ : undefined;
8006
+ this.adjustLayout(layoutNode, layoutMappedData, [...currLayoutIndex, ind], [...currDataIndex, ind]);
8007
+ ///}
8008
+ });
8009
+ }
8010
+ }
8011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
8012
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormService }); }
7911
8013
  }
7912
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormService, decorators: [{
8014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormService, decorators: [{
7913
8015
  type: Injectable
7914
8016
  }], ctorParameters: () => [] });
7915
8017
 
@@ -7917,10 +8019,10 @@ class SelectWidgetComponent {
7917
8019
  constructor() {
7918
8020
  this.jsf = inject(JsonSchemaFormService);
7919
8021
  this.newComponent = null;
7920
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
7921
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
7922
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
7923
- this.widgetContainer = viewChild('widgetContainer', ...(ngDevMode ? [{ debugName: "widgetContainer", read: ViewContainerRef }] : [{ read: ViewContainerRef }]));
8022
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8023
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8024
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8025
+ this.widgetContainer = viewChild('widgetContainer', { ...(ngDevMode ? { debugName: "widgetContainer" } : {}), read: ViewContainerRef });
7924
8026
  }
7925
8027
  ngOnInit() {
7926
8028
  this.updateComponent();
@@ -7940,10 +8042,10 @@ class SelectWidgetComponent {
7940
8042
  }
7941
8043
  }
7942
8044
  }
7943
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7944
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.6", type: SelectWidgetComponent, isStandalone: false, selector: "select-widget-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
8045
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8046
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.2", type: SelectWidgetComponent, isStandalone: false, selector: "select-widget-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
7945
8047
  }
7946
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectWidgetComponent, decorators: [{
8048
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectWidgetComponent, decorators: [{
7947
8049
  type: Component,
7948
8050
  args: [{
7949
8051
  // tslint:disable-next-line:component-selector
@@ -7951,21 +8053,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
7951
8053
  template: `<div #widgetContainer></div>`,
7952
8054
  standalone: false
7953
8055
  }]
7954
- }] });
8056
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }], widgetContainer: [{ type: i0.ViewChild, args: ['widgetContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
7955
8057
 
7956
8058
  class NoFrameworkComponent {
7957
8059
  constructor() {
7958
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
7959
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
7960
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8060
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8061
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8062
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
7961
8063
  }
7962
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7963
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: NoFrameworkComponent, isStandalone: false, selector: "no-framework", 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: "<select-widget-widget [dataIndex]=\"dataIndex()\" [layoutIndex]=\"layoutIndex()\" [layoutNode]=\"layoutNode()\">\r\n</select-widget-widget>", dependencies: [{ kind: "component", type: SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
8064
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8065
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: NoFrameworkComponent, isStandalone: false, selector: "no-framework", 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: "<select-widget-widget [dataIndex]=\"dataIndex()\" [layoutIndex]=\"layoutIndex()\" [layoutNode]=\"layoutNode()\">\r\n</select-widget-widget>", dependencies: [{ kind: "component", type: SelectWidgetComponent, selector: "select-widget-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
7964
8066
  }
7965
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkComponent, decorators: [{
8067
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkComponent, decorators: [{
7966
8068
  type: Component,
7967
8069
  args: [{ selector: 'no-framework', standalone: false, template: "<select-widget-widget [dataIndex]=\"dataIndex()\" [layoutIndex]=\"layoutIndex()\" [layoutNode]=\"layoutNode()\">\r\n</select-widget-widget>" }]
7968
- }] });
8070
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
7969
8071
 
7970
8072
  // No framework - plain HTML controls (styles from form layout only)
7971
8073
  class NoFramework extends Framework {
@@ -7975,10 +8077,10 @@ class NoFramework extends Framework {
7975
8077
  this.text = 'None (plain HTML)';
7976
8078
  this.framework = NoFrameworkComponent;
7977
8079
  }
7978
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFramework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
7979
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFramework }); }
8080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFramework, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
8081
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFramework }); }
7980
8082
  }
7981
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFramework, decorators: [{
8083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFramework, decorators: [{
7982
8084
  type: Injectable
7983
8085
  }] });
7984
8086
 
@@ -8000,10 +8102,10 @@ class ElementAttributeDirective {
8000
8102
  }
8001
8103
  }
8002
8104
  }
8003
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ElementAttributeDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8004
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.6", type: ElementAttributeDirective, isStandalone: false, selector: "[attributes]", inputs: { attributes: "attributes" }, usesOnChanges: true, ngImport: i0 }); }
8105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ElementAttributeDirective, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
8106
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.2", type: ElementAttributeDirective, isStandalone: false, selector: "[attributes]", inputs: { attributes: "attributes" }, usesOnChanges: true, ngImport: i0 }); }
8005
8107
  }
8006
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ElementAttributeDirective, decorators: [{
8108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ElementAttributeDirective, decorators: [{
8007
8109
  type: Directive,
8008
8110
  args: [{
8009
8111
  selector: '[attributes]',
@@ -8040,10 +8142,10 @@ class StopPropagationDirective {
8040
8142
  // Call each stored unsubscribe function to clean up listeners
8041
8143
  this.unsubscribeFunctions.forEach(unsub => unsub());
8042
8144
  }
8043
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StopPropagationDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
8044
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.1.6", type: StopPropagationDirective, isStandalone: false, selector: "[appStopPropagation]", inputs: { events: ["appStopPropagation", "events"] }, ngImport: i0 }); }
8145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: StopPropagationDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
8146
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.0.2", type: StopPropagationDirective, isStandalone: false, selector: "[appStopPropagation]", inputs: { events: ["appStopPropagation", "events"] }, ngImport: i0 }); }
8045
8147
  }
8046
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: StopPropagationDirective, decorators: [{
8148
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: StopPropagationDirective, decorators: [{
8047
8149
  type: Directive,
8048
8150
  args: [{
8049
8151
  selector: '[appStopPropagation]', standalone: false
@@ -8056,9 +8158,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8056
8158
  class AddReferenceComponent {
8057
8159
  constructor() {
8058
8160
  this.jsf = inject(JsonSchemaFormService);
8059
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8060
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8061
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8161
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8162
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8163
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8062
8164
  }
8063
8165
  ngOnInit() {
8064
8166
  this.options = this.layoutNode().options || {};
@@ -8077,55 +8179,65 @@ class AddReferenceComponent {
8077
8179
  layoutIndex: this.layoutIndex().slice(0, -1),
8078
8180
  layoutNode: this.jsf.getParentNode(this)
8079
8181
  };
8080
- return parent.layoutNode.add ||
8081
- this.jsf.setArrayItemTitle(parent, this.layoutNode(), this.itemCount);
8082
- }
8083
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8084
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: AddReferenceComponent, isStandalone: false, selector: "add-reference-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: `
8085
- <section [class]="options?.htmlClass || ''" align="end">
8086
- <button *ngIf="showAddButton"
8087
- [class]="options?.fieldHtmlClass || ''"
8088
- [disabled]="options?.readonly"
8089
- (click)="addItem($event)"
8090
- [appStopPropagation]="['mousedown', 'touchstart']"
8091
- >
8092
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
8093
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
8094
-
8095
- </button>
8096
- </section>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
8182
+ return parent.layoutNode && (parent.layoutNode.add ||
8183
+ this.jsf.setArrayItemTitle(parent, this.layoutNode(), this.itemCount));
8184
+ }
8185
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: AddReferenceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8186
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: AddReferenceComponent, isStandalone: false, selector: "add-reference-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: `
8187
+ <section [class]="options?.htmlClass || ''" align="end">
8188
+ @if (showAddButton) {
8189
+ <button
8190
+ [class]="options?.fieldHtmlClass || ''"
8191
+ [disabled]="options?.readonly"
8192
+ (click)="addItem($event)"
8193
+ [appStopPropagation]="['mousedown', 'touchstart']"
8194
+ >
8195
+ @if (options?.icon) {
8196
+ <span [class]="options?.icon"></span>
8197
+ }
8198
+ @if (options?.title) {
8199
+ <span [innerHTML]="buttonText"></span>
8200
+ }
8201
+ </button>
8202
+ }
8203
+ </section>`, isInline: true, dependencies: [{ kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }], changeDetection: i0.ChangeDetectionStrategy.Default }); }
8097
8204
  }
8098
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AddReferenceComponent, decorators: [{
8205
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: AddReferenceComponent, decorators: [{
8099
8206
  type: Component,
8100
8207
  args: [{
8101
8208
  // tslint:disable-next-line:component-selector
8102
8209
  selector: 'add-reference-widget',
8103
- template: `
8104
- <section [class]="options?.htmlClass || ''" align="end">
8105
- <button *ngIf="showAddButton"
8106
- [class]="options?.fieldHtmlClass || ''"
8107
- [disabled]="options?.readonly"
8108
- (click)="addItem($event)"
8109
- [appStopPropagation]="['mousedown', 'touchstart']"
8110
- >
8111
- <span *ngIf="options?.icon" [class]="options?.icon"></span>
8112
- <span *ngIf="options?.title" [innerHTML]="buttonText"></span>
8113
-
8114
- </button>
8210
+ template: `
8211
+ <section [class]="options?.htmlClass || ''" align="end">
8212
+ @if (showAddButton) {
8213
+ <button
8214
+ [class]="options?.fieldHtmlClass || ''"
8215
+ [disabled]="options?.readonly"
8216
+ (click)="addItem($event)"
8217
+ [appStopPropagation]="['mousedown', 'touchstart']"
8218
+ >
8219
+ @if (options?.icon) {
8220
+ <span [class]="options?.icon"></span>
8221
+ }
8222
+ @if (options?.title) {
8223
+ <span [innerHTML]="buttonText"></span>
8224
+ }
8225
+ </button>
8226
+ }
8115
8227
  </section>`,
8116
8228
  changeDetection: ChangeDetectionStrategy.Default,
8117
8229
  standalone: false
8118
8230
  }]
8119
- }] });
8231
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8120
8232
 
8121
8233
  class ButtonComponent {
8122
8234
  constructor() {
8123
8235
  this.jsf = inject(JsonSchemaFormService);
8124
8236
  this.controlDisabled = false;
8125
8237
  this.boundControl = false;
8126
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8127
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8128
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8238
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8239
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8240
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8129
8241
  }
8130
8242
  ngOnInit() {
8131
8243
  this.options = this.layoutNode().options || {};
@@ -8142,54 +8254,58 @@ class ButtonComponent {
8142
8254
  ngOnDestroy() {
8143
8255
  this.jsf.updateValue(this, null);
8144
8256
  }
8145
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8146
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: ButtonComponent, isStandalone: false, selector: "button-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: `
8147
- <div
8148
- [class]="options?.htmlClass || ''">
8149
- <button
8150
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8151
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8152
- [class]="options?.fieldHtmlClass || ''"
8153
- [disabled]="controlDisabled"
8154
- [name]="controlName"
8155
- [type]="layoutNode()?.type"
8156
- [value]="controlValue"
8157
- (click)="updateValue($event)"
8158
- [appStopPropagation]="['mousedown', 'touchstart']"
8159
- >
8160
- <span *ngIf="options?.icon || options?.title"
8161
- [class]="options?.icon"
8162
- [innerHTML]="options?.title"></span>
8163
- </button>
8164
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8257
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8258
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: ButtonComponent, isStandalone: false, selector: "button-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: `
8259
+ <div
8260
+ [class]="options?.htmlClass || ''">
8261
+ <button
8262
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
8263
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8264
+ [class]="options?.fieldHtmlClass || ''"
8265
+ [disabled]="controlDisabled"
8266
+ [name]="controlName"
8267
+ [type]="layoutNode()?.type"
8268
+ [value]="controlValue"
8269
+ (click)="updateValue($event)"
8270
+ [appStopPropagation]="['mousedown', 'touchstart']"
8271
+ >
8272
+ @if (options?.icon || options?.title) {
8273
+ <span
8274
+ [class]="options?.icon"
8275
+ [innerHTML]="options?.title"></span>
8276
+ }
8277
+ </button>
8278
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8165
8279
  }
8166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ButtonComponent, decorators: [{
8280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ButtonComponent, decorators: [{
8167
8281
  type: Component,
8168
8282
  args: [{
8169
8283
  // tslint:disable-next-line:component-selector
8170
8284
  selector: 'button-widget',
8171
- template: `
8172
- <div
8173
- [class]="options?.htmlClass || ''">
8174
- <button
8175
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8176
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8177
- [class]="options?.fieldHtmlClass || ''"
8178
- [disabled]="controlDisabled"
8179
- [name]="controlName"
8180
- [type]="layoutNode()?.type"
8181
- [value]="controlValue"
8182
- (click)="updateValue($event)"
8183
- [appStopPropagation]="['mousedown', 'touchstart']"
8184
- >
8185
- <span *ngIf="options?.icon || options?.title"
8186
- [class]="options?.icon"
8187
- [innerHTML]="options?.title"></span>
8188
- </button>
8285
+ template: `
8286
+ <div
8287
+ [class]="options?.htmlClass || ''">
8288
+ <button
8289
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
8290
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8291
+ [class]="options?.fieldHtmlClass || ''"
8292
+ [disabled]="controlDisabled"
8293
+ [name]="controlName"
8294
+ [type]="layoutNode()?.type"
8295
+ [value]="controlValue"
8296
+ (click)="updateValue($event)"
8297
+ [appStopPropagation]="['mousedown', 'touchstart']"
8298
+ >
8299
+ @if (options?.icon || options?.title) {
8300
+ <span
8301
+ [class]="options?.icon"
8302
+ [innerHTML]="options?.title"></span>
8303
+ }
8304
+ </button>
8189
8305
  </div>`,
8190
8306
  standalone: false
8191
8307
  }]
8192
- }] });
8308
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8193
8309
 
8194
8310
  ///NB issue caused by sortablejs when it its destroyed
8195
8311
  //this mainly affects checkboxes coupled with conditions
@@ -8203,9 +8319,9 @@ class CheckboxComponent {
8203
8319
  this.boundControl = false;
8204
8320
  this.trueValue = true;
8205
8321
  this.falseValue = false;
8206
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8207
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8208
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8322
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8323
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8324
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8209
8325
  }
8210
8326
  ngOnInit() {
8211
8327
  this.options = this.layoutNode().options || {};
@@ -8225,78 +8341,90 @@ class CheckboxComponent {
8225
8341
  ngOnDestroy() {
8226
8342
  this.jsf.updateValue(this, null);
8227
8343
  }
8228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8229
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: CheckboxComponent, isStandalone: false, selector: "checkbox-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: `
8230
- <label
8231
- [attr.for]="'control' + layoutNode()?._id"
8232
- [class]="options?.itemLabelHtmlClass || ''">
8233
- <input *ngIf="boundControl"
8234
- [formControl]="formControl"
8235
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8344
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8345
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: CheckboxComponent, isStandalone: false, selector: "checkbox-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: `
8346
+ <label
8347
+ [attr.for]="'control' + layoutNode()?._id"
8348
+ [class]="options?.itemLabelHtmlClass || ''">
8349
+ @if (boundControl) {
8350
+ <input
8351
+ [formControl]="formControl"
8352
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8236
8353
  [class]="(options?.fieldHtmlClass || '') + (isChecked ?
8237
8354
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8238
8355
  (' ' + (options?.style?.unselected || '')))"
8239
- [id]="'control' + layoutNode()?._id"
8240
- [name]="controlName"
8241
- [readonly]="options?.readonly ? 'readonly' : null"
8242
- type="checkbox">
8243
- <input *ngIf="!boundControl"
8244
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8245
- [checked]="isChecked"
8356
+ [id]="'control' + layoutNode()?._id"
8357
+ [name]="controlName"
8358
+ [readonly]="options?.readonly ? 'readonly' : null"
8359
+ type="checkbox">
8360
+ }
8361
+ @if (!boundControl) {
8362
+ <input
8363
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8364
+ [checked]="isChecked"
8246
8365
  [class]="(options?.fieldHtmlClass || '') + (isChecked ?
8247
8366
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8248
8367
  (' ' + (options?.style?.unselected || '')))"
8249
- [disabled]="controlDisabled"
8250
- [id]="'control' + layoutNode()?._id"
8251
- [name]="controlName"
8252
- [readonly]="options?.readonly ? 'readonly' : null"
8253
- [value]="controlValue"
8254
- type="checkbox"
8255
- (change)="updateValue($event)">
8256
- <span *ngIf="options?.title"
8257
- [style.display]="options?.notitle ? 'none' : ''"
8258
- [innerHTML]="options?.title"></span>
8259
- </label>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
8368
+ [disabled]="controlDisabled"
8369
+ [id]="'control' + layoutNode()?._id"
8370
+ [name]="controlName"
8371
+ [readonly]="options?.readonly ? 'readonly' : null"
8372
+ [value]="controlValue"
8373
+ type="checkbox"
8374
+ (change)="updateValue($event)">
8375
+ }
8376
+ @if (options?.title) {
8377
+ <span
8378
+ [style.display]="options?.notitle ? 'none' : ''"
8379
+ [innerHTML]="options?.title"></span>
8380
+ }
8381
+ </label>`, isInline: true, dependencies: [{ kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
8260
8382
  }
8261
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CheckboxComponent, decorators: [{
8383
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CheckboxComponent, decorators: [{
8262
8384
  type: Component,
8263
8385
  args: [{
8264
8386
  // tslint:disable-next-line:component-selector
8265
8387
  selector: 'checkbox-widget',
8266
- template: `
8267
- <label
8268
- [attr.for]="'control' + layoutNode()?._id"
8269
- [class]="options?.itemLabelHtmlClass || ''">
8270
- <input *ngIf="boundControl"
8271
- [formControl]="formControl"
8272
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8388
+ template: `
8389
+ <label
8390
+ [attr.for]="'control' + layoutNode()?._id"
8391
+ [class]="options?.itemLabelHtmlClass || ''">
8392
+ @if (boundControl) {
8393
+ <input
8394
+ [formControl]="formControl"
8395
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8273
8396
  [class]="(options?.fieldHtmlClass || '') + (isChecked ?
8274
8397
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8275
8398
  (' ' + (options?.style?.unselected || '')))"
8276
- [id]="'control' + layoutNode()?._id"
8277
- [name]="controlName"
8278
- [readonly]="options?.readonly ? 'readonly' : null"
8279
- type="checkbox">
8280
- <input *ngIf="!boundControl"
8281
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8282
- [checked]="isChecked"
8399
+ [id]="'control' + layoutNode()?._id"
8400
+ [name]="controlName"
8401
+ [readonly]="options?.readonly ? 'readonly' : null"
8402
+ type="checkbox">
8403
+ }
8404
+ @if (!boundControl) {
8405
+ <input
8406
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8407
+ [checked]="isChecked"
8283
8408
  [class]="(options?.fieldHtmlClass || '') + (isChecked ?
8284
8409
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8285
8410
  (' ' + (options?.style?.unselected || '')))"
8286
- [disabled]="controlDisabled"
8287
- [id]="'control' + layoutNode()?._id"
8288
- [name]="controlName"
8289
- [readonly]="options?.readonly ? 'readonly' : null"
8290
- [value]="controlValue"
8291
- type="checkbox"
8292
- (change)="updateValue($event)">
8293
- <span *ngIf="options?.title"
8294
- [style.display]="options?.notitle ? 'none' : ''"
8295
- [innerHTML]="options?.title"></span>
8411
+ [disabled]="controlDisabled"
8412
+ [id]="'control' + layoutNode()?._id"
8413
+ [name]="controlName"
8414
+ [readonly]="options?.readonly ? 'readonly' : null"
8415
+ [value]="controlValue"
8416
+ type="checkbox"
8417
+ (change)="updateValue($event)">
8418
+ }
8419
+ @if (options?.title) {
8420
+ <span
8421
+ [style.display]="options?.notitle ? 'none' : ''"
8422
+ [innerHTML]="options?.title"></span>
8423
+ }
8296
8424
  </label>`,
8297
8425
  standalone: false
8298
8426
  }]
8299
- }] });
8427
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8300
8428
 
8301
8429
  class CheckboxesComponent {
8302
8430
  constructor() {
@@ -8304,9 +8432,9 @@ class CheckboxesComponent {
8304
8432
  this.controlDisabled = false;
8305
8433
  this.boundControl = false;
8306
8434
  this.checkboxList = [];
8307
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8308
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8309
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8435
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8436
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8437
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8310
8438
  }
8311
8439
  ngOnInit() {
8312
8440
  this.options = this.layoutNode().options || {};
@@ -8337,114 +8465,134 @@ class CheckboxesComponent {
8337
8465
  this.formControl.reset(nullVal);
8338
8466
  this.controlValue = null;
8339
8467
  }
8340
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CheckboxesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8341
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: CheckboxesComponent, isStandalone: false, selector: "checkboxes-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: `
8342
- <label *ngIf="options?.title"
8343
- [class]="options?.labelHtmlClass || ''"
8344
- [style.display]="options?.notitle ? 'none' : ''"
8345
- [innerHTML]="options?.title"></label>
8346
-
8347
- <!-- 'horizontal' = checkboxes-inline or checkboxbuttons -->
8348
- <div *ngIf="layoutOrientation === 'horizontal'" [class]="options?.htmlClass || ''">
8349
- <label *ngFor="let checkboxItem of checkboxList"
8350
- [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8468
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CheckboxesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8469
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: CheckboxesComponent, isStandalone: false, selector: "checkboxes-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: `
8470
+ @if (options?.title) {
8471
+ <label
8472
+ [class]="options?.labelHtmlClass || ''"
8473
+ [style.display]="options?.notitle ? 'none' : ''"
8474
+ [innerHTML]="options?.title"></label>
8475
+ }
8476
+
8477
+ <!-- 'horizontal' = checkboxes-inline or checkboxbuttons -->
8478
+ @if (layoutOrientation === 'horizontal') {
8479
+ <div [class]="options?.htmlClass || ''">
8480
+ @for (checkboxItem of checkboxList; track checkboxItem) {
8481
+ <label
8482
+ [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8351
8483
  [class]="(options?.itemLabelHtmlClass || '') + (checkboxItem.checked ?
8352
8484
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8353
8485
  (' ' + (options?.style?.unselected || '')))">
8354
- <input type="checkbox"
8355
- [attr.required]="options?.required"
8356
- [checked]="checkboxItem.checked"
8357
- [class]="options?.fieldHtmlClass || ''"
8358
- [disabled]="controlDisabled"
8359
- [id]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8360
- [name]="checkboxItem?.name"
8361
- [readonly]="options?.readonly ? 'readonly' : null"
8362
- [value]="checkboxItem.value"
8363
- (change)="updateValue($event)">
8364
- <span [innerHTML]="checkboxItem.name"></span>
8365
- </label>
8366
- </div>
8367
-
8368
- <!-- 'vertical' = regular checkboxes -->
8369
- <div *ngIf="layoutOrientation === 'vertical'">
8370
- <div *ngFor="let checkboxItem of checkboxList" [class]="options?.htmlClass || ''">
8371
- <label
8372
- [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8486
+ <input type="checkbox"
8487
+ [attr.required]="options?.required"
8488
+ [checked]="checkboxItem.checked"
8489
+ [class]="options?.fieldHtmlClass || ''"
8490
+ [disabled]="controlDisabled"
8491
+ [id]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8492
+ [name]="checkboxItem?.name"
8493
+ [readonly]="options?.readonly ? 'readonly' : null"
8494
+ [value]="checkboxItem.value"
8495
+ (change)="updateValue($event)">
8496
+ <span [innerHTML]="checkboxItem.name"></span>
8497
+ </label>
8498
+ }
8499
+ </div>
8500
+ }
8501
+
8502
+ <!-- 'vertical' = regular checkboxes -->
8503
+ @if (layoutOrientation === 'vertical') {
8504
+ <div>
8505
+ @for (checkboxItem of checkboxList; track checkboxItem) {
8506
+ <div [class]="options?.htmlClass || ''">
8507
+ <label
8508
+ [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8373
8509
  [class]="(options?.itemLabelHtmlClass || '') + (checkboxItem.checked ?
8374
8510
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8375
8511
  (' ' + (options?.style?.unselected || '')))">
8376
- <input type="checkbox"
8377
- [attr.required]="options?.required"
8378
- [checked]="checkboxItem.checked"
8379
- [class]="options?.fieldHtmlClass || ''"
8380
- [disabled]="controlDisabled"
8381
- [id]="options?.name + '/' + checkboxItem.value"
8382
- [name]="checkboxItem?.name"
8383
- [readonly]="options?.readonly ? 'readonly' : null"
8384
- [value]="checkboxItem.value"
8385
- (change)="updateValue($event)">
8386
- <span [innerHTML]="checkboxItem?.name"></span>
8387
- </label>
8388
- </div>
8389
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
8512
+ <input type="checkbox"
8513
+ [attr.required]="options?.required"
8514
+ [checked]="checkboxItem.checked"
8515
+ [class]="options?.fieldHtmlClass || ''"
8516
+ [disabled]="controlDisabled"
8517
+ [id]="options?.name + '/' + checkboxItem.value"
8518
+ [name]="checkboxItem?.name"
8519
+ [readonly]="options?.readonly ? 'readonly' : null"
8520
+ [value]="checkboxItem.value"
8521
+ (change)="updateValue($event)">
8522
+ <span [innerHTML]="checkboxItem?.name"></span>
8523
+ </label>
8524
+ </div>
8525
+ }
8526
+ </div>
8527
+ }`, isInline: true }); }
8390
8528
  }
8391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: CheckboxesComponent, decorators: [{
8529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: CheckboxesComponent, decorators: [{
8392
8530
  type: Component,
8393
8531
  args: [{
8394
8532
  // tslint:disable-next-line:component-selector
8395
8533
  selector: 'checkboxes-widget',
8396
- template: `
8397
- <label *ngIf="options?.title"
8398
- [class]="options?.labelHtmlClass || ''"
8399
- [style.display]="options?.notitle ? 'none' : ''"
8400
- [innerHTML]="options?.title"></label>
8401
-
8402
- <!-- 'horizontal' = checkboxes-inline or checkboxbuttons -->
8403
- <div *ngIf="layoutOrientation === 'horizontal'" [class]="options?.htmlClass || ''">
8404
- <label *ngFor="let checkboxItem of checkboxList"
8405
- [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8534
+ template: `
8535
+ @if (options?.title) {
8536
+ <label
8537
+ [class]="options?.labelHtmlClass || ''"
8538
+ [style.display]="options?.notitle ? 'none' : ''"
8539
+ [innerHTML]="options?.title"></label>
8540
+ }
8541
+
8542
+ <!-- 'horizontal' = checkboxes-inline or checkboxbuttons -->
8543
+ @if (layoutOrientation === 'horizontal') {
8544
+ <div [class]="options?.htmlClass || ''">
8545
+ @for (checkboxItem of checkboxList; track checkboxItem) {
8546
+ <label
8547
+ [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8406
8548
  [class]="(options?.itemLabelHtmlClass || '') + (checkboxItem.checked ?
8407
8549
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8408
8550
  (' ' + (options?.style?.unselected || '')))">
8409
- <input type="checkbox"
8410
- [attr.required]="options?.required"
8411
- [checked]="checkboxItem.checked"
8412
- [class]="options?.fieldHtmlClass || ''"
8413
- [disabled]="controlDisabled"
8414
- [id]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8415
- [name]="checkboxItem?.name"
8416
- [readonly]="options?.readonly ? 'readonly' : null"
8417
- [value]="checkboxItem.value"
8418
- (change)="updateValue($event)">
8419
- <span [innerHTML]="checkboxItem.name"></span>
8420
- </label>
8421
- </div>
8422
-
8423
- <!-- 'vertical' = regular checkboxes -->
8424
- <div *ngIf="layoutOrientation === 'vertical'">
8425
- <div *ngFor="let checkboxItem of checkboxList" [class]="options?.htmlClass || ''">
8426
- <label
8427
- [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8551
+ <input type="checkbox"
8552
+ [attr.required]="options?.required"
8553
+ [checked]="checkboxItem.checked"
8554
+ [class]="options?.fieldHtmlClass || ''"
8555
+ [disabled]="controlDisabled"
8556
+ [id]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8557
+ [name]="checkboxItem?.name"
8558
+ [readonly]="options?.readonly ? 'readonly' : null"
8559
+ [value]="checkboxItem.value"
8560
+ (change)="updateValue($event)">
8561
+ <span [innerHTML]="checkboxItem.name"></span>
8562
+ </label>
8563
+ }
8564
+ </div>
8565
+ }
8566
+
8567
+ <!-- 'vertical' = regular checkboxes -->
8568
+ @if (layoutOrientation === 'vertical') {
8569
+ <div>
8570
+ @for (checkboxItem of checkboxList; track checkboxItem) {
8571
+ <div [class]="options?.htmlClass || ''">
8572
+ <label
8573
+ [attr.for]="'control' + layoutNode()?._id + '/' + checkboxItem.value"
8428
8574
  [class]="(options?.itemLabelHtmlClass || '') + (checkboxItem.checked ?
8429
8575
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8430
8576
  (' ' + (options?.style?.unselected || '')))">
8431
- <input type="checkbox"
8432
- [attr.required]="options?.required"
8433
- [checked]="checkboxItem.checked"
8434
- [class]="options?.fieldHtmlClass || ''"
8435
- [disabled]="controlDisabled"
8436
- [id]="options?.name + '/' + checkboxItem.value"
8437
- [name]="checkboxItem?.name"
8438
- [readonly]="options?.readonly ? 'readonly' : null"
8439
- [value]="checkboxItem.value"
8440
- (change)="updateValue($event)">
8441
- <span [innerHTML]="checkboxItem?.name"></span>
8442
- </label>
8443
- </div>
8444
- </div>`,
8577
+ <input type="checkbox"
8578
+ [attr.required]="options?.required"
8579
+ [checked]="checkboxItem.checked"
8580
+ [class]="options?.fieldHtmlClass || ''"
8581
+ [disabled]="controlDisabled"
8582
+ [id]="options?.name + '/' + checkboxItem.value"
8583
+ [name]="checkboxItem?.name"
8584
+ [readonly]="options?.readonly ? 'readonly' : null"
8585
+ [value]="checkboxItem.value"
8586
+ (change)="updateValue($event)">
8587
+ <span [innerHTML]="checkboxItem?.name"></span>
8588
+ </label>
8589
+ </div>
8590
+ }
8591
+ </div>
8592
+ }`,
8445
8593
  standalone: false
8446
8594
  }]
8447
- }] });
8595
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8448
8596
 
8449
8597
  // TODO: Add this control
8450
8598
  class FileComponent {
@@ -8452,9 +8600,9 @@ class FileComponent {
8452
8600
  this.jsf = inject(JsonSchemaFormService);
8453
8601
  this.controlDisabled = false;
8454
8602
  this.boundControl = false;
8455
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8456
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8457
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8603
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8604
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8605
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8458
8606
  }
8459
8607
  ngOnInit() {
8460
8608
  this.options = this.layoutNode().options || {};
@@ -8466,10 +8614,10 @@ class FileComponent {
8466
8614
  ngOnDestroy() {
8467
8615
  this.jsf.updateValue(this, null);
8468
8616
  }
8469
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8470
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: FileComponent, isStandalone: false, selector: "file-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: ``, isInline: true }); }
8617
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8618
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: FileComponent, isStandalone: false, selector: "file-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: ``, isInline: true }); }
8471
8619
  }
8472
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FileComponent, decorators: [{
8620
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FileComponent, decorators: [{
8473
8621
  type: Component,
8474
8622
  args: [{
8475
8623
  // tslint:disable-next-line:component-selector
@@ -8477,16 +8625,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8477
8625
  template: ``,
8478
8626
  standalone: false
8479
8627
  }]
8480
- }] });
8628
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8481
8629
 
8482
8630
  class HiddenComponent {
8483
8631
  constructor() {
8484
8632
  this.jsf = inject(JsonSchemaFormService);
8485
8633
  this.controlDisabled = false;
8486
8634
  this.boundControl = false;
8487
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8488
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8489
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8635
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8636
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8637
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8490
8638
  }
8491
8639
  ngOnInit() {
8492
8640
  this.jsf.initializeControl(this);
@@ -8494,40 +8642,48 @@ class HiddenComponent {
8494
8642
  ngOnDestroy() {
8495
8643
  this.jsf.updateValue(this, null);
8496
8644
  }
8497
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: HiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8498
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: HiddenComponent, isStandalone: false, selector: "hidden-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: `
8499
- <input *ngIf="boundControl"
8500
- [formControl]="formControl"
8501
- [id]="'control' + layoutNode()?._id"
8502
- [name]="controlName"
8503
- type="hidden">
8504
- <input *ngIf="!boundControl"
8505
- [disabled]="controlDisabled"
8506
- [name]="controlName"
8507
- [id]="'control' + layoutNode()?._id"
8508
- type="hidden"
8509
- [value]="controlValue">`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
8645
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: HiddenComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8646
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: HiddenComponent, isStandalone: false, selector: "hidden-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: `
8647
+ @if (boundControl) {
8648
+ <input
8649
+ [formControl]="formControl"
8650
+ [id]="'control' + layoutNode()?._id"
8651
+ [name]="controlName"
8652
+ type="hidden">
8653
+ }
8654
+ @if (!boundControl) {
8655
+ <input
8656
+ [disabled]="controlDisabled"
8657
+ [name]="controlName"
8658
+ [id]="'control' + layoutNode()?._id"
8659
+ type="hidden"
8660
+ [value]="controlValue">
8661
+ }`, isInline: true, dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
8510
8662
  }
8511
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: HiddenComponent, decorators: [{
8663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: HiddenComponent, decorators: [{
8512
8664
  type: Component,
8513
8665
  args: [{
8514
8666
  // tslint:disable-next-line:component-selector
8515
8667
  selector: 'hidden-widget',
8516
- template: `
8517
- <input *ngIf="boundControl"
8518
- [formControl]="formControl"
8519
- [id]="'control' + layoutNode()?._id"
8520
- [name]="controlName"
8521
- type="hidden">
8522
- <input *ngIf="!boundControl"
8523
- [disabled]="controlDisabled"
8524
- [name]="controlName"
8525
- [id]="'control' + layoutNode()?._id"
8526
- type="hidden"
8527
- [value]="controlValue">`,
8668
+ template: `
8669
+ @if (boundControl) {
8670
+ <input
8671
+ [formControl]="formControl"
8672
+ [id]="'control' + layoutNode()?._id"
8673
+ [name]="controlName"
8674
+ type="hidden">
8675
+ }
8676
+ @if (!boundControl) {
8677
+ <input
8678
+ [disabled]="controlDisabled"
8679
+ [name]="controlName"
8680
+ [id]="'control' + layoutNode()?._id"
8681
+ type="hidden"
8682
+ [value]="controlValue">
8683
+ }`,
8528
8684
  standalone: false
8529
8685
  }]
8530
- }] });
8686
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8531
8687
 
8532
8688
  class InputComponent {
8533
8689
  constructor() {
@@ -8535,9 +8691,9 @@ class InputComponent {
8535
8691
  this.controlDisabled = false;
8536
8692
  this.boundControl = false;
8537
8693
  this.autoCompleteList = [];
8538
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8539
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8540
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8694
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8695
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8696
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8541
8697
  }
8542
8698
  //needed as templates don't accept something like [attributes]="options?.['x-inputAttributes']"
8543
8699
  get inputAttributes() {
@@ -8551,157 +8707,226 @@ class InputComponent {
8551
8707
  this.jsf.updateValue(this, event.target.value);
8552
8708
  }
8553
8709
  ngOnDestroy() {
8554
- this.jsf.updateValue(this, null);
8710
+ //needed to be done in timeout for when dynamic/condition based
8711
+ //titles depend on the formControls value but the formControl
8712
+ //is also destroyed
8713
+ setTimeout(() => {
8714
+ this.jsf.updateValue(this, null);
8715
+ });
8555
8716
  }
8556
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8557
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: InputComponent, isStandalone: false, selector: "input-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: `
8558
- <div [class]="options?.htmlClass || ''" >
8559
- <label *ngIf="options?.title"
8560
- [attr.for]="'control' + layoutNode()?._id"
8561
- [class]="options?.labelHtmlClass || ''"
8562
- [style.display]="options?.notitle ? 'none' : ''"
8563
- [innerHTML]="options?.title"></label>
8564
- <input *ngIf="boundControl"
8565
- [formControl]="formControl"
8566
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8567
- [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8568
- [attr.maxlength]="options?.maxLength"
8569
- [attr.minlength]="options?.minLength"
8570
- [attr.pattern]="options?.pattern"
8571
- [attr.placeholder]="options?.placeholder"
8572
- [attr.required]="options?.required"
8573
- [class]="options?.fieldHtmlClass || ''"
8574
- [id]="'control' + layoutNode()?._id"
8575
- [name]="controlName"
8576
- [readonly]="options?.readonly ? 'readonly' : null"
8577
- [type]="layoutNode()?.type"
8578
- [attributes]="inputAttributes"
8579
- [appStopPropagation]="['mousedown', 'touchstart']"
8580
- >
8581
- <input *ngIf="!boundControl"
8582
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8583
- [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8584
- [attr.maxlength]="options?.maxLength"
8585
- [attr.minlength]="options?.minLength"
8586
- [attr.pattern]="options?.pattern"
8587
- [attr.placeholder]="options?.placeholder"
8588
- [attr.required]="options?.required"
8589
- [class]="options?.fieldHtmlClass || ''"
8590
- [disabled]="controlDisabled"
8591
- [id]="'control' + layoutNode()?._id"
8592
- [name]="controlName"
8593
- [readonly]="options?.readonly ? 'readonly' : null"
8594
- [type]="layoutNode()?.type"
8595
- [value]="controlValue"
8596
- (input)="updateValue($event)"
8597
- [attributes]="inputAttributes"
8598
- [appStopPropagation]="['mousedown', 'touchstart']"
8599
- >
8600
- <datalist *ngIf="options?.typeahead?.source"
8601
- [id]="'control' + layoutNode()?._id + 'Autocomplete'">
8602
- <option *ngFor="let word of options?.typeahead?.source" [value]="word">
8603
- </datalist>
8604
- </div>`, isInline: true, 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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ElementAttributeDirective, selector: "[attributes]", inputs: ["attributes"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8717
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8718
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: InputComponent, isStandalone: false, selector: "input-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: `
8719
+ <div [class]="options?.htmlClass || ''" >
8720
+ @if (options?.title) {
8721
+ <label
8722
+ [attr.for]="'control' + layoutNode()?._id"
8723
+ [class]="options?.labelHtmlClass || ''"
8724
+ [style.display]="options?.notitle ? 'none' : ''"
8725
+ [innerHTML]="options?.title"></label>
8726
+ }
8727
+ @if (boundControl) {
8728
+ <input
8729
+ [formControl]="formControl"
8730
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8731
+ [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8732
+ [attr.maxlength]="options?.maxLength"
8733
+ [attr.minlength]="options?.minLength"
8734
+ [attr.pattern]="options?.pattern"
8735
+ [attr.placeholder]="options?.placeholder"
8736
+ [attr.required]="options?.required"
8737
+ [class]="options?.fieldHtmlClass || ''"
8738
+ [id]="'control' + layoutNode()?._id"
8739
+ [name]="controlName"
8740
+ [readonly]="options?.readonly ? 'readonly' : null"
8741
+ [type]="layoutNode()?.type"
8742
+ [attributes]="inputAttributes"
8743
+ [appStopPropagation]="['mousedown', 'touchstart']"
8744
+ >
8745
+ }
8746
+ @if (!boundControl) {
8747
+ <input
8748
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8749
+ [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8750
+ [attr.maxlength]="options?.maxLength"
8751
+ [attr.minlength]="options?.minLength"
8752
+ [attr.pattern]="options?.pattern"
8753
+ [attr.placeholder]="options?.placeholder"
8754
+ [attr.required]="options?.required"
8755
+ [class]="options?.fieldHtmlClass || ''"
8756
+ [disabled]="controlDisabled"
8757
+ [id]="'control' + layoutNode()?._id"
8758
+ [name]="controlName"
8759
+ [readonly]="options?.readonly ? 'readonly' : null"
8760
+ [type]="layoutNode()?.type"
8761
+ [value]="controlValue"
8762
+ (input)="updateValue($event)"
8763
+ [attributes]="inputAttributes"
8764
+ [appStopPropagation]="['mousedown', 'touchstart']"
8765
+ >
8766
+ }
8767
+ @if (options?.typeahead?.source) {
8768
+ <datalist
8769
+ [id]="'control' + layoutNode()?._id + 'Autocomplete'">
8770
+ @for (word of options?.typeahead?.source; track word) {
8771
+ <option [value]="word">
8772
+ }
8773
+ </datalist>
8774
+ }
8775
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ElementAttributeDirective, selector: "[attributes]", inputs: ["attributes"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8605
8776
  }
8606
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: InputComponent, decorators: [{
8777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: InputComponent, decorators: [{
8607
8778
  type: Component,
8608
8779
  args: [{
8609
8780
  // tslint:disable-next-line:component-selector
8610
8781
  selector: 'input-widget',
8611
- template: `
8612
- <div [class]="options?.htmlClass || ''" >
8613
- <label *ngIf="options?.title"
8614
- [attr.for]="'control' + layoutNode()?._id"
8615
- [class]="options?.labelHtmlClass || ''"
8616
- [style.display]="options?.notitle ? 'none' : ''"
8617
- [innerHTML]="options?.title"></label>
8618
- <input *ngIf="boundControl"
8619
- [formControl]="formControl"
8620
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8621
- [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8622
- [attr.maxlength]="options?.maxLength"
8623
- [attr.minlength]="options?.minLength"
8624
- [attr.pattern]="options?.pattern"
8625
- [attr.placeholder]="options?.placeholder"
8626
- [attr.required]="options?.required"
8627
- [class]="options?.fieldHtmlClass || ''"
8628
- [id]="'control' + layoutNode()?._id"
8629
- [name]="controlName"
8630
- [readonly]="options?.readonly ? 'readonly' : null"
8631
- [type]="layoutNode()?.type"
8632
- [attributes]="inputAttributes"
8633
- [appStopPropagation]="['mousedown', 'touchstart']"
8634
- >
8635
- <input *ngIf="!boundControl"
8636
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8637
- [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8638
- [attr.maxlength]="options?.maxLength"
8639
- [attr.minlength]="options?.minLength"
8640
- [attr.pattern]="options?.pattern"
8641
- [attr.placeholder]="options?.placeholder"
8642
- [attr.required]="options?.required"
8643
- [class]="options?.fieldHtmlClass || ''"
8644
- [disabled]="controlDisabled"
8645
- [id]="'control' + layoutNode()?._id"
8646
- [name]="controlName"
8647
- [readonly]="options?.readonly ? 'readonly' : null"
8648
- [type]="layoutNode()?.type"
8649
- [value]="controlValue"
8650
- (input)="updateValue($event)"
8651
- [attributes]="inputAttributes"
8652
- [appStopPropagation]="['mousedown', 'touchstart']"
8653
- >
8654
- <datalist *ngIf="options?.typeahead?.source"
8655
- [id]="'control' + layoutNode()?._id + 'Autocomplete'">
8656
- <option *ngFor="let word of options?.typeahead?.source" [value]="word">
8657
- </datalist>
8658
- </div>`,
8782
+ template: `
8783
+ <div [class]="options?.htmlClass || ''" >
8784
+ @if (options?.title) {
8785
+ <label
8786
+ [attr.for]="'control' + layoutNode()?._id"
8787
+ [class]="options?.labelHtmlClass || ''"
8788
+ [style.display]="options?.notitle ? 'none' : ''"
8789
+ [innerHTML]="options?.title"></label>
8790
+ }
8791
+ @if (boundControl) {
8792
+ <input
8793
+ [formControl]="formControl"
8794
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8795
+ [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8796
+ [attr.maxlength]="options?.maxLength"
8797
+ [attr.minlength]="options?.minLength"
8798
+ [attr.pattern]="options?.pattern"
8799
+ [attr.placeholder]="options?.placeholder"
8800
+ [attr.required]="options?.required"
8801
+ [class]="options?.fieldHtmlClass || ''"
8802
+ [id]="'control' + layoutNode()?._id"
8803
+ [name]="controlName"
8804
+ [readonly]="options?.readonly ? 'readonly' : null"
8805
+ [type]="layoutNode()?.type"
8806
+ [attributes]="inputAttributes"
8807
+ [appStopPropagation]="['mousedown', 'touchstart']"
8808
+ >
8809
+ }
8810
+ @if (!boundControl) {
8811
+ <input
8812
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8813
+ [attr.list]="'control' + layoutNode()?._id + 'Autocomplete'"
8814
+ [attr.maxlength]="options?.maxLength"
8815
+ [attr.minlength]="options?.minLength"
8816
+ [attr.pattern]="options?.pattern"
8817
+ [attr.placeholder]="options?.placeholder"
8818
+ [attr.required]="options?.required"
8819
+ [class]="options?.fieldHtmlClass || ''"
8820
+ [disabled]="controlDisabled"
8821
+ [id]="'control' + layoutNode()?._id"
8822
+ [name]="controlName"
8823
+ [readonly]="options?.readonly ? 'readonly' : null"
8824
+ [type]="layoutNode()?.type"
8825
+ [value]="controlValue"
8826
+ (input)="updateValue($event)"
8827
+ [attributes]="inputAttributes"
8828
+ [appStopPropagation]="['mousedown', 'touchstart']"
8829
+ >
8830
+ }
8831
+ @if (options?.typeahead?.source) {
8832
+ <datalist
8833
+ [id]="'control' + layoutNode()?._id + 'Autocomplete'">
8834
+ @for (word of options?.typeahead?.source; track word) {
8835
+ <option [value]="word">
8836
+ }
8837
+ </datalist>
8838
+ }
8839
+ </div>`,
8659
8840
  standalone: false
8660
8841
  }]
8661
- }] });
8842
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8843
+
8844
+ // item-title.component.ts
8845
+ class ItemTitleComponent {
8846
+ constructor(jsf) {
8847
+ this.jsf = jsf;
8848
+ }
8849
+ ngOnChanges(changes) {
8850
+ this.updateTitle();
8851
+ }
8852
+ ngOnInit() {
8853
+ // Calculate the title once on init, or subscribe to changes here
8854
+ this.updateTitle();
8855
+ this.dataChangesSubs = this.jsf.dataChanges.subscribe((val) => {
8856
+ this.updateTitle();
8857
+ });
8858
+ }
8859
+ updateTitle() {
8860
+ this.title = this.jsf.setArrayItemTitle(this.ctx, this.item, this.index);
8861
+ }
8862
+ ngOnDestroy() {
8863
+ this.dataChangesSubs?.unsubscribe();
8864
+ }
8865
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ItemTitleComponent, deps: [{ token: JsonSchemaFormService }], target: i0.ɵɵFactoryTarget.Component }); }
8866
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.0.2", type: ItemTitleComponent, isStandalone: false, selector: "item-title", inputs: { item: "item", index: "index", ctx: "ctx" }, usesOnChanges: true, ngImport: i0, template: `<div>{{ title }}</div>`, isInline: true }); }
8867
+ }
8868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: ItemTitleComponent, decorators: [{
8869
+ type: Component,
8870
+ args: [{
8871
+ selector: 'item-title',
8872
+ template: `<div>{{ title }}</div>`,
8873
+ standalone: false
8874
+ // Consider using ChangeDetectionStrategy.OnPush here for maximum efficiency
8875
+ }]
8876
+ }], ctorParameters: () => [{ type: JsonSchemaFormService }], propDecorators: { item: [{
8877
+ type: Input
8878
+ }], index: [{
8879
+ type: Input
8880
+ }], ctx: [{
8881
+ type: Input
8882
+ }] } });
8662
8883
 
8663
8884
  class MessageComponent {
8664
8885
  constructor() {
8665
8886
  this.jsf = inject(JsonSchemaFormService);
8666
8887
  this.message = null;
8667
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8668
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8669
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8888
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8889
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8890
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8670
8891
  }
8671
8892
  ngOnInit() {
8672
8893
  this.options = this.layoutNode().options || {};
8673
8894
  this.message = this.options.help || this.options.helpvalue ||
8674
8895
  this.options.msg || this.options.message;
8675
8896
  }
8676
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8677
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: MessageComponent, isStandalone: false, selector: "message-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: `
8678
- <span *ngIf="message"
8679
- [class]="options?.labelHtmlClass || ''"
8680
- [innerHTML]="message"></span>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
8897
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8898
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: MessageComponent, isStandalone: false, selector: "message-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: `
8899
+ @if (message) {
8900
+ <span
8901
+ [class]="options?.labelHtmlClass || ''"
8902
+ [innerHTML]="message"></span>
8903
+ }`, isInline: true }); }
8681
8904
  }
8682
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: MessageComponent, decorators: [{
8905
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: MessageComponent, decorators: [{
8683
8906
  type: Component,
8684
8907
  args: [{
8685
8908
  // tslint:disable-next-line:component-selector
8686
8909
  selector: 'message-widget',
8687
- template: `
8688
- <span *ngIf="message"
8689
- [class]="options?.labelHtmlClass || ''"
8690
- [innerHTML]="message"></span>`,
8910
+ template: `
8911
+ @if (message) {
8912
+ <span
8913
+ [class]="options?.labelHtmlClass || ''"
8914
+ [innerHTML]="message"></span>
8915
+ }`,
8691
8916
  standalone: false
8692
8917
  }]
8693
- }] });
8918
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8694
8919
 
8695
8920
  class NoneComponent {
8696
8921
  constructor() {
8697
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8698
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8699
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8922
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8923
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8924
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8700
8925
  }
8701
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8702
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: NoneComponent, isStandalone: false, selector: "none-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: ``, isInline: true }); }
8926
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8927
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: NoneComponent, isStandalone: false, selector: "none-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: ``, isInline: true }); }
8703
8928
  }
8704
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoneComponent, decorators: [{
8929
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoneComponent, decorators: [{
8705
8930
  type: Component,
8706
8931
  args: [{
8707
8932
  // tslint:disable-next-line:component-selector
@@ -8709,7 +8934,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8709
8934
  template: ``,
8710
8935
  standalone: false
8711
8936
  }]
8712
- }] });
8937
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
8713
8938
 
8714
8939
  //TODO look at reusing InputComponent
8715
8940
  class NumberComponent {
@@ -8721,9 +8946,9 @@ class NumberComponent {
8721
8946
  this.allowDecimal = true;
8722
8947
  this.allowExponents = false;
8723
8948
  this.lastValidNumber = '';
8724
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8725
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8726
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8949
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
8950
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
8951
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8727
8952
  }
8728
8953
  //needed as templates don't accept something like [attributes]="options?.['x-inputAttributes']"
8729
8954
  get inputAttributes() {
@@ -8740,112 +8965,131 @@ class NumberComponent {
8740
8965
  this.jsf.updateValue(this, event.target.value);
8741
8966
  }
8742
8967
  ngOnDestroy() {
8743
- this.jsf.updateValue(this, null);
8968
+ //see cpmments in input component
8969
+ setTimeout(() => {
8970
+ this.jsf.updateValue(this, null);
8971
+ });
8744
8972
  }
8745
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8746
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: NumberComponent, isStandalone: false, selector: "number-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 } }, viewQueries: [{ propertyName: "inputControl", first: true, predicate: ["inputControl"], descendants: true }, { propertyName: "div", first: true, predicate: ["divElt"], descendants: true }], ngImport: i0, template: `
8747
- <div #divElt [class]="options?.htmlClass || ''" >
8748
- <label *ngIf="options?.title"
8749
- [attr.for]="'control' + layoutNode()?._id"
8750
- [class]="options?.labelHtmlClass || ''"
8751
- [style.display]="options?.notitle ? 'none' : ''"
8752
- [innerHTML]="options?.title"></label>
8753
- <input #inputControl *ngIf="boundControl"
8754
- [formControl]="formControl"
8755
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8756
- [attr.max]="options?.maximum"
8757
- [attr.min]="options?.minimum"
8758
- [attr.placeholder]="options?.placeholder"
8759
- [attr.required]="options?.required"
8760
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8761
- [attr.step]="options?.multipleOf || options?.step || 'any'"
8762
- [class]="options?.fieldHtmlClass || ''"
8763
- [id]="'control' + layoutNode()?._id"
8764
- [name]="controlName"
8765
- [readonly]="options?.readonly ? 'readonly' : null"
8766
- [title]="lastValidNumber"
8767
- [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
8768
- [attributes]="inputAttributes"
8769
- [appStopPropagation]="['mousedown', 'touchstart']"
8770
- >
8771
- <input #inputControl *ngIf="!boundControl"
8772
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8773
- [attr.max]="options?.maximum"
8774
- [attr.min]="options?.minimum"
8775
- [attr.placeholder]="options?.placeholder"
8776
- [attr.required]="options?.required"
8777
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8778
- [attr.step]="options?.multipleOf || options?.step || 'any'"
8779
- [class]="options?.fieldHtmlClass || ''"
8780
- [disabled]="controlDisabled"
8781
- [id]="'control' + layoutNode()?._id"
8782
- [name]="controlName"
8783
- [readonly]="options?.readonly ? 'readonly' : null"
8784
- [title]="lastValidNumber"
8785
- [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
8786
- [value]="controlValue"
8787
- (input)="updateValue($event)"
8788
- [attributes]="inputAttributes"
8789
- [appStopPropagation]="['mousedown', 'touchstart']"
8790
- >
8791
- <span *ngIf="layoutNode()?.type === 'range'" [innerHTML]="controlValue"></span>
8792
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ElementAttributeDirective, selector: "[attributes]", inputs: ["attributes"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8973
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NumberComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8974
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: NumberComponent, isStandalone: false, selector: "number-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 } }, viewQueries: [{ propertyName: "inputControl", first: true, predicate: ["inputControl"], descendants: true }, { propertyName: "div", first: true, predicate: ["divElt"], descendants: true }], ngImport: i0, template: `
8975
+ <div #divElt [class]="options?.htmlClass || ''" >
8976
+ @if (options?.title) {
8977
+ <label
8978
+ [attr.for]="'control' + layoutNode()?._id"
8979
+ [class]="options?.labelHtmlClass || ''"
8980
+ [style.display]="options?.notitle ? 'none' : ''"
8981
+ [innerHTML]="options?.title"></label>
8982
+ }
8983
+ @if (boundControl) {
8984
+ <input #inputControl
8985
+ [formControl]="formControl"
8986
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8987
+ [attr.max]="options?.maximum"
8988
+ [attr.min]="options?.minimum"
8989
+ [attr.placeholder]="options?.placeholder"
8990
+ [attr.required]="options?.required"
8991
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
8992
+ [attr.step]="options?.multipleOf || options?.step || 'any'"
8993
+ [class]="options?.fieldHtmlClass || ''"
8994
+ [id]="'control' + layoutNode()?._id"
8995
+ [name]="controlName"
8996
+ [readonly]="options?.readonly ? 'readonly' : null"
8997
+ [title]="lastValidNumber"
8998
+ [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
8999
+ [attributes]="inputAttributes"
9000
+ [appStopPropagation]="['mousedown', 'touchstart']"
9001
+ >
9002
+ }
9003
+ @if (!boundControl) {
9004
+ <input #inputControl
9005
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9006
+ [attr.max]="options?.maximum"
9007
+ [attr.min]="options?.minimum"
9008
+ [attr.placeholder]="options?.placeholder"
9009
+ [attr.required]="options?.required"
9010
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9011
+ [attr.step]="options?.multipleOf || options?.step || 'any'"
9012
+ [class]="options?.fieldHtmlClass || ''"
9013
+ [disabled]="controlDisabled"
9014
+ [id]="'control' + layoutNode()?._id"
9015
+ [name]="controlName"
9016
+ [readonly]="options?.readonly ? 'readonly' : null"
9017
+ [title]="lastValidNumber"
9018
+ [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
9019
+ [value]="controlValue"
9020
+ (input)="updateValue($event)"
9021
+ [attributes]="inputAttributes"
9022
+ [appStopPropagation]="['mousedown', 'touchstart']"
9023
+ >
9024
+ }
9025
+ @if (layoutNode()?.type === 'range') {
9026
+ <span [innerHTML]="controlValue"></span>
9027
+ }
9028
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: ElementAttributeDirective, selector: "[attributes]", inputs: ["attributes"] }, { kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
8793
9029
  }
8794
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NumberComponent, decorators: [{
9030
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NumberComponent, decorators: [{
8795
9031
  type: Component,
8796
9032
  args: [{
8797
9033
  // tslint:disable-next-line:component-selector
8798
9034
  selector: 'number-widget',
8799
- template: `
8800
- <div #divElt [class]="options?.htmlClass || ''" >
8801
- <label *ngIf="options?.title"
8802
- [attr.for]="'control' + layoutNode()?._id"
8803
- [class]="options?.labelHtmlClass || ''"
8804
- [style.display]="options?.notitle ? 'none' : ''"
8805
- [innerHTML]="options?.title"></label>
8806
- <input #inputControl *ngIf="boundControl"
8807
- [formControl]="formControl"
8808
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8809
- [attr.max]="options?.maximum"
8810
- [attr.min]="options?.minimum"
8811
- [attr.placeholder]="options?.placeholder"
8812
- [attr.required]="options?.required"
8813
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8814
- [attr.step]="options?.multipleOf || options?.step || 'any'"
8815
- [class]="options?.fieldHtmlClass || ''"
8816
- [id]="'control' + layoutNode()?._id"
8817
- [name]="controlName"
8818
- [readonly]="options?.readonly ? 'readonly' : null"
8819
- [title]="lastValidNumber"
8820
- [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
8821
- [attributes]="inputAttributes"
8822
- [appStopPropagation]="['mousedown', 'touchstart']"
8823
- >
8824
- <input #inputControl *ngIf="!boundControl"
8825
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
8826
- [attr.max]="options?.maximum"
8827
- [attr.min]="options?.minimum"
8828
- [attr.placeholder]="options?.placeholder"
8829
- [attr.required]="options?.required"
8830
- [attr.readonly]="options?.readonly ? 'readonly' : null"
8831
- [attr.step]="options?.multipleOf || options?.step || 'any'"
8832
- [class]="options?.fieldHtmlClass || ''"
8833
- [disabled]="controlDisabled"
8834
- [id]="'control' + layoutNode()?._id"
8835
- [name]="controlName"
8836
- [readonly]="options?.readonly ? 'readonly' : null"
8837
- [title]="lastValidNumber"
8838
- [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
8839
- [value]="controlValue"
8840
- (input)="updateValue($event)"
8841
- [attributes]="inputAttributes"
8842
- [appStopPropagation]="['mousedown', 'touchstart']"
8843
- >
8844
- <span *ngIf="layoutNode()?.type === 'range'" [innerHTML]="controlValue"></span>
9035
+ template: `
9036
+ <div #divElt [class]="options?.htmlClass || ''" >
9037
+ @if (options?.title) {
9038
+ <label
9039
+ [attr.for]="'control' + layoutNode()?._id"
9040
+ [class]="options?.labelHtmlClass || ''"
9041
+ [style.display]="options?.notitle ? 'none' : ''"
9042
+ [innerHTML]="options?.title"></label>
9043
+ }
9044
+ @if (boundControl) {
9045
+ <input #inputControl
9046
+ [formControl]="formControl"
9047
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9048
+ [attr.max]="options?.maximum"
9049
+ [attr.min]="options?.minimum"
9050
+ [attr.placeholder]="options?.placeholder"
9051
+ [attr.required]="options?.required"
9052
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9053
+ [attr.step]="options?.multipleOf || options?.step || 'any'"
9054
+ [class]="options?.fieldHtmlClass || ''"
9055
+ [id]="'control' + layoutNode()?._id"
9056
+ [name]="controlName"
9057
+ [readonly]="options?.readonly ? 'readonly' : null"
9058
+ [title]="lastValidNumber"
9059
+ [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
9060
+ [attributes]="inputAttributes"
9061
+ [appStopPropagation]="['mousedown', 'touchstart']"
9062
+ >
9063
+ }
9064
+ @if (!boundControl) {
9065
+ <input #inputControl
9066
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9067
+ [attr.max]="options?.maximum"
9068
+ [attr.min]="options?.minimum"
9069
+ [attr.placeholder]="options?.placeholder"
9070
+ [attr.required]="options?.required"
9071
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9072
+ [attr.step]="options?.multipleOf || options?.step || 'any'"
9073
+ [class]="options?.fieldHtmlClass || ''"
9074
+ [disabled]="controlDisabled"
9075
+ [id]="'control' + layoutNode()?._id"
9076
+ [name]="controlName"
9077
+ [readonly]="options?.readonly ? 'readonly' : null"
9078
+ [title]="lastValidNumber"
9079
+ [type]="layoutNode()?.type === 'range' ? 'range' : 'number'"
9080
+ [value]="controlValue"
9081
+ (input)="updateValue($event)"
9082
+ [attributes]="inputAttributes"
9083
+ [appStopPropagation]="['mousedown', 'touchstart']"
9084
+ >
9085
+ }
9086
+ @if (layoutNode()?.type === 'range') {
9087
+ <span [innerHTML]="controlValue"></span>
9088
+ }
8845
9089
  </div>`,
8846
9090
  standalone: false
8847
9091
  }]
8848
- }], propDecorators: { inputControl: [{
9092
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }], inputControl: [{
8849
9093
  type: ViewChild,
8850
9094
  args: ['inputControl', {}]
8851
9095
  }], div: [{
@@ -8858,10 +9102,10 @@ class SelectFrameworkComponent {
8858
9102
  this.jsf = inject(JsonSchemaFormService);
8859
9103
  this.changeDetectorRef = inject(ChangeDetectorRef);
8860
9104
  this.newComponent = null;
8861
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8862
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8863
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
8864
- this.widgetContainer = viewChild('widgetContainer', ...(ngDevMode ? [{ debugName: "widgetContainer", read: ViewContainerRef }] : [{ read: ViewContainerRef }]));
9105
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
9106
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9107
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9108
+ this.widgetContainer = viewChild('widgetContainer', { ...(ngDevMode ? { debugName: "widgetContainer" } : {}), read: ViewContainerRef });
8865
9109
  }
8866
9110
  ngOnInit() {
8867
9111
  this.updateComponent();
@@ -8885,10 +9129,10 @@ class SelectFrameworkComponent {
8885
9129
  //this.changeDetectorRef.detectChanges();
8886
9130
  }
8887
9131
  }
8888
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8889
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.6", type: SelectFrameworkComponent, isStandalone: false, selector: "select-framework-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
9132
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectFrameworkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9133
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.2", type: SelectFrameworkComponent, isStandalone: false, selector: "select-framework-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
8890
9134
  }
8891
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectFrameworkComponent, decorators: [{
9135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectFrameworkComponent, decorators: [{
8892
9136
  type: Component,
8893
9137
  args: [{
8894
9138
  // tslint:disable-next-line:component-selector
@@ -8896,7 +9140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
8896
9140
  template: `<div #widgetContainer></div>`,
8897
9141
  standalone: false
8898
9142
  }]
8899
- }] });
9143
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }], widgetContainer: [{ type: i0.ViewChild, args: ['widgetContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
8900
9144
 
8901
9145
  class TabsComponent {
8902
9146
  constructor() {
@@ -8904,9 +9148,9 @@ class TabsComponent {
8904
9148
  this.cdr = inject(ChangeDetectorRef);
8905
9149
  this.selectedItem = 0;
8906
9150
  this.showAddTab = true;
8907
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
8908
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
8909
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
9151
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
9152
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9153
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
8910
9154
  }
8911
9155
  ngOnInit() {
8912
9156
  this.options = this.layoutNode().options || {};
@@ -8918,8 +9162,9 @@ class TabsComponent {
8918
9162
  //TODO review/test-introduced to fix dynamic titles not updating
8919
9163
  //when their conditional linked field is destroyed
8920
9164
  //-forces change detection!
8921
- this.jsf.dataChanges.subscribe((val) => {
8922
- this.cdr.detectChanges();
9165
+ //-commented out, causing other issues
9166
+ this.dataChangesSubs = this.jsf.dataChanges.subscribe((val) => {
9167
+ //this.cdr.detectChanges();
8923
9168
  });
8924
9169
  }
8925
9170
  select(index) {
@@ -8948,115 +9193,133 @@ class TabsComponent {
8948
9193
  ngOnDestroy() {
8949
9194
  this.dataChangesSubs?.unsubscribe();
8950
9195
  }
8951
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8952
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: TabsComponent, isStandalone: false, selector: "tabs-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: `
8953
- <ul
8954
- [class]="options?.labelHtmlClass || ''">
8955
- <li *ngFor="let item of layoutNode()?.items; let i = index"
9196
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9197
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: TabsComponent, isStandalone: false, selector: "tabs-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: `
9198
+ <ul
9199
+ [class]="options?.labelHtmlClass || ''">
9200
+ @for (item of layoutNode()?.items; track item; let i = $index) {
9201
+ <li
8956
9202
  [class]="(options?.itemLabelHtmlClass || '') + (selectedItem === i ?
8957
9203
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
8958
9204
  (' ' + options?.style?.unselected))"
8959
- role="presentation"
8960
- data-tabs>
8961
- <a *ngIf="showAddTab || item.type !== '$ref'"
9205
+ role="presentation"
9206
+ data-tabs>
9207
+ @if (showAddTab || item.type !== '$ref') {
9208
+ <a
8962
9209
  [class]="'nav-link' + (selectedItem === i ? (' ' + options?.activeClass + ' ' + options?.style?.selected) :
8963
9210
  (' ' + options?.style?.unselected))"
8964
- (click)="select(i)">
8965
- <input type="radio" [value]="i" *ngIf="options?.tabMode=='oneOfMode'"
8966
- name="tabSelection"
8967
- [(ngModel)]="selectedItem"
8968
- [class]="(options?.widget_radioClass || '')"
8969
- [value]="i"
8970
- (change)="select(i)"
8971
- />
8972
- {{setTabTitle(item, i)}}
8973
- </a>
8974
-
8975
- </li>
8976
- </ul>
8977
-
8978
- <div *ngFor="let layoutItem of layoutNode()?.items; let i = index"
8979
- [class]="(options?.htmlClass || '') + (selectedItem != i?' ngf-hidden':'') ">
8980
- <!--for now the only difference between oneOfMode and the default
8981
- is that oneOfMode uses the *ngIf="selectedItem === i" clause, which automatically
8982
- destroys the tabs that are not rendered while default mode only hide them
8983
- the upshot is that only the active tabs value will be used
8984
- -->
8985
- <ng-container *ngIf="options?.tabMode=='oneOfMode'">
8986
- <select-framework-widget *ngIf="selectedItem === i"
9211
+ (click)="select(i)">
9212
+ @if (options?.tabMode=='oneOfMode') {
9213
+ <input type="radio" [value]="i"
9214
+ name="tabSelection"
9215
+ [(ngModel)]="selectedItem"
9216
+ [class]="(options?.widget_radioClass || '')"
9217
+ [value]="i"
9218
+ (change)="select(i)"
9219
+ />
9220
+ }
9221
+ {{setTabTitle(item, i)}}
9222
+ </a>
9223
+ }
9224
+ </li>
9225
+ }
9226
+ </ul>
9227
+
9228
+ @for (layoutItem of layoutNode()?.items; track layoutItem; let i = $index) {
9229
+ <div
9230
+ [class]="(options?.htmlClass || '') + (selectedItem != i?' ngf-hidden':'') ">
9231
+ <!--for now the only difference between oneOfMode and the default
9232
+ is that oneOfMode uses the *ngIf="selectedItem === i" clause, which automatically
9233
+ destroys the tabs that are not rendered while default mode only hide them
9234
+ the upshot is that only the active tabs value will be used
9235
+ -->
9236
+ @if (options?.tabMode=='oneOfMode') {
9237
+ @if (selectedItem === i) {
9238
+ <select-framework-widget
8987
9239
  [class]="(options?.fieldHtmlClass || '') +
8988
9240
  ' ' + (options?.activeClass || '') +
8989
9241
  ' ' + (options?.style?.selected || '')"
8990
- [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
8991
- [layoutIndex]="(layoutIndex() || []).concat(i)"
8992
- [layoutNode]="layoutItem"></select-framework-widget>
8993
- </ng-container>
8994
- <ng-container *ngIf="options?.tabMode !='oneOfMode'">
8995
- <select-framework-widget
9242
+ [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9243
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9244
+ [layoutNode]="layoutItem"></select-framework-widget>
9245
+ }
9246
+ }
9247
+ @if (options?.tabMode !='oneOfMode') {
9248
+ <select-framework-widget
8996
9249
  [class]="(options?.fieldHtmlClass || '') +
8997
9250
  ' ' + (options?.activeClass || '') +
8998
9251
  ' ' + (options?.style?.selected || '')"
8999
- [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9000
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9001
- [layoutNode]="layoutItem"></select-framework-widget>
9002
- </ng-container>
9003
- </div>`, isInline: true, styles: ["a{cursor:pointer}.ngf-hidden{display:none}\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.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { 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"] }, { kind: "component", type: SelectFrameworkComponent, selector: "select-framework-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
9252
+ [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9253
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9254
+ [layoutNode]="layoutItem"></select-framework-widget>
9255
+ }
9256
+ </div>
9257
+ }`, isInline: true, styles: ["a{cursor:pointer}.ngf-hidden{display:none}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: SelectFrameworkComponent, selector: "select-framework-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
9004
9258
  }
9005
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TabsComponent, decorators: [{
9259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TabsComponent, decorators: [{
9006
9260
  type: Component,
9007
- args: [{ selector: 'tabs-widget', template: `
9008
- <ul
9009
- [class]="options?.labelHtmlClass || ''">
9010
- <li *ngFor="let item of layoutNode()?.items; let i = index"
9261
+ args: [{ selector: 'tabs-widget', template: `
9262
+ <ul
9263
+ [class]="options?.labelHtmlClass || ''">
9264
+ @for (item of layoutNode()?.items; track item; let i = $index) {
9265
+ <li
9011
9266
  [class]="(options?.itemLabelHtmlClass || '') + (selectedItem === i ?
9012
9267
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
9013
9268
  (' ' + options?.style?.unselected))"
9014
- role="presentation"
9015
- data-tabs>
9016
- <a *ngIf="showAddTab || item.type !== '$ref'"
9269
+ role="presentation"
9270
+ data-tabs>
9271
+ @if (showAddTab || item.type !== '$ref') {
9272
+ <a
9017
9273
  [class]="'nav-link' + (selectedItem === i ? (' ' + options?.activeClass + ' ' + options?.style?.selected) :
9018
9274
  (' ' + options?.style?.unselected))"
9019
- (click)="select(i)">
9020
- <input type="radio" [value]="i" *ngIf="options?.tabMode=='oneOfMode'"
9021
- name="tabSelection"
9022
- [(ngModel)]="selectedItem"
9023
- [class]="(options?.widget_radioClass || '')"
9024
- [value]="i"
9025
- (change)="select(i)"
9026
- />
9027
- {{setTabTitle(item, i)}}
9028
- </a>
9029
-
9030
- </li>
9031
- </ul>
9032
-
9033
- <div *ngFor="let layoutItem of layoutNode()?.items; let i = index"
9034
- [class]="(options?.htmlClass || '') + (selectedItem != i?' ngf-hidden':'') ">
9035
- <!--for now the only difference between oneOfMode and the default
9036
- is that oneOfMode uses the *ngIf="selectedItem === i" clause, which automatically
9037
- destroys the tabs that are not rendered while default mode only hide them
9038
- the upshot is that only the active tabs value will be used
9039
- -->
9040
- <ng-container *ngIf="options?.tabMode=='oneOfMode'">
9041
- <select-framework-widget *ngIf="selectedItem === i"
9275
+ (click)="select(i)">
9276
+ @if (options?.tabMode=='oneOfMode') {
9277
+ <input type="radio" [value]="i"
9278
+ name="tabSelection"
9279
+ [(ngModel)]="selectedItem"
9280
+ [class]="(options?.widget_radioClass || '')"
9281
+ [value]="i"
9282
+ (change)="select(i)"
9283
+ />
9284
+ }
9285
+ {{setTabTitle(item, i)}}
9286
+ </a>
9287
+ }
9288
+ </li>
9289
+ }
9290
+ </ul>
9291
+
9292
+ @for (layoutItem of layoutNode()?.items; track layoutItem; let i = $index) {
9293
+ <div
9294
+ [class]="(options?.htmlClass || '') + (selectedItem != i?' ngf-hidden':'') ">
9295
+ <!--for now the only difference between oneOfMode and the default
9296
+ is that oneOfMode uses the *ngIf="selectedItem === i" clause, which automatically
9297
+ destroys the tabs that are not rendered while default mode only hide them
9298
+ the upshot is that only the active tabs value will be used
9299
+ -->
9300
+ @if (options?.tabMode=='oneOfMode') {
9301
+ @if (selectedItem === i) {
9302
+ <select-framework-widget
9042
9303
  [class]="(options?.fieldHtmlClass || '') +
9043
9304
  ' ' + (options?.activeClass || '') +
9044
9305
  ' ' + (options?.style?.selected || '')"
9045
- [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9046
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9047
- [layoutNode]="layoutItem"></select-framework-widget>
9048
- </ng-container>
9049
- <ng-container *ngIf="options?.tabMode !='oneOfMode'">
9050
- <select-framework-widget
9306
+ [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9307
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9308
+ [layoutNode]="layoutItem"></select-framework-widget>
9309
+ }
9310
+ }
9311
+ @if (options?.tabMode !='oneOfMode') {
9312
+ <select-framework-widget
9051
9313
  [class]="(options?.fieldHtmlClass || '') +
9052
9314
  ' ' + (options?.activeClass || '') +
9053
9315
  ' ' + (options?.style?.selected || '')"
9054
- [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9055
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9056
- [layoutNode]="layoutItem"></select-framework-widget>
9057
- </ng-container>
9058
- </div>`, standalone: false, styles: ["a{cursor:pointer}.ngf-hidden{display:none}\n"] }]
9059
- }] });
9316
+ [dataIndex]="layoutNode()?.dataType === 'array' ? (dataIndex() || []).concat(i) : dataIndex()"
9317
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9318
+ [layoutNode]="layoutItem"></select-framework-widget>
9319
+ }
9320
+ </div>
9321
+ }`, standalone: false, styles: ["a{cursor:pointer}.ngf-hidden{display:none}\n"] }]
9322
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
9060
9323
 
9061
9324
  // TODO: Add this control
9062
9325
  class OneOfComponent {
@@ -9064,9 +9327,9 @@ class OneOfComponent {
9064
9327
  this.jsf = inject(JsonSchemaFormService);
9065
9328
  this.controlDisabled = false;
9066
9329
  this.boundControl = false;
9067
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
9068
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
9069
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
9330
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
9331
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9332
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9070
9333
  }
9071
9334
  ngOnInit() {
9072
9335
  this.options = this.layoutNode().options || {};
@@ -9147,14 +9410,14 @@ class OneOfComponent {
9147
9410
  ngOnDestroy() {
9148
9411
  //this.jsf.updateValue(this, null);
9149
9412
  }
9150
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: OneOfComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9151
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: OneOfComponent, isStandalone: false, selector: "one-of-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: `<h4>{{this.options?.description}}</h4>
9413
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: OneOfComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9414
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: OneOfComponent, isStandalone: false, selector: "one-of-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: `<h4>{{this.options?.description}}</h4>
9152
9415
  <tabs-widget #tabs [layoutNode]="layoutNode()"
9153
9416
  [layoutIndex]="layoutIndex()"
9154
9417
  [dataIndex]="dataIndex()" >
9155
9418
  </tabs-widget>`, isInline: true, dependencies: [{ kind: "component", type: TabsComponent, selector: "tabs-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }] }); }
9156
9419
  }
9157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: OneOfComponent, decorators: [{
9420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: OneOfComponent, decorators: [{
9158
9421
  type: Component,
9159
9422
  args: [{
9160
9423
  // tslint:disable-next-line:component-selector
@@ -9166,7 +9429,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
9166
9429
  </tabs-widget>`,
9167
9430
  standalone: false
9168
9431
  }]
9169
- }] });
9432
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
9170
9433
 
9171
9434
  class RadiosComponent {
9172
9435
  constructor() {
@@ -9175,9 +9438,9 @@ class RadiosComponent {
9175
9438
  this.boundControl = false;
9176
9439
  this.layoutOrientation = 'vertical';
9177
9440
  this.radiosList = [];
9178
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
9179
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
9180
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
9441
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
9442
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9443
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9181
9444
  }
9182
9445
  ngOnInit() {
9183
9446
  this.options = this.layoutNode().options || {};
@@ -9195,139 +9458,159 @@ class RadiosComponent {
9195
9458
  ngOnDestroy() {
9196
9459
  this.jsf.updateValue(this, null);
9197
9460
  }
9198
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: RadiosComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9199
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: RadiosComponent, isStandalone: false, selector: "radios-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: `
9200
- <label *ngIf="options?.title"
9201
- [attr.for]="'control' + layoutNode()?._id"
9202
- [class]="options?.labelHtmlClass || ''"
9203
- [style.display]="options?.notitle ? 'none' : ''"
9204
- [innerHTML]="options?.title"></label>
9205
-
9206
- <!-- 'horizontal' = radios-inline or radiobuttons -->
9207
- <div *ngIf="layoutOrientation === 'horizontal'"
9208
- [class]="options?.htmlClass || ''">
9209
- <label *ngFor="let radioItem of radiosList"
9210
- [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9461
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RadiosComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9462
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: RadiosComponent, isStandalone: false, selector: "radios-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: `
9463
+ @if (options?.title) {
9464
+ <label
9465
+ [attr.for]="'control' + layoutNode()?._id"
9466
+ [class]="options?.labelHtmlClass || ''"
9467
+ [style.display]="options?.notitle ? 'none' : ''"
9468
+ [innerHTML]="options?.title"></label>
9469
+ }
9470
+
9471
+ <!-- 'horizontal' = radios-inline or radiobuttons -->
9472
+ @if (layoutOrientation === 'horizontal') {
9473
+ <div
9474
+ [class]="options?.htmlClass || ''">
9475
+ @for (radioItem of radiosList; track radioItem) {
9476
+ <label
9477
+ [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9211
9478
  [class]="(options?.itemLabelHtmlClass || '') +
9212
9479
  ((controlValue + '' === radioItem?.value + '') ?
9213
9480
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
9214
9481
  (' ' + (options?.style?.unselected || '')))">
9215
- <input type="radio"
9216
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9217
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9218
- [attr.required]="options?.required"
9219
- [checked]="radioItem?.value === controlValue"
9220
- [class]="options?.fieldHtmlClass || ''"
9221
- [disabled]="controlDisabled"
9222
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9223
- [name]="controlName"
9224
- [value]="radioItem?.value"
9225
- (change)="updateValue($event)">
9226
- <span [innerHTML]="radioItem?.name"></span>
9227
- </label>
9228
- </div>
9229
-
9230
- <!-- 'vertical' = regular radios -->
9231
- <div *ngIf="layoutOrientation !== 'horizontal'">
9232
- <div *ngFor="let radioItem of radiosList"
9233
- [class]="options?.htmlClass || ''">
9234
- <label
9235
- [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9482
+ <input type="radio"
9483
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9484
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9485
+ [attr.required]="options?.required"
9486
+ [checked]="radioItem?.value === controlValue"
9487
+ [class]="options?.fieldHtmlClass || ''"
9488
+ [disabled]="controlDisabled"
9489
+ [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9490
+ [name]="controlName"
9491
+ [value]="radioItem?.value"
9492
+ (change)="updateValue($event)">
9493
+ <span [innerHTML]="radioItem?.name"></span>
9494
+ </label>
9495
+ }
9496
+ </div>
9497
+ }
9498
+
9499
+ <!-- 'vertical' = regular radios -->
9500
+ @if (layoutOrientation !== 'horizontal') {
9501
+ <div>
9502
+ @for (radioItem of radiosList; track radioItem) {
9503
+ <div
9504
+ [class]="options?.htmlClass || ''">
9505
+ <label
9506
+ [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9236
9507
  [class]="(options?.itemLabelHtmlClass || '') +
9237
9508
  ((controlValue + '' === radioItem?.value + '') ?
9238
9509
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
9239
9510
  (' ' + (options?.style?.unselected || '')))">
9240
- <input type="radio"
9241
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9242
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9243
- [attr.required]="options?.required"
9244
- [checked]="radioItem?.value === controlValue"
9245
- [class]="options?.fieldHtmlClass || ''"
9246
- [disabled]="controlDisabled"
9247
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9248
- [name]="controlName"
9249
- [value]="radioItem?.value"
9250
- (change)="updateValue($event)">
9251
- <span [innerHTML]="radioItem?.name"></span>
9252
- </label>
9253
- </div>
9254
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
9511
+ <input type="radio"
9512
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9513
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9514
+ [attr.required]="options?.required"
9515
+ [checked]="radioItem?.value === controlValue"
9516
+ [class]="options?.fieldHtmlClass || ''"
9517
+ [disabled]="controlDisabled"
9518
+ [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9519
+ [name]="controlName"
9520
+ [value]="radioItem?.value"
9521
+ (change)="updateValue($event)">
9522
+ <span [innerHTML]="radioItem?.name"></span>
9523
+ </label>
9524
+ </div>
9525
+ }
9526
+ </div>
9527
+ }`, isInline: true }); }
9255
9528
  }
9256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: RadiosComponent, decorators: [{
9529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RadiosComponent, decorators: [{
9257
9530
  type: Component,
9258
9531
  args: [{
9259
9532
  // tslint:disable-next-line:component-selector
9260
9533
  selector: 'radios-widget',
9261
- template: `
9262
- <label *ngIf="options?.title"
9263
- [attr.for]="'control' + layoutNode()?._id"
9264
- [class]="options?.labelHtmlClass || ''"
9265
- [style.display]="options?.notitle ? 'none' : ''"
9266
- [innerHTML]="options?.title"></label>
9267
-
9268
- <!-- 'horizontal' = radios-inline or radiobuttons -->
9269
- <div *ngIf="layoutOrientation === 'horizontal'"
9270
- [class]="options?.htmlClass || ''">
9271
- <label *ngFor="let radioItem of radiosList"
9272
- [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9534
+ template: `
9535
+ @if (options?.title) {
9536
+ <label
9537
+ [attr.for]="'control' + layoutNode()?._id"
9538
+ [class]="options?.labelHtmlClass || ''"
9539
+ [style.display]="options?.notitle ? 'none' : ''"
9540
+ [innerHTML]="options?.title"></label>
9541
+ }
9542
+
9543
+ <!-- 'horizontal' = radios-inline or radiobuttons -->
9544
+ @if (layoutOrientation === 'horizontal') {
9545
+ <div
9546
+ [class]="options?.htmlClass || ''">
9547
+ @for (radioItem of radiosList; track radioItem) {
9548
+ <label
9549
+ [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9273
9550
  [class]="(options?.itemLabelHtmlClass || '') +
9274
9551
  ((controlValue + '' === radioItem?.value + '') ?
9275
9552
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
9276
9553
  (' ' + (options?.style?.unselected || '')))">
9277
- <input type="radio"
9278
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9279
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9280
- [attr.required]="options?.required"
9281
- [checked]="radioItem?.value === controlValue"
9282
- [class]="options?.fieldHtmlClass || ''"
9283
- [disabled]="controlDisabled"
9284
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9285
- [name]="controlName"
9286
- [value]="radioItem?.value"
9287
- (change)="updateValue($event)">
9288
- <span [innerHTML]="radioItem?.name"></span>
9289
- </label>
9290
- </div>
9291
-
9292
- <!-- 'vertical' = regular radios -->
9293
- <div *ngIf="layoutOrientation !== 'horizontal'">
9294
- <div *ngFor="let radioItem of radiosList"
9295
- [class]="options?.htmlClass || ''">
9296
- <label
9297
- [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9554
+ <input type="radio"
9555
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9556
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9557
+ [attr.required]="options?.required"
9558
+ [checked]="radioItem?.value === controlValue"
9559
+ [class]="options?.fieldHtmlClass || ''"
9560
+ [disabled]="controlDisabled"
9561
+ [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9562
+ [name]="controlName"
9563
+ [value]="radioItem?.value"
9564
+ (change)="updateValue($event)">
9565
+ <span [innerHTML]="radioItem?.name"></span>
9566
+ </label>
9567
+ }
9568
+ </div>
9569
+ }
9570
+
9571
+ <!-- 'vertical' = regular radios -->
9572
+ @if (layoutOrientation !== 'horizontal') {
9573
+ <div>
9574
+ @for (radioItem of radiosList; track radioItem) {
9575
+ <div
9576
+ [class]="options?.htmlClass || ''">
9577
+ <label
9578
+ [attr.for]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9298
9579
  [class]="(options?.itemLabelHtmlClass || '') +
9299
9580
  ((controlValue + '' === radioItem?.value + '') ?
9300
9581
  (' ' + (options?.activeClass || '') + ' ' + (options?.style?.selected || '')) :
9301
9582
  (' ' + (options?.style?.unselected || '')))">
9302
- <input type="radio"
9303
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9304
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9305
- [attr.required]="options?.required"
9306
- [checked]="radioItem?.value === controlValue"
9307
- [class]="options?.fieldHtmlClass || ''"
9308
- [disabled]="controlDisabled"
9309
- [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9310
- [name]="controlName"
9311
- [value]="radioItem?.value"
9312
- (change)="updateValue($event)">
9313
- <span [innerHTML]="radioItem?.name"></span>
9314
- </label>
9315
- </div>
9316
- </div>`,
9583
+ <input type="radio"
9584
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9585
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
9586
+ [attr.required]="options?.required"
9587
+ [checked]="radioItem?.value === controlValue"
9588
+ [class]="options?.fieldHtmlClass || ''"
9589
+ [disabled]="controlDisabled"
9590
+ [id]="'control' + layoutNode()?._id + '/' + radioItem?.value"
9591
+ [name]="controlName"
9592
+ [value]="radioItem?.value"
9593
+ (change)="updateValue($event)">
9594
+ <span [innerHTML]="radioItem?.name"></span>
9595
+ </label>
9596
+ </div>
9597
+ }
9598
+ </div>
9599
+ }`,
9317
9600
  standalone: false
9318
9601
  }]
9319
- }] });
9602
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
9320
9603
 
9321
9604
  class RootComponent {
9322
9605
  constructor() {
9323
9606
  this.jsf = inject(JsonSchemaFormService);
9324
9607
  this.cdr = inject(ChangeDetectorRef);
9325
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
9326
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
9327
- this.layout = input(undefined, ...(ngDevMode ? [{ debugName: "layout" }] : []));
9328
- this.isOrderable = input(undefined, ...(ngDevMode ? [{ debugName: "isOrderable" }] : []));
9329
- this.isFlexItem = input(false, ...(ngDevMode ? [{ debugName: "isFlexItem" }] : []));
9330
- this.memoizationEnabled = input(true, ...(ngDevMode ? [{ debugName: "memoizationEnabled" }] : []));
9608
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9609
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9610
+ this.layout = input(undefined, { ...(ngDevMode ? { debugName: "layout" } : {}) });
9611
+ this.isOrderable = input(undefined, { ...(ngDevMode ? { debugName: "isOrderable" } : {}) });
9612
+ this.isFlexItem = input(false, { ...(ngDevMode ? { debugName: "isFlexItem" } : {}) });
9613
+ this.memoizationEnabled = input(true, { ...(ngDevMode ? { debugName: "memoizationEnabled" } : {}) });
9331
9614
  /**
9332
9615
  * Predicate function that disallows '$ref' item sorts
9333
9616
  * NB declared as a var instead of a function
@@ -9429,6 +9712,8 @@ class RootComponent {
9429
9712
  return this._getSelectFrameworkInputsRaw(layoutItem, i);
9430
9713
  }
9431
9714
  }
9715
+ //TODO investigate-causing layout issue with layout,for now
9716
+ //removed from template
9432
9717
  trackByFn(index, item) {
9433
9718
  return item._id ?? index;
9434
9719
  }
@@ -9468,123 +9753,129 @@ class RootComponent {
9468
9753
  this._getSelectFrameworkInputsMemoized.cache.clear();
9469
9754
  this.dataChangesSubs?.unsubscribe();
9470
9755
  }
9471
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: RootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9472
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: RootComponent, isStandalone: false, selector: "root-widget", inputs: { dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, isOrderable: { classPropertyName: "isOrderable", publicName: "isOrderable", isSignal: true, isRequired: false, transformFunction: null }, isFlexItem: { classPropertyName: "isFlexItem", publicName: "isFlexItem", isSignal: true, isRequired: false, transformFunction: null }, memoizationEnabled: { classPropertyName: "memoizationEnabled", publicName: "memoizationEnabled", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: `
9473
- <div cdkDropList (cdkDropListDropped)="drop($event)"
9474
- [class.flex-inherit]="true"
9475
- [cdkDropListSortPredicate]="sortPredicate"
9476
- >
9477
- <!-- -for now left out
9478
- cdkDragHandle directive, by itself, does not disable the
9479
- default drag behavior of its parent cdkDrag element.
9480
- You must explicitly disable dragging on the main element
9481
- and re-enable it only when using the handle.
9482
- -->
9483
- <div *ngFor="let layoutItem of layout(); let i = index;trackBy: trackByFn"
9484
- cdkDrag [cdkDragStartDelay]="{touch:1000,mouse:0}"
9485
- [cdkDragDisabled]="!isDraggable(layoutItem)"
9486
- [class.form-flex-item]="isFlexItem()"
9487
- [style.align-self]="(layoutItem.options || {})['align-self']"
9488
- [style.flex-basis]="getFlexAttribute(layoutItem, 'flex-basis')"
9489
- [style.flex-grow]="getFlexAttribute(layoutItem, 'flex-grow')"
9490
- [style.flex-shrink]="getFlexAttribute(layoutItem, 'flex-shrink')"
9491
- [style.order]="(layoutItem.options || {}).order"
9492
- >
9493
-
9494
- <!-- workaround to disbale dragging of input fields -->
9495
- <!--
9496
- <div *ngIf="layoutItem?.dataType !='object'" cdkDragHandle>
9497
- <p>Drag Handle {{layoutItem?.dataType}}</p>
9498
- </div>
9499
- -->
9500
- <!--NB orderable directive is not used but has been left in for now and set to false
9501
- otherwise the compiler won't recognize dataIndex and other dependent attributes
9502
- -->
9503
- <!--
9504
- <div
9505
- [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9506
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9507
- [layoutNode]="layoutItem"
9508
- [orderable]="false"
9509
- >
9510
- <select-framework-widget *ngIf="showWidget(layoutItem)"
9511
- [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9512
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9513
- [layoutNode]="layoutItem"></select-framework-widget>
9514
- </div>
9515
- -->
9516
- <select-framework-widget *ngIf="showWidget(layoutItem)"
9517
- [dataIndex]="getSelectFrameworkInputs(layoutItem,i).dataIndex"
9518
- [layoutIndex]="getSelectFrameworkInputs(layoutItem,i).layoutIndex"
9519
- [layoutNode]="getSelectFrameworkInputs(layoutItem,i).layoutNode">
9520
- </select-framework-widget>
9521
- </div>
9522
- </div>
9523
- `, isInline: true, styles: ["[draggable=true]{transition:all .15s cubic-bezier(.4,0,.2,1)}[draggable=true]:hover{cursor:move;box-shadow:2px 2px 4px #0003;position:relative;z-index:10;margin:-1px 1px 1px -1px}[draggable=true].drag-target-top{box-shadow:0 -2px #000;position:relative;z-index:20}[draggable=true].drag-target-bottom{box-shadow:0 2px #000;position:relative;z-index:20}.flex-inherit{display:inherit;flex-flow:inherit;flex-wrap:inherit;flex-direction:inherit;width:100%}\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$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i2$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: SelectFrameworkComponent, selector: "select-framework-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9756
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9757
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: RootComponent, isStandalone: false, selector: "root-widget", inputs: { dataIndex: { classPropertyName: "dataIndex", publicName: "dataIndex", isSignal: true, isRequired: false, transformFunction: null }, layoutIndex: { classPropertyName: "layoutIndex", publicName: "layoutIndex", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, isOrderable: { classPropertyName: "isOrderable", publicName: "isOrderable", isSignal: true, isRequired: false, transformFunction: null }, isFlexItem: { classPropertyName: "isFlexItem", publicName: "isFlexItem", isSignal: true, isRequired: false, transformFunction: null }, memoizationEnabled: { classPropertyName: "memoizationEnabled", publicName: "memoizationEnabled", isSignal: true, isRequired: false, transformFunction: null } }, usesOnChanges: true, ngImport: i0, template: `
9758
+ <div cdkDropList (cdkDropListDropped)="drop($event)"
9759
+ [class.flex-inherit]="true"
9760
+ [cdkDropListSortPredicate]="sortPredicate"
9761
+ >
9762
+ <!-- -for now left out
9763
+ cdkDragHandle directive, by itself, does not disable the
9764
+ default drag behavior of its parent cdkDrag element.
9765
+ You must explicitly disable dragging on the main element
9766
+ and re-enable it only when using the handle.
9767
+ -->
9768
+ @for (layoutItem of layout(); track layoutItem; let i = $index) {
9769
+ <div
9770
+ cdkDrag [cdkDragStartDelay]="{touch:1000,mouse:0}"
9771
+ [cdkDragDisabled]="!isDraggable(layoutItem)"
9772
+ [class.form-flex-item]="isFlexItem()"
9773
+ [style.align-self]="(layoutItem.options || {})['align-self']"
9774
+ [style.flex-basis]="getFlexAttribute(layoutItem, 'flex-basis')"
9775
+ [style.flex-grow]="getFlexAttribute(layoutItem, 'flex-grow')"
9776
+ [style.flex-shrink]="getFlexAttribute(layoutItem, 'flex-shrink')"
9777
+ [style.order]="(layoutItem.options || {}).order"
9778
+ >
9779
+ <!-- workaround to disbale dragging of input fields -->
9780
+ <!--
9781
+ <div *ngIf="layoutItem?.dataType !='object'" cdkDragHandle>
9782
+ <p>Drag Handle {{layoutItem?.dataType}}</p>
9783
+ </div>
9784
+ -->
9785
+ <!--NB orderable directive is not used but has been left in for now and set to false
9786
+ otherwise the compiler won't recognize dataIndex and other dependent attributes
9787
+ -->
9788
+ <!--
9789
+ <div
9790
+ [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9791
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9792
+ [layoutNode]="layoutItem"
9793
+ [orderable]="false"
9794
+ >
9795
+ <select-framework-widget *ngIf="showWidget(layoutItem)"
9796
+ [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9797
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9798
+ [layoutNode]="layoutItem"></select-framework-widget>
9799
+ </div>
9800
+ -->
9801
+ @if (showWidget(layoutItem)) {
9802
+ <select-framework-widget
9803
+ [dataIndex]="getSelectFrameworkInputs(layoutItem,i).dataIndex"
9804
+ [layoutIndex]="getSelectFrameworkInputs(layoutItem,i).layoutIndex"
9805
+ [layoutNode]="getSelectFrameworkInputs(layoutItem,i).layoutNode">
9806
+ </select-framework-widget>
9807
+ }
9808
+ </div>
9809
+ }
9810
+ </div>
9811
+ `, isInline: true, styles: ["[draggable=true]{transition:all .15s cubic-bezier(.4,0,.2,1)}[draggable=true]:hover{cursor:move;box-shadow:2px 2px 4px #0003;position:relative;z-index:10;margin:-1px 1px 1px -1px}[draggable=true].drag-target-top{box-shadow:0 -2px #000;position:relative;z-index:20}[draggable=true].drag-target-bottom{box-shadow:0 2px #000;position:relative;z-index:20}.flex-inherit{display:inherit;flex-flow:inherit;flex-wrap:inherit;flex-direction:inherit;width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1$1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: SelectFrameworkComponent, selector: "select-framework-widget", inputs: ["layoutNode", "layoutIndex", "dataIndex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
9524
9812
  }
9525
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: RootComponent, decorators: [{
9813
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: RootComponent, decorators: [{
9526
9814
  type: Component,
9527
- args: [{ selector: 'root-widget', template: `
9528
- <div cdkDropList (cdkDropListDropped)="drop($event)"
9529
- [class.flex-inherit]="true"
9530
- [cdkDropListSortPredicate]="sortPredicate"
9531
- >
9532
- <!-- -for now left out
9533
- cdkDragHandle directive, by itself, does not disable the
9534
- default drag behavior of its parent cdkDrag element.
9535
- You must explicitly disable dragging on the main element
9536
- and re-enable it only when using the handle.
9537
- -->
9538
- <div *ngFor="let layoutItem of layout(); let i = index;trackBy: trackByFn"
9539
- cdkDrag [cdkDragStartDelay]="{touch:1000,mouse:0}"
9540
- [cdkDragDisabled]="!isDraggable(layoutItem)"
9541
- [class.form-flex-item]="isFlexItem()"
9542
- [style.align-self]="(layoutItem.options || {})['align-self']"
9543
- [style.flex-basis]="getFlexAttribute(layoutItem, 'flex-basis')"
9544
- [style.flex-grow]="getFlexAttribute(layoutItem, 'flex-grow')"
9545
- [style.flex-shrink]="getFlexAttribute(layoutItem, 'flex-shrink')"
9546
- [style.order]="(layoutItem.options || {}).order"
9547
- >
9548
-
9549
- <!-- workaround to disbale dragging of input fields -->
9550
- <!--
9551
- <div *ngIf="layoutItem?.dataType !='object'" cdkDragHandle>
9552
- <p>Drag Handle {{layoutItem?.dataType}}</p>
9553
- </div>
9554
- -->
9555
- <!--NB orderable directive is not used but has been left in for now and set to false
9556
- otherwise the compiler won't recognize dataIndex and other dependent attributes
9557
- -->
9558
- <!--
9559
- <div
9560
- [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9561
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9562
- [layoutNode]="layoutItem"
9563
- [orderable]="false"
9564
- >
9565
- <select-framework-widget *ngIf="showWidget(layoutItem)"
9566
- [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9567
- [layoutIndex]="(layoutIndex() || []).concat(i)"
9568
- [layoutNode]="layoutItem"></select-framework-widget>
9569
- </div>
9570
- -->
9571
- <select-framework-widget *ngIf="showWidget(layoutItem)"
9572
- [dataIndex]="getSelectFrameworkInputs(layoutItem,i).dataIndex"
9573
- [layoutIndex]="getSelectFrameworkInputs(layoutItem,i).layoutIndex"
9574
- [layoutNode]="getSelectFrameworkInputs(layoutItem,i).layoutNode">
9575
- </select-framework-widget>
9576
- </div>
9577
- </div>
9815
+ args: [{ selector: 'root-widget', template: `
9816
+ <div cdkDropList (cdkDropListDropped)="drop($event)"
9817
+ [class.flex-inherit]="true"
9818
+ [cdkDropListSortPredicate]="sortPredicate"
9819
+ >
9820
+ <!-- -for now left out
9821
+ cdkDragHandle directive, by itself, does not disable the
9822
+ default drag behavior of its parent cdkDrag element.
9823
+ You must explicitly disable dragging on the main element
9824
+ and re-enable it only when using the handle.
9825
+ -->
9826
+ @for (layoutItem of layout(); track layoutItem; let i = $index) {
9827
+ <div
9828
+ cdkDrag [cdkDragStartDelay]="{touch:1000,mouse:0}"
9829
+ [cdkDragDisabled]="!isDraggable(layoutItem)"
9830
+ [class.form-flex-item]="isFlexItem()"
9831
+ [style.align-self]="(layoutItem.options || {})['align-self']"
9832
+ [style.flex-basis]="getFlexAttribute(layoutItem, 'flex-basis')"
9833
+ [style.flex-grow]="getFlexAttribute(layoutItem, 'flex-grow')"
9834
+ [style.flex-shrink]="getFlexAttribute(layoutItem, 'flex-shrink')"
9835
+ [style.order]="(layoutItem.options || {}).order"
9836
+ >
9837
+ <!-- workaround to disbale dragging of input fields -->
9838
+ <!--
9839
+ <div *ngIf="layoutItem?.dataType !='object'" cdkDragHandle>
9840
+ <p>Drag Handle {{layoutItem?.dataType}}</p>
9841
+ </div>
9842
+ -->
9843
+ <!--NB orderable directive is not used but has been left in for now and set to false
9844
+ otherwise the compiler won't recognize dataIndex and other dependent attributes
9845
+ -->
9846
+ <!--
9847
+ <div
9848
+ [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9849
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9850
+ [layoutNode]="layoutItem"
9851
+ [orderable]="false"
9852
+ >
9853
+ <select-framework-widget *ngIf="showWidget(layoutItem)"
9854
+ [dataIndex]="layoutItem?.arrayItem ? (dataIndex() || []).concat(i) : (dataIndex() || [])"
9855
+ [layoutIndex]="(layoutIndex() || []).concat(i)"
9856
+ [layoutNode]="layoutItem"></select-framework-widget>
9857
+ </div>
9858
+ -->
9859
+ @if (showWidget(layoutItem)) {
9860
+ <select-framework-widget
9861
+ [dataIndex]="getSelectFrameworkInputs(layoutItem,i).dataIndex"
9862
+ [layoutIndex]="getSelectFrameworkInputs(layoutItem,i).layoutIndex"
9863
+ [layoutNode]="getSelectFrameworkInputs(layoutItem,i).layoutNode">
9864
+ </select-framework-widget>
9865
+ }
9866
+ </div>
9867
+ }
9868
+ </div>
9578
9869
  `, changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, styles: ["[draggable=true]{transition:all .15s cubic-bezier(.4,0,.2,1)}[draggable=true]:hover{cursor:move;box-shadow:2px 2px 4px #0003;position:relative;z-index:10;margin:-1px 1px 1px -1px}[draggable=true].drag-target-top{box-shadow:0 -2px #000;position:relative;z-index:20}[draggable=true].drag-target-bottom{box-shadow:0 2px #000;position:relative;z-index:20}.flex-inherit{display:inherit;flex-flow:inherit;flex-wrap:inherit;flex-direction:inherit;width:100%}\n"] }]
9579
- }] });
9870
+ }], propDecorators: { dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], isOrderable: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOrderable", required: false }] }], isFlexItem: [{ type: i0.Input, args: [{ isSignal: true, alias: "isFlexItem", required: false }] }], memoizationEnabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "memoizationEnabled", required: false }] }] } });
9580
9871
 
9581
9872
  class SectionComponent {
9582
9873
  constructor() {
9583
9874
  this.jsf = inject(JsonSchemaFormService);
9584
9875
  this.expanded = true;
9585
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
9586
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
9587
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
9876
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
9877
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
9878
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9588
9879
  }
9589
9880
  get sectionTitle() {
9590
9881
  return this.options.notitle ? null : this.jsf.setItemTitle(this);
@@ -9639,135 +9930,167 @@ class SectionComponent {
9639
9930
  return this.options[attribute];
9640
9931
  }
9641
9932
  }
9642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: SectionComponent, isStandalone: false, selector: "section-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: `
9644
- <div *ngIf="containerType === 'div'"
9645
- [class]="options?.htmlClass || ''"
9646
- [class.expandable]="options?.expandable && !expanded"
9647
- [class.expanded]="options?.expandable && expanded">
9648
- <label *ngIf="sectionTitle"
9649
- class="legend"
9650
- [class]="options?.labelHtmlClass || ''"
9651
- [innerHTML]="sectionTitle"
9652
- (click)="toggleExpanded()"></label>
9653
- <root-widget
9654
- [dataIndex]="dataIndex()"
9655
- [layout]="layoutNode().items"
9656
- [layoutIndex]="layoutIndex()"
9657
- [isFlexItem]="getFlexAttribute('is-flex')"
9658
- [isOrderable]="options?.orderable"
9659
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9660
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9661
- [style.align-content]="getFlexAttribute('align-content')"
9662
- [style.align-items]="getFlexAttribute('align-items')"
9663
- [style.display]="!expanded?'none':getFlexAttribute('display')"
9664
- [style.flex-direction]="getFlexAttribute('flex-direction')"
9665
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9666
- [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
9667
- </div>
9668
- <fieldset *ngIf="containerType === 'fieldset'"
9669
- [class]="options?.htmlClass || ''"
9670
- [class.expandable]="options?.expandable && !expanded"
9671
- [class.expanded]="options?.expandable && expanded"
9672
- [disabled]="options?.readonly">
9673
- <legend *ngIf="sectionTitle"
9674
- class="legend"
9675
- [class]="options?.labelHtmlClass || ''"
9676
- [innerHTML]="sectionTitle"
9677
- (click)="toggleExpanded()"></legend>
9678
- <div *ngIf="options?.messageLocation !== 'bottom'">
9679
- <p *ngIf="options?.description"
9680
- class="help-block"
9681
- [class]="options?.labelHelpBlockClass || ''"
9682
- [innerHTML]="options?.description"></p>
9683
- </div>
9684
- <root-widget
9685
- [dataIndex]="dataIndex()"
9686
- [layout]="layoutNode().items"
9687
- [layoutIndex]="layoutIndex()"
9688
- [isFlexItem]="getFlexAttribute('is-flex')"
9689
- [isOrderable]="options?.orderable"
9690
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9691
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9692
- [style.align-content]="getFlexAttribute('align-content')"
9693
- [style.align-items]="getFlexAttribute('align-items')"
9694
- [style.display]="!expanded?'none':getFlexAttribute('display')"
9695
- [style.flex-direction]="getFlexAttribute('flex-direction')"
9696
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9697
- [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
9698
- <div *ngIf="options?.messageLocation === 'bottom'">
9699
- <p *ngIf="options?.description"
9700
- class="help-block"
9701
- [class]="options?.labelHelpBlockClass || ''"
9702
- [innerHTML]="options?.description"></p>
9703
- </div>
9704
- </fieldset>`, isInline: true, styles: [".legend{font-weight:700}.expandable>legend:before,.expandable>label:before{content:\"\\25b6\";padding-right:.3em;font-family:auto}.expanded>legend:before,.expanded>label:before{content:\"\\25bc\";padding-right:.2em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem", "memoizationEnabled"] }] }); }
9933
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9934
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: SectionComponent, isStandalone: false, selector: "section-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: `
9935
+ @if (containerType === 'div') {
9936
+ <div
9937
+ [class]="options?.htmlClass || ''"
9938
+ [class.expandable]="options?.expandable && !expanded"
9939
+ [class.expanded]="options?.expandable && expanded">
9940
+ @if (sectionTitle) {
9941
+ <label
9942
+ class="legend"
9943
+ [class]="options?.labelHtmlClass || ''"
9944
+ [innerHTML]="sectionTitle"
9945
+ (click)="toggleExpanded()"></label>
9946
+ }
9947
+ <root-widget
9948
+ [dataIndex]="dataIndex()"
9949
+ [layout]="layoutNode().items"
9950
+ [layoutIndex]="layoutIndex()"
9951
+ [isFlexItem]="getFlexAttribute('is-flex')"
9952
+ [isOrderable]="options?.orderable"
9953
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9954
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9955
+ [style.align-content]="getFlexAttribute('align-content')"
9956
+ [style.align-items]="getFlexAttribute('align-items')"
9957
+ [style.display]="!expanded?'none':getFlexAttribute('display')"
9958
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
9959
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9960
+ [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
9961
+ </div>
9962
+ }
9963
+ @if (containerType === 'fieldset') {
9964
+ <fieldset
9965
+ [class]="options?.htmlClass || ''"
9966
+ [class.expandable]="options?.expandable && !expanded"
9967
+ [class.expanded]="options?.expandable && expanded"
9968
+ [disabled]="options?.readonly">
9969
+ @if (sectionTitle) {
9970
+ <legend
9971
+ class="legend"
9972
+ [class]="options?.labelHtmlClass || ''"
9973
+ [innerHTML]="sectionTitle"
9974
+ (click)="toggleExpanded()"></legend>
9975
+ }
9976
+ @if (options?.messageLocation !== 'bottom') {
9977
+ <div>
9978
+ @if (options?.description) {
9979
+ <p
9980
+ class="help-block"
9981
+ [class]="options?.labelHelpBlockClass || ''"
9982
+ [innerHTML]="options?.description"></p>
9983
+ }
9984
+ </div>
9985
+ }
9986
+ <root-widget
9987
+ [dataIndex]="dataIndex()"
9988
+ [layout]="layoutNode().items"
9989
+ [layoutIndex]="layoutIndex()"
9990
+ [isFlexItem]="getFlexAttribute('is-flex')"
9991
+ [isOrderable]="options?.orderable"
9992
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9993
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9994
+ [style.align-content]="getFlexAttribute('align-content')"
9995
+ [style.align-items]="getFlexAttribute('align-items')"
9996
+ [style.display]="!expanded?'none':getFlexAttribute('display')"
9997
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
9998
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9999
+ [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
10000
+ @if (options?.messageLocation === 'bottom') {
10001
+ <div>
10002
+ @if (options?.description) {
10003
+ <p
10004
+ class="help-block"
10005
+ [class]="options?.labelHelpBlockClass || ''"
10006
+ [innerHTML]="options?.description"></p>
10007
+ }
10008
+ </div>
10009
+ }
10010
+ </fieldset>
10011
+ }`, isInline: true, styles: [".legend{font-weight:700}.expandable>legend:before,.expandable>label:before{content:\"\\25b6\";padding-right:.3em;font-family:auto}.expanded>legend:before,.expanded>label:before{content:\"\\25bc\";padding-right:.2em}\n"], dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem", "memoizationEnabled"] }] }); }
9705
10012
  }
9706
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SectionComponent, decorators: [{
10013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SectionComponent, decorators: [{
9707
10014
  type: Component,
9708
- args: [{ selector: 'section-widget', template: `
9709
- <div *ngIf="containerType === 'div'"
9710
- [class]="options?.htmlClass || ''"
9711
- [class.expandable]="options?.expandable && !expanded"
9712
- [class.expanded]="options?.expandable && expanded">
9713
- <label *ngIf="sectionTitle"
9714
- class="legend"
9715
- [class]="options?.labelHtmlClass || ''"
9716
- [innerHTML]="sectionTitle"
9717
- (click)="toggleExpanded()"></label>
9718
- <root-widget
9719
- [dataIndex]="dataIndex()"
9720
- [layout]="layoutNode().items"
9721
- [layoutIndex]="layoutIndex()"
9722
- [isFlexItem]="getFlexAttribute('is-flex')"
9723
- [isOrderable]="options?.orderable"
9724
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9725
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9726
- [style.align-content]="getFlexAttribute('align-content')"
9727
- [style.align-items]="getFlexAttribute('align-items')"
9728
- [style.display]="!expanded?'none':getFlexAttribute('display')"
9729
- [style.flex-direction]="getFlexAttribute('flex-direction')"
9730
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9731
- [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
9732
- </div>
9733
- <fieldset *ngIf="containerType === 'fieldset'"
9734
- [class]="options?.htmlClass || ''"
9735
- [class.expandable]="options?.expandable && !expanded"
9736
- [class.expanded]="options?.expandable && expanded"
9737
- [disabled]="options?.readonly">
9738
- <legend *ngIf="sectionTitle"
9739
- class="legend"
9740
- [class]="options?.labelHtmlClass || ''"
9741
- [innerHTML]="sectionTitle"
9742
- (click)="toggleExpanded()"></legend>
9743
- <div *ngIf="options?.messageLocation !== 'bottom'">
9744
- <p *ngIf="options?.description"
9745
- class="help-block"
9746
- [class]="options?.labelHelpBlockClass || ''"
9747
- [innerHTML]="options?.description"></p>
9748
- </div>
9749
- <root-widget
9750
- [dataIndex]="dataIndex()"
9751
- [layout]="layoutNode().items"
9752
- [layoutIndex]="layoutIndex()"
9753
- [isFlexItem]="getFlexAttribute('is-flex')"
9754
- [isOrderable]="options?.orderable"
9755
- [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
9756
- [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
9757
- [style.align-content]="getFlexAttribute('align-content')"
9758
- [style.align-items]="getFlexAttribute('align-items')"
9759
- [style.display]="!expanded?'none':getFlexAttribute('display')"
9760
- [style.flex-direction]="getFlexAttribute('flex-direction')"
9761
- [style.flex-wrap]="getFlexAttribute('flex-wrap')"
9762
- [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
9763
- <div *ngIf="options?.messageLocation === 'bottom'">
9764
- <p *ngIf="options?.description"
9765
- class="help-block"
9766
- [class]="options?.labelHelpBlockClass || ''"
9767
- [innerHTML]="options?.description"></p>
9768
- </div>
9769
- </fieldset>`, standalone: false, styles: [".legend{font-weight:700}.expandable>legend:before,.expandable>label:before{content:\"\\25b6\";padding-right:.3em;font-family:auto}.expanded>legend:before,.expanded>label:before{content:\"\\25bc\";padding-right:.2em}\n"] }]
9770
- }] });
10015
+ args: [{ selector: 'section-widget', template: `
10016
+ @if (containerType === 'div') {
10017
+ <div
10018
+ [class]="options?.htmlClass || ''"
10019
+ [class.expandable]="options?.expandable && !expanded"
10020
+ [class.expanded]="options?.expandable && expanded">
10021
+ @if (sectionTitle) {
10022
+ <label
10023
+ class="legend"
10024
+ [class]="options?.labelHtmlClass || ''"
10025
+ [innerHTML]="sectionTitle"
10026
+ (click)="toggleExpanded()"></label>
10027
+ }
10028
+ <root-widget
10029
+ [dataIndex]="dataIndex()"
10030
+ [layout]="layoutNode().items"
10031
+ [layoutIndex]="layoutIndex()"
10032
+ [isFlexItem]="getFlexAttribute('is-flex')"
10033
+ [isOrderable]="options?.orderable"
10034
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
10035
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
10036
+ [style.align-content]="getFlexAttribute('align-content')"
10037
+ [style.align-items]="getFlexAttribute('align-items')"
10038
+ [style.display]="!expanded?'none':getFlexAttribute('display')"
10039
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
10040
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
10041
+ [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
10042
+ </div>
10043
+ }
10044
+ @if (containerType === 'fieldset') {
10045
+ <fieldset
10046
+ [class]="options?.htmlClass || ''"
10047
+ [class.expandable]="options?.expandable && !expanded"
10048
+ [class.expanded]="options?.expandable && expanded"
10049
+ [disabled]="options?.readonly">
10050
+ @if (sectionTitle) {
10051
+ <legend
10052
+ class="legend"
10053
+ [class]="options?.labelHtmlClass || ''"
10054
+ [innerHTML]="sectionTitle"
10055
+ (click)="toggleExpanded()"></legend>
10056
+ }
10057
+ @if (options?.messageLocation !== 'bottom') {
10058
+ <div>
10059
+ @if (options?.description) {
10060
+ <p
10061
+ class="help-block"
10062
+ [class]="options?.labelHelpBlockClass || ''"
10063
+ [innerHTML]="options?.description"></p>
10064
+ }
10065
+ </div>
10066
+ }
10067
+ <root-widget
10068
+ [dataIndex]="dataIndex()"
10069
+ [layout]="layoutNode().items"
10070
+ [layoutIndex]="layoutIndex()"
10071
+ [isFlexItem]="getFlexAttribute('is-flex')"
10072
+ [isOrderable]="options?.orderable"
10073
+ [class.form-flex-column]="getFlexAttribute('flex-direction') === 'column'"
10074
+ [class.form-flex-row]="getFlexAttribute('flex-direction') === 'row'"
10075
+ [style.align-content]="getFlexAttribute('align-content')"
10076
+ [style.align-items]="getFlexAttribute('align-items')"
10077
+ [style.display]="!expanded?'none':getFlexAttribute('display')"
10078
+ [style.flex-direction]="getFlexAttribute('flex-direction')"
10079
+ [style.flex-wrap]="getFlexAttribute('flex-wrap')"
10080
+ [style.justify-content]="getFlexAttribute('justify-content')"></root-widget>
10081
+ @if (options?.messageLocation === 'bottom') {
10082
+ <div>
10083
+ @if (options?.description) {
10084
+ <p
10085
+ class="help-block"
10086
+ [class]="options?.labelHelpBlockClass || ''"
10087
+ [innerHTML]="options?.description"></p>
10088
+ }
10089
+ </div>
10090
+ }
10091
+ </fieldset>
10092
+ }`, standalone: false, styles: [".legend{font-weight:700}.expandable>legend:before,.expandable>label:before{content:\"\\25b6\";padding-right:.3em;font-family:auto}.expanded>legend:before,.expanded>label:before{content:\"\\25bc\";padding-right:.2em}\n"] }]
10093
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
9771
10094
 
9772
10095
  class SelectComponent {
9773
10096
  constructor() {
@@ -9777,9 +10100,9 @@ class SelectComponent {
9777
10100
  this.selectList = [];
9778
10101
  this.selectListFlatGroup = [];
9779
10102
  this.isArray = isArray;
9780
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
9781
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
9782
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
10103
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
10104
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
10105
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
9783
10106
  }
9784
10107
  ngOnInit() {
9785
10108
  this.options = this.layoutNode().options || {};
@@ -9819,191 +10142,243 @@ class SelectComponent {
9819
10142
  this.formControl.reset(nullVal);
9820
10143
  this.controlValue = null;
9821
10144
  }
9822
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
9823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: SelectComponent, isStandalone: false, selector: "select-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: `
9824
- <div
9825
- [class]="options?.htmlClass || ''">
9826
- <label *ngIf="options?.title"
9827
- [attr.for]="'control' + layoutNode()?._id"
9828
- [class]="options?.labelHtmlClass || ''"
9829
- [style.display]="options?.notitle ? 'none' : ''"
9830
- [innerHTML]="options?.title"></label>
9831
- <select *ngIf="boundControl && !options?.multiple"
9832
- [formControl]="formControl"
9833
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9834
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9835
- [attr.required]="options?.required"
9836
- [class]="options?.fieldHtmlClass || ''"
9837
- [id]="'control' + layoutNode()?._id"
9838
- [name]="controlName">
9839
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9840
- <option *ngIf="!isArray(selectItem?.items)"
9841
- [ngValue]="selectItem?.value">
9842
- <span [innerHTML]="selectItem?.name"></span>
9843
- </option>
9844
- <optgroup *ngIf="isArray(selectItem?.items)"
9845
- [label]="selectItem?.group">
9846
- <option *ngFor="let subItem of selectItem.items"
9847
- [ngValue]="subItem?.value">
9848
- <span [innerHTML]="subItem?.name"></span>
9849
- </option>
9850
- </optgroup>
9851
- </ng-template>
9852
- </select>
9853
- <select *ngIf="!boundControl"
9854
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9855
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9856
- [attr.required]="options?.required"
9857
- [class]="options?.fieldHtmlClass || ''"
9858
- [disabled]="controlDisabled"
9859
- [id]="'control' + layoutNode()?._id"
9860
- [name]="controlName"
9861
- (change)="updateValue($event)">
9862
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9863
- <option *ngIf="!isArray(selectItem?.items)"
9864
- [selected]="selectItem?.value === controlValue"
9865
- [ngValue]="selectItem?.value">
9866
- <span [innerHTML]="selectItem?.name"></span>
9867
- </option>
9868
- <optgroup *ngIf="isArray(selectItem?.items)"
9869
- [label]="selectItem?.group">
9870
- <option *ngFor="let subItem of selectItem.items"
9871
- [attr.selected]="subItem?.value === controlValue"
9872
- [ngValue]="subItem?.value">
9873
- <span [innerHTML]="subItem?.name"></span>
9874
- </option>
9875
- </optgroup>
9876
- </ng-template>
9877
- </select>
9878
- <select *ngIf="boundControl && options?.multiple"
9879
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9880
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9881
- [attr.required]="options?.required"
9882
- [class]="options?.fieldHtmlClass || ''"
9883
- [disabled]="controlDisabled"
9884
- [id]="'control' + layoutNode()?._id"
9885
- [multiple]="options?.multiple"
9886
- [name]="controlName"
9887
- [(ngModel)]="controlValue"
9888
- (change)="updateValue($event)">
9889
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9890
- <option *ngIf="!isArray(selectItem?.items)"
9891
- [selected]="selectItem?.value === controlValue"
9892
- [ngValue]="selectItem?.value">
9893
- <span [innerHTML]="selectItem?.name"></span>
9894
- </option>
9895
- <optgroup *ngIf="isArray(selectItem?.items)"
9896
- [label]="selectItem?.group">
9897
- <option *ngFor="let subItem of selectItem.items"
9898
- [attr.selected]="subItem?.value === controlValue"
9899
- [ngValue]="subItem?.value">
9900
- <span [innerHTML]="subItem?.name"></span>
9901
- </option>
9902
- </optgroup>
9903
- </ng-template>
9904
- </select>
9905
- </div>`, isInline: true, 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { 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"] }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
10145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10146
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: SelectComponent, isStandalone: false, selector: "select-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: `
10147
+ <div
10148
+ [class]="options?.htmlClass || ''">
10149
+ @if (options?.title) {
10150
+ <label
10151
+ [attr.for]="'control' + layoutNode()?._id"
10152
+ [class]="options?.labelHtmlClass || ''"
10153
+ [style.display]="options?.notitle ? 'none' : ''"
10154
+ [innerHTML]="options?.title"></label>
10155
+ }
10156
+ @if (boundControl && !options?.multiple) {
10157
+ <select
10158
+ [formControl]="formControl"
10159
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10160
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10161
+ [attr.required]="options?.required"
10162
+ [class]="options?.fieldHtmlClass || ''"
10163
+ [id]="'control' + layoutNode()?._id"
10164
+ [name]="controlName">
10165
+ @for (selectItem of selectList; track selectItem) {
10166
+ @if (!isArray(selectItem?.items)) {
10167
+ <option
10168
+ [ngValue]="selectItem?.value">
10169
+ <span [innerHTML]="selectItem?.name"></span>
10170
+ </option>
10171
+ }
10172
+ @if (isArray(selectItem?.items)) {
10173
+ <optgroup
10174
+ [label]="selectItem?.group">
10175
+ @for (subItem of selectItem.items; track subItem) {
10176
+ <option
10177
+ [ngValue]="subItem?.value">
10178
+ <span [innerHTML]="subItem?.name"></span>
10179
+ </option>
10180
+ }
10181
+ </optgroup>
10182
+ }
10183
+ }
10184
+ </select>
10185
+ }
10186
+ @if (!boundControl) {
10187
+ <select
10188
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10189
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10190
+ [attr.required]="options?.required"
10191
+ [class]="options?.fieldHtmlClass || ''"
10192
+ [disabled]="controlDisabled"
10193
+ [id]="'control' + layoutNode()?._id"
10194
+ [name]="controlName"
10195
+ (change)="updateValue($event)">
10196
+ @for (selectItem of selectList; track selectItem) {
10197
+ @if (!isArray(selectItem?.items)) {
10198
+ <option
10199
+ [selected]="selectItem?.value === controlValue"
10200
+ [ngValue]="selectItem?.value">
10201
+ <span [innerHTML]="selectItem?.name"></span>
10202
+ </option>
10203
+ }
10204
+ @if (isArray(selectItem?.items)) {
10205
+ <optgroup
10206
+ [label]="selectItem?.group">
10207
+ @for (subItem of selectItem.items; track subItem) {
10208
+ <option
10209
+ [attr.selected]="subItem?.value === controlValue"
10210
+ [ngValue]="subItem?.value">
10211
+ <span [innerHTML]="subItem?.name"></span>
10212
+ </option>
10213
+ }
10214
+ </optgroup>
10215
+ }
10216
+ }
10217
+ </select>
10218
+ }
10219
+ @if (boundControl && options?.multiple) {
10220
+ <select
10221
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10222
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10223
+ [attr.required]="options?.required"
10224
+ [class]="options?.fieldHtmlClass || ''"
10225
+ [disabled]="controlDisabled"
10226
+ [id]="'control' + layoutNode()?._id"
10227
+ [multiple]="options?.multiple"
10228
+ [name]="controlName"
10229
+ [(ngModel)]="controlValue"
10230
+ (change)="updateValue($event)">
10231
+ @for (selectItem of selectList; track selectItem) {
10232
+ @if (!isArray(selectItem?.items)) {
10233
+ <option
10234
+ [selected]="selectItem?.value === controlValue"
10235
+ [ngValue]="selectItem?.value">
10236
+ <span [innerHTML]="selectItem?.name"></span>
10237
+ </option>
10238
+ }
10239
+ @if (isArray(selectItem?.items)) {
10240
+ <optgroup
10241
+ [label]="selectItem?.group">
10242
+ @for (subItem of selectItem.items; track subItem) {
10243
+ <option
10244
+ [attr.selected]="subItem?.value === controlValue"
10245
+ [ngValue]="subItem?.value">
10246
+ <span [innerHTML]="subItem?.name"></span>
10247
+ </option>
10248
+ }
10249
+ </optgroup>
10250
+ }
10251
+ }
10252
+ </select>
10253
+ }
10254
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
9906
10255
  }
9907
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectComponent, decorators: [{
10256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectComponent, decorators: [{
9908
10257
  type: Component,
9909
10258
  args: [{
9910
10259
  // tslint:disable-next-line:component-selector
9911
10260
  selector: 'select-widget',
9912
- template: `
9913
- <div
9914
- [class]="options?.htmlClass || ''">
9915
- <label *ngIf="options?.title"
9916
- [attr.for]="'control' + layoutNode()?._id"
9917
- [class]="options?.labelHtmlClass || ''"
9918
- [style.display]="options?.notitle ? 'none' : ''"
9919
- [innerHTML]="options?.title"></label>
9920
- <select *ngIf="boundControl && !options?.multiple"
9921
- [formControl]="formControl"
9922
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9923
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9924
- [attr.required]="options?.required"
9925
- [class]="options?.fieldHtmlClass || ''"
9926
- [id]="'control' + layoutNode()?._id"
9927
- [name]="controlName">
9928
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9929
- <option *ngIf="!isArray(selectItem?.items)"
9930
- [ngValue]="selectItem?.value">
9931
- <span [innerHTML]="selectItem?.name"></span>
9932
- </option>
9933
- <optgroup *ngIf="isArray(selectItem?.items)"
9934
- [label]="selectItem?.group">
9935
- <option *ngFor="let subItem of selectItem.items"
9936
- [ngValue]="subItem?.value">
9937
- <span [innerHTML]="subItem?.name"></span>
9938
- </option>
9939
- </optgroup>
9940
- </ng-template>
9941
- </select>
9942
- <select *ngIf="!boundControl"
9943
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9944
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9945
- [attr.required]="options?.required"
9946
- [class]="options?.fieldHtmlClass || ''"
9947
- [disabled]="controlDisabled"
9948
- [id]="'control' + layoutNode()?._id"
9949
- [name]="controlName"
9950
- (change)="updateValue($event)">
9951
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9952
- <option *ngIf="!isArray(selectItem?.items)"
9953
- [selected]="selectItem?.value === controlValue"
9954
- [ngValue]="selectItem?.value">
9955
- <span [innerHTML]="selectItem?.name"></span>
9956
- </option>
9957
- <optgroup *ngIf="isArray(selectItem?.items)"
9958
- [label]="selectItem?.group">
9959
- <option *ngFor="let subItem of selectItem.items"
9960
- [attr.selected]="subItem?.value === controlValue"
9961
- [ngValue]="subItem?.value">
9962
- <span [innerHTML]="subItem?.name"></span>
9963
- </option>
9964
- </optgroup>
9965
- </ng-template>
9966
- </select>
9967
- <select *ngIf="boundControl && options?.multiple"
9968
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
9969
- [attr.readonly]="options?.readonly ? 'readonly' : null"
9970
- [attr.required]="options?.required"
9971
- [class]="options?.fieldHtmlClass || ''"
9972
- [disabled]="controlDisabled"
9973
- [id]="'control' + layoutNode()?._id"
9974
- [multiple]="options?.multiple"
9975
- [name]="controlName"
9976
- [(ngModel)]="controlValue"
9977
- (change)="updateValue($event)">
9978
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
9979
- <option *ngIf="!isArray(selectItem?.items)"
9980
- [selected]="selectItem?.value === controlValue"
9981
- [ngValue]="selectItem?.value">
9982
- <span [innerHTML]="selectItem?.name"></span>
9983
- </option>
9984
- <optgroup *ngIf="isArray(selectItem?.items)"
9985
- [label]="selectItem?.group">
9986
- <option *ngFor="let subItem of selectItem.items"
9987
- [attr.selected]="subItem?.value === controlValue"
9988
- [ngValue]="subItem?.value">
9989
- <span [innerHTML]="subItem?.name"></span>
9990
- </option>
9991
- </optgroup>
9992
- </ng-template>
9993
- </select>
10261
+ template: `
10262
+ <div
10263
+ [class]="options?.htmlClass || ''">
10264
+ @if (options?.title) {
10265
+ <label
10266
+ [attr.for]="'control' + layoutNode()?._id"
10267
+ [class]="options?.labelHtmlClass || ''"
10268
+ [style.display]="options?.notitle ? 'none' : ''"
10269
+ [innerHTML]="options?.title"></label>
10270
+ }
10271
+ @if (boundControl && !options?.multiple) {
10272
+ <select
10273
+ [formControl]="formControl"
10274
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10275
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10276
+ [attr.required]="options?.required"
10277
+ [class]="options?.fieldHtmlClass || ''"
10278
+ [id]="'control' + layoutNode()?._id"
10279
+ [name]="controlName">
10280
+ @for (selectItem of selectList; track selectItem) {
10281
+ @if (!isArray(selectItem?.items)) {
10282
+ <option
10283
+ [ngValue]="selectItem?.value">
10284
+ <span [innerHTML]="selectItem?.name"></span>
10285
+ </option>
10286
+ }
10287
+ @if (isArray(selectItem?.items)) {
10288
+ <optgroup
10289
+ [label]="selectItem?.group">
10290
+ @for (subItem of selectItem.items; track subItem) {
10291
+ <option
10292
+ [ngValue]="subItem?.value">
10293
+ <span [innerHTML]="subItem?.name"></span>
10294
+ </option>
10295
+ }
10296
+ </optgroup>
10297
+ }
10298
+ }
10299
+ </select>
10300
+ }
10301
+ @if (!boundControl) {
10302
+ <select
10303
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10304
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10305
+ [attr.required]="options?.required"
10306
+ [class]="options?.fieldHtmlClass || ''"
10307
+ [disabled]="controlDisabled"
10308
+ [id]="'control' + layoutNode()?._id"
10309
+ [name]="controlName"
10310
+ (change)="updateValue($event)">
10311
+ @for (selectItem of selectList; track selectItem) {
10312
+ @if (!isArray(selectItem?.items)) {
10313
+ <option
10314
+ [selected]="selectItem?.value === controlValue"
10315
+ [ngValue]="selectItem?.value">
10316
+ <span [innerHTML]="selectItem?.name"></span>
10317
+ </option>
10318
+ }
10319
+ @if (isArray(selectItem?.items)) {
10320
+ <optgroup
10321
+ [label]="selectItem?.group">
10322
+ @for (subItem of selectItem.items; track subItem) {
10323
+ <option
10324
+ [attr.selected]="subItem?.value === controlValue"
10325
+ [ngValue]="subItem?.value">
10326
+ <span [innerHTML]="subItem?.name"></span>
10327
+ </option>
10328
+ }
10329
+ </optgroup>
10330
+ }
10331
+ }
10332
+ </select>
10333
+ }
10334
+ @if (boundControl && options?.multiple) {
10335
+ <select
10336
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10337
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10338
+ [attr.required]="options?.required"
10339
+ [class]="options?.fieldHtmlClass || ''"
10340
+ [disabled]="controlDisabled"
10341
+ [id]="'control' + layoutNode()?._id"
10342
+ [multiple]="options?.multiple"
10343
+ [name]="controlName"
10344
+ [(ngModel)]="controlValue"
10345
+ (change)="updateValue($event)">
10346
+ @for (selectItem of selectList; track selectItem) {
10347
+ @if (!isArray(selectItem?.items)) {
10348
+ <option
10349
+ [selected]="selectItem?.value === controlValue"
10350
+ [ngValue]="selectItem?.value">
10351
+ <span [innerHTML]="selectItem?.name"></span>
10352
+ </option>
10353
+ }
10354
+ @if (isArray(selectItem?.items)) {
10355
+ <optgroup
10356
+ [label]="selectItem?.group">
10357
+ @for (subItem of selectItem.items; track subItem) {
10358
+ <option
10359
+ [attr.selected]="subItem?.value === controlValue"
10360
+ [ngValue]="subItem?.value">
10361
+ <span [innerHTML]="subItem?.name"></span>
10362
+ </option>
10363
+ }
10364
+ </optgroup>
10365
+ }
10366
+ }
10367
+ </select>
10368
+ }
9994
10369
  </div>`,
9995
10370
  standalone: false
9996
10371
  }]
9997
- }] });
10372
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
9998
10373
 
9999
10374
  class SubmitComponent {
10000
10375
  constructor() {
10001
10376
  this.jsf = inject(JsonSchemaFormService);
10002
10377
  this.controlDisabled = false;
10003
10378
  this.boundControl = false;
10004
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10005
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10006
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
10379
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
10380
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
10381
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10007
10382
  }
10008
10383
  ngOnDestroy() {
10009
10384
  this.isValidChangesSubs?.unsubscribe();
@@ -10032,8 +10407,8 @@ class SubmitComponent {
10032
10407
  this.jsf.updateValue(this, event.target.value);
10033
10408
  }
10034
10409
  }
10035
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SubmitComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10036
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: SubmitComponent, isStandalone: false, selector: "submit-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: `
10410
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SubmitComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10411
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", type: SubmitComponent, isStandalone: false, selector: "submit-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: `
10037
10412
  <div
10038
10413
  [class]="options?.htmlClass || ''">
10039
10414
  <input
@@ -10051,7 +10426,7 @@ class SubmitComponent {
10051
10426
  >
10052
10427
  </div>`, isInline: true, dependencies: [{ kind: "directive", type: StopPropagationDirective, selector: "[appStopPropagation]", inputs: ["appStopPropagation"] }] }); }
10053
10428
  }
10054
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SubmitComponent, decorators: [{
10429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SubmitComponent, decorators: [{
10055
10430
  type: Component,
10056
10431
  args: [{
10057
10432
  // tslint:disable-next-line:component-selector
@@ -10075,16 +10450,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
10075
10450
  </div>`,
10076
10451
  standalone: false
10077
10452
  }]
10078
- }] });
10453
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
10079
10454
 
10080
10455
  class TemplateComponent {
10081
10456
  constructor() {
10082
10457
  this.jsf = inject(JsonSchemaFormService);
10083
10458
  this.newComponent = null;
10084
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10085
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10086
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
10087
- this.widgetContainer = viewChild('widgetContainer', ...(ngDevMode ? [{ debugName: "widgetContainer", read: ViewContainerRef }] : [{ read: ViewContainerRef }]));
10459
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
10460
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
10461
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10462
+ this.widgetContainer = viewChild('widgetContainer', { ...(ngDevMode ? { debugName: "widgetContainer" } : {}), read: ViewContainerRef });
10088
10463
  }
10089
10464
  ngOnInit() {
10090
10465
  this.updateComponent();
@@ -10104,10 +10479,10 @@ class TemplateComponent {
10104
10479
  }
10105
10480
  }
10106
10481
  }
10107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10108
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.1.6", type: TemplateComponent, isStandalone: false, selector: "template-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
10482
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TemplateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10483
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.0.2", type: TemplateComponent, isStandalone: false, selector: "template-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 } }, viewQueries: [{ propertyName: "widgetContainer", first: true, predicate: ["widgetContainer"], descendants: true, read: ViewContainerRef, isSignal: true }], usesOnChanges: true, ngImport: i0, template: `<div #widgetContainer></div>`, isInline: true }); }
10109
10484
  }
10110
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TemplateComponent, decorators: [{
10485
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TemplateComponent, decorators: [{
10111
10486
  type: Component,
10112
10487
  args: [{
10113
10488
  // tslint:disable-next-line:component-selector
@@ -10115,16 +10490,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
10115
10490
  template: `<div #widgetContainer></div>`,
10116
10491
  standalone: false
10117
10492
  }]
10118
- }] });
10493
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }], widgetContainer: [{ type: i0.ViewChild, args: ['widgetContainer', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
10119
10494
 
10120
10495
  class TextareaComponent {
10121
10496
  constructor() {
10122
10497
  this.jsf = inject(JsonSchemaFormService);
10123
10498
  this.controlDisabled = false;
10124
10499
  this.boundControl = false;
10125
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10126
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10127
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
10500
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
10501
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
10502
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10128
10503
  }
10129
10504
  ngOnInit() {
10130
10505
  this.options = this.layoutNode().options || {};
@@ -10134,88 +10509,103 @@ class TextareaComponent {
10134
10509
  this.jsf.updateValue(this, event.target.value);
10135
10510
  }
10136
10511
  ngOnDestroy() {
10137
- this.jsf.updateValue(this, null);
10512
+ //see cpmments in input component
10513
+ setTimeout(() => {
10514
+ this.jsf.updateValue(this, null);
10515
+ });
10138
10516
  }
10139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10140
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: TextareaComponent, isStandalone: false, selector: "textarea-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: `
10141
- <div
10142
- [class]="options?.htmlClass || ''">
10143
- <label *ngIf="options?.title"
10144
- [attr.for]="'control' + layoutNode()?._id"
10145
- [class]="options?.labelHtmlClass || ''"
10146
- [style.display]="options?.notitle ? 'none' : ''"
10147
- [innerHTML]="options?.title"></label>
10148
- <textarea *ngIf="boundControl"
10149
- [formControl]="formControl"
10150
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10151
- [attr.maxlength]="options?.maxLength"
10152
- [attr.minlength]="options?.minLength"
10153
- [attr.pattern]="options?.pattern"
10154
- [attr.placeholder]="options?.placeholder"
10155
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10156
- [attr.required]="options?.required"
10157
- [class]="options?.fieldHtmlClass || ''"
10158
- [id]="'control' + layoutNode()?._id"
10159
- [name]="controlName"></textarea>
10160
- <textarea *ngIf="!boundControl"
10161
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10162
- [attr.maxlength]="options?.maxLength"
10163
- [attr.minlength]="options?.minLength"
10164
- [attr.pattern]="options?.pattern"
10165
- [attr.placeholder]="options?.placeholder"
10166
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10167
- [attr.required]="options?.required"
10168
- [class]="options?.fieldHtmlClass || ''"
10169
- [disabled]="controlDisabled"
10170
- [id]="'control' + layoutNode()?._id"
10171
- [name]="controlName"
10172
- [value]="controlValue"
10173
- (input)="updateValue($event)">{{controlValue}}</textarea>
10174
- </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
10517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TextareaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10518
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: TextareaComponent, isStandalone: false, selector: "textarea-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: `
10519
+ <div
10520
+ [class]="options?.htmlClass || ''">
10521
+ @if (options?.title) {
10522
+ <label
10523
+ [attr.for]="'control' + layoutNode()?._id"
10524
+ [class]="options?.labelHtmlClass || ''"
10525
+ [style.display]="options?.notitle ? 'none' : ''"
10526
+ [innerHTML]="options?.title"></label>
10527
+ }
10528
+ @if (boundControl) {
10529
+ <textarea
10530
+ [formControl]="formControl"
10531
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10532
+ [attr.maxlength]="options?.maxLength"
10533
+ [attr.minlength]="options?.minLength"
10534
+ [attr.pattern]="options?.pattern"
10535
+ [attr.placeholder]="options?.placeholder"
10536
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10537
+ [attr.required]="options?.required"
10538
+ [class]="options?.fieldHtmlClass || ''"
10539
+ [id]="'control' + layoutNode()?._id"
10540
+ [name]="controlName"></textarea>
10541
+ }
10542
+ @if (!boundControl) {
10543
+ <textarea
10544
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10545
+ [attr.maxlength]="options?.maxLength"
10546
+ [attr.minlength]="options?.minLength"
10547
+ [attr.pattern]="options?.pattern"
10548
+ [attr.placeholder]="options?.placeholder"
10549
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10550
+ [attr.required]="options?.required"
10551
+ [class]="options?.fieldHtmlClass || ''"
10552
+ [disabled]="controlDisabled"
10553
+ [id]="'control' + layoutNode()?._id"
10554
+ [name]="controlName"
10555
+ [value]="controlValue"
10556
+ (input)="updateValue($event)">{{controlValue}}</textarea>
10557
+ }
10558
+ </div>`, isInline: true, dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
10175
10559
  }
10176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TextareaComponent, decorators: [{
10560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TextareaComponent, decorators: [{
10177
10561
  type: Component,
10178
10562
  args: [{
10179
10563
  // tslint:disable-next-line:component-selector
10180
10564
  selector: 'textarea-widget',
10181
- template: `
10182
- <div
10183
- [class]="options?.htmlClass || ''">
10184
- <label *ngIf="options?.title"
10185
- [attr.for]="'control' + layoutNode()?._id"
10186
- [class]="options?.labelHtmlClass || ''"
10187
- [style.display]="options?.notitle ? 'none' : ''"
10188
- [innerHTML]="options?.title"></label>
10189
- <textarea *ngIf="boundControl"
10190
- [formControl]="formControl"
10191
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10192
- [attr.maxlength]="options?.maxLength"
10193
- [attr.minlength]="options?.minLength"
10194
- [attr.pattern]="options?.pattern"
10195
- [attr.placeholder]="options?.placeholder"
10196
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10197
- [attr.required]="options?.required"
10198
- [class]="options?.fieldHtmlClass || ''"
10199
- [id]="'control' + layoutNode()?._id"
10200
- [name]="controlName"></textarea>
10201
- <textarea *ngIf="!boundControl"
10202
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10203
- [attr.maxlength]="options?.maxLength"
10204
- [attr.minlength]="options?.minLength"
10205
- [attr.pattern]="options?.pattern"
10206
- [attr.placeholder]="options?.placeholder"
10207
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10208
- [attr.required]="options?.required"
10209
- [class]="options?.fieldHtmlClass || ''"
10210
- [disabled]="controlDisabled"
10211
- [id]="'control' + layoutNode()?._id"
10212
- [name]="controlName"
10213
- [value]="controlValue"
10214
- (input)="updateValue($event)">{{controlValue}}</textarea>
10565
+ template: `
10566
+ <div
10567
+ [class]="options?.htmlClass || ''">
10568
+ @if (options?.title) {
10569
+ <label
10570
+ [attr.for]="'control' + layoutNode()?._id"
10571
+ [class]="options?.labelHtmlClass || ''"
10572
+ [style.display]="options?.notitle ? 'none' : ''"
10573
+ [innerHTML]="options?.title"></label>
10574
+ }
10575
+ @if (boundControl) {
10576
+ <textarea
10577
+ [formControl]="formControl"
10578
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10579
+ [attr.maxlength]="options?.maxLength"
10580
+ [attr.minlength]="options?.minLength"
10581
+ [attr.pattern]="options?.pattern"
10582
+ [attr.placeholder]="options?.placeholder"
10583
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10584
+ [attr.required]="options?.required"
10585
+ [class]="options?.fieldHtmlClass || ''"
10586
+ [id]="'control' + layoutNode()?._id"
10587
+ [name]="controlName"></textarea>
10588
+ }
10589
+ @if (!boundControl) {
10590
+ <textarea
10591
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10592
+ [attr.maxlength]="options?.maxLength"
10593
+ [attr.minlength]="options?.minLength"
10594
+ [attr.pattern]="options?.pattern"
10595
+ [attr.placeholder]="options?.placeholder"
10596
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
10597
+ [attr.required]="options?.required"
10598
+ [class]="options?.fieldHtmlClass || ''"
10599
+ [disabled]="controlDisabled"
10600
+ [id]="'control' + layoutNode()?._id"
10601
+ [name]="controlName"
10602
+ [value]="controlValue"
10603
+ (input)="updateValue($event)">{{controlValue}}</textarea>
10604
+ }
10215
10605
  </div>`,
10216
10606
  standalone: false
10217
10607
  }]
10218
- }] });
10608
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
10219
10609
 
10220
10610
  class WidgetLibraryService {
10221
10611
  constructor() {
@@ -10414,10 +10804,10 @@ class WidgetLibraryService {
10414
10804
  activeWidgets: this.activeWidgets,
10415
10805
  };
10416
10806
  }
10417
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10418
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryService, providedIn: 'root' }); }
10807
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
10808
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryService, providedIn: 'root' }); }
10419
10809
  }
10420
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryService, decorators: [{
10810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryService, decorators: [{
10421
10811
  type: Injectable,
10422
10812
  args: [{
10423
10813
  providedIn: 'root',
@@ -10576,10 +10966,10 @@ class FrameworkLibraryService {
10576
10966
  return actFramework.unregisterTheme(name);
10577
10967
  }
10578
10968
  }
10579
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FrameworkLibraryService, deps: [{ token: Framework }], target: i0.ɵɵFactoryTarget.Injectable }); }
10580
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FrameworkLibraryService, providedIn: 'root' }); }
10969
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FrameworkLibraryService, deps: [{ token: Framework }], target: i0.ɵɵFactoryTarget.Injectable }); }
10970
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FrameworkLibraryService, providedIn: 'root' }); }
10581
10971
  }
10582
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FrameworkLibraryService, decorators: [{
10972
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: FrameworkLibraryService, decorators: [{
10583
10973
  type: Injectable,
10584
10974
  args: [{
10585
10975
  providedIn: 'root',
@@ -10600,9 +10990,9 @@ class SelectCheckboxComponent {
10600
10990
  this.selectList = [];
10601
10991
  this.selectListFlatGroup = [];
10602
10992
  this.isArray = isArray;
10603
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10604
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10605
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
10993
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
10994
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
10995
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10606
10996
  this.frameworkStyles = {
10607
10997
  daisyui: { selectClass: "select-box", optionClass: "checkbox tw:dui-checkbox", optionChecked: "active", optionUnchecked: "" },
10608
10998
  "bootstrap-3": { selectClass: "select-box", optionClass: "bs3-option checkbox display-inline-block", optionChecked: "active", optionUnchecked: "" },
@@ -10655,128 +11045,144 @@ class SelectCheckboxComponent {
10655
11045
  this.formControl.reset(nullVal);
10656
11046
  this.controlValue = null;
10657
11047
  }
10658
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10659
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", 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: `
10660
- <div
10661
- [class]="options?.htmlClass || ''">
10662
- <select *ngIf="boundControl"
10663
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10664
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10665
- [attr.required]="options?.required"
10666
- [class]=" frameworkStyles[activeFramework].selectClass"
10667
- [multiple]="true"
10668
- [id]="'control' + layoutNode()?._id"
10669
- [name]="controlName"
10670
- [ngModel]="selectValue"
10671
- >
10672
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
10673
- <option *ngIf="!isArray(selectItem?.items)"
10674
- [class]="frameworkStyles[activeFramework].optionClass"
10675
- [class.active]="selectItem?.value === controlValue"
10676
- [class.unchecked-notusing]="selectItem?.value != controlValue"
10677
- [value]="selectItem?.value"
10678
- (click)="onSelectClicked($event)"
10679
- type="checkbox"
10680
- >
10681
- </option>
10682
- <!--NB the text is out of the option element to display besides the checkbox-->
10683
- <span [innerHTML]="selectItem?.name"></span>
10684
- </ng-template>
10685
- </select>
10686
- <select *ngIf="!boundControl"
10687
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10688
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10689
- [attr.required]="options?.required"
10690
- [class]="frameworkStyles[activeFramework].selectClass +' select-box'"
10691
- [multiple]="true"
10692
- [disabled]="controlDisabled"
10693
- [id]="'control' + layoutNode()?._id"
10694
- [name]="controlName"
10695
- (change)="updateValue($event)">
10696
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
10697
- <option *ngIf="!isArray(selectItem?.items)"
10698
- [selected]="selectItem?.value === controlValue"
10699
- [class]="frameworkStyles[activeFramework].optionClass"
10700
- [class.checked-notusing]="selectItem?.value === controlValue"
10701
- [class.unchecked-notusing]]="selectItem?.value != controlValue"
10702
- [value]="selectItem?.value"
10703
- type="checkbox">
10704
- </option>
10705
- <!--NB the text is out of the option element to display besides the checkbox-->
10706
- <span [innerHTML]="selectItem?.name"></span>
10707
- </ng-template>
10708
- </select>
10709
-
10710
- </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"] }] }); }
11048
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11049
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", 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: `
11050
+ <div
11051
+ [class]="options?.htmlClass || ''">
11052
+ @if (boundControl) {
11053
+ <select
11054
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
11055
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
11056
+ [attr.required]="options?.required"
11057
+ [class]=" frameworkStyles[activeFramework].selectClass"
11058
+ [multiple]="true"
11059
+ [id]="'control' + layoutNode()?._id"
11060
+ [name]="controlName"
11061
+ [ngModel]="selectValue"
11062
+ >
11063
+ @for (selectItem of selectList; track selectItem) {
11064
+ @if (!isArray(selectItem?.items)) {
11065
+ <option
11066
+ [class]="frameworkStyles[activeFramework].optionClass"
11067
+ [class.active]="selectItem?.value === controlValue"
11068
+ [class.unchecked-notusing]="selectItem?.value != controlValue"
11069
+ [value]="selectItem?.value"
11070
+ (click)="onSelectClicked($event)"
11071
+ type="checkbox"
11072
+ >
11073
+ </option>
11074
+ }
11075
+ <!--NB the text is out of the option element to display besides the checkbox-->
11076
+ <span [innerHTML]="selectItem?.name"></span>
11077
+ }
11078
+ </select>
11079
+ }
11080
+ @if (!boundControl) {
11081
+ <select
11082
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
11083
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
11084
+ [attr.required]="options?.required"
11085
+ [class]="frameworkStyles[activeFramework].selectClass +' select-box'"
11086
+ [multiple]="true"
11087
+ [disabled]="controlDisabled"
11088
+ [id]="'control' + layoutNode()?._id"
11089
+ [name]="controlName"
11090
+ (change)="updateValue($event)">
11091
+ @for (selectItem of selectList; track selectItem) {
11092
+ @if (!isArray(selectItem?.items)) {
11093
+ <option
11094
+ [selected]="selectItem?.value === controlValue"
11095
+ [class]="frameworkStyles[activeFramework].optionClass"
11096
+ [class.checked-notusing]="selectItem?.value === controlValue"
11097
+ [class.unchecked-notusing]]="selectItem?.value != controlValue"
11098
+ [value]="selectItem?.value"
11099
+ type="checkbox">
11100
+ </option>
11101
+ }
11102
+ <!--NB the text is out of the option element to display besides the checkbox-->
11103
+ <span [innerHTML]="selectItem?.name"></span>
11104
+ }
11105
+ </select>
11106
+ }
11107
+
11108
+ </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.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.SelectMultipleControlValueAccessor, selector: "select[multiple][formControlName],select[multiple][formControl],select[multiple][ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
10711
11109
  }
10712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SelectCheckboxComponent, decorators: [{
11110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: SelectCheckboxComponent, decorators: [{
10713
11111
  type: Component,
10714
- args: [{ selector: 'selectcheckbox-widget', template: `
10715
- <div
10716
- [class]="options?.htmlClass || ''">
10717
- <select *ngIf="boundControl"
10718
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10719
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10720
- [attr.required]="options?.required"
10721
- [class]=" frameworkStyles[activeFramework].selectClass"
10722
- [multiple]="true"
10723
- [id]="'control' + layoutNode()?._id"
10724
- [name]="controlName"
10725
- [ngModel]="selectValue"
10726
- >
10727
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
10728
- <option *ngIf="!isArray(selectItem?.items)"
10729
- [class]="frameworkStyles[activeFramework].optionClass"
10730
- [class.active]="selectItem?.value === controlValue"
10731
- [class.unchecked-notusing]="selectItem?.value != controlValue"
10732
- [value]="selectItem?.value"
10733
- (click)="onSelectClicked($event)"
10734
- type="checkbox"
10735
- >
10736
- </option>
10737
- <!--NB the text is out of the option element to display besides the checkbox-->
10738
- <span [innerHTML]="selectItem?.name"></span>
10739
- </ng-template>
10740
- </select>
10741
- <select *ngIf="!boundControl"
10742
- [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
10743
- [attr.readonly]="options?.readonly ? 'readonly' : null"
10744
- [attr.required]="options?.required"
10745
- [class]="frameworkStyles[activeFramework].selectClass +' select-box'"
10746
- [multiple]="true"
10747
- [disabled]="controlDisabled"
10748
- [id]="'control' + layoutNode()?._id"
10749
- [name]="controlName"
10750
- (change)="updateValue($event)">
10751
- <ng-template ngFor let-selectItem [ngForOf]="selectList">
10752
- <option *ngIf="!isArray(selectItem?.items)"
10753
- [selected]="selectItem?.value === controlValue"
10754
- [class]="frameworkStyles[activeFramework].optionClass"
10755
- [class.checked-notusing]="selectItem?.value === controlValue"
10756
- [class.unchecked-notusing]]="selectItem?.value != controlValue"
10757
- [value]="selectItem?.value"
10758
- type="checkbox">
10759
- </option>
10760
- <!--NB the text is out of the option element to display besides the checkbox-->
10761
- <span [innerHTML]="selectItem?.name"></span>
10762
- </ng-template>
10763
- </select>
10764
-
11112
+ args: [{ selector: 'selectcheckbox-widget', template: `
11113
+ <div
11114
+ [class]="options?.htmlClass || ''">
11115
+ @if (boundControl) {
11116
+ <select
11117
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
11118
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
11119
+ [attr.required]="options?.required"
11120
+ [class]=" frameworkStyles[activeFramework].selectClass"
11121
+ [multiple]="true"
11122
+ [id]="'control' + layoutNode()?._id"
11123
+ [name]="controlName"
11124
+ [ngModel]="selectValue"
11125
+ >
11126
+ @for (selectItem of selectList; track selectItem) {
11127
+ @if (!isArray(selectItem?.items)) {
11128
+ <option
11129
+ [class]="frameworkStyles[activeFramework].optionClass"
11130
+ [class.active]="selectItem?.value === controlValue"
11131
+ [class.unchecked-notusing]="selectItem?.value != controlValue"
11132
+ [value]="selectItem?.value"
11133
+ (click)="onSelectClicked($event)"
11134
+ type="checkbox"
11135
+ >
11136
+ </option>
11137
+ }
11138
+ <!--NB the text is out of the option element to display besides the checkbox-->
11139
+ <span [innerHTML]="selectItem?.name"></span>
11140
+ }
11141
+ </select>
11142
+ }
11143
+ @if (!boundControl) {
11144
+ <select
11145
+ [attr.aria-describedby]="'control' + layoutNode()?._id + 'Status'"
11146
+ [attr.readonly]="options?.readonly ? 'readonly' : null"
11147
+ [attr.required]="options?.required"
11148
+ [class]="frameworkStyles[activeFramework].selectClass +' select-box'"
11149
+ [multiple]="true"
11150
+ [disabled]="controlDisabled"
11151
+ [id]="'control' + layoutNode()?._id"
11152
+ [name]="controlName"
11153
+ (change)="updateValue($event)">
11154
+ @for (selectItem of selectList; track selectItem) {
11155
+ @if (!isArray(selectItem?.items)) {
11156
+ <option
11157
+ [selected]="selectItem?.value === controlValue"
11158
+ [class]="frameworkStyles[activeFramework].optionClass"
11159
+ [class.checked-notusing]="selectItem?.value === controlValue"
11160
+ [class.unchecked-notusing]]="selectItem?.value != controlValue"
11161
+ [value]="selectItem?.value"
11162
+ type="checkbox">
11163
+ </option>
11164
+ }
11165
+ <!--NB the text is out of the option element to display besides the checkbox-->
11166
+ <span [innerHTML]="selectItem?.name"></span>
11167
+ }
11168
+ </select>
11169
+ }
11170
+
10765
11171
  </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"] }]
10766
- }] });
11172
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
10767
11173
 
10768
11174
  class TabComponent {
10769
11175
  constructor() {
10770
11176
  this.jsf = inject(JsonSchemaFormService);
10771
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10772
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10773
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
11177
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
11178
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
11179
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10774
11180
  }
10775
11181
  ngOnInit() {
10776
11182
  this.options = this.layoutNode().options || {};
10777
11183
  }
10778
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10779
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", 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: `
11184
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11185
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.0.2", 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: `
10780
11186
  <div [class]="options?.htmlClass || ''">
10781
11187
  <root-widget
10782
11188
  [dataIndex]="dataIndex()"
@@ -10784,7 +11190,7 @@ class TabComponent {
10784
11190
  [layout]="layoutNode().items"></root-widget>
10785
11191
  </div>`, isInline: true, dependencies: [{ kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem", "memoizationEnabled"] }] }); }
10786
11192
  }
10787
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TabComponent, decorators: [{
11193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: TabComponent, decorators: [{
10788
11194
  type: Component,
10789
11195
  args: [{
10790
11196
  // tslint:disable-next-line:component-selector
@@ -10798,7 +11204,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
10798
11204
  </div>`,
10799
11205
  standalone: false
10800
11206
  }]
10801
- }] });
11207
+ }], propDecorators: { layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
10802
11208
 
10803
11209
  /**
10804
11210
  * OrderableDirective
@@ -10828,10 +11234,10 @@ class OrderableDirective {
10828
11234
  this.ngZone = inject(NgZone);
10829
11235
  this.overParentElement = false;
10830
11236
  this.overChildElement = false;
10831
- this.orderable = input(undefined, ...(ngDevMode ? [{ debugName: "orderable" }] : []));
10832
- this.layoutNode = input(undefined, ...(ngDevMode ? [{ debugName: "layoutNode" }] : []));
10833
- this.layoutIndex = input(undefined, ...(ngDevMode ? [{ debugName: "layoutIndex" }] : []));
10834
- this.dataIndex = input(undefined, ...(ngDevMode ? [{ debugName: "dataIndex" }] : []));
11237
+ this.orderable = input(undefined, { ...(ngDevMode ? { debugName: "orderable" } : {}) });
11238
+ this.layoutNode = input(undefined, { ...(ngDevMode ? { debugName: "layoutNode" } : {}) });
11239
+ this.layoutIndex = input(undefined, { ...(ngDevMode ? { debugName: "layoutIndex" } : {}) });
11240
+ this.dataIndex = input(undefined, { ...(ngDevMode ? { debugName: "dataIndex" } : {}) });
10835
11241
  }
10836
11242
  ngOnInit() {
10837
11243
  const layoutIndex = this.layoutIndex();
@@ -10915,17 +11321,17 @@ class OrderableDirective {
10915
11321
  this.draggableStateSubscription.unsubscribe();
10916
11322
  }
10917
11323
  }
10918
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: OrderableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
10919
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.1.6", type: OrderableDirective, isStandalone: false, selector: "[orderable]", inputs: { orderable: { classPropertyName: "orderable", publicName: "orderable", isSignal: true, isRequired: false, transformFunction: null }, 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 }); }
11324
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: OrderableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11325
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.0.2", type: OrderableDirective, isStandalone: false, selector: "[orderable]", inputs: { orderable: { classPropertyName: "orderable", publicName: "orderable", isSignal: true, isRequired: false, transformFunction: null }, 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 }); }
10920
11326
  }
10921
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: OrderableDirective, decorators: [{
11327
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: OrderableDirective, decorators: [{
10922
11328
  type: Directive,
10923
11329
  args: [{
10924
11330
  // tslint:disable-next-line:directive-selector
10925
11331
  selector: '[orderable]',
10926
11332
  standalone: false
10927
11333
  }]
10928
- }] });
11334
+ }], propDecorators: { orderable: [{ type: i0.Input, args: [{ isSignal: true, alias: "orderable", required: false }] }], layoutNode: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutNode", required: false }] }], layoutIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "layoutIndex", required: false }] }], dataIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "dataIndex", required: false }] }] } });
10929
11335
 
10930
11336
  const BASIC_WIDGETS = [
10931
11337
  AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent,
@@ -10933,15 +11339,15 @@ const BASIC_WIDGETS = [
10933
11339
  MessageComponent, NoneComponent, NumberComponent, RadiosComponent,
10934
11340
  RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent,
10935
11341
  SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent,
10936
- TemplateComponent, TextareaComponent, SelectCheckboxComponent
11342
+ TemplateComponent, TextareaComponent, SelectCheckboxComponent, ItemTitleComponent
10937
11343
  ];
10938
11344
 
10939
11345
  class WidgetLibraryModule {
10940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10941
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", 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, StopPropagationDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule], 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, StopPropagationDirective] }); }
10942
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule] }); }
11346
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11347
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.2", 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, ItemTitleComponent, OrderableDirective, ElementAttributeDirective, StopPropagationDirective], imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule], exports: [AddReferenceComponent, OneOfComponent, ButtonComponent, CheckboxComponent, CheckboxesComponent, FileComponent, HiddenComponent, InputComponent, MessageComponent, NoneComponent, NumberComponent, RadiosComponent, RootComponent, SectionComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, SubmitComponent, TabComponent, TabsComponent, TemplateComponent, TextareaComponent, SelectCheckboxComponent, ItemTitleComponent, OrderableDirective, ElementAttributeDirective, StopPropagationDirective] }); }
11348
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryModule, imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule] }); }
10943
11349
  }
10944
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: WidgetLibraryModule, decorators: [{
11350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: WidgetLibraryModule, decorators: [{
10945
11351
  type: NgModule,
10946
11352
  args: [{
10947
11353
  imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule
@@ -10953,13 +11359,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
10953
11359
 
10954
11360
  // No framework - plain HTML controls (styles from form layout only)
10955
11361
  class NoFrameworkModule {
10956
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10957
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
10958
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkModule, providers: [
11362
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11363
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkModule, declarations: [NoFrameworkComponent], imports: [CommonModule, WidgetLibraryModule], exports: [NoFrameworkComponent] }); }
11364
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkModule, providers: [
10959
11365
  { provide: Framework, useClass: NoFramework, multi: true }
10960
11366
  ], imports: [CommonModule, WidgetLibraryModule] }); }
10961
11367
  }
10962
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: NoFrameworkModule, decorators: [{
11368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: NoFrameworkModule, decorators: [{
10963
11369
  type: NgModule,
10964
11370
  args: [{
10965
11371
  imports: [CommonModule, WidgetLibraryModule],
@@ -11027,27 +11433,27 @@ class JsonSchemaFormComponent {
11027
11433
  formData: null, loadExternalAssets: null, debug: null, ajvOptions: null
11028
11434
  };
11029
11435
  // Recommended inputs
11030
- this.schema = input(undefined, ...(ngDevMode ? [{ debugName: "schema" }] : [])); // The JSON Schema
11031
- this.layout = input(undefined, ...(ngDevMode ? [{ debugName: "layout" }] : [])); // The form layout
11032
- this.data = input(undefined, ...(ngDevMode ? [{ debugName: "data" }] : [])); // The form data
11033
- this.options = input(undefined, ...(ngDevMode ? [{ debugName: "options" }] : [])); // The global form options
11034
- this.framework = input(undefined, ...(ngDevMode ? [{ debugName: "framework" }] : [])); // The framework to load
11035
- this.widgets = input(undefined, ...(ngDevMode ? [{ debugName: "widgets" }] : [])); // Any custom widgets to load
11436
+ this.schema = input(undefined, { ...(ngDevMode ? { debugName: "schema" } : {}) }); // The JSON Schema
11437
+ this.layout = input(undefined, { ...(ngDevMode ? { debugName: "layout" } : {}) }); // The form layout
11438
+ this.data = input(undefined, { ...(ngDevMode ? { debugName: "data" } : {}) }); // The form data
11439
+ this.options = input(undefined, { ...(ngDevMode ? { debugName: "options" } : {}) }); // The global form options
11440
+ this.framework = input(undefined, { ...(ngDevMode ? { debugName: "framework" } : {}) }); // The framework to load
11441
+ this.widgets = input(undefined, { ...(ngDevMode ? { debugName: "widgets" } : {}) }); // Any custom widgets to load
11036
11442
  // Alternate combined single input
11037
- this.form = input(undefined, ...(ngDevMode ? [{ debugName: "form" }] : [])); // For testing, and JSON Schema Form API compatibility
11443
+ this.form = input(undefined, { ...(ngDevMode ? { debugName: "form" } : {}) }); // For testing, and JSON Schema Form API compatibility
11038
11444
  // Angular Schema Form API compatibility input
11039
- this.model = input(undefined, ...(ngDevMode ? [{ debugName: "model" }] : [])); // Alternate input for form data
11445
+ this.model = input(undefined, { ...(ngDevMode ? { debugName: "model" } : {}) }); // Alternate input for form data
11040
11446
  // React JSON Schema Form API compatibility inputs
11041
- this.JSONSchema = input(undefined, ...(ngDevMode ? [{ debugName: "JSONSchema" }] : [])); // Alternate input for JSON Schema
11042
- this.UISchema = input(undefined, ...(ngDevMode ? [{ debugName: "UISchema" }] : [])); // UI schema - alternate form layout format
11043
- this.formData = input(undefined, ...(ngDevMode ? [{ debugName: "formData" }] : [])); // Alternate input for form data
11044
- this.ngModel = input(undefined, ...(ngDevMode ? [{ debugName: "ngModel" }] : [])); // Alternate input for Angular forms
11045
- this.language = input(undefined, ...(ngDevMode ? [{ debugName: "language" }] : [])); // Language
11447
+ this.JSONSchema = input(undefined, { ...(ngDevMode ? { debugName: "JSONSchema" } : {}) }); // Alternate input for JSON Schema
11448
+ this.UISchema = input(undefined, { ...(ngDevMode ? { debugName: "UISchema" } : {}) }); // UI schema - alternate form layout format
11449
+ this.formData = input(undefined, { ...(ngDevMode ? { debugName: "formData" } : {}) }); // Alternate input for form data
11450
+ this.ngModel = input(undefined, { ...(ngDevMode ? { debugName: "ngModel" } : {}) }); // Alternate input for Angular forms
11451
+ this.language = input(undefined, { ...(ngDevMode ? { debugName: "language" } : {}) }); // Language
11046
11452
  // Development inputs, for testing and debugging
11047
- this.loadExternalAssets = input(undefined, ...(ngDevMode ? [{ debugName: "loadExternalAssets" }] : [])); // Load external framework assets?
11048
- this.debug = input(undefined, ...(ngDevMode ? [{ debugName: "debug" }] : [])); // Show debug information?
11049
- this.theme = input(undefined, ...(ngDevMode ? [{ debugName: "theme" }] : [])); // Theme
11050
- this.ajvOptions = input(undefined, ...(ngDevMode ? [{ debugName: "ajvOptions" }] : [])); // ajvOptions
11453
+ this.loadExternalAssets = input(undefined, { ...(ngDevMode ? { debugName: "loadExternalAssets" } : {}) }); // Load external framework assets?
11454
+ this.debug = input(undefined, { ...(ngDevMode ? { debugName: "debug" } : {}) }); // Show debug information?
11455
+ this.theme = input(undefined, { ...(ngDevMode ? { debugName: "theme" } : {}) }); // Theme
11456
+ this.ajvOptions = input(undefined, { ...(ngDevMode ? { debugName: "ajvOptions" } : {}) }); // ajvOptions
11051
11457
  // Outputs
11052
11458
  this.onChanges = output(); // Live unvalidated internal form data
11053
11459
  this.onSubmit = output(); // Complete validated form data
@@ -11186,11 +11592,26 @@ class JsonSchemaFormComponent {
11186
11592
  if (this.formValuesInput.indexOf('.') === -1) {
11187
11593
  changedData = this.getInputValue(this.formValuesInput);
11188
11594
  //this[this.formValuesInput];
11189
- this.setFormValues(changedData, resetFirst);
11190
11595
  }
11191
11596
  else {
11192
11597
  const [input, key] = this.formValuesInput.split('.');
11193
11598
  changedData = this.getInputValue(input)[key];
11599
+ }
11600
+ //TODO -review if any of the the array sizes changed then the
11601
+ //layout array sizes need to be resynced to match
11602
+ //-for now jsf.adjustLayout doesnt seem to work with nested arrays
11603
+ //so entire form is reinited
11604
+ let arraySizesChanged = !compareObjectArraySizes(changedData, this.jsf.data);
11605
+ if (arraySizesChanged) {
11606
+ this.initializeForm(changedData);
11607
+ if (this.onChange) {
11608
+ this.onChange(changedData);
11609
+ }
11610
+ if (this.onTouched) {
11611
+ this.onTouched(changedData);
11612
+ }
11613
+ }
11614
+ else {
11194
11615
  this.setFormValues(changedData, resetFirst);
11195
11616
  }
11196
11617
  // If anything else has changed, re-render the entire form
@@ -11215,7 +11636,7 @@ class JsonSchemaFormComponent {
11215
11636
  .forEach(input => this.previousInputs[input] = this.getInputValue(input));
11216
11637
  }
11217
11638
  }
11218
- setFormValues(formValues, resetFirst = true) {
11639
+ setFormValues(formValues, resetFirst = true, emitFormEvent = true, usePatch = true) {
11219
11640
  if (formValues) {
11220
11641
  const newFormValues = this.objectWrap ? formValues['1'] : formValues;
11221
11642
  if (!this.jsf.formGroup) {
@@ -11223,10 +11644,15 @@ class JsonSchemaFormComponent {
11223
11644
  this.activateForm();
11224
11645
  }
11225
11646
  else if (resetFirst) { //changed to avoid reset events
11226
- this.jsf.formGroup.reset({}, { emitEvent: false });
11647
+ this.jsf.formGroup.reset({}, { emitEvent: emitFormEvent });
11227
11648
  }
11228
11649
  if (this.jsf.formGroup) { //changed to avoid reset events
11229
- this.jsf.formGroup.patchValue(newFormValues, { emitEvent: false });
11650
+ if (usePatch) {
11651
+ this.jsf.formGroup.patchValue(newFormValues, { emitEvent: emitFormEvent });
11652
+ }
11653
+ else {
11654
+ this.jsf.formGroup.setValue(newFormValues, { emitEvent: emitFormEvent });
11655
+ }
11230
11656
  }
11231
11657
  if (this.onChange) {
11232
11658
  this.onChange(newFormValues);
@@ -11238,6 +11664,7 @@ class JsonSchemaFormComponent {
11238
11664
  else {
11239
11665
  this.jsf.formGroup.reset();
11240
11666
  }
11667
+ this.changeDetector.markForCheck();
11241
11668
  }
11242
11669
  submitForm() {
11243
11670
  const validData = this.jsf.validData;
@@ -11721,24 +12148,24 @@ class JsonSchemaFormComponent {
11721
12148
  }
11722
12149
  }
11723
12150
  }
11724
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11725
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.1.6", type: JsonSchemaFormComponent, isStandalone: false, selector: "json-schema-form", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, framework: { classPropertyName: "framework", publicName: "framework", isSignal: true, isRequired: false, transformFunction: null }, widgets: { classPropertyName: "widgets", publicName: "widgets", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, JSONSchema: { classPropertyName: "JSONSchema", publicName: "JSONSchema", isSignal: true, isRequired: false, transformFunction: null }, UISchema: { classPropertyName: "UISchema", publicName: "UISchema", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, ngModel: { classPropertyName: "ngModel", publicName: "ngModel", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, loadExternalAssets: { classPropertyName: "loadExternalAssets", publicName: "loadExternalAssets", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, ajvOptions: { classPropertyName: "ajvOptions", publicName: "ajvOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onChanges: "onChanges", onSubmit: "onSubmit", isValid: "isValid", validationErrors: "validationErrors", formSchema: "formSchema", formLayout: "formLayout", dataChange: "dataChange", modelChange: "modelChange", formDataChange: "formDataChange", ngModelChange: "ngModelChange" }, providers: [JsonSchemaFormService, JSON_SCHEMA_FORM_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<form [autocomplete]=\"jsf?.formOptions?.autocomplete ? 'on' : 'off'\" class=\"json-schema-form\" (ngSubmit)=\"submitForm()\">\r\n <root-widget [layout]=\"jsf?.layout\"></root-widget>\r\n</form>\r\n<div *ngIf=\"debug() || jsf?.formOptions?.debug\">\r\n Debug output:\r\n <pre>{{debugOutput}}</pre>\r\n</div>", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem", "memoizationEnabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
12151
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12152
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.2", type: JsonSchemaFormComponent, isStandalone: false, selector: "json-schema-form", inputs: { schema: { classPropertyName: "schema", publicName: "schema", isSignal: true, isRequired: false, transformFunction: null }, layout: { classPropertyName: "layout", publicName: "layout", isSignal: true, isRequired: false, transformFunction: null }, data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, framework: { classPropertyName: "framework", publicName: "framework", isSignal: true, isRequired: false, transformFunction: null }, widgets: { classPropertyName: "widgets", publicName: "widgets", isSignal: true, isRequired: false, transformFunction: null }, form: { classPropertyName: "form", publicName: "form", isSignal: true, isRequired: false, transformFunction: null }, model: { classPropertyName: "model", publicName: "model", isSignal: true, isRequired: false, transformFunction: null }, JSONSchema: { classPropertyName: "JSONSchema", publicName: "JSONSchema", isSignal: true, isRequired: false, transformFunction: null }, UISchema: { classPropertyName: "UISchema", publicName: "UISchema", isSignal: true, isRequired: false, transformFunction: null }, formData: { classPropertyName: "formData", publicName: "formData", isSignal: true, isRequired: false, transformFunction: null }, ngModel: { classPropertyName: "ngModel", publicName: "ngModel", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, loadExternalAssets: { classPropertyName: "loadExternalAssets", publicName: "loadExternalAssets", isSignal: true, isRequired: false, transformFunction: null }, debug: { classPropertyName: "debug", publicName: "debug", isSignal: true, isRequired: false, transformFunction: null }, theme: { classPropertyName: "theme", publicName: "theme", isSignal: true, isRequired: false, transformFunction: null }, ajvOptions: { classPropertyName: "ajvOptions", publicName: "ajvOptions", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onChanges: "onChanges", onSubmit: "onSubmit", isValid: "isValid", validationErrors: "validationErrors", formSchema: "formSchema", formLayout: "formLayout", dataChange: "dataChange", modelChange: "modelChange", formDataChange: "formDataChange", ngModelChange: "ngModelChange" }, providers: [JsonSchemaFormService, JSON_SCHEMA_FORM_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: "<form [autocomplete]=\"jsf?.formOptions?.autocomplete ? 'on' : 'off'\" class=\"json-schema-form\" (ngSubmit)=\"submitForm()\">\n <root-widget [layout]=\"jsf?.layout\"></root-widget>\n</form>\n@if (debug() || jsf?.formOptions?.debug) {\n <div>\n Debug output:\n <pre>{{debugOutput}}</pre>\n </div>\n}", dependencies: [{ kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]):not([formArray]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: RootComponent, selector: "root-widget", inputs: ["dataIndex", "layoutIndex", "layout", "isOrderable", "isFlexItem", "memoizationEnabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
11726
12153
  }
11727
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormComponent, decorators: [{
12154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormComponent, decorators: [{
11728
12155
  type: Component,
11729
- args: [{ selector: 'json-schema-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [JsonSchemaFormService, JSON_SCHEMA_FORM_VALUE_ACCESSOR], standalone: false, template: "<form [autocomplete]=\"jsf?.formOptions?.autocomplete ? 'on' : 'off'\" class=\"json-schema-form\" (ngSubmit)=\"submitForm()\">\r\n <root-widget [layout]=\"jsf?.layout\"></root-widget>\r\n</form>\r\n<div *ngIf=\"debug() || jsf?.formOptions?.debug\">\r\n Debug output:\r\n <pre>{{debugOutput}}</pre>\r\n</div>" }]
11730
- }], propDecorators: { value: [{
12156
+ args: [{ selector: 'json-schema-form', changeDetection: ChangeDetectionStrategy.OnPush, providers: [JsonSchemaFormService, JSON_SCHEMA_FORM_VALUE_ACCESSOR], standalone: false, template: "<form [autocomplete]=\"jsf?.formOptions?.autocomplete ? 'on' : 'off'\" class=\"json-schema-form\" (ngSubmit)=\"submitForm()\">\n <root-widget [layout]=\"jsf?.layout\"></root-widget>\n</form>\n@if (debug() || jsf?.formOptions?.debug) {\n <div>\n Debug output:\n <pre>{{debugOutput}}</pre>\n </div>\n}" }]
12157
+ }], propDecorators: { schema: [{ type: i0.Input, args: [{ isSignal: true, alias: "schema", required: false }] }], layout: [{ type: i0.Input, args: [{ isSignal: true, alias: "layout", required: false }] }], data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: false }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], framework: [{ type: i0.Input, args: [{ isSignal: true, alias: "framework", required: false }] }], widgets: [{ type: i0.Input, args: [{ isSignal: true, alias: "widgets", required: false }] }], form: [{ type: i0.Input, args: [{ isSignal: true, alias: "form", required: false }] }], model: [{ type: i0.Input, args: [{ isSignal: true, alias: "model", required: false }] }], JSONSchema: [{ type: i0.Input, args: [{ isSignal: true, alias: "JSONSchema", required: false }] }], UISchema: [{ type: i0.Input, args: [{ isSignal: true, alias: "UISchema", required: false }] }], formData: [{ type: i0.Input, args: [{ isSignal: true, alias: "formData", required: false }] }], ngModel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngModel", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], loadExternalAssets: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadExternalAssets", required: false }] }], debug: [{ type: i0.Input, args: [{ isSignal: true, alias: "debug", required: false }] }], theme: [{ type: i0.Input, args: [{ isSignal: true, alias: "theme", required: false }] }], ajvOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "ajvOptions", required: false }] }], value: [{
11731
12158
  type: Input
11732
- }] } });
12159
+ }], onChanges: [{ type: i0.Output, args: ["onChanges"] }], onSubmit: [{ type: i0.Output, args: ["onSubmit"] }], isValid: [{ type: i0.Output, args: ["isValid"] }], validationErrors: [{ type: i0.Output, args: ["validationErrors"] }], formSchema: [{ type: i0.Output, args: ["formSchema"] }], formLayout: [{ type: i0.Output, args: ["formLayout"] }], dataChange: [{ type: i0.Output, args: ["dataChange"] }], modelChange: [{ type: i0.Output, args: ["modelChange"] }], formDataChange: [{ type: i0.Output, args: ["formDataChange"] }], ngModelChange: [{ type: i0.Output, args: ["ngModelChange"] }] } });
11733
12160
 
11734
12161
  class JsonSchemaFormModule {
11735
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
11736
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormModule, declarations: [JsonSchemaFormComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
12162
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12163
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormModule, declarations: [JsonSchemaFormComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule,
11737
12164
  WidgetLibraryModule, NoFrameworkModule], exports: [JsonSchemaFormComponent, WidgetLibraryModule] }); }
11738
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
12165
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormModule, imports: [CommonModule, FormsModule, ReactiveFormsModule,
11739
12166
  WidgetLibraryModule, NoFrameworkModule, WidgetLibraryModule] }); }
11740
12167
  }
11741
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: JsonSchemaFormModule, decorators: [{
12168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.2", ngImport: i0, type: JsonSchemaFormModule, decorators: [{
11742
12169
  type: NgModule,
11743
12170
  args: [{
11744
12171
  imports: [
@@ -11758,5 +12185,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
11758
12185
  * Generated bundle index. Do not edit.
11759
12186
  */
11760
12187
 
11761
- 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, StopPropagationDirective, 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 };
12188
+ export { AddReferenceComponent, BASIC_WIDGETS, ButtonComponent, CheckboxComponent, CheckboxesComponent, ElementAttributeDirective, FileComponent, Framework, FrameworkLibraryService, HiddenComponent, InputComponent, ItemTitleComponent, JsonPointer, JsonSchemaFormComponent, JsonSchemaFormModule, JsonSchemaFormService, JsonValidators, MessageComponent, NoneComponent, NumberComponent, OneOfComponent, OrderableDirective, RadiosComponent, RootComponent, SectionComponent, SelectCheckboxComponent, SelectComponent, SelectFrameworkComponent, SelectWidgetComponent, StopPropagationDirective, 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 };
11762
12189
  //# sourceMappingURL=ng-formworks-core.mjs.map