xt-components 0.4.7 → 0.5.0

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.
@@ -23,7 +23,7 @@ class XtBaseContext {
23
23
  else {
24
24
  throw new Error("Cannot display a value that does not exist. Are you sure you're not using Reactive Form with this context? " + this.toString());
25
25
  }
26
- });
26
+ }, ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
27
27
  this.displayMode = displayMode;
28
28
  this.parentFormGroup = parentGroup;
29
29
  this.parentContext = parentContext;
@@ -35,7 +35,7 @@ class XtBaseContext {
35
35
  if (this.nonFormValue == null) {
36
36
  if ((this.childContexts != null) && (this.childContexts.size > 0))
37
37
  throw new Error('An XtContext with no values cannot have children ', { cause: this });
38
- this.nonFormValue = signal(newValue);
38
+ this.nonFormValue = signal(newValue, ...(ngDevMode ? [{ debugName: "nonFormValue" }] : []));
39
39
  }
40
40
  else {
41
41
  this.nonFormValue.set(newValue);
@@ -234,8 +234,8 @@ class XtPluginRegistry {
234
234
  this.pluginRegistry = new Map();
235
235
  this.componentRegistry = new Map();
236
236
  this.componentByTypeCache = new Map();
237
- this.listComponents = signal(new Array());
238
- this.listPlugins = signal(new Array());
237
+ this.listComponents = signal(new Array(), ...(ngDevMode ? [{ debugName: "listComponents" }] : []));
238
+ this.listPlugins = signal(new Array(), ...(ngDevMode ? [{ debugName: "listPlugins" }] : []));
239
239
  }
240
240
  /**
241
241
  * The component can manage any standard javascript primitives types. That's usually the default whenever we don't know any particular type
@@ -411,10 +411,10 @@ class XtResolverService {
411
411
  this.baseTypeResolver = inject(XT_TYPE_RESOLVER_TOKEN, { optional: true });
412
412
  this.listComponents = computed(() => {
413
413
  return this.pluginRegistry.listComponents();
414
- });
414
+ }, ...(ngDevMode ? [{ debugName: "listComponents" }] : []));
415
415
  this.listPlugins = computed(() => {
416
416
  return this.pluginRegistry.listPlugins();
417
- });
417
+ }, ...(ngDevMode ? [{ debugName: "listPlugins" }] : []));
418
418
  if (this.baseTypeResolver == null) {
419
419
  this.typeResolver = xtTypeManager();
420
420
  }
@@ -444,6 +444,9 @@ class XtResolverService {
444
444
  listSubNamesOf(baseContext, value) {
445
445
  return this.typeResolver.listSubNames(baseContext.valueType, value);
446
446
  }
447
+ listSubNamesOfType(valueType, value) {
448
+ return this.typeResolver.listSubNames(valueType, value);
449
+ }
447
450
  registerPlugin(info) {
448
451
  this.pluginRegistry.registerPlugin(info);
449
452
  this.registerTypes(info.types, info.typeHandlers);
@@ -500,10 +503,10 @@ class XtResolverService {
500
503
  return module;
501
504
  });
502
505
  }
503
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
504
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtResolverService, providedIn: 'root' }); }
506
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtResolverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
507
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtResolverService, providedIn: 'root' }); }
505
508
  }
506
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtResolverService, decorators: [{
509
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtResolverService, decorators: [{
507
510
  type: Injectable,
508
511
  args: [{
509
512
  providedIn: 'root'
@@ -521,16 +524,16 @@ class XtBaseOutput {
521
524
  class XtRenderComponent {
522
525
  constructor() {
523
526
  this.resolverService = inject(XtResolverService);
524
- this.componentType = input();
525
- this.displayMode = input.required();
526
- this.valueType = input();
527
+ this.componentType = input(...(ngDevMode ? [undefined, { debugName: "componentType" }] : []));
528
+ this.displayMode = input.required(...(ngDevMode ? [{ debugName: "displayMode" }] : []));
529
+ this.valueType = input(...(ngDevMode ? [undefined, { debugName: "valueType" }] : []));
527
530
  // Either we set the value directly
528
- this.value = model();
531
+ this.value = model(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
529
532
  // Or we are inside a Form
530
- this.formGroup = input();
531
- this.subName = input();
533
+ this.formGroup = input(...(ngDevMode ? [undefined, { debugName: "formGroup" }] : []));
534
+ this.subName = input(...(ngDevMode ? [undefined, { debugName: "subName" }] : []));
532
535
  this.outputsObject = new XtBaseOutput();
533
- this.inputs = input();
536
+ this.inputs = input(...(ngDevMode ? [undefined, { debugName: "inputs" }] : []));
534
537
  this.outputs = output();
535
538
  this.outlet = viewChild.required(NgComponentOutlet);
536
539
  this.context = computed(() => {
@@ -548,7 +551,7 @@ class XtRenderComponent {
548
551
  }
549
552
  }
550
553
  return ret;
551
- });
554
+ }, ...(ngDevMode ? [{ debugName: "context" }] : []));
552
555
  this.type = computed(() => {
553
556
  //console.debug("Calculating type in XtRenderSubComponent");
554
557
  let type = this.componentType();
@@ -562,7 +565,7 @@ class XtRenderComponent {
562
565
  type = compFound.componentClass;
563
566
  }
564
567
  return type ?? null;
565
- });
568
+ }, ...(ngDevMode ? [{ debugName: "type" }] : []));
566
569
  }
567
570
  /**
568
571
  * Transfers the input and outputs from the host to the rendered component
@@ -586,10 +589,10 @@ class XtRenderComponent {
586
589
  }
587
590
  }
588
591
  }
589
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtRenderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
590
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.10", type: XtRenderComponent, isStandalone: true, selector: "xt-render", inputs: { componentType: { classPropertyName: "componentType", publicName: "componentType", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: true, transformFunction: null }, valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null }, subName: { classPropertyName: "subName", publicName: "subName", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", outputs: "outputs" }, viewQueries: [{ propertyName: "outlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
592
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtRenderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
593
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.2.3", type: XtRenderComponent, isStandalone: true, selector: "xt-render", inputs: { componentType: { classPropertyName: "componentType", publicName: "componentType", isSignal: true, isRequired: false, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: true, transformFunction: null }, valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null }, subName: { classPropertyName: "subName", publicName: "subName", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", outputs: "outputs" }, viewQueries: [{ propertyName: "outlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
591
594
  }
592
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtRenderComponent, decorators: [{
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtRenderComponent, decorators: [{
593
596
  type: Component,
594
597
  args: [{ selector: 'xt-render', standalone: true, imports: [
595
598
  NgComponentOutlet,
@@ -603,10 +606,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
603
606
  */
604
607
  class XtRenderSubComponent {
605
608
  constructor() {
606
- this.context = input.required();
607
- this.componentType = input();
609
+ this.context = input.required(...(ngDevMode ? [{ debugName: "context" }] : []));
610
+ this.componentType = input(...(ngDevMode ? [undefined, { debugName: "componentType" }] : []));
608
611
  this.outputsObject = new XtBaseOutput();
609
- this.inputs = input();
612
+ this.inputs = input(...(ngDevMode ? [undefined, { debugName: "inputs" }] : []));
610
613
  this.outputs = output();
611
614
  this.outlet = viewChild.required(NgComponentOutlet);
612
615
  this.resolverService = inject(XtResolverService);
@@ -623,7 +626,7 @@ class XtRenderSubComponent {
623
626
  type = compFound.componentClass;
624
627
  }
625
628
  return type ?? null;
626
- });
629
+ }, ...(ngDevMode ? [{ debugName: "type" }] : []));
627
630
  }
