valtech-components 2.0.522 → 2.0.524

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 { CommonModule } from '@angular/common';
2
- import { Component, computed, inject, Input } from '@angular/core';
2
+ import { Component, computed, inject, input } from '@angular/core';
3
3
  import { TextComponent } from '../text/text.component';
4
4
  import { I18nService } from '../../../services/i18n';
5
5
  import * as i0 from "@angular/core";
@@ -27,32 +27,46 @@ import * as i0 from "@angular/core";
27
27
  export class RightsFooterComponent {
28
28
  constructor() {
29
29
  this.i18n = inject(I18nService);
30
+ /**
31
+ * Optional configuration for the rights footer.
32
+ * Signal-based input for full reactivity with computed().
33
+ */
34
+ this.props = input();
30
35
  /**
31
36
  * Current year for copyright.
32
37
  */
33
38
  this.currentYear = new Date().getFullYear();
34
39
  /**
35
- * Computed copyright text - reactive to language changes.
40
+ * Computed copyright text - reactive to both language AND props changes.
36
41
  */
37
42
  this.copyrightText = computed(() => {
38
43
  this.i18n.lang(); // Track language changes
39
- const company = this.props?.companyName || 'Valtech';
40
- const rights = this.props?.rightsText || this.i18n.t('allRightsReserved');
44
+ const p = this.props(); // Track props changes (now it's a signal!)
45
+ const company = p?.companyName || 'Valtech';
46
+ const rights = p?.rightsText || this.i18n.t('allRightsReserved');
41
47
  return `© ${this.currentYear} ${company}. ${rights}`;
42
48
  });
49
+ /**
50
+ * Computed helper for align prop in template.
51
+ */
52
+ this.propsAlign = computed(() => this.props()?.align);
53
+ /**
54
+ * Computed helper for color prop in template.
55
+ */
56
+ this.propsColor = computed(() => this.props()?.color || 'dark');
43
57
  }
44
58
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RightsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
45
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RightsFooterComponent, isStandalone: true, selector: "val-rights-footer", inputs: { props: "props" }, ngImport: i0, template: `
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: RightsFooterComponent, isStandalone: true, selector: "val-rights-footer", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
46
60
  <div
47
61
  class="rights-footer"
48
- [class.rights-footer--left]="props?.align === 'left'"
49
- [class.rights-footer--center]="props?.align === 'center' || !props?.align"
50
- [class.rights-footer--right]="props?.align === 'right'"
62
+ [class.rights-footer--left]="propsAlign() === 'left'"
63
+ [class.rights-footer--center]="propsAlign() === 'center' || !propsAlign()"
64
+ [class.rights-footer--right]="propsAlign() === 'right'"
51
65
  >
52
66
  <val-text
53
67
  [props]="{
54
68
  content: copyrightText(),
55
- color: props?.color || 'dark',
69
+ color: propsColor(),
56
70
  bold: false,
57
71
  size: 'small'
58
72
  }"
@@ -65,21 +79,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
65
79
  args: [{ selector: 'val-rights-footer', standalone: true, imports: [CommonModule, TextComponent], template: `
66
80
  <div
67
81
  class="rights-footer"
68
- [class.rights-footer--left]="props?.align === 'left'"
69
- [class.rights-footer--center]="props?.align === 'center' || !props?.align"
70
- [class.rights-footer--right]="props?.align === 'right'"
82
+ [class.rights-footer--left]="propsAlign() === 'left'"
83
+ [class.rights-footer--center]="propsAlign() === 'center' || !propsAlign()"
84
+ [class.rights-footer--right]="propsAlign() === 'right'"
71
85
  >
72
86
  <val-text
73
87
  [props]="{
74
88
  content: copyrightText(),
75
- color: props?.color || 'dark',
89
+ color: propsColor(),
76
90
  bold: false,
77
91
  size: 'small'
78
92
  }"
79
93
  />
80
94
  </div>
