valtech-components 4.0.254 → 4.0.255

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.
@@ -39,11 +39,11 @@ export declare class RightsFooterComponent {
39
39
  /**
40
40
  * Computed helper for align prop in template.
41
41
  */
42
- propsAlign: import("@angular/core").Signal<"left" | "right" | "center">;
42
+ propsAlign: import("@angular/core").Signal<"left" | "center" | "right">;
43
43
  /**
44
44
  * Computed helper for color prop in template.
45
45
  */
46
- propsColor: import("@angular/core").Signal<"primary" | "secondary" | "tertiary" | "success" | "warning" | "danger" | "light" | "medium" | "dark">;
46
+ propsColor: import("@angular/core").Signal<"success" | "medium" | "primary" | "secondary" | "tertiary" | "warning" | "danger" | "light" | "dark">;
47
47
  /**
48
48
  * Computed helper for withMargin prop in template.
49
49
  */
@@ -11,7 +11,7 @@ export declare class TextComponent {
11
11
  */
12
12
  displayContent: import("@angular/core").Signal<string>;
13
13
  propsColor: import("@angular/core").Signal<import("@ionic/core").Color>;
14
- propsSize: import("@angular/core").Signal<"medium" | "small" | "large" | "xlarge">;
14
+ propsSize: import("@angular/core").Signal<"small" | "medium" | "large" | "xlarge">;
15
15
  propsBold: import("@angular/core").Signal<boolean>;
16
16
  propsProcessLinks: import("@angular/core").Signal<boolean>;
17
17
  propsAllowPartialBold: import("@angular/core").Signal<boolean>;
@@ -38,7 +38,7 @@ export declare class UserAvatarComponent {
38
38
  readonly imageUrl: import("@angular/core").Signal<string>;
39
39
  /** Iniciales — 1-2 chars derivados de name (preferred) o email prefix. */
40
40
  readonly initials: import("@angular/core").Signal<string>;
41
- readonly sizeClass: import("@angular/core").Signal<"medium" | "small" | "large" | "xlarge" | "xsmall">;
41
+ readonly sizeClass: import("@angular/core").Signal<"small" | "medium" | "large" | "xlarge" | "xsmall">;
42
42
  readonly shapeClass: import("@angular/core").Signal<"circle" | "square">;
43
43
  /** Background — explicito o derivado deterministicamente del user. */
44
44
  readonly bgColor: import("@angular/core").Signal<string>;
@@ -41,7 +41,7 @@ export declare class FeaturesListComponent {
41
41
  iconColor: string;
42
42
  iconSize: number;
43
43
  mode: "horizontal" | "vertical";
44
- gap: "medium" | "small" | "large";
44
+ gap: "small" | "medium" | "large";
45
45
  alignment: "center" | "start";
46
46
  imageShape: "circle" | "square";
47
47
  maxVisible: number;
@@ -45,7 +45,7 @@ export declare class ArticleComponent implements OnInit {
45
45
  getVideoElement(element: ArticleElement): ArticleVideoElement;
46
46
  getCustomElement(element: ArticleElement): ArticleCustomElement;
47
47
  getQuoteTextProps(element: ArticleElement): {
48
- size: "medium" | "small" | "large" | "xlarge";
48
+ size: "small" | "medium" | "large" | "xlarge";
49
49
  color: import("@ionic/core").Color;
50
50
  content?: string;
51
51
  bold: boolean;
@@ -57,11 +57,11 @@ export declare class ArticleComponent implements OnInit {
57
57
  linkConfig?: import("valtech-components").LinkProcessorConfig;
58
58
  allowPartialBold?: boolean;
59
59
  authorColor?: import("@ionic/core").Color;
60
- alignment?: "left" | "right" | "center";
60
+ alignment?: "left" | "center" | "right";
61
61
  showQuoteMark?: boolean;
62
62
  };
63
63
  getHighlightTextProps(element: ArticleElement): {
64
- size: "medium" | "small" | "large" | "xlarge";
64
+ size: "small" | "medium" | "large" | "xlarge";
65
65
  color: import("@ionic/core").Color;
66
66
  content?: string;
67
67
  bold: boolean;
@@ -56,7 +56,7 @@ export declare class ChatWindowComponent {
56
56
  protected readonly replyingTo: import("@angular/core").WritableSignal<MessageReplyTo>;
57
57
  protected readonly atBottom: import("@angular/core").WritableSignal<boolean>;
58
58
  protected readonly hasNew: import("@angular/core").WritableSignal<boolean>;
59
- protected readonly locale: import("@angular/core").Signal<"en-US" | "es-CL">;
59
+ protected readonly locale: import("@angular/core").Signal<"es-CL" | "en-US">;
60
60
  constructor();
61
61
  protected readonly rows: import("@angular/core").Signal<ChatRow[]>;
62
62
  protected onScroll(): void;
@@ -4,7 +4,7 @@ export declare class LandingStepsComponent {
4
4
  private readonly props_;
5
5
  set props(v: LandingStepsMetadata);
6
6
  readonly p: import("@angular/core").Signal<LandingStepsMetadata>;
7
- readonly cols: import("@angular/core").Signal<3 | 2 | 4>;
7
+ readonly cols: import("@angular/core").Signal<2 | 3 | 4>;
8
8
  readonly accentColor: import("@angular/core").Signal<string>;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<LandingStepsComponent, never>;
10
10
  static ɵcmp: i0.ɵɵComponentDeclaration<LandingStepsComponent, "val-landing-steps", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
@@ -28,7 +28,7 @@ export declare class MemberImportModalComponent implements OnInit {
28
28
  /** Namespace i18n. */
29
29
  i18nNamespace: string;
30
30
  csv: string;
31
- readonly importMode: import("@angular/core").WritableSignal<"file" | "paste">;
31
+ readonly importMode: import("@angular/core").WritableSignal<"paste" | "file">;
32
32
  readonly onConflictControl: FormControl<string>;
33
33
  readonly sendActivationControl: FormControl<boolean>;
34
34
  readonly conflictSelectProps: import("@angular/core").Signal<Partial<InputMetadata>>;
@@ -1,4 +1,4 @@
1
- import { LanguageSelectorMetadata } from '../../molecules/language-selector/types';
1
+ import { LanguageSelectorV2Metadata } from '../../molecules/language-selector-v2/language-selector-v2.component';
2
2
  import { PopoverSelectorMetadata } from '../../molecules/popover-selector/types';
3
3
  import { PreferencesService } from '../../../services/preferences/preferences.service';
4
4
  import { PreferencesViewConfig } from './types';
@@ -43,7 +43,7 @@ export declare class PreferencesViewComponent {
43
43
  readonly langHint: import("@angular/core").Signal<string>;
44
44
  readonly fontSizeTitle: import("@angular/core").Signal<string>;
45
45
  readonly fontSizeHint: import("@angular/core").Signal<string>;
46
- readonly langProps: import("@angular/core").Signal<Partial<LanguageSelectorMetadata>>;
46
+ readonly langProps: import("@angular/core").Signal<LanguageSelectorV2Metadata>;
47
47
  readonly themePickerProps: import("@angular/core").Signal<PopoverSelectorMetadata>;
48
48
  readonly fontSizePickerProps: import("@angular/core").Signal<PopoverSelectorMetadata>;
49
49
  constructor();
@@ -44,7 +44,7 @@ export declare class SearchHeaderComponent {
44
44
  blur: EventEmitter<void>;
45
45
  private readonly _open;
46
46
  readonly open: import("@angular/core").Signal<boolean>;
47
- config: import("@angular/core").Signal<SearchHeaderMetadata & Required<Pick<SearchHeaderMetadata, "searchToken" | "maxWidth" | "startOpen" | "showClose">>>;
47
+ config: import("@angular/core").Signal<SearchHeaderMetadata & Required<Pick<SearchHeaderMetadata, "maxWidth" | "searchToken" | "startOpen" | "showClose">>>;
48
48
  constructor();
49
49
  handleToolbar(token?: string): void;
50
50
  toggle(): void;
@@ -89,6 +89,8 @@ export declare class MessagingService {
89
89
  * Es un *optimistic hint* — la verdad la confirma el siguiente `getToken()`.
90
90
  */
91
91
  private readonly TOKEN_STORAGE_KEY;
92
+ private readonly FCM_SW_URL;
93
+ private readonly FCM_SW_SCOPE;
92
94
  /**
93
95
  * Timeout (ms) para `navigator.serviceWorker.ready` dentro de `getToken()`.
94
96
  *
@@ -97,6 +99,14 @@ export declare class MessagingService {
97
99
  * de colgarse indefinidamente.
98
100
  */
99
101
  private readonly SW_READY_TIMEOUT_MS;
102
+ /**
103
+ * Timeout duro para la llamada de Firebase `getToken()`.
104
+ *
105
+ * En Chromium puede quedar pendiente sin resolver si la registración FCM no
106
+ * responde (VAPID/proyecto/API/red). Sin este timeout, el watchdog externo
107
+ * fuerza un reload que no corrige la causa y deja un diagnóstico pobre.
108
+ */
109
+ private readonly FCM_GET_TOKEN_TIMEOUT_MS;
100
110
  /**
101
111
  * Timeout (ms) del watchdog de `enable()` antes de auto-recargar la página.
102
112
  *
@@ -105,7 +115,7 @@ export declare class MessagingService {
105
115
  * cold load. El timeout de `getToken()` (SW_READY_TIMEOUT_MS) no cubre eso;
106
116
  * por eso `enable()` envuelve el flujo completo en este watchdog.
107
117
  *
108
- * Un flujo exitoso real llega a token+device en ~4s; 15s es holgado y no
118
+ * Un flujo exitoso real llega a token+device en ~4s; 25s es holgado y no
109
119
  * atrapa un éxito lento.
110
120
  */
111
121
  private readonly ENABLE_WATCHDOG_MS;
@@ -231,12 +241,13 @@ export declare class MessagingService {
231
241
  /**
232
242
  * Resuelve el `ServiceWorkerRegistration` del SW de FCM.
233
243
  *
234
- * El SW `/firebase-messaging-sw.js` ya se registra una vez en el bootstrap de
235
- * la app (`config.ts`). Reutilizamos ese registro en lugar de re-registrarlo
244
+ * El SW de FCM ya se registra una vez en el bootstrap de la app (`config.ts`)
245
+ * con un scope dedicado. Reutilizamos ese registro en lugar de re-registrarlo
236
246
  * en cada `getToken()` — re-registrar repetidamente dispara revalidaciones del
237
247
  * SW en iOS PWA. Solo registramos como fallback si todavía no existe.
238
248
  */
239
249
  private resolveServiceWorkerRegistration;
250
+ private findFcmServiceWorkerRegistration;
240
251
  /**
241
252
  * Espera a que el Service Worker quede activo (`navigator.serviceWorker.ready`)
242
253
  * pero con un timeout duro.
@@ -251,6 +262,7 @@ export declare class MessagingService {
251
262
  * El timer se limpia en ambas ramas para no dejar timers colgando.
252
263
  */
253
264
  private waitForServiceWorkerReady;
265
+ private withTimeout;
254
266
  /**
255
267
  * Persiste el token FCM en localStorage (o lo limpia si es null/empty).
256
268
  */
package/lib/version.d.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export declare const VERSION = "4.0.254";
5
+ export declare const VERSION = "4.0.255";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "4.0.254",
3
+ "version": "4.0.255",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"