628
631
  /**
629
632
  * Transfers the input and outputs from the host to the rendered component
@@ -647,10 +650,10 @@ class XtRenderSubComponent {
647
650
  }
648
651
  }
649
652
  }
650
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtRenderSubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
651
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.10", type: XtRenderSubComponent, isStandalone: true, selector: "xt-render-sub", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null }, componentType: { classPropertyName: "componentType", publicName: "componentType", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outputs: "outputs" }, viewQueries: [{ propertyName: "outlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], ngImport: i0, template: "{{componentType()}}\n<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
653
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtRenderSubComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
654
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.2.3", type: XtRenderSubComponent, isStandalone: true, selector: "xt-render-sub", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null }, componentType: { classPropertyName: "componentType", publicName: "componentType", isSignal: true, isRequired: false, transformFunction: null }, inputs: { classPropertyName: "inputs", publicName: "inputs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outputs: "outputs" }, viewQueries: [{ propertyName: "outlet", first: true, predicate: NgComponentOutlet, descendants: true, isSignal: true }], ngImport: i0, template: "{{componentType()}}\n<ng-container *ngComponentOutlet=\"type(); inputs: {context:context ()}\" />\n", styles: [""], dependencies: [{ kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
652
655
  }
653
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtRenderSubComponent, decorators: [{
656
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtRenderSubComponent, decorators: [{
654
657
  type: Component,
655
658
  args: [{ selector: 'xt-render-sub', standalone: true, imports: [
656
659
  NgComponentOutlet,
@@ -667,58 +670,58 @@ class XtBaseInput {
667
670
  */