81
95
  `, styles: [".rights-footer{display:block;margin-top:24px}.rights-footer--left{text-align:left}.rights-footer--center{text-align:center}.rights-footer--right{text-align:right}\n"] }]
82
- }], propDecorators: { props: [{
83
- type: Input
84
- }] } });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHRzLWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcmlnaHRzLWZvb3Rlci9yaWdodHMtZm9vdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUF3QkgsTUFBTSxPQUFPLHFCQUFxQjtJQXZCbEM7UUF3QlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQU9uQzs7V0FFRztRQUNILGdCQUFXLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUV2Qzs7V0FFRztRQUNILGtCQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMseUJBQXlCO1lBQzNDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQztZQUNyRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1lBQzFFLE9BQU8sS0FBSyxJQUFJLENBQUMsV0FBVyxJQUFJLE9BQU8sS0FBSyxNQUFNLEVBQUUsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztLQUNKOytHQXRCWSxxQkFBcUI7bUdBQXJCLHFCQUFxQix5R0FuQnRCOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JULDZPQWpCUyxZQUFZLCtCQUFFLGFBQWE7OzRGQW9CMUIscUJBQXFCO2tCQXZCakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUM1Qjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVDs4QkFTUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmlnaHRzRm9vdGVyTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbi8qKlxuICogdmFsLXJpZ2h0cy1mb290ZXJcbiAqXG4gKiBBIHNpbXBsZSBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBjb3B5cmlnaHQgdGV4dCB3aXRoIGR5bmFtaWMgeWVhci5cbiAqIFVzZWZ1bCBmb3IgZm9vdGVycyB3aGVyZSB5b3UgbmVlZCB0byBzaG93IFwiwqkgMjAyNCBDb21wYW55LiBBbGwgcmlnaHRzIHJlc2VydmVkLlwiXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcmlnaHRzLWZvb3Rlcj48L3ZhbC1yaWdodHMtZm9vdGVyPlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLXJpZ2h0cy1mb290ZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb21wYW55TmFtZTogJ015IENvbXBhbnknLFxuICogICAgIHJpZ2h0c1RleHQ6ICdBbGwgcmlnaHRzIHJlc2VydmVkLicsXG4gKiAgICAgY29sb3I6ICdtZWRpdW0nLFxuICogICAgIGFsaWduOiAnbGVmdCdcbiAqICAgfVwiXG4gKiA+PC92YWwtcmlnaHRzLWZvb3Rlcj5cbiAqXG4gKiBAaW5wdXQgcHJvcHMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIChjb21wYW55TmFtZSwgcmlnaHRzVGV4dCwgY29sb3IsIGFsaWduKVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtcmlnaHRzLWZvb3RlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRleHRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwicmlnaHRzLWZvb3RlclwiXG4gICAgICBbY2xhc3MucmlnaHRzLWZvb3Rlci0tbGVmdF09XCJwcm9wcz8uYWxpZ24gPT09ICdsZWZ0J1wiXG4gICAgICBbY2xhc3MucmlnaHRzLWZvb3Rlci0tY2VudGVyXT1cInByb3BzPy5hbGlnbiA9PT0gJ2NlbnRlcicgfHwgIXByb3BzPy5hbGlnblwiXG4gICAgICBbY2xhc3MucmlnaHRzLWZvb3Rlci0tcmlnaHRdPVwicHJvcHM/LmFsaWduID09PSAncmlnaHQnXCJcbiAgICA+XG4gICAgICA8dmFsLXRleHRcbiAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICBjb250ZW50OiBjb3B5cmlnaHRUZXh0KCksXG4gICAgICAgICAgY29sb3I6IHByb3BzPy5jb2xvciB8fCAnZGFyaycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgc2l6ZTogJ3NtYWxsJ1xuICAgICAgICB9XCJcbiAgICAgIC8+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3JpZ2h0cy1mb290ZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmlnaHRzRm9vdGVyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKipcbiAgICogT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIHJpZ2h0cyBmb290ZXIuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wcz86IFJpZ2h0c0Zvb3Rlck1ldGFkYXRhO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHllYXIgZm9yIGNvcHlyaWdodC5cbiAgICovXG4gIGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBjb3B5cmlnaHQgdGV4dCAtIHJlYWN0aXZlIHRvIGxhbmd1YWdlIGNoYW5nZXMuXG4gICAqL1xuICBjb3B5cmlnaHRUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7IC8vIFRyYWNrIGxhbmd1YWdlIGNoYW5nZXNcbiAgICBjb25zdCBjb21wYW55ID0gdGhpcy5wcm9wcz8uY29tcGFueU5hbWUgfHwgJ1ZhbHRlY2gnO1xuICAgIGNvbnN0IHJpZ2h0cyA9IHRoaXMucHJvcHM/LnJpZ2h0c1RleHQgfHwgdGhpcy5pMThuLnQoJ2FsbFJpZ2h0c1Jlc2VydmVkJyk7XG4gICAgcmV0dXJuIGDCqSAke3RoaXMuY3VycmVudFllYXJ9ICR7Y29tcGFueX0uICR7cmlnaHRzfWA7XG4gIH0pO1xufVxuIl19
96
+ }] });
97
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlnaHRzLWZvb3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYXRvbXMvcmlnaHRzLWZvb3Rlci9yaWdodHMtZm9vdGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUVyRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUF3QkgsTUFBTSxPQUFPLHFCQUFxQjtJQXZCbEM7UUF3QlUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVuQzs7O1dBR0c7UUFDTSxVQUFLLEdBQUcsS0FBSyxFQUF3QixDQUFDO1FBRS9DOztXQUVHO1FBQ0gsZ0JBQVcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXZDOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyx5QkFBeUI7WUFDM0MsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsMkNBQTJDO1lBQ25FLE1BQU0sT0FBTyxHQUFHLENBQUMsRUFBRSxXQUFXLElBQUksU0FBUyxDQUFDO1lBQzVDLE1BQU0sTUFBTSxHQUFHLENBQUMsRUFBRSxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUNqRSxPQUFPLEtBQUssSUFBSSxDQUFDLFdBQVcsSUFBSSxPQUFPLEtBQUssTUFBTSxFQUFFLENBQUM7UUFDdkQsQ0FBQyxDQUFDLENBQUM7UUFFSDs7V0FFRztRQUNILGVBQVUsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRWpEOztXQUVHO1FBQ0gsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxJQUFJLE1BQU0sQ0FBQyxDQUFDO0tBQzVEOytHQWxDWSxxQkFBcUI7bUdBQXJCLHFCQUFxQixpTkFuQnRCOzs7Ozs7Ozs7Ozs7Ozs7O0dBZ0JULDZPQWpCUyxZQUFZLCtCQUFFLGFBQWE7OzRGQW9CMUIscUJBQXFCO2tCQXZCakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxZQUM1Qjs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSaWdodHNGb290ZXJNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcblxuLyoqXG4gKiB2YWwtcmlnaHRzLWZvb3RlclxuICpcbiAqIEEgc2ltcGxlIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGNvcHlyaWdodCB0ZXh0IHdpdGggZHluYW1pYyB5ZWFyLlxuICogVXNlZnVsIGZvciBmb290ZXJzIHdoZXJlIHlvdSBuZWVkIHRvIHNob3cgXCLCqSAyMDI0IENvbXBhbnkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXCJcbiAqXG4gKiBAZXhhbXBsZVxuICogPHZhbC1yaWdodHMtZm9vdGVyPjwvdmFsLXJpZ2h0cy1mb290ZXI+XG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtcmlnaHRzLWZvb3RlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbXBhbnlOYW1lOiAnTXkgQ29tcGFueScsXG4gKiAgICAgcmlnaHRzVGV4dDogJ0FsbCByaWdodHMgcmVzZXJ2ZWQuJyxcbiAqICAgICBjb2xvcjogJ21lZGl1bScsXG4gKiAgICAgYWxpZ246ICdsZWZ0J1xuICogICB9XCJcbiAqID48L3ZhbC1yaWdodHMtZm9vdGVyPlxuICpcbiAqIEBpbnB1dCBwcm9wcyAtIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gKGNvbXBhbnlOYW1lLCByaWdodHNUZXh0LCBjb2xvciwgYWxpZ24pXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1yaWdodHMtZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVGV4dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJyaWdodHMtZm9vdGVyXCJcbiAgICAgIFtjbGFzcy5yaWdodHMtZm9vdGVyLS1sZWZ0XT1cInByb3BzQWxpZ24oKSA9PT0gJ2xlZnQnXCJcbiAgICAgIFtjbGFzcy5yaWdodHMtZm9vdGVyLS1jZW50ZXJdPVwicHJvcHNBbGlnbigpID09PSAnY2VudGVyJyB8fCAhcHJvcHNBbGlnbigpXCJcbiAgICAgIFtjbGFzcy5yaWdodHMtZm9vdGVyLS1yaWdodF09XCJwcm9wc0FsaWduKCkgPT09ICdyaWdodCdcIlxuICAgID5cbiAgICAgIDx2YWwtdGV4dFxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IGNvcHlyaWdodFRleHQoKSxcbiAgICAgICAgICBjb2xvcjogcHJvcHNDb2xvcigpLFxuICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIHNpemU6ICdzbWFsbCdcbiAgICAgICAgfVwiXG4gICAgICAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9yaWdodHMtZm9vdGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFJpZ2h0c0Zvb3RlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSByaWdodHMgZm9vdGVyLlxuICAgKiBTaWduYWwtYmFzZWQgaW5wdXQgZm9yIGZ1bGwgcmVhY3Rpdml0eSB3aXRoIGNvbXB1dGVkKCkuXG4gICAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFJpZ2h0c0Zvb3Rlck1ldGFkYXRhPigpO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHllYXIgZm9yIGNvcHlyaWdodC5cbiAgICovXG4gIGN1cnJlbnRZZWFyID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBjb3B5cmlnaHQgdGV4dCAtIHJlYWN0aXZlIHRvIGJvdGggbGFuZ3VhZ2UgQU5EIHByb3BzIGNoYW5nZXMuXG4gICAqL1xuICBjb3B5cmlnaHRUZXh0ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7IC8vIFRyYWNrIGxhbmd1YWdlIGNoYW5nZXNcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcygpOyAvLyBUcmFjayBwcm9wcyBjaGFuZ2VzIChub3cgaXQncyBhIHNpZ25hbCEpXG4gICAgY29uc3QgY29tcGFueSA9IHA/LmNvbXBhbnlOYW1lIHx8ICdWYWx0ZWNoJztcbiAgICBjb25zdCByaWdodHMgPSBwPy5yaWdodHNUZXh0IHx8IHRoaXMuaTE4bi50KCdhbGxSaWdodHNSZXNlcnZlZCcpO1xuICAgIHJldHVybiBgwqkgJHt0aGlzLmN1cnJlbnRZZWFyfSAke2NvbXBhbnl9LiAke3JpZ2h0c31gO1xuICB9KTtcblxuICAvKipcbiAgICogQ29tcHV0ZWQgaGVscGVyIGZvciBhbGlnbiBwcm9wIGluIHRlbXBsYXRlLlxuICAgKi9cbiAgcHJvcHNBbGlnbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucHJvcHMoKT8uYWxpZ24pO1xuXG4gIC8qKlxuICAgKiBDb21wdXRlZCBoZWxwZXIgZm9yIGNvbG9yIHByb3AgaW4gdGVtcGxhdGUuXG4gICAqL1xuICBwcm9wc0NvbG9yID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5wcm9wcygpPy5jb2xvciB8fCAnZGFyaycpO1xufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output, Injectable, signal, makeEnvironmentProviders, APP_INITIALIZER, inject, HostListener, Pipe, ChangeDetectionStrategy, computed, ViewChild, ChangeDetectorRef, ElementRef, ContentChild, PLATFORM_ID, Inject, ErrorHandler, DestroyRef, InjectionToken, Optional, runInInjectionContext, effect, TemplateRef, ViewContainerRef, isSignal, Directive } from '@angular/core';
2
+ import { EventEmitter, Component, Input, Output, Injectable, signal, makeEnvironmentProviders, APP_INITIALIZER, inject, HostListener, Pipe, ChangeDetectionStrategy, computed, input, ViewChild, ChangeDetectorRef, ElementRef, ContentChild, PLATFORM_ID, Inject, ErrorHandler, DestroyRef, InjectionToken, Optional, runInInjectionContext, effect, TemplateRef, ViewContainerRef, isSignal, Directive } from '@angular/core';
3
3
  import * as i2$1 from '@ionic/angular/standalone';
4
4
  import { IonAvatar, IonCard, IonIcon, IonButton, IonSpinner, IonText, IonModal, IonHeader, IonToolbar, IonContent, IonButtons, IonTitle, IonProgressBar, IonSkeletonText, IonFab, IonFabButton, IonFabList, IonLabel, IonCardContent, IonCardHeader, IonCardTitle, IonCardSubtitle, IonCheckbox, IonTextarea, IonDatetime, IonDatetimeButton, IonInput, IonSelect, IonSelectOption, IonPopover, IonList, IonItem, IonRadioGroup, IonRadio, IonRange, IonSearchbar, IonSegment, IonSegmentButton, IonToggle, IonAccordion, IonAccordionGroup, IonTabBar, IonTabButton, IonBadge, IonBreadcrumb, IonBreadcrumbs, IonChip, IonNote, ToastController as ToastController$1, IonCol, IonRow, IonRefresher, IonRefresherContent, IonMenuButton, IonFooter, IonListHeader, IonInfiniteScroll, IonInfiniteScrollContent, IonGrid, MenuController, IonMenu, IonMenuToggle, AlertController } from '@ionic/angular/standalone';
5
5
  import * as i1 from '@angular/common';
@@ -4785,32 +4785,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4785
4785
  class RightsFooterComponent {
4786
4786
  constructor() {
4787
4787
  this.i18n = inject(I18nService);
4788
+ /**
4789
+ * Optional configuration for the rights footer.
4790
+ * Signal-based input for full reactivity with computed().
4791
+ */
4792
+ this.props = input();
4788
4793
  /**
4789
4794
  * Current year for copyright.
4790
4795
  */
4791
4796
  this.currentYear = new Date().getFullYear();
4792
4797
  /**
4793
- * Computed copyright text - reactive to language changes.
4798
+ * Computed copyright text - reactive to both language AND props changes.
4794
4799
  */
4795
4800
  this.copyrightText = computed(() => {
4796
4801
  this.i18n.lang(); // Track language changes
4797
- const company = this.props?.companyName || 'Valtech';
4798
- const rights = this.props?.rightsText || this.i18n.t('allRightsReserved');
4802
+ const p = this.props(); // Track props changes (now it's a signal!)
4803
+ const company = p?.companyName || 'Valtech';
4804
+ const rights = p?.rightsText || this.i18n.t('allRightsReserved');
4799
4805
  return `© ${this.currentYear} ${company}. ${rights}`;
4800
4806
  });
4807
+ /**
4808
+ * Computed helper for align prop in template.
4809
+ */
4810
+ this.propsAlign = computed(() => this.props()?.align);
4811
+ /**
4812
+ * Computed helper for color prop in template.
4813
+ */
4814
+ this.propsColor = computed(() => this.props()?.color || 'dark');
4801
4815
  }
4802
4816
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RightsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4803
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: RightsFooterComponent, isStandalone: true, selector: "val-rights-footer", inputs: { props: "props" }, ngImport: i0, template: `
4817
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: RightsFooterComponent, isStandalone: true, selector: "val-rights-footer", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
4804
4818
  <div
