valtech-components 2.0.998 → 2.0.1000

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.
Files changed (32) hide show
  1. package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +1 -76
  2. package/esm2022/lib/components/organisms/organization-view/organization-view.i18n.mjs +1 -5
  3. package/esm2022/lib/components/organisms/settings-hub/settings.routes.mjs +26 -8
  4. package/esm2022/lib/services/auth/auth.service.mjs +1 -14
  5. package/esm2022/lib/services/auth/types.mjs +1 -1
  6. package/esm2022/lib/services/org/org.service.mjs +1 -8
  7. package/esm2022/lib/services/org/types.mjs +1 -1
  8. package/esm2022/lib/version.mjs +2 -2
  9. package/esm2022/public-api.mjs +1 -4
  10. package/fesm2022/valtech-components.mjs +2047 -2971
  11. package/fesm2022/valtech-components.mjs.map +1 -1
  12. package/lib/components/organisms/organization-view/organization-view.component.d.ts +0 -5
  13. package/lib/components/organisms/settings-hub/settings.routes.d.ts +31 -6
  14. package/lib/services/auth/auth.service.d.ts +1 -7
  15. package/lib/services/auth/types.d.ts +0 -23
  16. package/lib/services/org/org.service.d.ts +1 -6
  17. package/lib/services/org/types.d.ts +0 -30
  18. package/lib/version.d.ts +1 -1
  19. package/package.json +1 -1
  20. package/public-api.d.ts +1 -5
  21. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.component.mjs +0 -385
  22. package/esm2022/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.mjs +0 -63
  23. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +0 -313
  24. package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.i18n.mjs +0 -63
  25. package/esm2022/lib/services/apikeys/api-keys.service.mjs +0 -46
  26. package/esm2022/lib/services/apikeys/types.mjs +0 -7
  27. package/lib/components/organisms/api-keys-modal/api-keys-modal.component.d.ts +0 -44
  28. package/lib/components/organisms/api-keys-modal/api-keys-modal.i18n.d.ts +0 -6
  29. package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +0 -47
  30. package/lib/components/organisms/member-import-modal/member-import-modal.i18n.d.ts +0 -6
  31. package/lib/services/apikeys/api-keys.service.d.ts +0 -25
  32. package/lib/services/apikeys/types.d.ts +0 -46