668
671
  class XtSimpleComponent {
669
672
  constructor() {
670
- this.context = input.required();
673
+ this.context = input.required(...(ngDevMode ? [{ debugName: "context" }] : []));
671
674
  this.outputsObject = new XtBaseOutput();
672
675
  this.inputsObject = new XtBaseInput();
673
676
  this.outputs = output();
674
677
  this.isInForm = computed(() => {
675
678
  return this.context()?.isInForm() ?? false;
676
- });
679
+ }, ...(ngDevMode ? [{ debugName: "isInForm" }] : []));
677
680
  this.formControlNameIfAny = computed(() => {
678
681
  return this.context()?.subName;
679
- });
682
+ }, ...(ngDevMode ? [{ debugName: "formControlNameIfAny" }] : []));
680
683
  this.formGroupIfAny = computed(() => {
681
684
  return this.context()?.formGroup();
682
- });
685
+ }, ...(ngDevMode ? [{ debugName: "formGroupIfAny" }] : []));
683
686
  this.formGroup = computed(() => {
684
687
  const ret = this.context()?.formGroup();
685
688
  if (ret == null)
686
689
  throw new Error('No form groups in this component of type ' + this.componentDescriptor());
687
690
  return ret;
688
- });
691
+ }, ...(ngDevMode ? [{ debugName: "formGroup" }] : []));
689
692
  /**
690
693
  * Returns the component form name, which is for now the subName
691
694
  */
692
695
  this.componentNameInForm = computed(() => {
693
696
  return this.safelyGetSubName();
694
- });
697
+ }, ...(ngDevMode ? [{ debugName: "componentNameInForm" }] : []));
695
698
  this.safelyGetSubName = computed(() => {
696
699
  const ret = this.context()?.subName;
697
700
  if (ret == null)
698
701
  throw new Error('This component has no name in the form ' + this.componentDescriptor());
699
702
  return ret;
700
- });
703
+ }, ...(ngDevMode ? [{ debugName: "safelyGetSubName" }] : []));
701
704
  /**
702
705
  * Returns the form control name and create a form control behind the scene
703
706
  */
704
707
  this.formControlName = computed(() => {
705
708
  const ret = this.safelyGetSubName();
706
- this.manageFormControl(ret); // Creates the form control
709
+ //this.manageFormControl<any>(ret); // Don't create anything at this point. It's a computed value.
707
710
  return ret;
708
- });
711
+ }, ...(ngDevMode ? [{ debugName: "formControlName" }] : []));
709
712
  this.formControl = computed(() => {
710
713
  const subName = this.safelyGetSubName();
711
- const formControl = this.manageFormControl(subName);
714
+ const formControl = this.manageFormControl(subName, false);
712
715
  if (formControl == null)
713
716
  throw new Error("Calling formControl for subName " + subName + " when none exist.");
714
717
  return formControl;
715
- });
718
+ }, ...(ngDevMode ? [{ debugName: "formControl" }] : []));
716
719
  this.getValue = computed(() => {
717
720
  return this.context().value();
718
- });
721
+ }, ...(ngDevMode ? [{ debugName: "getValue" }] : []));
719
722
  this.displayValue = computed(() => {
720
723
  return this.context().displayValue();
721
- });
724
+ }, ...(ngDevMode ? [{ debugName: "displayValue" }] : []));
722
725
  }
