valtech-components 2.0.985 → 2.0.986
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.
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +97 -14
- package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +732 -0
- package/esm2022/lib/components/organisms/account-view/account-view.i18n.mjs +96 -0
- package/esm2022/lib/components/organisms/account-view/account.routes.mjs +29 -0
- package/esm2022/lib/components/organisms/account-view/types.mjs +2 -0
- package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.component.mjs +240 -0
- package/esm2022/lib/components/organisms/create-org-modal/create-org-modal.i18n.mjs +46 -0
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs +272 -0
- package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.mjs +40 -0
- package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +205 -0
- package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.mjs +35 -0
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +280 -0
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +26 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +8 -1
- package/fesm2022/valtech-components.mjs +2275 -277
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/date-input/date-input.component.d.ts +9 -0
- package/lib/components/organisms/account-view/account-view.component.d.ts +88 -0
- package/lib/components/organisms/account-view/account-view.i18n.d.ts +7 -0
- package/lib/components/organisms/account-view/account.routes.d.ts +24 -0
- package/lib/components/organisms/account-view/types.d.ts +44 -0
- package/lib/components/organisms/create-org-modal/create-org-modal.component.d.ts +45 -0
- package/lib/components/organisms/create-org-modal/create-org-modal.i18n.d.ts +7 -0
- package/lib/components/organisms/delete-account-modal/delete-account-modal.component.d.ts +50 -0
- package/lib/components/organisms/delete-account-modal/delete-account-modal.i18n.d.ts +7 -0
- package/lib/components/organisms/org-info-sheet/org-info-sheet.component.d.ts +44 -0
- package/lib/components/organisms/org-info-sheet/org-info-sheet.i18n.d.ts +12 -0
- package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +47 -0
- package/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.d.ts +7 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +7 -0
|
@@ -4,6 +4,7 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class DateInputComponent implements OnInit, OnChanges {
|
|
5
5
|
private i18n;
|
|
6
6
|
private presets;
|
|
7
|
+
constructor();
|
|
7
8
|
/**
|
|
8
9
|
* Preset name to apply. Presets define reusable date input configurations
|
|
9
10
|
* that can be registered at app level via provideValtechPresets().
|
|
@@ -27,6 +28,14 @@ export declare class DateInputComponent implements OnInit, OnChanges {
|
|
|
27
28
|
get doneText(): string;
|
|
28
29
|
/** Cancel button text - from props or i18n default */
|
|
29
30
|
get cancelText(): string;
|
|
31
|
+
/** Presentación del datetime (default: date). */
|
|
32
|
+
get presentation(): string;
|
|
33
|
+
/** Texto del trigger cuando NO hay valor (placeholder explícito o default i18n). */
|
|
34
|
+
get placeholderText(): string;
|
|
35
|
+
/** Id del trigger/datetime — estable; se garantiza no vacío en resolveProps. */
|
|
36
|
+
get triggerId(): string;
|
|
37
|
+
/** Valor formateado del control para mostrar en el trigger ('' si vacío). */
|
|
38
|
+
get displayValue(): string;
|
|
30
39
|
ngOnInit(): void;
|
|
31
40
|
ngOnChanges(changes: SimpleChanges): void;
|
|
32
41
|
/**
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { EmptyStateMetadata } from '../../molecules/empty-state/types';
|
|
2
|
+
import { ButtonGroupMetadata } from '../../molecules/button-group/types';
|
|
3
|
+
import { ButtonMetadata } from '../../types';
|
|
4
|
+
import { Organization, PendingInvitation } from '../../../services/org/types';
|
|
5
|
+
import { AccountViewConfig } from './types';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
/**
|
|
8
|
+
* `val-account-view` — vista Cuenta full-feature autocontenida (organism).
|
|
9
|
+
* Promovida desde `showcase` bajo el proceso de ADR-021. Reúne:
|
|
10
|
+
* - **Invitaciones pendientes** — aceptar / rechazar (`val-invitation-card`).
|
|
11
|
+
* - **Organizaciones** — card de org activa + empty-card + CTA "Nueva org"
|
|
12
|
+
* (modal `val-create-org-modal`) + "Ver todas" (modal `val-switch-org-modal`).
|
|
13
|
+
* - **Cerrar esta sesión** — `auth.logoutWithConfirmation()`.
|
|
14
|
+
* - **Eliminar cuenta** — modal `val-delete-account-modal`.
|
|
15
|
+
*
|
|
16
|
+
* NO renderiza ion-content — vive dentro de val-page-wrapper. No usa deep-links;
|
|
17
|
+
* `ActivatedRoute` se inyecta `{ optional: true }` solo para leer el route data
|
|
18
|
+
* de config. La navegación a la org route va por `NavigationService`.
|
|
19
|
+
*
|
|
20
|
+
* Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
|
|
21
|
+
* proveyó el namespace configurado (default `Settings.Account`).
|
|
22
|
+
*/
|
|
23
|
+
export declare class AccountViewComponent {
|
|
24
|
+
private nav;
|
|
25
|
+
private i18n;
|
|
26
|
+
private auth;
|
|
27
|
+
private orgService;
|
|
28
|
+
private modalService;
|
|
29
|
+
private toast;
|
|
30
|
+
private errors;
|
|
31
|
+
private route;
|
|
32
|
+
/**
|
|
33
|
+
* Config vía @Input (object-first). Si no se pasa, se cae al route data
|
|
34
|
+
* `accountConfig` (poblado por `provideValtechAccountRoutes`). `resolvedConfig`
|
|
35
|
+
* mergea con los defaults — `@Input` gana sobre route data.
|
|
36
|
+
*/
|
|
37
|
+
config?: AccountViewConfig;
|
|
38
|
+
readonly resolvedConfig: import("@angular/core").Signal<Required<Omit<AccountViewConfig, "onOrgSwitched" | "onOrgCreated" | "onLoggedOut" | "onAccountDeleted">> & Pick<AccountViewConfig, "onOrgSwitched" | "onOrgCreated" | "onLoggedOut" | "onAccountDeleted">>;
|
|
39
|
+
/** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
|
|
40
|
+
private get ns();
|
|
41
|
+
readonly orgs: import("@angular/core").WritableSignal<Organization[]>;
|
|
42
|
+
readonly orgsLoading: import("@angular/core").WritableSignal<boolean>;
|
|
43
|
+
private readonly orgsError;
|
|
44
|
+
readonly orgsErrorState: import("@angular/core").Signal<EmptyStateMetadata>;
|
|
45
|
+
readonly pendingInvites: import("@angular/core").WritableSignal<PendingInvitation[]>;
|
|
46
|
+
readonly pendingInvitesLoading: import("@angular/core").WritableSignal<boolean>;
|
|
47
|
+
readonly inviteAccepting: import("@angular/core").WritableSignal<string>;
|
|
48
|
+
readonly pageTitle: import("@angular/core").Signal<string>;
|
|
49
|
+
readonly pageDescription: import("@angular/core").Signal<string>;
|
|
50
|
+
readonly orgsTitle: import("@angular/core").Signal<string>;
|
|
51
|
+
readonly orgsEmpty: import("@angular/core").Signal<string>;
|
|
52
|
+
readonly orgsMoreInfo: import("@angular/core").Signal<string>;
|
|
53
|
+
readonly orgsNewQuestion: import("@angular/core").Signal<string>;
|
|
54
|
+
readonly orgsNewHint: import("@angular/core").Signal<string>;
|
|
55
|
+
readonly newOrgCtaProps: import("@angular/core").Signal<{
|
|
56
|
+
title: string;
|
|
57
|
+
description: string;
|
|
58
|
+
padding: string;
|
|
59
|
+
borderRadius: string;
|
|
60
|
+
actions: ButtonGroupMetadata;
|
|
61
|
+
}>;
|
|
62
|
+
readonly logoutTitle: import("@angular/core").Signal<string>;
|
|
63
|
+
readonly logoutHint: import("@angular/core").Signal<string>;
|
|
64
|
+
readonly dangerTitle: import("@angular/core").Signal<string>;
|
|
65
|
+
readonly dangerDeleteTitle: import("@angular/core").Signal<string>;
|
|
66
|
+
readonly dangerDeleteHint: import("@angular/core").Signal<string>;
|
|
67
|
+
readonly activeOrgId: import("@angular/core").Signal<string>;
|
|
68
|
+
readonly activeOrgRole: import("@angular/core").Signal<string>;
|
|
69
|
+
readonly activeOrg: import("@angular/core").Signal<Organization>;
|
|
70
|
+
readonly logoutButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
|
|
71
|
+
readonly deleteAccountButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
|
|
72
|
+
readonly switchAccountButtonProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
|
|
73
|
+
constructor();
|
|
74
|
+
orgTypeLabel(type: string): string;
|
|
75
|
+
onSwitchAccount(): void;
|
|
76
|
+
onDeleteAccount(): void;
|
|
77
|
+
onManageOrg(): void;
|
|
78
|
+
onNewOrg(): void;
|
|
79
|
+
onMoreInfo(): void;
|
|
80
|
+
onLogout(): void;
|
|
81
|
+
private loadPendingInvites;
|
|
82
|
+
acceptPendingInvite(invite: PendingInvitation): void;
|
|
83
|
+
declinePendingInvite(invite: PendingInvitation): void;
|
|
84
|
+
private loadOrgs;
|
|
85
|
+
protected tt(key: string): string;
|
|
86
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AccountViewComponent, never>;
|
|
87
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AccountViewComponent, "val-account-view", never, { "config": { "alias": "config"; "required": false; }; }, {}, never, never, true, never>;
|
|
88
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LanguagesContent } from '../../../services/i18n/types';
|
|
2
|
+
/**
|
|
3
|
+
* Defaults i18n (es/en) embebidos en `val-account-view`. Auto-registrados en el
|
|
4
|
+
* constructor del componente si el consumer no proveyó el namespace
|
|
5
|
+
* (`Settings.Account` por default). SOLO incluye las keys que la vista usa.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ACCOUNT_VIEW_I18N: LanguagesContent;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Routes } from '@angular/router';
|
|
2
|
+
import { AccountViewConfig } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Helper para montar la vista Cuenta (`val-account-view`) como ruta en una app
|
|
5
|
+
* del factory. El `config` se pasa por route `data` (`accountConfig`) y el
|
|
6
|
+
* componente lo lee como fallback de su `@Input() config`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // settings.routes.ts
|
|
11
|
+
* export const settingsRoutes: Routes = [
|
|
12
|
+
* ...provideValtechAccountRoutes(),
|
|
13
|
+
* { path: 'preferences', loadComponent: () => ... },
|
|
14
|
+
* ];
|
|
15
|
+
*
|
|
16
|
+
* // con config acotada:
|
|
17
|
+
* ...provideValtechAccountRoutes({ config: { showDeleteAccount: false } }),
|
|
18
|
+
* ...provideValtechAccountRoutes({ config: { manageOrgRoute: '/app/org' } }),
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare function provideValtechAccountRoutes(opts?: {
|
|
22
|
+
path?: string;
|
|
23
|
+
config?: AccountViewConfig;
|
|
24
|
+
}): Routes;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Organization } from '../../../services/org/types';
|
|
2
|
+
/**
|
|
3
|
+
* Configuración acotada de `val-account-view` (object-first). Tres ejes de
|
|
4
|
+
* variación permitidos — **NADA de slots arbitrarios** (ADR-021: una vista
|
|
5
|
+
* full-feature no abre slots; si falta algo, se promueve un nuevo punto de
|
|
6
|
+
* extensión):
|
|
7
|
+
*
|
|
8
|
+
* - **secciones visibles** — gatean el render de cada bloque (invitaciones
|
|
9
|
+
* pendientes, organizaciones, CTA de nueva org, cerrar sesión, eliminar cuenta).
|
|
10
|
+
* - **branding** — `i18nNamespace` para resolver los textos (default
|
|
11
|
+
* `'Settings.Account'`).
|
|
12
|
+
* - **comportamiento / callbacks** — ruta de gestión de org (`manageOrgRoute`) y
|
|
13
|
+
* hooks opcionales tras switch / create / logout / delete.
|
|
14
|
+
*/
|
|
15
|
+
export interface AccountViewConfig {
|
|
16
|
+
/** Muestra la sección de invitaciones pendientes. Default `true`. */
|
|
17
|
+
showPendingInvites?: boolean;
|
|
18
|
+
/** Muestra la sección de organizaciones (org activa + empty + CTA). Default `true`. */
|
|
19
|
+
showOrganizations?: boolean;
|
|
20
|
+
/** Muestra la card CTA de "Nueva organización". Default `true`. */
|
|
21
|
+
showNewOrgCta?: boolean;
|
|
22
|
+
/** Muestra la sección "Cerrar esta sesión". Default `true`. */
|
|
23
|
+
showLogout?: boolean;
|
|
24
|
+
/** Muestra la sección "Eliminar cuenta". Default `true`. */
|
|
25
|
+
showDeleteAccount?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Namespace i18n con el que la vista resuelve sus textos.
|
|
28
|
+
* Default `'Settings.Account'`.
|
|
29
|
+
*/
|
|
30
|
+
i18nNamespace?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Ruta a la que navegar al gestionar la org activa (botón "Gestionar").
|
|
33
|
+
* Default `'/app/settings/organization'`.
|
|
34
|
+
*/
|
|
35
|
+
manageOrgRoute?: string;
|
|
36
|
+
/** Hook tras cambiar de organización vía el modal de switch. */
|
|
37
|
+
onOrgSwitched?: () => void;
|
|
38
|
+
/** Hook tras crear una organización vía el modal de creación. */
|
|
39
|
+
onOrgCreated?: (newOrg: Organization) => void;
|
|
40
|
+
/** Hook tras cerrar sesión. */
|
|
41
|
+
onLoggedOut?: () => void;
|
|
42
|
+
/** Hook tras solicitar la eliminación de cuenta. */
|
|
43
|
+
onAccountDeleted?: () => void;
|
|
44
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { WritableSignal } from '@angular/core';
|
|
2
|
+
import { FormMetadata, FormSubmit } from '../../types';
|
|
3
|
+
import { Organization } from '../../../services/org/types';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* `val-create-org-modal` — modal de creación de organización (organism
|
|
7
|
+
* compartido). Promovido desde `showcase` bajo el proceso de ADR-021. Reusado por
|
|
8
|
+
* la vista Cuenta (y futuras vistas org-aware).
|
|
9
|
+
*
|
|
10
|
+
* Crea la org vía `OrgService.createOrg` y, en éxito, cambia a ella con
|
|
11
|
+
* `OrgSwitchService.switchTo`. El formulario (nombre + tipo + descripción) se
|
|
12
|
+
* construye una vez y se mantiene reactivo a idioma + estado de trabajo vía
|
|
13
|
+
* effects `allowSignalWrites`.
|
|
14
|
+
*
|
|
15
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback
|
|
16
|
+
* `onSuccess(newOrg)`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
|
|
17
|
+
* texto en `slot=end`, título/subtítulo en el body con `val-display`/`val-title`.
|
|
18
|
+
*
|
|
19
|
+
* Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace
|
|
20
|
+
* `CreateOrgModal`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class CreateOrgModalComponent {
|
|
23
|
+
private i18n;
|
|
24
|
+
private orgService;
|
|
25
|
+
private orgSwitch;
|
|
26
|
+
private toast;
|
|
27
|
+
private errors;
|
|
28
|
+
/** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
|
|
29
|
+
_modalRef?: {
|
|
30
|
+
dismiss: (data?: unknown, role?: string) => void;
|
|
31
|
+
};
|
|
32
|
+
/** Callback tras crear la org (pasado por `componentProps`). */
|
|
33
|
+
onSuccess?: (newOrg: Organization) => void;
|
|
34
|
+
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
35
|
+
i18nNamespace: string;
|
|
36
|
+
private readonly _busy;
|
|
37
|
+
readonly formMeta: WritableSignal<FormMetadata>;
|
|
38
|
+
constructor();
|
|
39
|
+
onSubmit(event: FormSubmit): Promise<void>;
|
|
40
|
+
dismiss(): void;
|
|
41
|
+
private buildFormMeta;
|
|
42
|
+
t(key: string): string;
|
|
43
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CreateOrgModalComponent, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CreateOrgModalComponent, "val-create-org-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "onSuccess": { "alias": "onSuccess"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
|
|
45
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LanguagesContent } from '../../../services/i18n/types';
|
|
2
|
+
/**
|
|
3
|
+
* Defaults i18n (es/en) embebidos en `val-create-org-modal`. Auto-registrados en
|
|
4
|
+
* el constructor del componente si el consumer no proveyó el namespace
|
|
5
|
+
* (`CreateOrgModal` por default). SOLO incluye las keys que el modal usa.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CREATE_ORG_MODAL_I18N: LanguagesContent;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { ComponentState, FormMetadata, FormSubmit } from '../../types';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* `val-delete-account-modal` — modal de eliminación de cuenta (organism,
|
|
6
|
+
* cuenta-específico). Promovido desde `showcase` bajo el proceso de ADR-021.
|
|
7
|
+
*
|
|
8
|
+
* Decide el flujo según si la cuenta tiene contraseña:
|
|
9
|
+
* - **con password** → pide la contraseña actual y la verifica vía
|
|
10
|
+
* `auth.deleteAccount({ password })`.
|
|
11
|
+
* - **sin password** (cuenta OAuth) → envía un código por email
|
|
12
|
+
* (`auth.sendDeleteAccountCode()`) y lo pide para confirmar
|
|
13
|
+
* (`auth.deleteAccount({ code })`).
|
|
14
|
+
*
|
|
15
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` para
|
|
16
|
+
* cerrar desde dentro. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
|
|
17
|
+
* texto en `slot=end`, título/subtítulo en el body vía `val-form`.
|
|
18
|
+
*
|
|
19
|
+
* Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
|
|
20
|
+
* proveyó el namespace `Settings.DeleteAccount`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class DeleteAccountModalComponent implements OnInit {
|
|
23
|
+
private auth;
|
|
24
|
+
private errors;
|
|
25
|
+
private i18n;
|
|
26
|
+
private toast;
|
|
27
|
+
/** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
|
|
28
|
+
_modalRef?: {
|
|
29
|
+
dismiss: (data?: unknown, role?: string) => void;
|
|
30
|
+
};
|
|
31
|
+
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
32
|
+
i18nNamespace: string;
|
|
33
|
+
readonly hasPassword: import("@angular/core").WritableSignal<boolean>;
|
|
34
|
+
readonly codeSent: import("@angular/core").WritableSignal<boolean>;
|
|
35
|
+
readonly formState: import("@angular/core").WritableSignal<ComponentState>;
|
|
36
|
+
constructor();
|
|
37
|
+
ngOnInit(): void;
|
|
38
|
+
t: (key: string) => string;
|
|
39
|
+
private submitBtn;
|
|
40
|
+
readonly passwordFormProps: import("@angular/core").Signal<FormMetadata>;
|
|
41
|
+
readonly sendCodeFormProps: import("@angular/core").Signal<FormMetadata>;
|
|
42
|
+
readonly codeFormProps: import("@angular/core").Signal<FormMetadata>;
|
|
43
|
+
close(): void;
|
|
44
|
+
onPasswordSubmit(event: FormSubmit): Promise<void>;
|
|
45
|
+
onSendCode(): Promise<void>;
|
|
46
|
+
onResendCode(): Promise<void>;
|
|
47
|
+
onCodeSubmit(event: FormSubmit): Promise<void>;
|
|
48
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DeleteAccountModalComponent, never>;
|
|
49
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DeleteAccountModalComponent, "val-delete-account-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
|
|
50
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LanguagesContent } from '../../../services/i18n/types';
|
|
2
|
+
/**
|
|
3
|
+
* Defaults i18n (es/en) embebidos en `val-delete-account-modal`. Auto-registrados
|
|
4
|
+
* en el constructor del componente si el consumer no proveyó el namespace
|
|
5
|
+
* (`Settings.DeleteAccount` por default). SOLO incluye las keys que el modal usa.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DELETE_ACCOUNT_MODAL_I18N: LanguagesContent;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ButtonMetadata } from '../../types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* `val-org-info-sheet` — sheet informativo "¿Qué son las organizaciones?".
|
|
5
|
+
* Extraído del `OrgInfoSheetComponent` inline de `AccountPage` bajo el proceso de
|
|
6
|
+
* ADR-021.
|
|
7
|
+
*
|
|
8
|
+
* El consumer pasa `title`/`subtitle`/`body`/`closeLabel` ya resueltos por props
|
|
9
|
+
* (patrón del resto de modales del factory). Los textos de los 3 features
|
|
10
|
+
* (Colaboración / Cambio rápido / Invitaciones), que en la versión inline estaban
|
|
11
|
+
* hardcoded, ahora se auto-resuelven desde el namespace `OrgInfoSheet`
|
|
12
|
+
* (auto-registrado en el constructor).
|
|
13
|
+
*
|
|
14
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps`. Header
|
|
15
|
+
* canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
|
|
16
|
+
* título/subtítulo en el body con `val-display`/`val-title`.
|
|
17
|
+
*/
|
|
18
|
+
export declare class OrgInfoSheetComponent {
|
|
19
|
+
private i18n;
|
|
20
|
+
/** Título principal (resuelto por el consumer). Fallback al namespace propio. */
|
|
21
|
+
title: string;
|
|
22
|
+
/** Subtítulo (resuelto por el consumer). Fallback al namespace propio. */
|
|
23
|
+
subtitle: string;
|
|
24
|
+
/** Cuerpo en párrafos separados por doble salto de línea (resuelto por el consumer). */
|
|
25
|
+
body: string;
|
|
26
|
+
/** Label del botón cerrar (resuelto por el consumer). Fallback al namespace propio. */
|
|
27
|
+
closeLabel: string;
|
|
28
|
+
/** Props del botón cerrar del footer (el consumer puede pasar custom). */
|
|
29
|
+
closeProps: Partial<ButtonMetadata>;
|
|
30
|
+
/** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
|
|
31
|
+
_modalRef?: {
|
|
32
|
+
dismiss: (data?: unknown, role?: string) => void;
|
|
33
|
+
};
|
|
34
|
+
constructor();
|
|
35
|
+
readonly resolvedTitle: import("@angular/core").Signal<string>;
|
|
36
|
+
readonly resolvedSubtitle: import("@angular/core").Signal<string>;
|
|
37
|
+
readonly resolvedCloseLabel: import("@angular/core").Signal<string>;
|
|
38
|
+
readonly paragraphs: import("@angular/core").Signal<string[]>;
|
|
39
|
+
readonly resolvedCloseProps: import("@angular/core").Signal<Partial<ButtonMetadata>>;
|
|
40
|
+
dismiss(): void;
|
|
41
|
+
protected tt(key: string): string;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OrgInfoSheetComponent, never>;
|
|
43
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<OrgInfoSheetComponent, "val-org-info-sheet", never, { "title": { "alias": "title"; "required": false; }; "subtitle": { "alias": "subtitle"; "required": false; }; "body": { "alias": "body"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "closeProps": { "alias": "closeProps"; "required": false; }; "_modalRef": { "alias": "_modalRef"; "required": false; }; }, {}, never, never, true, never>;
|
|
44
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LanguagesContent } from '../../../services/i18n/types';
|
|
2
|
+
/**
|
|
3
|
+
* Defaults i18n (es/en) embebidos en `val-org-info-sheet`. Auto-registrados en el
|
|
4
|
+
* constructor del componente si el consumer no proveyó el namespace
|
|
5
|
+
* (`OrgInfoSheet`). Cubre los textos de los 3 features (que en la versión inline
|
|
6
|
+
* de showcase estaban hardcoded) más fallbacks de título/subtítulo/closeLabel.
|
|
7
|
+
*
|
|
8
|
+
* `title`/`subtitle`/`body`/`closeLabel` los suele pasar el consumer ya resueltos
|
|
9
|
+
* por props (patrón del resto de modales); las keys `feature*` se auto-resuelven
|
|
10
|
+
* desde este namespace.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ORG_INFO_SHEET_I18N: LanguagesContent;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Organization } from '../../../services/org/types';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* `val-switch-org-modal` — modal de cambio de organización activa (organism
|
|
5
|
+
* compartido). Promovido desde `showcase` bajo el proceso de ADR-021. Reusado por
|
|
6
|
+
* la vista Cuenta (y futuras vistas org-aware).
|
|
7
|
+
*
|
|
8
|
+
* Lista las organizaciones del user (vía `OrgService.listMyOrgs`), permite buscar
|
|
9
|
+
* por nombre, y cambia la org activa con `OrgSwitchService.switchTo`. La org
|
|
10
|
+
* actual queda primera y deshabilitada.
|
|
11
|
+
*
|
|
12
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` + callback
|
|
13
|
+
* `onSuccess`. Header canónico (Regla #5): sin `ion-title`, botón Cerrar texto en
|
|
14
|
+
* `slot=end`, título/subtítulo en el body con `val-display`/`val-title`.
|
|
15
|
+
*
|
|
16
|
+
* Auto-registra sus defaults i18n (es/en) si el consumer no proveyó el namespace
|
|
17
|
+
* `Settings.SwitchOrg`.
|
|
18
|
+
*/
|
|
19
|
+
export declare class SwitchOrgModalComponent {
|
|
20
|
+
private i18n;
|
|
21
|
+
private auth;
|
|
22
|
+
private orgService;
|
|
23
|
+
private orgSwitch;
|
|
24
|
+
private errors;
|
|
25
|
+
/** Inyectado por `ModalService.open` — referencia para cerrar desde dentro. */
|
|
26
|
+
_modalRef?: {
|
|
27
|
+
dismiss: (data?: unknown, role?: string) => void;
|
|
28
|
+
};
|
|
29
|
+
/** Callback tras un switch exitoso (pasado por `componentProps`). */
|
|
30
|
+
onSuccess?: () => void;
|
|
31
|
+
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
32
|
+
i18nNamespace: string;
|
|
33
|
+
readonly orgs: import("@angular/core").WritableSignal<Organization[]>;
|
|
34
|
+
readonly loading: import("@angular/core").WritableSignal<boolean>;
|
|
35
|
+
readonly query: import("@angular/core").WritableSignal<string>;
|
|
36
|
+
readonly switchingId: import("@angular/core").WritableSignal<string>;
|
|
37
|
+
readonly activeOrgId: import("@angular/core").Signal<string>;
|
|
38
|
+
readonly filteredOrgs: import("@angular/core").Signal<Organization[]>;
|
|
39
|
+
constructor();
|
|
40
|
+
onQueryChange(value: string): void;
|
|
41
|
+
onSelect(org: Organization): Promise<void>;
|
|
42
|
+
private loadOrgs;
|
|
43
|
+
dismiss(): void;
|
|
44
|
+
t(key: string): string;
|
|
45
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SwitchOrgModalComponent, never>;
|
|
46
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<SwitchOrgModalComponent, "val-switch-org-modal", never, { "_modalRef": { "alias": "_modalRef"; "required": false; }; "onSuccess": { "alias": "onSuccess"; "required": false; }; "i18nNamespace": { "alias": "i18nNamespace"; "required": false; }; }, {}, never, never, true, never>;
|
|
47
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { LanguagesContent } from '../../../services/i18n/types';
|
|
2
|
+
/**
|
|
3
|
+
* Defaults i18n (es/en) embebidos en `val-switch-org-modal`. Auto-registrados en
|
|
4
|
+
* el constructor del componente si el consumer no proveyó el namespace
|
|
5
|
+
* (`Settings.SwitchOrg` por default). SOLO incluye las keys que el modal usa.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SWITCH_ORG_MODAL_I18N: LanguagesContent;
|
package/lib/version.d.ts
CHANGED
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -278,6 +278,13 @@ export * from './lib/components/organisms/security-view/security.routes';
|
|
|
278
278
|
export * from './lib/components/organisms/login-attempt-modal/login-attempt-modal.component';
|
|
279
279
|
export * from './lib/components/organisms/session-list-modal/session-list-modal.component';
|
|
280
280
|
export * from './lib/components/organisms/session-list-modal/types';
|
|
281
|
+
export * from './lib/components/organisms/account-view/account-view.component';
|
|
282
|
+
export * from './lib/components/organisms/account-view/types';
|
|
283
|
+
export * from './lib/components/organisms/account-view/account.routes';
|
|
284
|
+
export * from './lib/components/organisms/delete-account-modal/delete-account-modal.component';
|
|
285
|
+
export * from './lib/components/organisms/switch-org-modal/switch-org-modal.component';
|
|
286
|
+
export * from './lib/components/organisms/create-org-modal/create-org-modal.component';
|
|
287
|
+
export * from './lib/components/organisms/org-info-sheet/org-info-sheet.component';
|
|
281
288
|
export * from './lib/components/organisms/skeleton-layout/skeleton-layout.component';
|
|
282
289
|
export * from './lib/components/organisms/skeleton-layout/types';
|
|
283
290
|
export * from './lib/components/organisms/faq/faq.component';
|