@@ -61,7 +61,6 @@ export declare class OrganizationViewComponent {
61
61
  readonly members: import("@angular/core").WritableSignal<MemberDetail[]>;
62
62
  readonly membersLoading: import("@angular/core").WritableSignal<boolean>;
63
63
  private readonly membersLoadError;
64
- readonly membersErrorState: import("@angular/core").Signal<EmptyStateMetadata>;
65
64
  readonly membersNextToken: import("@angular/core").WritableSignal<string>;
66
65
  readonly loadingMoreMembers: import("@angular/core").WritableSignal<boolean>;
67
66
  readonly showAllMembers: import("@angular/core").WritableSignal<boolean>;
@@ -82,16 +81,12 @@ export declare class OrganizationViewComponent {
82
81
  readonly viewPermissionsButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
83
82
  readonly transferButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
84
83
  readonly openInviteButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
85
- readonly openImportButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
86
- readonly openApiKeysButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
87
84
  /** Guarda para detectar el primer disparo del effect (evita doble carga). */
88
85
  private lastLoadedOrgId;
89
86
  constructor();
90
87
  onEdit(): void;
91
88
  onLeave(): Promise<void>;
92
89
  onOpenInvite(): void;
93
- onOpenImport(): void;
94
- onOpenApiKeys(): void;
95
90
  onViewPermissions(): void;
96
91
  onOpenTransfer(): void;
97
92
  onTransfer(newOwnerId: string): Promise<void>;
@@ -4,6 +4,8 @@ import { PreferencesViewConfig } from '../preferences-view/types';
4
4
  import { SecurityViewConfig } from '../security-view/types';
5
5
  import { AccountViewConfig } from '../account-view/types';
6
6
  import { OrganizationViewConfig } from '../organization-view/types';
7
+ import { NotificationPreferencesViewConfig } from '../notification-preferences-view/types';
8
+ import { PermissionsViewConfig } from '../permissions-view/types';
7
9
  import { SettingsHubConfig } from './types';
8
10
  /**
9
11
  * Opciones de `provideValtechSettingsRoutes`. Agrupa el HUB (`val-settings-hub`)
@@ -14,6 +16,18 @@ import { SettingsHubConfig } from './types';
14
16
  export interface ValtechSettingsRoutesOptions {
15
17
  /** Path base del bloque de settings. Default `'settings'`. */
16
18
  basePath?: string;
19
+ /**
20
+ * Path donde se monta el HUB dentro del bloque. Default `''` (índice). Para
21
+ * apps que quieren el hub en una sub-ruta (ej. showcase lo tiene en
22
+ * `preferences`), setear esto + `indexRedirectTo`.
23
+ */
24
+ hubPath?: string;
25
+ /**
26
+ * Si se setea, agrega `{ path: '', redirectTo, pathMatch: 'full' }` al índice.
27
+ * Pensado para cuando `hubPath` NO es `''` (el índice queda libre y se redirige
28
+ * al hub u otra sección). No usar junto con `hubPath: ''` (colisionarían).
29
+ */
30
+ indexRedirectTo?: string;
17
31
  /** Config del HUB (pasada por route data `settingsHubConfig`). */
18
32
  hubConfig?: SettingsHubConfig;
19
33
  /** Config de la vista Perfil (pass-through a `provideValtechProfileRoutes`). */
@@ -26,6 +40,10 @@ export interface ValtechSettingsRoutesOptions {
26
40
  accountConfig?: AccountViewConfig;
27
41
  /** Config de la vista Gestión de organización (pass-through a `provideValtechOrganizationRoutes`). */
28
42
  organizationConfig?: OrganizationViewConfig;
43
+ /** Config de Preferencias de notificaciones push (pass-through). */
44
+ notificationPreferencesConfig?: NotificationPreferencesViewConfig;
45
+ /** Config del visor de Permisos (pass-through). */
46
+ permissionsConfig?: PermissionsViewConfig;
29
47
  /** Monta la ruta `profile`. Default `true`. */
30
48
  includeProfile?: boolean;
31
49
  /** Monta la ruta de preferencias. Default `true`. */
@@ -36,20 +54,27 @@ export interface ValtechSettingsRoutesOptions {
36
54
  includeAccount?: boolean;
37
55
  /** Monta la ruta `organization`. Default `true`. */
38
56
  includeOrganization?: boolean;
57
+ /** Monta la ruta de preferencias de notificaciones push. Default `true`. */
58
+ includeNotificationPreferences?: boolean;
59
+ /** Monta la ruta `permissions`. Default `true`. */
60
+ includePermissions?: boolean;
39
61
  /** Path de la vista Preferencias. Default `'preferences'`. */
40
62
  preferencesPath?: string;
63
+ /** Path de la vista Preferencias de notificaciones push. Default `'notifications'`. */
64
+ notificationPreferencesPath?: string;
41
65
  /** Rutas extra a sumar como hijas (secciones de la app no promovidas). */
42
66
  extraRoutes?: Routes;
43
67
  }
44
68
  /**
45
69
  * Helper para montar el bloque completo de Settings en una app del factory: el
46
- * HUB de navegación (`val-settings-hub`) en el index + las vistas promovidas
47
- * (Perfil, Preferencias) + las rutas propias de la app (`extraRoutes`).
70
+ * HUB de navegación (`val-settings-hub`) + TODAS las vistas promovidas (Perfil,
71
+ * Preferencias, Seguridad, Cuenta, Gestión org, Preferencias de notificaciones,
72
+ * Permisos) + las rutas propias de la app (`extraRoutes`). Cada `include*` permite
73
+ * apagar una sección; `hubPath`/`indexRedirectTo`/`*Path` permiten reubicar el hub
74
+ * y las vistas para preservar URLs existentes.
48
75
  *
49
- * Pensado para apps nuevas (greenfield) que adoptan el set entero. showcase NO
50
- * lo usa hoy (preserva su `settings.routes.ts` por la semántica de sus muchas
51
- * secciones no promovidas — ver guía de promoción), pero el provider debe
52
- * existir y compilar para el resto de apps.
76
+ * showcase lo consume (ver `settings.routes.ts` de showcase): hub en `preferences`,
77
+ * preferences-view en `general`, index→redirect, `organization/new` por `extraRoutes`.
53
78
  *
54
79
  * @example
55
80
  * ```ts
@@ -6,7 +6,7 @@ import { AuthStateService } from './auth-state.service';
6
6
  import { TokenService } from './token.service';
7
7
  import { AuthStorageService } from './storage.service';
8
8
  import { AuthSyncService } from './sync.service';
9
- import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableRequest, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ActivateAccountRequest, ActivateAccountResponse, ChangePasswordResponse, DeleteAccountResponse, SendDeleteAccountCodeResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse, UpdateHandleResponse, CheckHandleResponse, UpdateAvatarRequest, UpdateAvatarResponse, InitiateEmailChangeResponse, ConfirmEmailChangeStep1Response, ConfirmEmailChangeStep2Response } from './types';
9
+ import { SigninRequest, SigninResponse, SignupRequest, SignupResponse, VerifyEmailRequest, VerifyEmailResponse, ResendCodeRequest, ResendCodeResponse, MFAVerifyResponse, RefreshResponse, GetPermissionsResponse, GetProfileResponse, UpdateProfileRequest, UpdateProfileResponse, MFASetupResponse, MFAConfirmResponse, MFADisableRequest, MFADisableResponse, ForgotPasswordRequest, ForgotPasswordResponse, ResetPasswordRequest, ResetPasswordResponse, ChangePasswordResponse, DeleteAccountResponse, SendDeleteAccountCodeResponse, SwitchOrgResponse, MFAMethod, AuthError, ValtechAuthConfig, EnableNotificationsResult, NotificationPermissionState, RegisterDeviceResult, TOTPSetupResponse, TOTPVerifySetupResponse, TOTPDisableResponse, RegenerateBackupCodesResponse, BackupCodesCountResponse, OAuthProvider, LinkedProvider, HasPasswordResponse, UpdateHandleResponse, CheckHandleResponse, UpdateAvatarRequest, UpdateAvatarResponse, InitiateEmailChangeResponse, ConfirmEmailChangeStep1Response, ConfirmEmailChangeStep2Response } from './types';
10
10
  import { OAuthService } from './oauth.service';
11
11
  import { FirebaseService, MessagingService } from '../firebase';
12
12
  import { I18nService } from '../i18n';
@@ -288,12 +288,6 @@ export declare class AuthService implements OnDestroy {
288
288
  * Resetea la contraseña usando el código enviado por email.
289
289
  */
290
290
  resetPassword(request: ResetPasswordRequest): Observable<ResetPasswordResponse>;
291
- /**
292
- * Activa una cuenta pre-aprovisionada por una organización (ADR-023): define
293
- * la contraseña con el token del enlace de email. En éxito el backend devuelve
294
- * tokens de auto-signin → el usuario queda logueado (mismo flujo que verify-email).
295
- */
296
- activateAccount(request: ActivateAccountRequest): Observable<ActivateAccountResponse>;
297
291
  /**
298
292
  * Cambia la contraseña del usuario autenticado.
299
293
  * Requiere la contraseña actual para verificación.
@@ -238,29 +238,6 @@ export interface VerifyEmailResponse {
238
238
  expiresIn?: number;
239
239
  tokenType?: string;
240
240
  }
241
- /**
242
- * Request para activar una cuenta pre-aprovisionada por una organización
243
- * (ADR-023): el usuario define su contraseña con el token del enlace de email.
244
- */
245
- export interface ActivateAccountRequest {
246
- token: string;
247
- newPassword: string;
248
- }
249
- /**
250
- * Response de activación de cuenta. En éxito incluye tokens de auto-signin
251
- * (mismo shape que verify-email) — el usuario queda logueado tras activar.
252
- */
253
- export interface ActivateAccountResponse {
254
- operationId: string;
255
- activated: boolean;
256
- accessToken?: string;
257
- refreshToken?: string;
258
- firebaseToken?: string;
259
- expiresIn?: number;
260
- tokenType?: string;
261
- roles?: string[];
262
- permissions?: string[];
263
- }
264
241
  /**
265
242
  * Request para reenviar código de verificación.
266
243
  */
@@ -1,7 +1,7 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { Observable } from 'rxjs';
3
3
  import { ValtechAuthConfig } from '../auth/types';
4
- import { Organization, ListMyOrgsResponse, CreateOrgRequest, UpdateOrgRequest, InviteUserRequest, InviteUserResponse, LeaveOrgResponse, ListOrgMembersResponse, OrgRole, ChangeMemberRoleResponse, PendingInvitation, AcceptInvitationResponse, ImportMembersRequest, ImportMembersResponse } from './types';
4
+ import { Organization, ListMyOrgsResponse, CreateOrgRequest, UpdateOrgRequest, InviteUserRequest, InviteUserResponse, LeaveOrgResponse, ListOrgMembersResponse, OrgRole, ChangeMemberRoleResponse, PendingInvitation, AcceptInvitationResponse } from './types';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class OrgService {
7
7
  private config;
@@ -21,11 +21,6 @@ export declare class OrgService {
21
21
  message: string;
22
22
  }>;
23
23
  inviteUser(orgId: string, req: InviteUserRequest): Observable<InviteUserResponse>;
24
- /**
25
- * Crea/asigna miembros en masa (ADR-023). Resultado por-fila (partial success):
26
- * `created` (pre-aprovisionado), `assigned` (ya existía), `skipped`, `error`.
27
- */
28
- importMembers(orgId: string, req: ImportMembersRequest): Observable<ImportMembersResponse>;
29
24
  leaveOrg(orgId: string): Observable<LeaveOrgResponse>;
30
25
  getOrgMembers(orgId: string, params?: {
31
26
  limit?: number;
@@ -97,33 +97,3 @@ export interface ChangeMemberRoleResponse {
97
97
  orgId: string;
98
98
  roleId: string;
99
99
  }
100
- export type ImportOnConflict = 'assignRole' | 'skip' | 'error';
101
- export interface ImportUserRow {
102
- email: string;
103
- name?: string;
104
- roleName: string;
105
- }
106
- export interface ImportMembersRequest {
107
- users: ImportUserRow[];
108
- onConflict?: ImportOnConflict;
109
- sendActivation?: boolean;
110
- }
111
- export type ImportRowStatus = 'created' | 'assigned' | 'skipped' | 'error';
112
- export interface ImportRowResult {
113
- email: string;
114
- status: ImportRowStatus;
115
- userId?: string;
116
- activation?: 'sent' | 'pending';
117
- reason?: string;
118
- }
119
- export interface ImportSummary {
120
- created: number;
121
- assigned: number;
122
- skipped: number;
123
- failed: number;
124
- }
125
- export interface ImportMembersResponse {
126
- operationId: string;
127
- summary: ImportSummary;
128
- results: ImportRowResult[];
129
- }
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 = "2.0.998";
5
+ export declare const VERSION = "2.0.1000";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "valtech-components",
3
- "version": "2.0.998",
3
+ "version": "2.0.1000",
4
4
  "private": false,
5
5
  "bin": {
6
6
  "valtech-firebase-config": "./src/lib/services/firebase/scripts/generate-sw-config.js"
package/public-api.d.ts CHANGED
@@ -301,8 +301,6 @@ export * from './lib/components/organisms/org-info-sheet/org-info-sheet.componen
301
301
  export * from './lib/components/organisms/invite-member-modal/invite-member-modal.component';
302
302
  export * from './lib/components/organisms/member-detail-modal/member-detail-modal.component';
303
303
  export * from './lib/components/organisms/member-detail-modal/types';
304
- export * from './lib/components/organisms/member-import-modal/member-import-modal.component';
305
- export * from './lib/components/organisms/api-keys-modal/api-keys-modal.component';
306
304
  export * from './lib/components/organisms/edit-org-modal/edit-org-modal.component';
307
305
  export * from './lib/components/organisms/transfer-ownership-modal/transfer-ownership-modal.component';
308
306
  export * from './lib/components/organisms/transfer-ownership-modal/types';
@@ -349,9 +347,7 @@ export * from './lib/services/legal-link/legal-link.service';
349
347
  export * from './lib/services/firebase';
350
348
  export * from './lib/services/auth';
351
349
  export { OrgService } from './lib/services/org/org.service';
352
- export type { Organization, OrgType, OrgPlan, CreateOrgRequest, UpdateOrgRequest, InviteUserRequest, InviteUserResponse, LeaveOrgResponse, ListMyOrgsResponse, OrgResponse, OrgMember, ListOrgMembersResponse, PendingInvitation, ListPendingInvitationsResponse, AcceptInvitationResponse, OrgRole, ListOrgRolesResponse, ChangeMemberRoleRequest, ChangeMemberRoleResponse, ImportUserRow, ImportOnConflict, ImportMembersRequest, ImportRowStatus, ImportRowResult, ImportSummary, ImportMembersResponse, } from './lib/services/org/types';
353
- export { ApiKeyService } from './lib/services/apikeys/api-keys.service';
354
- export type { ClientApiKey, ClientApiKeyWithSecret, CreateApiKeyRequest, CreateApiKeyResponse, ListApiKeysResponse, AvailablePermissionsResponse, RevokeApiKeyResponse, } from './lib/services/apikeys/types';
350
+ export type { Organization, OrgType, OrgPlan, CreateOrgRequest, UpdateOrgRequest, InviteUserRequest, InviteUserResponse, LeaveOrgResponse, ListMyOrgsResponse, OrgResponse, OrgMember, ListOrgMembersResponse, PendingInvitation, ListPendingInvitationsResponse, AcceptInvitationResponse, OrgRole, ListOrgRolesResponse, ChangeMemberRoleRequest, ChangeMemberRoleResponse, } from './lib/services/org/types';
355
351
  export * from './lib/services/i18n';
356
352
  export * from './lib/services/preferences';
357
353
  export * from './lib/services/network-status';