723
726
  ngOnInit() {
724
727
  this.setupInputOutput();
@@ -727,7 +730,7 @@ class XtSimpleComponent {
727
730
  this.outputs.emit(this.outputsObject);
728
731
  }
729
732
  }
730
- manageFormControl(ctrlName) {
733
+ manageFormControl(ctrlName, create = true) {
731
734
  const formGroup = this.formGroupIfAny();
732
735
  if (formGroup == null) {
733
736
  // You can call manageFormControl even in not a form, it just get ignored
@@ -736,11 +739,11 @@ class XtSimpleComponent {
736
739
  }
737
740
  else {
738
741
  let ctrl = formGroup.get(ctrlName);
739
- if (ctrl == null) {
742
+ if ((create) && (ctrl == null)) {
740
743
  ctrl = new FormControl(undefined);
741
744
  formGroup.setControl(ctrlName, ctrl);
742
745
  }
743
- return ctrl;
746
+ return ctrl ?? undefined;
744
747
  }
745
748
  }
746
749
  componentDescriptor() {
@@ -753,10 +756,10 @@ class XtSimpleComponent {
753
756
  setupInputOutput() {
754
757
  // Nothing to do here
755
758
  }
756
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
757
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: XtSimpleComponent, isStandalone: true, selector: "ng-component", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outputs: "outputs" }, ngImport: i0, template: '', isInline: true }); }
759
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
760
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: XtSimpleComponent, isStandalone: true, selector: "ng-component", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { outputs: "outputs" }, ngImport: i0, template: '', isInline: true }); }
758
761
  }
759
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtSimpleComponent, decorators: [{
762
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtSimpleComponent, decorators: [{
760
763
  type: Component,
761
764
  args: [{
762
765
  standalone: true,
@@ -785,7 +788,7 @@ class XtCompositeComponent extends XtSimpleComponent {
785
788
  ret = context.localFormGroup;
786
789
  }
787
790
  return ret;
788
- });
791
+ }, ...(ngDevMode ? [{ debugName: "formGroupIfAny" }] : []));
789
792
  /**
790
793
  * We need to create a new form group to manage the sub elements.
791
794
  */
@@ -794,7 +797,7 @@ class XtCompositeComponent extends XtSimpleComponent {
794
797
  if (ret == null)
795
798
  throw new Error('No form groups in this component of type ' + this.componentDescriptor());
796
799
  return ret;
797
- });
800
+ }, ...(ngDevMode ? [{ debugName: "formGroup" }] : []));
798
801
  }
