valtech-components 2.0.347 → 2.0.349

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, Pipe, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, Injectable, inject, InjectionToken, Inject, ChangeDetectorRef, Pipe, ChangeDetectionStrategy, ViewChild } from '@angular/core';
3
3
  import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonProgressBar, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonButtons, IonTextarea, IonDatetime, IonDatetimeButton, IonModal, IonInput, IonSelect, IonSelectOption, IonLabel, IonRadioGroup, IonRadio, IonSearchbar, IonToolbar, IonTitle, IonMenuButton, IonFooter, IonHeader, IonList, IonListHeader, IonNote, IonItem, IonContent } from '@ionic/angular/standalone';
4
4
  import * as i1 from '@angular/common';
5
5
  import { CommonModule, NgStyle, AsyncPipe, NgFor, NgClass } from '@angular/common';
@@ -1579,10 +1579,17 @@ class DisplayComponent {
1579
1579
  constructor() {
1580
1580
  this.subscriptions = new Subscription();
1581
1581
  this.langService = inject(LangService);
1582
+ this.cdr = inject(ChangeDetectorRef);
1582
1583
  }
1583
1584
  ngOnInit() {
1584
1585
  this.initializeDisplayContent();
1585
1586
  }
1587
+ ngOnChanges(changes) {
1588
+ if (changes['props']) {
1589
+ this.initializeDisplayContent();
1590
+ this.cdr.detectChanges();
1591
+ }
1592
+ }
1586
1593
  ngOnDestroy() {
1587
1594
  this.subscriptions.unsubscribe();
1588
1595
  }
@@ -1603,7 +1610,7 @@ class DisplayComponent {
1603
1610
  this.displayContent$ = of('');
1604
1611
  }
1605
1612
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1606
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DisplayComponent, isStandalone: true, selector: "val-display", inputs: { props: "props" }, ngImport: i0, template: `
1613
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DisplayComponent, isStandalone: true, selector: "val-display", inputs: { props: "props" }, usesOnChanges: true, ngImport: i0, template: `
1607
1614
  <ion-text [color]="props.color">
1608
1615
  <p [class]="props.size">
1609
1616
  {{ displayContent$ | async }}
@@ -2599,8 +2606,18 @@ function createTextProps(contentConfig, styleConfig = {}) {
2599
2606
  class TitleComponent {
2600
2607
  constructor() {
2601
2608
  this.langService = inject(LangService);
2609
+ this.cdr = inject(ChangeDetectorRef);
2602
2610
  }
2603
2611
  ngOnInit() {
2612
+ this.updateContent();
2613
+ }
2614
+ ngOnChanges(changes) {
2615
+ if (changes['props']) {
2616
+ this.updateContent();
2617
+ this.cdr.detectChanges();
2618
+ }
2619
+ }
2620
+ updateContent() {
2604
2621
  // Always convert to Observable for consistent template handling
2605
2622
  if (shouldUseReactiveContent(this.props)) {
2606
2623
  // Use reactive content with LangService
@@ -2614,7 +2631,7 @@ class TitleComponent {
2614
2631
  }
2615
2632
  }
2616
2633
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2617
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TitleComponent, isStandalone: true, selector: "val-title", inputs: { props: "props" }, ngImport: i0, template: `
2634
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: TitleComponent, isStandalone: true, selector: "val-title", inputs: { props: "props" }, usesOnChanges: true, ngImport: i0, template: `
2618
2635
  <ion-text [color]="props.color">
2619
2636
  @if (!props.bold) {
2620
2637
  <p [ngClass]="[props.size]" [class.thin]="props.thin">
@@ -4283,10 +4300,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
4283
4300
  * @input props: TitleBlockMetada - Configuration for the title block (title, aboveTitle, bellowTitle, position)
4284
4301
  */
4285
4302
  class TitleBlockComponent {
4286
- constructor() { }
4303
+ constructor(cdr) {
4304
+ this.cdr = cdr;
4305
+ }
4287
4306
  ngOnInit() { }
4288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleBlockComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4289
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TitleBlockComponent, isStandalone: true, selector: "val-title-block", inputs: { props: "props" }, ngImport: i0, template: `
4307
+ ngOnChanges(changes) {
4308
+ if (changes['props']) {
4309
+ // Forzar detección de cambios múltiple
4310
+ this.cdr.detectChanges();
4311
+ setTimeout(() => {
4312
+ this.cdr.detectChanges();
4313
+ }, 0);
4314
+ }
4315
+ }
4316
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TitleBlockComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4317
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: TitleBlockComponent, isStandalone: true, selector: "val-title-block", inputs: { props: "props" }, usesOnChanges: true, ngImport: i0, template: `
4290
4318
  <div [ngClass]="['titles-container', props.position]">
4291
4319
  <val-title
4292
4320
  *ngIf="props.aboveTitle"
@@ -4353,7 +4381,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
4353
4381
  ></val-title>
4354
4382
  </div>
4355
4383
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}val-button,val-title,val-display{display:inline-block}.titles-container{width:100%;display:flex;flex-direction:column;flex-wrap:wrap}.titles-container.left{align-content:flex-start;align-items:start;text-align:left}.titles-container.center{align-content:center;align-items:center;text-align:center}.titles-container.right{align-content:flex-end;align-items:end;text-align:end}.titles-container.leftocenter{align-content:flex-start;align-items:start;text-align:left}@media (min-width: 768px){.titles-container.leftocenter{align-content:center;align-items:center;text-align:center}}\n"] }]
4356
- }], ctorParameters: () => [], propDecorators: { props: [{
4384
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
4357
4385
  type: Input
4358
4386
  }] } });
4359
4387
 
@@ -6477,19 +6505,29 @@ class ArticleBuilder {
6477
6505
  * @output onClose - Emits when the banner is closed
6478
6506
  */
6479
6507
  class BannerComponent {
6480
- constructor() {
6508
+ constructor(cdr) {
6509
+ this.cdr = cdr;
6481
6510
  this.onClick = new EventEmitter();
6482
6511
  this.onClose = new EventEmitter();
6483
6512
  }
6484
6513
  ngOnInit() { }
6514
+ ngOnChanges(changes) {
6515
+ if (changes['props']) {
6516
+ // Forzar detección de cambios múltiple
6517
+ this.cdr.detectChanges();
6518
+ setTimeout(() => {
6519
+ this.cdr.detectChanges();
6520
+ }, 0);
6521
+ }
6522
+ }
6485
6523
  clickHandler(token) {
6486
6524
  this.onClick.emit(token);
6487
6525
  }
6488
6526
  closeHandler() {
6489
6527
  this.onClose.emit();
6490
6528
  }
6491
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6492
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BannerComponent, isStandalone: true, selector: "val-banner", inputs: { props: "props" }, outputs: { onClick: "onClick", onClose: "onClose" }, ngImport: i0, template: `
6529
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BannerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
6530
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: BannerComponent, isStandalone: true, selector: "val-banner", inputs: { props: "props" }, outputs: { onClick: "onClick", onClose: "onClose" }, usesOnChanges: true, ngImport: i0, template: `
6493
6531
  <val-box
6494
6532
  [props]="{
6495
6533
  icon: props.closable ? 'close-outline' : '',
@@ -6550,7 +6588,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
6550
6588
  </div>
6551
6589
  </val-box>
6552
6590
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.content-container{display:flex;justify-content:space-between}.content-container.center{flex-direction:column}.content-container.column{flex-direction:row}.content-container.row{flex-direction:column}.content-container.middle{align-items:center}.content-container.top{align-items:flex-start}.content-container.bottom{align-items:flex-end}.content-container.hybrid{flex-direction:column;align-items:flex-start}@media (min-width: 768px){.content-container.hybrid{flex-direction:row;align-items:center}}.buttons-container{align-items:center;display:flex;margin-top:1rem;margin-bottom:.0625rem}.buttons-container.column{margin-top:0rem}\n"] }]
6553
- }], ctorParameters: () => [], propDecorators: { props: [{
6591
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
6554
6592
  type: Input
6555
6593
  }], onClick: [{
6556
6594
  type: Output
@@ -7678,7 +7716,11 @@ class NoContentComponent {
7678
7716
  ngOnInit() { }
7679
7717
  ngOnChanges(changes) {
7680
7718
  if (changes['props']) {
7719
+ // Forzar detección de cambios múltiple para asegurar actualización
7681
7720
  this.cdr.detectChanges();
7721
+ setTimeout(() => {
7722
+ this.cdr.detectChanges();
7723
+ }, 0);
7682
7724
  }
7683
7725
  }
7684
7726
  onClickHandler(token) {
@@ -7727,11 +7769,17 @@ var MOTION;
7727
7769
  })(MOTION || (MOTION = {}));
7728
7770
 
7729
7771
  class WizardFooterComponent {
7730
- constructor() {
7772
+ constructor(cdr) {
7773
+ this.cdr = cdr;
7731
7774
  this.onClick = new EventEmitter();
7732
7775
  this.wrapperId = 'wizard-wrapper';
7733
7776
  }
7734
7777
  ngOnInit() { }
7778
+ ngOnChanges(changes) {
7779
+ if (changes['props']) {
7780
+ this.cdr.detectChanges();
7781
+ }
7782
+ }
7735
7783
  clickHandler(token) {
7736
7784
  if (!token) {
7737
7785
  return;
@@ -7764,8 +7812,8 @@ class WizardFooterComponent {
7764
7812
  tryToStep(motion) {
7765
7813
  this.onClick.emit({ current: this.props.current, motion });
7766
7814
  }
7767
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7768
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardFooterComponent, isStandalone: true, selector: "val-wizard-footer", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
7815
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardFooterComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
7816
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardFooterComponent, isStandalone: true, selector: "val-wizard-footer", inputs: { props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
7769
7817
  <val-footer
7770
7818
  [props]="{
7771
7819
  bordered: false,
@@ -7818,7 +7866,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7818
7866
  ></val-button-group>
7819
7867
  </val-footer>
7820
7868
  ` }]
7821
- }], ctorParameters: () => [], propDecorators: { props: [{
7869
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
7822
7870
  type: Input
7823
7871
  }], onClick: [{
7824
7872
  type: Output
@@ -7844,7 +7892,17 @@ class WizardComponent {
7844
7892
  updateCurrentStep() {
7845
7893
  if (this.props?.steps && this.props?.current) {
7846
7894
  this.currentStep = this.props.steps[this.props.current];
7847
- this.currentStepTitles = this.currentStep?.titles ? JSON.parse(JSON.stringify(this.currentStep.titles)) : null;
7895
+ // Forzar nueva referencia de objeto para asegurar detección de cambios
7896
+ // Agregar timestamp para garantizar que es un objeto completamente nuevo
7897
+ this.currentStepTitles = this.currentStep?.titles
7898
+ ? {
7899
+ ...JSON.parse(JSON.stringify(this.currentStep.titles)),
7900
+ _timestamp: Date.now(), // Forzar nueva referencia
7901
+ _step: this.props.current, // Agregar identificador del paso
7902
+ }
7903
+ : null;
7904
+ // Forzar detección de cambios inmediatamente
7905
+ this.cdr.detectChanges();
7848
7906
  }
7849
7907
  }
7850
7908
  working() {
@@ -7880,7 +7938,11 @@ class WizardComponent {
7880
7938
  }
7881
7939
  this.props.current = newStep;
7882
7940
  this.updateCurrentStep();
7941
+ // Forzar múltiples ciclos de detección de cambios
7883
7942
  this.cdr.detectChanges();
7943
+ setTimeout(() => {
7944
+ this.cdr.detectChanges();
7945
+ }, 0);
7884
7946
  goToTop(this.wrapperId);
7885
7947
  }
7886
7948
  setError(error) {
@@ -7909,7 +7971,7 @@ class WizardComponent {
7909
7971
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
7910
7972
  <div [id]="wrapperId" class="wrapper">
7911
7973
  <ng-container *ngIf="props.state !== 'ERROR'">
7912
- <val-no-content [props]="currentStepTitles"></val-no-content>
7974
+ <val-no-content [props]="currentStepTitles" [attr.data-step]="props.current"></val-no-content>
7913
7975
  <div class="step">
7914
7976
  <div *ngIf="props.state === 'WORKING'">
7915
7977
  <val-content-loader
@@ -7935,7 +7997,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7935
7997
  args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
7936
7998
  <div [id]="wrapperId" class="wrapper">
7937
7999
  <ng-container *ngIf="props.state !== 'ERROR'">
7938
- <val-no-content [props]="currentStepTitles"></val-no-content>
8000
+ <val-no-content [props]="currentStepTitles" [attr.data-step]="props.current"></val-no-content>
7939
8001
  <div class="step">
7940
8002
  <div *ngIf="props.state === 'WORKING'">
7941
8003
  <val-content-loader