4805
4819
  class="rights-footer"
4806
- [class.rights-footer--left]="props?.align === 'left'"
4807
- [class.rights-footer--center]="props?.align === 'center' || !props?.align"
4808
- [class.rights-footer--right]="props?.align === 'right'"
4820
+ [class.rights-footer--left]="propsAlign() === 'left'"
4821
+ [class.rights-footer--center]="propsAlign() === 'center' || !propsAlign()"
4822
+ [class.rights-footer--right]="propsAlign() === 'right'"
4809
4823
  >
4810
4824
  <val-text
4811
4825
  [props]="{
4812
4826
  content: copyrightText(),
4813
- color: props?.color || 'dark',
4827
+ color: propsColor(),
4814
4828
  bold: false,
4815
4829
  size: 'small'
4816
4830
  }"
@@ -4823,23 +4837,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
4823
4837
  args: [{ selector: 'val-rights-footer', standalone: true, imports: [CommonModule, TextComponent], template: `
4824
4838
  <div
4825
4839
  class="rights-footer"
4826
- [class.rights-footer--left]="props?.align === 'left'"
4827
- [class.rights-footer--center]="props?.align === 'center' || !props?.align"
4828
- [class.rights-footer--right]="props?.align === 'right'"
4840
+ [class.rights-footer--left]="propsAlign() === 'left'"
4841
+ [class.rights-footer--center]="propsAlign() === 'center' || !propsAlign()"
4842
+ [class.rights-footer--right]="propsAlign() === 'right'"
4829
4843
  >
4830
4844
  <val-text
4831
4845
  [props]="{
4832
4846
  content: copyrightText(),
4833
- color: props?.color || 'dark',
4847
+ color: propsColor(),
4834
4848
  bold: false,
4835
4849
  size: 'small'
4836
4850
  }"
4837
4851
  />
4838
4852
  </div>
4839
4853
  `, styles: [".rights-footer{display:block;margin-top:24px}.rights-footer--left{text-align:left}.rights-footer--center{text-align:center}.rights-footer--right{text-align:right}\n"] }]
4840
- }], propDecorators: { props: [{
4841
- type: Input
4842
- }] } });
4854
+ }] });
4843
4855
 
4844
4856
  /**
4845
4857
  * val-alert-box