799
802
  /**
800
803
  * Helper function to calculate the sub context
@@ -805,10 +808,10 @@ class XtCompositeComponent extends XtSimpleComponent {
805
808
  this.formGroupIfAny(); // Ensure the context is properly initialized
806
809
  return this.context().subContext(subName, subType, this.resolverService.typeResolver);
807
810
  }
808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtCompositeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
809
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.10", type: XtCompositeComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [""] }); }
811
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtCompositeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
812
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.3", type: XtCompositeComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true, styles: [""] }); }
810
813
  }
811
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: XtCompositeComponent, decorators: [{
814
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: XtCompositeComponent, decorators: [{
812
815
  type: Component,
813
816
  args: [{ standalone: true, imports: [], template: '' }]
814
817
  }] });
@@ -820,10 +823,10 @@ class MessageHandler {
820
823
  warningOccurred(warningMsg) {
821
824
  console.warn(warningMsg);
822
825
  }
823
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: MessageHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
824
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: MessageHandler, providedIn: 'root' }); }
826
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MessageHandler, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
827
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MessageHandler, providedIn: 'root' }); }
825
828
  }
826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: MessageHandler, decorators: [{
829
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MessageHandler, decorators: [{
827
830
  type: Injectable,
828
831
  args: [{
829
832
  providedIn: 'root'
@@ -844,10 +847,33 @@ class StoreSupport {
844
847
  }
845
848
  }
846
849
 
847
- function updateFormGroupWithValue(formGroup, value) {
850
+ function attachToFormGroup(formGroup, controlName, value, valueType, resolver) {
851
+ // If it's a single value, just create the control
852
+ if (((value != null) && (isPrimitive(value))
853
+ || (resolver?.isPrimitiveType(valueType)))) {
854
+ const simpleControl = new FormControl(value);
855
+ formGroup.addControl(controlName, simpleControl);
856
+ }
857
+ else {
858
+ const complexGroup = new FormGroup({});
859
+ updateFormGroupWithValue(complexGroup, value, valueType, resolver);
860
+ formGroup.addControl(controlName, complexGroup);
861
+ }
862
+ }
863
+ function updateFormGroupWithValue(formGroup, value, valueType, resolver) {
848
864
  const toDelete = new Set(Object.keys(formGroup.controls));
849
- for (const valueKey in value) {
850
- const primitive = isPrimitive(value[valueKey]);
865
+ // We merge the properties of the value if any, with the properties of the model
866
+ const keySet = new Set((value != null) ? Object.keys(value) : null);
867
+ if (((valueType != null) && (resolver != null))) {
868
+ const modelSubName = resolver.listSubNames(valueType, value);
869
+ for (const sub of modelSubName) {
870
+ keySet.add(sub);
871
+ }
872
+ }
873
+ for (const valueKey of keySet) {
874
+ const subValue = (value != null) ? value[valueKey] : null;
875
+ const subType = resolver?.findTypeName(valueType, valueKey, subValue) ?? undefined;
876
+ const primitive = (subType != null) ? resolver?.isPrimitiveType(subType, subValue) : isPrimitive(subValue);
851
877
  if (toDelete.delete(valueKey)) {
852
878
  // Already a control
853
879
  const oldControl = formGroup.get(valueKey);
@@ -859,7 +885,7 @@ function updateFormGroupWithValue(formGroup, value) {
859
885
  oldControl.setValue(value[valueKey]);
860
886
  }
861
887
  else {
862
- formGroup.setControl(valueKey, new FormControl(value[valueKey]));
888
+ formGroup.setControl(valueKey, new FormControl(subValue));
863
889
  }
864
890
  }
865
891
  else {
@@ -867,22 +893,22 @@ function updateFormGroupWithValue(formGroup, value) {
867
893
  if (oldControl.controls === undefined) {
868
894
  const newFormGroup = new FormGroup({});
869
895
  formGroup.setControl(valueKey, newFormGroup);
870
- updateFormGroupWithValue(newFormGroup, value[valueKey]);
896
+ updateFormGroupWithValue(newFormGroup, subValue, subType, resolver);
871
897
  }
872
898
  else {
873
899
  // It was already a formgroup, so just update it
874
- updateFormGroupWithValue(oldControl, value[valueKey]);
900
+ updateFormGroupWithValue(oldControl, subValue, subType, resolver);
875
901
  }
876
902
  }
877
903
  }
878
904
  else {
879
905
  if (primitive) {
880
- formGroup.addControl(valueKey, new FormControl(value[valueKey]));
906
+ formGroup.addControl(valueKey, new FormControl(subValue));
881
907
  }
882
908
  else {
883
909
  const newFormGroup = new FormGroup({});
884
910
  formGroup.addControl(valueKey, newFormGroup);
885
- updateFormGroupWithValue(newFormGroup, value[valueKey]);
911
+ updateFormGroupWithValue(newFormGroup, subValue, subType, resolver);
886
912
  }
887
913
  }
888
914
  }
@@ -901,14 +927,14 @@ class XtUnitTestHelper {
901
927
  */
902
928
  class HostTestSimpleComponent {
903
929
  constructor() {
904
- this.type = input.required();
905
- this.displayMode = input('FULL_VIEW');
906
- this.value = input(undefined);
930
+ this.type = input.required(...(ngDevMode ? [{ debugName: "type" }] : []));
931
+ this.displayMode = input('FULL_VIEW', ...(ngDevMode ? [{ debugName: "displayMode" }] : []));
932
+ this.value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : []));
907
933
  }
908
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
909
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: HostTestSimpleComponent, isStandalone: true, selector: "test-host", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Simple Component</h1> <xt-render [componentType]="type()" [displayMode]="displayMode()" [value]="value()" ></xt-render> ', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderComponent, selector: "xt-render", inputs: ["componentType", "displayMode", "valueType", "value", "formGroup", "subName", "inputs"], outputs: ["valueChange", "outputs"] }] }); }
934
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestSimpleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
935
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: HostTestSimpleComponent, isStandalone: true, selector: "test-host", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Simple Component</h1> <xt-render [componentType]="type()" [displayMode]="displayMode()" [value]="value()" ></xt-render> ', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderComponent, selector: "xt-render", inputs: ["componentType", "displayMode", "valueType", "value", "formGroup", "subName", "inputs"], outputs: ["valueChange", "outputs"] }] }); }
910
936
  }
911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestSimpleComponent, decorators: [{
937
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestSimpleComponent, decorators: [{
912
938
  type: Component,
913
939
  args: [{
914
940
  selector: 'test-host',
@@ -925,12 +951,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
925
951
  class HostTestFormComponent {
926
952
  constructor() {
927
953
  this.builder = inject(FormBuilder);
928
- this.type = input.required();
929
- this.controlName = input.required();
954
+ this.type = input.required(...(ngDevMode ? [{ debugName: "type" }] : []));
955
+ this.controlName = input.required(...(ngDevMode ? [{ debugName: "controlName" }] : []));
930
956
  // You can send the description to be used in a FormBuilder to create the formgroup;
931
- this.formDescription = input({});
957
+ this.formDescription = input({}, ...(ngDevMode ? [{ debugName: "formDescription" }] : []));
932
958
  // Or set the FormGroup directly
933
- this.formGroup = input();
959
+ this.formGroup = input(...(ngDevMode ? [undefined, { debugName: "formGroup" }] : []));
934
960
  this.createdFormGroup = null;
935
961
  }
936
962
  computedFormGroup() {
@@ -954,10 +980,10 @@ class HostTestFormComponent {
954
980
  else
955
981
  throw new Error("FormGroup not yet created. Did you set formGroup or formDescription property ?");
956
982
  }
957
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
958
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: HostTestFormComponent, isStandalone: true, selector: "test-form-host", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: true, transformFunction: null }, formDescription: { classPropertyName: "formDescription", publicName: "formDescription", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Form Component</h1> <form [formGroup]="computedFormGroup()"> <xt-render [componentType]="type()" displayMode="FULL_EDITABLE" [subName]="controlName()" [formGroup]="computedFormGroup()"></xt-render></form>', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderComponent, selector: "xt-render", inputs: ["componentType", "displayMode", "valueType", "value", "formGroup", "subName", "inputs"], outputs: ["valueChange", "outputs"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
983
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
984
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: HostTestFormComponent, isStandalone: true, selector: "test-form-host", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: true, transformFunction: null }, formDescription: { classPropertyName: "formDescription", publicName: "formDescription", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Form Component</h1> <form [formGroup]="computedFormGroup()"> <xt-render [componentType]="type()" displayMode="FULL_EDITABLE" [subName]="controlName()" [formGroup]="computedFormGroup()"></xt-render></form>', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderComponent, selector: "xt-render", inputs: ["componentType", "displayMode", "valueType", "value", "formGroup", "subName", "inputs"], outputs: ["valueChange", "outputs"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }] }); }
959
985
  }
960
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestFormComponent, decorators: [{
986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestFormComponent, decorators: [{
961
987
  type: Component,
962
988
  args: [{
963
989
  selector: 'test-form-host',
@@ -972,20 +998,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImpo
972
998
  */
973
999
  class HostTestTypedComponent {
974
1000
  constructor() {
975
- this.displayMode = input('FULL_VIEW');
976
- this.value = input();
977
- this.valueType = input();
1001
+ this.displayMode = input('FULL_VIEW', ...(ngDevMode ? [{ debugName: "displayMode" }] : []));
1002
+ this.value = input(...(ngDevMode ? [undefined, { debugName: "value" }] : []));
1003
+ this.valueType = input(...(ngDevMode ? [undefined, { debugName: "valueType" }] : []));
978
1004
  this.context = computed(() => {
979
1005
  const ret = new XtBaseContext(this.displayMode());
980
1006
  ret.valueType = this.valueType();
981
1007
  ret.setDisplayValue(this.value());
982
1008
  return ret;
983
- });
1009
+ }, ...(ngDevMode ? [{ debugName: "context" }] : []));
984
1010
  }
985
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestTypedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
986
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: HostTestTypedComponent, isStandalone: true, selector: "test-typed-host", inputs: { displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Typed Component</h1> <xt-render-sub [context]="context()" ></xt-render-sub> ', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderSubComponent, selector: "xt-render-sub", inputs: ["context", "componentType", "inputs"], outputs: ["outputs"] }] }); }
1011
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestTypedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1012
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: HostTestTypedComponent, isStandalone: true, selector: "test-typed-host", inputs: { displayMode: { classPropertyName: "displayMode", publicName: "displayMode", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Typed Component</h1> <xt-render-sub [context]="context()" ></xt-render-sub> ', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: XtRenderSubComponent, selector: "xt-render-sub", inputs: ["context", "componentType", "inputs"], outputs: ["outputs"] }] }); }
987
1013
  }
988
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestTypedComponent, decorators: [{
1014
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestTypedComponent, decorators: [{
989
1015
  type: Component,
990
1016
  args: [{
991
1017
  selector: 'test-typed-host',
@@ -1003,49 +1029,62 @@ class HostTestTypedFormComponent {
1003
1029
  constructor() {
1004
1030
  this.builder = inject(FormBuilder);
1005
1031
  this.resolver = inject(XtResolverService);
1006
- this.valueType = input();
1007
- this.controlName = input();
1032
+ this.valueType = input(...(ngDevMode ? [undefined, { debugName: "valueType" }] : []));
1033
+ this.controlName = input(...(ngDevMode ? [undefined, { debugName: "controlName" }] : []));
1008
1034
  // You can send the description to be used in a FormBuilder to create the formgroup;
1009
- this.formDescription = input({});
1035
+ this.formDescription = input(null, ...(ngDevMode ? [{ debugName: "formDescription" }] : []));
1010
1036
  // Or set the FormGroup directly
1011
- this.formGroup = input();
1037
+ this.formGroup = input(...(ngDevMode ? [undefined, { debugName: "formGroup" }] : []));
1012
1038
  this.parentFormGroup = this.builder.group({});
1013
1039
  this.createdFormGroup = null;
1014
- this.computedFormGroup = computed(() => {
1015
- if (this.createdFormGroup == null) {
1016
- const formGroup = this.formGroup();
1040
+ }
1041
+ static { this.CONTROL_NAME = 'ForTest'; }
1042
+ ngOnInit() {
1043
+ this.computeFormGroup();
1044
+ }
1045
+ computeFormGroup() {
1046
+ if (this.createdFormGroup == null) {
1047
+ const formGroup = this.formGroup();
1048
+ if (this.formDescription() != null) {
1017
1049
  this.createdFormGroup = formGroup ?? generateFormGroup(this.formDescription());
1018
- this.parentFormGroup.addControl(this.controlName() ?? HostTestTypedFormComponent.CONTROL_NAME, this.createdFormGroup);
1019
- }
1020
- return this.createdFormGroup;
1021
- });
1022
- this.subContext = computed(() => {
1023
- this.computedFormGroup(); // Make sure the subformgroups are created
1024
- const ctrlName = this.controlName();
1025
- let ret = null;
1026
- if (ctrlName == null) {
1027
- ret = new XtBaseContext('FULL_EDITABLE', HostTestTypedFormComponent.CONTROL_NAME, this.parentFormGroup);
1028
1050
  }
1029
1051
  else {
1030
- ret = new XtBaseContext('FULL_EDITABLE', ctrlName, this.createdFormGroup);
1052
+ this.createdFormGroup = this.builder.group({});
1053
+ if (this.valueType() != null) {
1054
+ updateFormGroupWithValue(this.createdFormGroup, {}, this.valueType(), this.resolver.typeResolver);
1055
+ }
1031
1056
  }
1032
- ret.valueType = this.valueType();
1033
- return ret;
1034
- });
1057
+ this.parentFormGroup.addControl(this.controlName() ?? HostTestTypedFormComponent.CONTROL_NAME, this.createdFormGroup);
1058
+ }
1059
+ return this.createdFormGroup;
1035
1060
  }
1036
- static { this.CONTROL_NAME = 'ForTest'; }
1061
+ ;
1062
+ subContext() {
1063
+ this.computeFormGroup(); // Make sure the subformgroups are created
1064
+ const ctrlName = this.controlName();
1065
+ let ret = null;
1066
+ if (ctrlName == null) {
1067
+ ret = new XtBaseContext('FULL_EDITABLE', HostTestTypedFormComponent.CONTROL_NAME, this.parentFormGroup);
1068
+ }
1069
+ else {
1070
+ ret = new XtBaseContext('FULL_EDITABLE', ctrlName, this.createdFormGroup);
1071
+ }
1072
+ ret.valueType = this.valueType();
1073
+ return ret;
1074
+ }
1075
+ ;
1037
1076
  patchValue(controlName, newVal) {
1038
1077
  const patch = {};
1039
1078
  patch[controlName] = newVal;
1040
- this.computedFormGroup().patchValue(patch);
1079
+ this.computeFormGroup().patchValue(patch);
1041
1080
  }
1042
1081
  retrieveValue(controlName) {
1043
- return this.computedFormGroup().value[controlName];
1082
+ return this.computeFormGroup().value[controlName];
1044
1083
  }
1045
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestTypedFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1046
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.10", type: HostTestTypedFormComponent, isStandalone: true, selector: "test-typed-form-host", inputs: { valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: false, transformFunction: null }, formDescription: { classPropertyName: "formDescription", publicName: "formDescription", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Typed Form Component</h1> <form [formGroup]="parentFormGroup"> <xt-render-sub [context]="subContext()"></xt-render-sub></form>', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XtRenderSubComponent, selector: "xt-render-sub", inputs: ["context", "componentType", "inputs"], outputs: ["outputs"] }] }); }
1084
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestTypedFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1085
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.3", type: HostTestTypedFormComponent, isStandalone: true, selector: "test-typed-form-host", inputs: { valueType: { classPropertyName: "valueType", publicName: "valueType", isSignal: true, isRequired: false, transformFunction: null }, controlName: { classPropertyName: "controlName", publicName: "controlName", isSignal: true, isRequired: false, transformFunction: null }, formDescription: { classPropertyName: "formDescription", publicName: "formDescription", isSignal: true, isRequired: false, transformFunction: null }, formGroup: { classPropertyName: "formGroup", publicName: "formGroup", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '<h1>Test Typed Form Component</h1> <form [formGroup]="parentFormGroup"> <xt-render-sub [context]="subContext()"></xt-render-sub></form>', isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: XtRenderSubComponent, selector: "xt-render-sub", inputs: ["context", "componentType", "inputs"], outputs: ["outputs"] }] }); }
1047
1086
  }
1048
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.10", ngImport: i0, type: HostTestTypedFormComponent, decorators: [{
1087
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: HostTestTypedFormComponent, decorators: [{
1049
1088
  type: Component,
1050
1089
  args: [{
1051
1090
  selector: 'test-typed-form-host',
@@ -1177,5 +1216,5 @@ class TestDocumentInfo {
1177
1216
  * Generated bundle index. Do not edit.
1178
1217
  */
1179
1218
 
1180
- export { HostTestFormComponent, HostTestSimpleComponent, HostTestTypedComponent, HostTestTypedFormComponent, MessageHandler, StoreSupport, StoreTestHelper, TestDocumentInfo, TestStoreManager, TestStoreProvider, XT_REGISTRY_TOKEN, XT_RESOLVER_TOKEN, XT_TYPE_RESOLVER_TOKEN, XtBaseContext, XtCompositeComponent, XtPluginRegistry, XtRenderComponent, XtRenderSubComponent, XtResolvedComponent, XtResolverService, XtSimpleComponent, XtUnitTestHelper, initXtPluginRegistry, updateFormGroupWithValue, xtPluginRegistry };
1219
+ export { HostTestFormComponent, HostTestSimpleComponent, HostTestTypedComponent, HostTestTypedFormComponent, MessageHandler, StoreSupport, StoreTestHelper, TestDocumentInfo, TestStoreManager, TestStoreProvider, XT_REGISTRY_TOKEN, XT_RESOLVER_TOKEN, XT_TYPE_RESOLVER_TOKEN, XtBaseContext, XtCompositeComponent, XtPluginRegistry, XtRenderComponent, XtRenderSubComponent, XtResolvedComponent, XtResolverService, XtSimpleComponent, XtUnitTestHelper, attachToFormGroup, initXtPluginRegistry, updateFormGroupWithValue, xtPluginRegistry };
1181
1220
  //# sourceMappingURL=xt-components.mjs.map