valtech-components 2.0.985 → 2.0.987
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/atoms/button/button.component.mjs +6 -3
- 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/components/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +8 -1
- package/fesm2022/valtech-components.mjs +2279 -279
- 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/article/article.component.d.ts +1 -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/components/types.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +7 -0
package/esm2022/lib/components/organisms/delete-account-modal/delete-account-modal.component.mjs
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonSpinner, IonToolbar } from '@ionic/angular/standalone';
|
|
4
|
+
import { firstValueFrom } from 'rxjs';
|
|
5
|
+
import { FormComponent } from '../form/form.component';
|
|
6
|
+
import { ComponentStates, InputType } from '../../types';
|
|
7
|
+
import { AuthService } from '../../../services/auth/auth.service';
|
|
8
|
+
import { I18nService } from '../../../services/i18n';
|
|
9
|
+
import { ToastService } from '../../../services/toast.service';
|
|
10
|
+
import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
|
|
11
|
+
import { DELETE_ACCOUNT_MODAL_I18N } from './delete-account-modal.i18n';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
const DEFAULT_NAMESPACE = 'Settings.DeleteAccount';
|
|
14
|
+
/**
|
|
15
|
+
* `val-delete-account-modal` — modal de eliminación de cuenta (organism,
|
|
16
|
+
* cuenta-específico). Promovido desde `showcase` bajo el proceso de ADR-021.
|
|
17
|
+
*
|
|
18
|
+
* Decide el flujo según si la cuenta tiene contraseña:
|
|
19
|
+
* - **con password** → pide la contraseña actual y la verifica vía
|
|
20
|
+
* `auth.deleteAccount({ password })`.
|
|
21
|
+
* - **sin password** (cuenta OAuth) → envía un código por email
|
|
22
|
+
* (`auth.sendDeleteAccountCode()`) y lo pide para confirmar
|
|
23
|
+
* (`auth.deleteAccount({ code })`).
|
|
24
|
+
*
|
|
25
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps` para
|
|
26
|
+
* cerrar desde dentro. Header canónico (Regla #5): sin `ion-title`, botón Cerrar
|
|
27
|
+
* texto en `slot=end`, título/subtítulo en el body vía `val-form`.
|
|
28
|
+
*
|
|
29
|
+
* Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
|
|
30
|
+
* proveyó el namespace `Settings.DeleteAccount`.
|
|
31
|
+
*/
|
|
32
|
+
export class DeleteAccountModalComponent {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.auth = inject(AuthService);
|
|
35
|
+
this.errors = inject(ValtechErrorService);
|
|
36
|
+
this.i18n = inject(I18nService);
|
|
37
|
+
this.toast = inject(ToastService);
|
|
38
|
+
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
39
|
+
this.i18nNamespace = DEFAULT_NAMESPACE;
|
|
40
|
+
this.hasPassword = signal(null);
|
|
41
|
+
this.codeSent = signal(false);
|
|
42
|
+
this.formState = signal(ComponentStates.ENABLED);
|
|
43
|
+
this.t = (key) => this.i18n.t(key, this.i18nNamespace);
|
|
44
|
+
this.passwordFormProps = computed(() => ({
|
|
45
|
+
name: this.t('title'),
|
|
46
|
+
state: this.formState(),
|
|
47
|
+
sections: [
|
|
48
|
+
{
|
|
49
|
+
name: this.t('warningPassword'),
|
|
50
|
+
order: 0,
|
|
51
|
+
fields: [
|
|
52
|
+
{
|
|
53
|
+
token: 'delete-password',
|
|
54
|
+
name: 'password',
|
|
55
|
+
label: this.t('passwordLabel'),
|
|
56
|
+
hint: '',
|
|
57
|
+
placeholder: this.t('passwordPlaceholder'),
|
|
58
|
+
type: InputType.PASSWORD,
|
|
59
|
+
order: 0,
|
|
60
|
+
validators: [Validators.required],
|
|
61
|
+
errors: { required: this.t('passwordRequired') },
|
|
62
|
+
state: ComponentStates.ENABLED,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
actions: this.submitBtn('delete-password-submit', 'confirmCta'),
|
|
68
|
+
}));
|
|
69
|
+
this.sendCodeFormProps = computed(() => ({
|
|
70
|
+
name: this.t('title'),
|
|
71
|
+
state: this.formState(),
|
|
72
|
+
sections: [
|
|
73
|
+
{
|
|
74
|
+
name: this.t('warningSendCode'),
|
|
75
|
+
order: 0,
|
|
76
|
+
fields: [],
|
|
77
|
+
},
|
|
78
|
+
],
|
|
79
|
+
actions: this.submitBtn('delete-send-code-submit', 'sendCodeCta'),
|
|
80
|
+
}));
|
|
81
|
+
this.codeFormProps = computed(() => ({
|
|
82
|
+
name: this.t('title'),
|
|
83
|
+
state: this.formState(),
|
|
84
|
+
sections: [
|
|
85
|
+
{
|
|
86
|
+
name: this.t('warningEnterCode'),
|
|
87
|
+
order: 0,
|
|
88
|
+
fields: [
|
|
89
|
+
{
|
|
90
|
+
token: 'delete-code',
|
|
91
|
+
name: 'code',
|
|
92
|
+
label: this.t('codeLabel'),
|
|
93
|
+
hint: '',
|
|
94
|
+
placeholder: this.t('codePlaceholder'),
|
|
95
|
+
type: InputType.TEXT,
|
|
96
|
+
order: 0,
|
|
97
|
+
validators: [Validators.required],
|
|
98
|
+
errors: { required: this.t('codeRequired') },
|
|
99
|
+
state: ComponentStates.ENABLED,
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
],
|
|
104
|
+
actions: this.submitBtn('delete-code-submit', 'confirmCta'),
|
|
105
|
+
}));
|
|
106
|
+
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
107
|
+
this.i18n.registerContent(DEFAULT_NAMESPACE, DELETE_ACCOUNT_MODAL_I18N);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
ngOnInit() {
|
|
111
|
+
firstValueFrom(this.auth.getProfile())
|
|
112
|
+
.then(profile => this.hasPassword.set(profile.hasPassword ?? true))
|
|
113
|
+
.catch(() => this.hasPassword.set(true));
|
|
114
|
+
}
|
|
115
|
+
submitBtn(token, textKey) {
|
|
116
|
+
return {
|
|
117
|
+
text: this.t(textKey),
|
|
118
|
+
type: 'submit',
|
|
119
|
+
expand: 'block',
|
|
120
|
+
fill: 'solid',
|
|
121
|
+
color: 'dark',
|
|
122
|
+
size: 'default',
|
|
123
|
+
token,
|
|
124
|
+
state: ComponentStates.ENABLED,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
close() {
|
|
128
|
+
this._modalRef?.dismiss(undefined, 'cancel');
|
|
129
|
+
}
|
|
130
|
+
async onPasswordSubmit(event) {
|
|
131
|
+
const password = event.fields['password'];
|
|
132
|
+
if (!password) {
|
|
133
|
+
this.toast.show({
|
|
134
|
+
message: this.t('passwordRequired'),
|
|
135
|
+
duration: 3000,
|
|
136
|
+
color: 'dark',
|
|
137
|
+
position: 'top',
|
|
138
|
+
});
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
this.formState.set(ComponentStates.WORKING);
|
|
142
|
+
try {
|
|
143
|
+
await firstValueFrom(this.auth.deleteAccount({ password }));
|
|
144
|
+
}
|
|
145
|
+
catch (err) {
|
|
146
|
+
this.errors.handle(err, { context: 'delete-account.password' });
|
|
147
|
+
this.formState.set(ComponentStates.ENABLED);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async onSendCode() {
|
|
151
|
+
this.formState.set(ComponentStates.WORKING);
|
|
152
|
+
try {
|
|
153
|
+
await firstValueFrom(this.auth.sendDeleteAccountCode());
|
|
154
|
+
this.codeSent.set(true);
|
|
155
|
+
}
|
|
156
|
+
catch (err) {
|
|
157
|
+
this.errors.handle(err, { context: 'delete-account.send-code' });
|
|
158
|
+
}
|
|
159
|
+
finally {
|
|
160
|
+
this.formState.set(ComponentStates.ENABLED);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
async onResendCode() {
|
|
164
|
+
this.codeSent.set(false);
|
|
165
|
+
await this.onSendCode();
|
|
166
|
+
}
|
|
167
|
+
async onCodeSubmit(event) {
|
|
168
|
+
const code = event.fields['code'];
|
|
169
|
+
if (!code) {
|
|
170
|
+
this.toast.show({
|
|
171
|
+
message: this.t('codeRequired'),
|
|
172
|
+
duration: 3000,
|
|
173
|
+
color: 'dark',
|
|
174
|
+
position: 'top',
|
|
175
|
+
});
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
this.formState.set(ComponentStates.WORKING);
|
|
179
|
+
try {
|
|
180
|
+
await firstValueFrom(this.auth.deleteAccount({ code }));
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
this.errors.handle(err, { context: 'delete-account.code' });
|
|
184
|
+
this.formState.set(ComponentStates.ENABLED);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
188
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: DeleteAccountModalComponent, isStandalone: true, selector: "val-delete-account-modal", inputs: { _modalRef: "_modalRef", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
|
|
189
|
+
<ion-header>
|
|
190
|
+
<ion-toolbar>
|
|
191
|
+
<ion-buttons slot="end">
|
|
192
|
+
<ion-button fill="clear" color="dark" (click)="close()">
|
|
193
|
+
<strong>{{ t('close') }}</strong>
|
|
194
|
+
</ion-button>
|
|
195
|
+
</ion-buttons>
|
|
196
|
+
</ion-toolbar>
|
|
197
|
+
</ion-header>
|
|
198
|
+
|
|
199
|
+
<ion-content class="ion-padding">
|
|
200
|
+
<section class="modal-form-section">
|
|
201
|
+
@if (hasPassword() === null) {
|
|
202
|
+
<div class="spinner-center">
|
|
203
|
+
<ion-spinner name="crescent" />
|
|
204
|
+
</div>
|
|
205
|
+
} @else if (hasPassword()) {
|
|
206
|
+
<val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
|
|
207
|
+
} @else if (!codeSent()) {
|
|
208
|
+
<val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
|
|
209
|
+
} @else {
|
|
210
|
+
<val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
|
|
211
|
+
<div class="resend-row">
|
|
212
|
+
<ion-button
|
|
213
|
+
fill="clear"
|
|
214
|
+
color="medium"
|
|
215
|
+
size="small"
|
|
216
|
+
[disabled]="formState() === 'WORKING'"
|
|
217
|
+
(click)="onResendCode()"
|
|
218
|
+
>
|
|
219
|
+
{{ t('resend') }}
|
|
220
|
+
</ion-button>
|
|
221
|
+
</div>
|
|
222
|
+
}
|
|
223
|
+
</section>
|
|
224
|
+
</ion-content>
|
|
225
|
+
`, isInline: true, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }] }); }
|
|
226
|
+
}
|
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DeleteAccountModalComponent, decorators: [{
|
|
228
|
+
type: Component,
|
|
229
|
+
args: [{ selector: 'val-delete-account-modal', standalone: true, imports: [IonHeader, IonToolbar, IonButtons, IonButton, IonContent, IonSpinner, FormComponent], template: `
|
|
230
|
+
<ion-header>
|
|
231
|
+
<ion-toolbar>
|
|
232
|
+
<ion-buttons slot="end">
|
|
233
|
+
<ion-button fill="clear" color="dark" (click)="close()">
|
|
234
|
+
<strong>{{ t('close') }}</strong>
|
|
235
|
+
</ion-button>
|
|
236
|
+
</ion-buttons>
|
|
237
|
+
</ion-toolbar>
|
|
238
|
+
</ion-header>
|
|
239
|
+
|
|
240
|
+
<ion-content class="ion-padding">
|
|
241
|
+
<section class="modal-form-section">
|
|
242
|
+
@if (hasPassword() === null) {
|
|
243
|
+
<div class="spinner-center">
|
|
244
|
+
<ion-spinner name="crescent" />
|
|
245
|
+
</div>
|
|
246
|
+
} @else if (hasPassword()) {
|
|
247
|
+
<val-form [props]="passwordFormProps()" (onSubmit)="onPasswordSubmit($event)" />
|
|
248
|
+
} @else if (!codeSent()) {
|
|
249
|
+
<val-form [props]="sendCodeFormProps()" (onSubmit)="onSendCode()" />
|
|
250
|
+
} @else {
|
|
251
|
+
<val-form [props]="codeFormProps()" (onSubmit)="onCodeSubmit($event)" />
|
|
252
|
+
<div class="resend-row">
|
|
253
|
+
<ion-button
|
|
254
|
+
fill="clear"
|
|
255
|
+
color="medium"
|
|
256
|
+
size="small"
|
|
257
|
+
[disabled]="formState() === 'WORKING'"
|
|
258
|
+
(click)="onResendCode()"
|
|
259
|
+
>
|
|
260
|
+
{{ t('resend') }}
|
|
261
|
+
</ion-button>
|
|
262
|
+
</div>
|
|
263
|
+
}
|
|
264
|
+
</section>
|
|
265
|
+
</ion-content>
|
|
266
|
+
`, styles: [".modal-form-section{display:flex;flex-direction:column;gap:16px;max-width:420px;margin:0 auto;padding-top:8px}.resend-row{display:flex;justify-content:center;margin-top:-8px}.spinner-center{display:flex;justify-content:center;padding-top:32px}\n"] }]
|
|
267
|
+
}], ctorParameters: () => [], propDecorators: { _modalRef: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], i18nNamespace: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}] } });
|
|
272
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kZWxldGUtYWNjb3VudC1tb2RhbC9kZWxldGUtYWNjb3VudC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2pILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBa0IsZUFBZSxFQUEyQyxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFbEgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRXhFLE1BQU0saUJBQWlCLEdBQUcsd0JBQXdCLENBQUM7QUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBa0VILE1BQU0sT0FBTywyQkFBMkI7SUFnQnRDO1FBZlEsU0FBSSxHQUFHLE1BQU0s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QWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxRCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUM7WUFDNUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDOytHQXZLVSwyQkFBMkI7bUdBQTNCLDJCQUEyQix3SkE3RDVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNULCtUQXRDUyxTQUFTLG9HQUFFLFVBQVUsbUZBQUUsVUFBVSw4RUFBRSxTQUFTLG9QQUFFLFVBQVUsd0tBQUUsVUFBVSx5R0FBRSxhQUFhOzs0RkE4RGxGLDJCQUEyQjtrQkFqRXZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxZQUNwRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDVDt3REErQlEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkJ1dHRvbnMsIElvbkNvbnRlbnQsIElvbkhlYWRlciwgSW9uU3Bpbm5lciwgSW9uVG9vbGJhciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2Zvcm0vZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGUsIENvbXBvbmVudFN0YXRlcywgRm9ybU1ldGFkYXRhLCBGb3JtU3VibWl0LCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgVmFsdGVjaEVycm9yU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2Vycm9ycy92YWx0ZWNoLWVycm9yLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBERUxFVEVfQUNDT1VOVF9NT0RBTF9JMThOIH0gZnJvbSAnLi9kZWxldGUtYWNjb3VudC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuRGVsZXRlQWNjb3VudCc7XG5cbi8qKlxuICogYHZhbC1kZWxldGUtYWNjb3VudC1tb2RhbGAg4oCUIG1vZGFsIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEgKG9yZ2FuaXNtLFxuICogY3VlbnRhLWVzcGVjw61maWNvKS4gUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogRGVjaWRlIGVsIGZsdWpvIHNlZ8O6biBzaSBsYSBjdWVudGEgdGllbmUgY29udHJhc2XDsWE6XG4gKiAgLSAqKmNvbiBwYXNzd29yZCoqIOKGkiBwaWRlIGxhIGNvbnRyYXNlw7FhIGFjdHVhbCB5IGxhIHZlcmlmaWNhIHbDrWFcbiAqICAgIGBhdXRoLmRlbGV0ZUFjY291bnQoeyBwYXNzd29yZCB9KWAuXG4gKiAgLSAqKnNpbiBwYXNzd29yZCoqIChjdWVudGEgT0F1dGgpIOKGkiBlbnbDrWEgdW4gY8OzZGlnbyBwb3IgZW1haWxcbiAqICAgIChgYXV0aC5zZW5kRGVsZXRlQWNjb3VudENvZGUoKWApIHkgbG8gcGlkZSBwYXJhIGNvbmZpcm1hclxuICogICAgKGBhdXRoLmRlbGV0ZUFjY291bnQoeyBjb2RlIH0pYCkuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgcGFyYVxuICogY2VycmFyIGRlc2RlIGRlbnRyby4gSGVhZGVyIGNhbsOzbmljbyAoUmVnbGEgIzUpOiBzaW4gYGlvbi10aXRsZWAsIGJvdMOzbiBDZXJyYXJcbiAqIHRleHRvIGVuIGBzbG90PWVuZGAsIHTDrXR1bG8vc3VidMOtdHVsbyBlbiBlbCBib2R5IHbDrWEgYHZhbC1mb3JtYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgZW4gZWwgY29uc3RydWN0b3Igc2kgZWwgY29uc3VtZXIgbm9cbiAqIHByb3ZlecOzIGVsIG5hbWVzcGFjZSBgU2V0dGluZ3MuRGVsZXRlQWNjb3VudGAuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kZWxldGUtYWNjb3VudC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtJb25IZWFkZXIsIElvblRvb2xiYXIsIElvbkJ1dHRvbnMsIElvbkJ1dHRvbiwgSW9uQ29udGVudCwgSW9uU3Bpbm5lciwgRm9ybUNvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwibW9kYWwtZm9ybS1zZWN0aW9uXCI+XG4gICAgICAgIEBpZiAoaGFzUGFzc3dvcmQoKSA9PT0gbnVsbCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWNlbnRlclwiPlxuICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGhhc1Bhc3N3b3JkKCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInBhc3N3b3JkRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25QYXNzd29yZFN1Ym1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgfSBAZWxzZSBpZiAoIWNvZGVTZW50KCkpIHtcbiAgICAgICAgICA8dmFsLWZvcm0gW3Byb3BzXT1cInNlbmRDb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25TZW5kQ29kZSgpXCIgLz5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPHZhbC1mb3JtIFtwcm9wc109XCJjb2RlRm9ybVByb3BzKClcIiAob25TdWJtaXQpPVwib25Db2RlU3VibWl0KCRldmVudClcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNlbmQtcm93XCI+XG4gICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIlxuICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtU3RhdGUoKSA9PT0gJ1dPUktJTkcnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVzZW5kQ29kZSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgdCgncmVzZW5kJykgfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9zZWN0aW9uPlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5tb2RhbC1mb3JtLXNlY3Rpb24ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDE2cHg7XG4gICAgICAgIG1heC13aWR0aDogNDIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLnJlc2VuZC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgbWFyZ2luLXRvcDogLThweDtcbiAgICAgIH1cbiAgICAgIC5zcGlubmVyLWNlbnRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBwYWRkaW5nLXRvcDogMzJweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBEZWxldGVBY2NvdW50TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biBjb24gcXVlIGxhIHZpc3RhIHJlc3VlbHZlIHN1cyB0ZXh0b3MuICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICByZWFkb25seSBoYXNQYXNzd29yZCA9IHNpZ25hbDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IGNvZGVTZW50ID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZm9ybVN0YXRlID0gc2lnbmFsPENvbXBvbmVudFN0YXRlPihDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgREVMRVRFX0FDQ09VTlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmdldFByb2ZpbGUoKSlcbiAgICAgIC50aGVuKHByb2ZpbGUgPT4gdGhpcy5oYXNQYXNzd29yZC5zZXQocHJvZmlsZS5oYXNQYXNzd29yZCA/PyB0cnVlKSlcbiAgICAgIC5jYXRjaCgoKSA9PiB0aGlzLmhhc1Bhc3N3b3JkLnNldCh0cnVlKSk7XG4gIH1cblxuICB0ID0gKGtleTogc3RyaW5nKTogc3RyaW5nID0+IHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcblxuICBwcml2YXRlIHN1Ym1pdEJ0bih0b2tlbjogc3RyaW5nLCB0ZXh0S2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50KHRleHRLZXkpLFxuICAgICAgdHlwZTogJ3N1Ym1pdCcgYXMgY29uc3QsXG4gICAgICBleHBhbmQ6ICdibG9jaycgYXMgY29uc3QsXG4gICAgICBmaWxsOiAnc29saWQnIGFzIGNvbnN0LFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIHNpemU6ICdkZWZhdWx0JyBhcyBjb25zdCxcbiAgICAgIHRva2VuLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgIH07XG4gIH1cblxuICByZWFkb25seSBwYXNzd29yZEZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBuYW1lOiB0aGlzLnQoJ3RpdGxlJyksXG4gICAgc3RhdGU6IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50KCd3YXJuaW5nUGFzc3dvcmQnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuOiAnZGVsZXRlLXBhc3N3b3JkJyxcbiAgICAgICAgICAgIG5hbWU6ICdwYXNzd29yZCcsXG4gICAgICAgICAgICBsYWJlbDogdGhpcy50KCdwYXNzd29yZExhYmVsJyksXG4gICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ3Bhc3N3b3JkUGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgIHR5cGU6IElucHV0VHlwZS5QQVNTV09SRCxcbiAgICAgICAgICAgIG9yZGVyOiAwLFxuICAgICAgICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgICAgICAgZXJyb3JzOiB7IHJlcXVpcmVkOiB0aGlzLnQoJ3Bhc3N3b3JkUmVxdWlyZWQnKSB9LFxuICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0gYXMgSW5wdXRNZXRhZGF0YSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3Rpb25zOiB0aGlzLnN1Ym1pdEJ0bignZGVsZXRlLXBhc3N3b3JkLXN1Ym1pdCcsICdjb25maXJtQ3RhJyksXG4gIH0pKTtcblxuICByZWFkb25seSBzZW5kQ29kZUZvcm1Qcm9wcyA9IGNvbXB1dGVkPEZvcm1NZXRhZGF0YT4oKCkgPT4gKHtcbiAgICBuYW1lOiB0aGlzLnQoJ3RpdGxlJyksXG4gICAgc3RhdGU6IHRoaXMuZm9ybVN0YXRlKCksXG4gICAgc2VjdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogdGhpcy50KCd3YXJuaW5nU2VuZENvZGUnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW10sXG4gICAgICB9LFxuICAgIF0sXG4gICAgYWN0aW9uczogdGhpcy5zdWJtaXRCdG4oJ2RlbGV0ZS1zZW5kLWNvZGUtc3VibWl0JywgJ3NlbmRDb2RlQ3RhJyksXG4gIH0pKTtcblxuICByZWFkb25seSBjb2RlRm9ybVByb3BzID0gY29tcHV0ZWQ8Rm9ybU1ldGFkYXRhPigoKSA9PiAoe1xuICAgIG5hbWU6IHRoaXMudCgndGl0bGUnKSxcbiAgICBzdGF0ZTogdGhpcy5mb3JtU3RhdGUoKSxcbiAgICBzZWN0aW9uczogW1xuICAgICAge1xuICAgICAgICBuYW1lOiB0aGlzLnQoJ3dhcm5pbmdFbnRlckNvZGUnKSxcbiAgICAgICAgb3JkZXI6IDAsXG4gICAgICAgIGZpZWxkczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHRva2VuOiAnZGVsZXRlLWNvZGUnLFxuICAgICAgICAgICAgbmFtZTogJ2NvZGUnLFxuICAgICAgICAgICAgbGFiZWw6IHRoaXMudCgnY29kZUxhYmVsJyksXG4gICAgICAgICAgICBoaW50OiAnJyxcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnQoJ2NvZGVQbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgdHlwZTogSW5wdXRUeXBlLlRFWFQsXG4gICAgICAgICAgICBvcmRlcjogMCxcbiAgICAgICAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcbiAgICAgICAgICAgIGVycm9yczogeyByZXF1aXJlZDogdGhpcy50KCdjb2RlUmVxdWlyZWQnKSB9LFxuICAgICAgICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgICAgIH0gYXMgSW5wdXRNZXRhZGF0YSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgICBhY3Rpb25zOiB0aGlzLnN1Ym1pdEJ0bignZGVsZXRlLWNvZGUtc3VibWl0JywgJ2NvbmZpcm1DdGEnKSxcbiAgfSkpO1xuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKHVuZGVmaW5lZCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgYXN5bmMgb25QYXNzd29yZFN1Ym1pdChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gZXZlbnQuZmllbGRzWydwYXNzd29yZCddO1xuICAgIGlmICghcGFzc3dvcmQpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgncGFzc3dvcmRSZXF1aXJlZCcpLFxuICAgICAgICBkdXJhdGlvbjogMzAwMCxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgcG9zaXRpb246ICd0b3AnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5kZWxldGVBY2NvdW50KHsgcGFzc3dvcmQgfSkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnZGVsZXRlLWFjY291bnQucGFzc3dvcmQnIH0pO1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNlbmRDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuV09SS0lORyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYXV0aC5zZW5kRGVsZXRlQWNjb3VudENvZGUoKSk7XG4gICAgICB0aGlzLmNvZGVTZW50LnNldCh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2RlbGV0ZS1hY2NvdW50LnNlbmQtY29kZScgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuZm9ybVN0YXRlLnNldChDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25SZXNlbmRDb2RlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuY29kZVNlbnQuc2V0KGZhbHNlKTtcbiAgICBhd2FpdCB0aGlzLm9uU2VuZENvZGUoKTtcbiAgfVxuXG4gIGFzeW5jIG9uQ29kZVN1Ym1pdChldmVudDogRm9ybVN1Ym1pdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGNvZGUgPSBldmVudC5maWVsZHNbJ2NvZGUnXTtcbiAgICBpZiAoIWNvZGUpIHtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnY29kZVJlcXVpcmVkJyksXG4gICAgICAgIGR1cmF0aW9uOiAzMDAwLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBwb3NpdGlvbjogJ3RvcCcsXG4gICAgICB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5XT1JLSU5HKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmRlbGV0ZUFjY291bnQoeyBjb2RlIH0pKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHsgY29udGV4dDogJ2RlbGV0ZS1hY2NvdW50LmNvZGUnIH0pO1xuICAgICAgdGhpcy5mb3JtU3RhdGUuc2V0KENvbXBvbmVudFN0YXRlcy5FTkFCTEVEKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-delete-account-modal`. Auto-registrados
|
|
3
|
+
* en el constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`Settings.DeleteAccount` por default). SOLO incluye las keys que el modal usa.
|
|
5
|
+
*/
|
|
6
|
+
export const DELETE_ACCOUNT_MODAL_I18N = {
|
|
7
|
+
es: {
|
|
8
|
+
title: 'Eliminar cuenta',
|
|
9
|
+
warningPassword: 'Esta acción es permanente y no se puede deshacer. Se eliminarán tu cuenta, sesiones activas, organizaciones personales y todos los datos asociados.',
|
|
10
|
+
passwordLabel: 'Contraseña actual',
|
|
11
|
+
passwordPlaceholder: 'Ingresa tu contraseña',
|
|
12
|
+
passwordRequired: 'La contraseña es requerida',
|
|
13
|
+
warningSendCode: 'Tu cuenta está vinculada a un proveedor externo. Para confirmar la eliminación, enviaremos un código de verificación a tu correo electrónico.',
|
|
14
|
+
sendCodeCta: 'Enviar código de confirmación',
|
|
15
|
+
warningEnterCode: 'Ingresa el código que enviamos a tu correo. Expira en 15 minutos.',
|
|
16
|
+
codeLabel: 'Código de verificación',
|
|
17
|
+
codePlaceholder: 'Código de 6 dígitos',
|
|
18
|
+
codeRequired: 'El código es requerido',
|
|
19
|
+
confirmCta: 'Eliminar mi cuenta',
|
|
20
|
+
close: 'Cancelar',
|
|
21
|
+
resend: 'Reenviar código',
|
|
22
|
+
},
|
|
23
|
+
en: {
|
|
24
|
+
title: 'Delete account',
|
|
25
|
+
warningPassword: 'This action is permanent and cannot be undone. Your account, active sessions, personal organizations and all associated data will be permanently deleted.',
|
|
26
|
+
passwordLabel: 'Current password',
|
|
27
|
+
passwordPlaceholder: 'Enter your password',
|
|
28
|
+
passwordRequired: 'Password is required',
|
|
29
|
+
warningSendCode: "Your account is linked to an external provider. To confirm deletion, we'll send a verification code to your email address.",
|
|
30
|
+
sendCodeCta: 'Send confirmation code',
|
|
31
|
+
warningEnterCode: 'Enter the code we sent to your email. It expires in 15 minutes.',
|
|
32
|
+
codeLabel: 'Verification code',
|
|
33
|
+
codePlaceholder: '6-digit code',
|
|
34
|
+
codeRequired: 'Code is required',
|
|
35
|
+
confirmCta: 'Delete my account',
|
|
36
|
+
close: 'Cancel',
|
|
37
|
+
resend: 'Resend code',
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFjY291bnQtbW9kYWwuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvZGVsZXRlLWFjY291bnQtbW9kYWwvZGVsZXRlLWFjY291bnQtbW9kYWwuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQXFCO0lBQ3pELEVBQUUsRUFBRTtRQUNGLEtBQUssRUFBRSxpQkFBaUI7UUFDeEIsZUFBZSxFQUNiLHFKQUFxSjtRQUN2SixhQUFhLEVBQUUsbUJBQW1CO1FBQ2xDLG1CQUFtQixFQUFFLHVCQUF1QjtRQUM1QyxnQkFBZ0IsRUFBRSw0QkFBNEI7UUFDOUMsZUFBZSxFQUNiLCtJQUErSTtRQUNqSixXQUFXLEVBQUUsK0JBQStCO1FBQzVDLGdCQUFnQixFQUFFLG1FQUFtRTtRQUNyRixTQUFTLEVBQUUsd0JBQXdCO1FBQ25DLGVBQWUsRUFBRSxxQkFBcUI7UUFDdEMsWUFBWSxFQUFFLHdCQUF3QjtRQUN0QyxVQUFVLEVBQUUsb0JBQW9CO1FBQ2hDLEtBQUssRUFBRSxVQUFVO1FBQ2pCLE1BQU0sRUFBRSxpQkFBaUI7S0FDMUI7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUsZ0JBQWdCO1FBQ3ZCLGVBQWUsRUFDYiwySkFBMko7UUFDN0osYUFBYSxFQUFFLGtCQUFrQjtRQUNqQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsZ0JBQWdCLEVBQUUsc0JBQXNCO1FBQ3hDLGVBQWUsRUFDYiw0SEFBNEg7UUFDOUgsV0FBVyxFQUFFLHdCQUF3QjtRQUNyQyxnQkFBZ0IsRUFBRSxpRUFBaUU7UUFDbkYsU0FBUyxFQUFFLG1CQUFtQjtRQUM5QixlQUFlLEVBQUUsY0FBYztRQUMvQixZQUFZLEVBQUUsa0JBQWtCO1FBQ2hDLFVBQVUsRUFBRSxtQkFBbUI7UUFDL0IsS0FBSyxFQUFFLFFBQVE7UUFDZixNQUFNLEVBQUUsYUFBYTtLQUN0QjtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLWRlbGV0ZS1hY2NvdW50LW1vZGFsYC4gQXV0by1yZWdpc3RyYWRvc1xuICogZW4gZWwgY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkRlbGV0ZUFjY291bnRgIHBvciBkZWZhdWx0KS4gU09MTyBpbmNsdXllIGxhcyBrZXlzIHF1ZSBlbCBtb2RhbCB1c2EuXG4gKi9cbmV4cG9ydCBjb25zdCBERUxFVEVfQUNDT1VOVF9NT0RBTF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnRWxpbWluYXIgY3VlbnRhJyxcbiAgICB3YXJuaW5nUGFzc3dvcmQ6XG4gICAgICAnRXN0YSBhY2Npw7NuIGVzIHBlcm1hbmVudGUgeSBubyBzZSBwdWVkZSBkZXNoYWNlci4gU2UgZWxpbWluYXLDoW4gdHUgY3VlbnRhLCBzZXNpb25lcyBhY3RpdmFzLCBvcmdhbml6YWNpb25lcyBwZXJzb25hbGVzIHkgdG9kb3MgbG9zIGRhdG9zIGFzb2NpYWRvcy4nLFxuICAgIHBhc3N3b3JkTGFiZWw6ICdDb250cmFzZcOxYSBhY3R1YWwnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbmdyZXNhIHR1IGNvbnRyYXNlw7FhJyxcbiAgICBwYXNzd29yZFJlcXVpcmVkOiAnTGEgY29udHJhc2XDsWEgZXMgcmVxdWVyaWRhJyxcbiAgICB3YXJuaW5nU2VuZENvZGU6XG4gICAgICAnVHUgY3VlbnRhIGVzdMOhIHZpbmN1bGFkYSBhIHVuIHByb3ZlZWRvciBleHRlcm5vLiBQYXJhIGNvbmZpcm1hciBsYSBlbGltaW5hY2nDs24sIGVudmlhcmVtb3MgdW4gY8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuIGEgdHUgY29ycmVvIGVsZWN0csOzbmljby4nLFxuICAgIHNlbmRDb2RlQ3RhOiAnRW52aWFyIGPDs2RpZ28gZGUgY29uZmlybWFjacOzbicsXG4gICAgd2FybmluZ0VudGVyQ29kZTogJ0luZ3Jlc2EgZWwgY8OzZGlnbyBxdWUgZW52aWFtb3MgYSB0dSBjb3JyZW8uIEV4cGlyYSBlbiAxNSBtaW51dG9zLicsXG4gICAgY29kZUxhYmVsOiAnQ8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuJyxcbiAgICBjb2RlUGxhY2Vob2xkZXI6ICdDw7NkaWdvIGRlIDYgZMOtZ2l0b3MnLFxuICAgIGNvZGVSZXF1aXJlZDogJ0VsIGPDs2RpZ28gZXMgcmVxdWVyaWRvJyxcbiAgICBjb25maXJtQ3RhOiAnRWxpbWluYXIgbWkgY3VlbnRhJyxcbiAgICBjbG9zZTogJ0NhbmNlbGFyJyxcbiAgICByZXNlbmQ6ICdSZWVudmlhciBjw7NkaWdvJyxcbiAgfSxcbiAgZW46IHtcbiAgICB0aXRsZTogJ0RlbGV0ZSBhY2NvdW50JyxcbiAgICB3YXJuaW5nUGFzc3dvcmQ6XG4gICAgICAnVGhpcyBhY3Rpb24gaXMgcGVybWFuZW50IGFuZCBjYW5ub3QgYmUgdW5kb25lLiBZb3VyIGFjY291bnQsIGFjdGl2ZSBzZXNzaW9ucywgcGVyc29uYWwgb3JnYW5pemF0aW9ucyBhbmQgYWxsIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIHBlcm1hbmVudGx5IGRlbGV0ZWQuJyxcbiAgICBwYXNzd29yZExhYmVsOiAnQ3VycmVudCBwYXNzd29yZCcsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgcGFzc3dvcmQnLFxuICAgIHBhc3N3b3JkUmVxdWlyZWQ6ICdQYXNzd29yZCBpcyByZXF1aXJlZCcsXG4gICAgd2FybmluZ1NlbmRDb2RlOlxuICAgICAgXCJZb3VyIGFjY291bnQgaXMgbGlua2VkIHRvIGFuIGV4dGVybmFsIHByb3ZpZGVyLiBUbyBjb25maXJtIGRlbGV0aW9uLCB3ZSdsbCBzZW5kIGEgdmVyaWZpY2F0aW9uIGNvZGUgdG8geW91ciBlbWFpbCBhZGRyZXNzLlwiLFxuICAgIHNlbmRDb2RlQ3RhOiAnU2VuZCBjb25maXJtYXRpb24gY29kZScsXG4gICAgd2FybmluZ0VudGVyQ29kZTogJ0VudGVyIHRoZSBjb2RlIHdlIHNlbnQgdG8geW91ciBlbWFpbC4gSXQgZXhwaXJlcyBpbiAxNSBtaW51dGVzLicsXG4gICAgY29kZUxhYmVsOiAnVmVyaWZpY2F0aW9uIGNvZGUnLFxuICAgIGNvZGVQbGFjZWhvbGRlcjogJzYtZGlnaXQgY29kZScsXG4gICAgY29kZVJlcXVpcmVkOiAnQ29kZSBpcyByZXF1aXJlZCcsXG4gICAgY29uZmlybUN0YTogJ0RlbGV0ZSBteSBhY2NvdW50JyxcbiAgICBjbG9zZTogJ0NhbmNlbCcsXG4gICAgcmVzZW5kOiAnUmVzZW5kIGNvZGUnLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { Component, computed, inject, Input } from '@angular/core';
|
|
2
|
+
import { IonButton, IonButtons, IonContent, IonHeader, IonIcon, IonToolbar } from '@ionic/angular/standalone';
|
|
3
|
+
import { addIcons } from 'ionicons';
|
|
4
|
+
import { mailOutline, peopleOutline, swapHorizontalOutline } from 'ionicons/icons';
|
|
5
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
6
|
+
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
7
|
+
import { TextComponent } from '../../atoms/text/text.component';
|
|
8
|
+
import { TitleComponent } from '../../atoms/title/title.component';
|
|
9
|
+
import { I18nService } from '../../../services/i18n';
|
|
10
|
+
import { ORG_INFO_SHEET_I18N } from './org-info-sheet.i18n';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
const DEFAULT_NAMESPACE = 'OrgInfoSheet';
|
|
13
|
+
/**
|
|
14
|
+
* `val-org-info-sheet` — sheet informativo "¿Qué son las organizaciones?".
|
|
15
|
+
* Extraído del `OrgInfoSheetComponent` inline de `AccountPage` bajo el proceso de
|
|
16
|
+
* ADR-021.
|
|
17
|
+
*
|
|
18
|
+
* El consumer pasa `title`/`subtitle`/`body`/`closeLabel` ya resueltos por props
|
|
19
|
+
* (patrón del resto de modales del factory). Los textos de los 3 features
|
|
20
|
+
* (Colaboración / Cambio rápido / Invitaciones), que en la versión inline estaban
|
|
21
|
+
* hardcoded, ahora se auto-resuelven desde el namespace `OrgInfoSheet`
|
|
22
|
+
* (auto-registrado en el constructor).
|
|
23
|
+
*
|
|
24
|
+
* Abierto vía `ModalService` — recibe `_modalRef` por `componentProps`. Header
|
|
25
|
+
* canónico (Regla #5): sin `ion-title`, botón Cerrar texto en `slot=end`,
|
|
26
|
+
* título/subtítulo en el body con `val-display`/`val-title`.
|
|
27
|
+
*/
|
|
28
|
+
export class OrgInfoSheetComponent {
|
|
29
|
+
constructor() {
|
|
30
|
+
this.i18n = inject(I18nService);
|
|
31
|
+
/** Título principal (resuelto por el consumer). Fallback al namespace propio. */
|
|
32
|
+
this.title = '';
|
|
33
|
+
/** Subtítulo (resuelto por el consumer). Fallback al namespace propio. */
|
|
34
|
+
this.subtitle = '';
|
|
35
|
+
/** Cuerpo en párrafos separados por doble salto de línea (resuelto por el consumer). */
|
|
36
|
+
this.body = '';
|
|
37
|
+
/** Label del botón cerrar (resuelto por el consumer). Fallback al namespace propio. */
|
|
38
|
+
this.closeLabel = '';
|
|
39
|
+
/** Props del botón cerrar del footer (el consumer puede pasar custom). */
|
|
40
|
+
this.closeProps = {
|
|
41
|
+
text: 'Cerrar',
|
|
42
|
+
fill: 'outline',
|
|
43
|
+
color: 'dark',
|
|
44
|
+
size: 'default',
|
|
45
|
+
expand: 'block',
|
|
46
|
+
type: 'button',
|
|
47
|
+
};
|
|
48
|
+
this.resolvedTitle = computed(() => this.title || this.tt('title'));
|
|
49
|
+
this.resolvedSubtitle = computed(() => this.subtitle || this.tt('subtitle'));
|
|
50
|
+
this.resolvedCloseLabel = computed(() => this.closeLabel || this.tt('close'));
|
|
51
|
+
this.paragraphs = computed(() => this.body.split('\n\n').filter(Boolean));
|
|
52
|
+
this.resolvedCloseProps = computed(() => ({
|
|
53
|
+
...this.closeProps,
|
|
54
|
+
text: this.closeProps.text || this.resolvedCloseLabel(),
|
|
55
|
+
}));
|
|
56
|
+
addIcons({ peopleOutline, swapHorizontalOutline, mailOutline });
|
|
57
|
+
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE)) {
|
|
58
|
+
this.i18n.registerContent(DEFAULT_NAMESPACE, ORG_INFO_SHEET_I18N);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
dismiss() {
|
|
62
|
+
this._modalRef?.dismiss(null, 'cancel');
|
|
63
|
+
}
|
|
64
|
+
tt(key) {
|
|
65
|
+
return this.i18n.t(key, DEFAULT_NAMESPACE);
|
|
66
|
+
}
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
68
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: OrgInfoSheetComponent, isStandalone: true, selector: "val-org-info-sheet", inputs: { title: "title", subtitle: "subtitle", body: "body", closeLabel: "closeLabel", closeProps: "closeProps", _modalRef: "_modalRef" }, ngImport: i0, template: `
|
|
69
|
+
<ion-header>
|
|
70
|
+
<ion-toolbar>
|
|
71
|
+
<ion-buttons slot="end">
|
|
72
|
+
<ion-button fill="clear" color="dark" (click)="dismiss()">
|
|
73
|
+
<strong>{{ resolvedCloseLabel() }}</strong>
|
|
74
|
+
</ion-button>
|
|
75
|
+
</ion-buttons>
|
|
76
|
+
</ion-toolbar>
|
|
77
|
+
</ion-header>
|
|
78
|
+
|
|
79
|
+
<ion-content class="ion-padding">
|
|
80
|
+
<val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
|
|
81
|
+
<val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
|
|
82
|
+
|
|
83
|
+
<div class="info-features">
|
|
84
|
+
<div class="info-feature">
|
|
85
|
+
<ion-icon name="people-outline" class="info-feature__icon" />
|
|
86
|
+
<div>
|
|
87
|
+
<div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
|
|
88
|
+
<div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
|
|
89
|
+
</div>
|
|
90
|
+
</div>
|
|
91
|
+
<div class="info-feature">
|
|
92
|
+
<ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
|
|
93
|
+
<div>
|
|
94
|
+
<div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
|
|
95
|
+
<div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
|
|
96
|
+
</div>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="info-feature">
|
|
99
|
+
<ion-icon name="mail-outline" class="info-feature__icon" />
|
|
100
|
+
<div>
|
|
101
|
+
<div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
|
|
102
|
+
<div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
|
|
103
|
+
</div>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
@for (para of paragraphs(); track $index) {
|
|
108
|
+
<val-text
|
|
109
|
+
[props]="{
|
|
110
|
+
size: 'medium',
|
|
111
|
+
color: 'dark',
|
|
112
|
+
bold: false,
|
|
113
|
+
content: para,
|
|
114
|
+
}"
|
|
115
|
+
/>
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
<div class="sheet-footer">
|
|
119
|
+
<val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
|
|
120
|
+
</div>
|
|
121
|
+
</ion-content>
|
|
122
|
+
`, isInline: true, styles: ["ion-content{--padding-bottom: 32px}val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, decorators: [{
|
|
125
|
+
type: Component,
|
|
126
|
+
args: [{ selector: 'val-org-info-sheet', standalone: true, imports: [
|
|
127
|
+
IonHeader,
|
|
128
|
+
IonToolbar,
|
|
129
|
+
IonButtons,
|
|
130
|
+
IonButton,
|
|
131
|
+
IonContent,
|
|
132
|
+
IonIcon,
|
|
133
|
+
ButtonComponent,
|
|
134
|
+
DisplayComponent,
|
|
135
|
+
TextComponent,
|
|
136
|
+
TitleComponent,
|
|
137
|
+
], template: `
|
|
138
|
+
<ion-header>
|
|
139
|
+
<ion-toolbar>
|
|
140
|
+
<ion-buttons slot="end">
|
|
141
|
+
<ion-button fill="clear" color="dark" (click)="dismiss()">
|
|
142
|
+
<strong>{{ resolvedCloseLabel() }}</strong>
|
|
143
|
+
</ion-button>
|
|
144
|
+
</ion-buttons>
|
|
145
|
+
</ion-toolbar>
|
|
146
|
+
</ion-header>
|
|
147
|
+
|
|
148
|
+
<ion-content class="ion-padding">
|
|
149
|
+
<val-display [props]="{ content: resolvedTitle(), size: 'small', color: 'dark' }" />
|
|
150
|
+
<val-title [props]="{ content: resolvedSubtitle(), size: 'large', color: '', bold: false }" />
|
|
151
|
+
|
|
152
|
+
<div class="info-features">
|
|
153
|
+
<div class="info-feature">
|
|
154
|
+
<ion-icon name="people-outline" class="info-feature__icon" />
|
|
155
|
+
<div>
|
|
156
|
+
<div class="info-feature__title">{{ tt('featureCollabTitle') }}</div>
|
|
157
|
+
<div class="info-feature__desc">{{ tt('featureCollabDesc') }}</div>
|
|
158
|
+
</div>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="info-feature">
|
|
161
|
+
<ion-icon name="swap-horizontal-outline" class="info-feature__icon" />
|
|
162
|
+
<div>
|
|
163
|
+
<div class="info-feature__title">{{ tt('featureSwitchTitle') }}</div>
|
|
164
|
+
<div class="info-feature__desc">{{ tt('featureSwitchDesc') }}</div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
<div class="info-feature">
|
|
168
|
+
<ion-icon name="mail-outline" class="info-feature__icon" />
|
|
169
|
+
<div>
|
|
170
|
+
<div class="info-feature__title">{{ tt('featureInviteTitle') }}</div>
|
|
171
|
+
<div class="info-feature__desc">{{ tt('featureInviteDesc') }}</div>
|
|
172
|
+
</div>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
|
|
176
|
+
@for (para of paragraphs(); track $index) {
|
|
177
|
+
<val-text
|
|
178
|
+
[props]="{
|
|
179
|
+
size: 'medium',
|
|
180
|
+
color: 'dark',
|
|
181
|
+
bold: false,
|
|
182
|
+
content: para,
|
|
183
|
+
}"
|
|
184
|
+
/>
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
<div class="sheet-footer">
|
|
188
|
+
<val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
|
|
189
|
+
</div>
|
|
190
|
+
</ion-content>
|
|
191
|
+
`, styles: ["ion-content{--padding-bottom: 32px}val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"] }]
|
|
192
|
+
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
193
|
+
type: Input
|
|
194
|
+
}], subtitle: [{
|
|
195
|
+
type: Input
|
|
196
|
+
}], body: [{
|
|
197
|
+
type: Input
|
|
198
|
+
}], closeLabel: [{
|
|
199
|
+
type: Input
|
|
200
|
+
}], closeProps: [{
|
|
201
|
+
type: Input
|
|
202
|
+
}], _modalRef: [{
|
|
203
|
+
type: Input
|
|
204
|
+
}] } });
|
|
205
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9vcmctaW5mby1zaGVldC9vcmctaW5mby1zaGVldC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFHbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXJELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUU1RCxNQUFNLGlCQUFpQixHQUFHLGNBQWMsQ0FBQztBQUV6Qzs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQTZISCxNQUFNLE9BQU8scUJBQXFCO0lBeUJoQztRQXhCUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5DLGlGQUFpRjtRQUN4RSxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ3BC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R0csVUFBVTtzQkFBbEIsS0FBSztnQkFVRyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25CdXR0b25zLCBJb25Db250ZW50LCBJb25IZWFkZXIsIElvbkljb24sIElvblRvb2xiYXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgbWFpbE91dGxpbmUsIHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5cbmltcG9ydCB7IE9SR19JTkZPX1NIRUVUX0kxOE4gfSBmcm9tICcuL29yZy1pbmZvLXNoZWV0LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdPcmdJbmZvU2hlZXQnO1xuXG4vKipcbiAqIGB2YWwtb3JnLWluZm8tc2hlZXRgIOKAlCBzaGVldCBpbmZvcm1hdGl2byBcIsK/UXXDqSBzb24gbGFzIG9yZ2FuaXphY2lvbmVzP1wiLlxuICogRXh0cmHDrWRvIGRlbCBgT3JnSW5mb1NoZWV0Q29tcG9uZW50YCBpbmxpbmUgZGUgYEFjY291bnRQYWdlYCBiYWpvIGVsIHByb2Nlc28gZGVcbiAqIEFEUi0wMjEuXG4gKlxuICogRWwgY29uc3VtZXIgcGFzYSBgdGl0bGVgL2BzdWJ0aXRsZWAvYGJvZHlgL2BjbG9zZUxhYmVsYCB5YSByZXN1ZWx0b3MgcG9yIHByb3BzXG4gKiAocGF0csOzbiBkZWwgcmVzdG8gZGUgbW9kYWxlcyBkZWwgZmFjdG9yeSkuIExvcyB0ZXh0b3MgZGUgbG9zIDMgZmVhdHVyZXNcbiAqIChDb2xhYm9yYWNpw7NuIC8gQ2FtYmlvIHLDoXBpZG8gLyBJbnZpdGFjaW9uZXMpLCBxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lIGVzdGFiYW5cbiAqIGhhcmRjb2RlZCwgYWhvcmEgc2UgYXV0by1yZXN1ZWx2ZW4gZGVzZGUgZWwgbmFtZXNwYWNlIGBPcmdJbmZvU2hlZXRgXG4gKiAoYXV0by1yZWdpc3RyYWRvIGVuIGVsIGNvbnN0cnVjdG9yKS5cbiAqXG4gKiBBYmllcnRvIHbDrWEgYE1vZGFsU2VydmljZWAg4oCUIHJlY2liZSBgX21vZGFsUmVmYCBwb3IgYGNvbXBvbmVudFByb3BzYC4gSGVhZGVyXG4gKiBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuIGBzbG90PWVuZGAsXG4gKiB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9yZy1pbmZvLXNoZWV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uSWNvbixcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgcmVzb2x2ZWRDbG9zZUxhYmVsKCkgfX08L3N0cm9uZz5cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgICA8L2lvbi10b29sYmFyPlxuICAgIDwvaW9uLWhlYWRlcj5cblxuICAgIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XG4gICAgICA8dmFsLWRpc3BsYXkgW3Byb3BzXT1cInsgY29udGVudDogcmVzb2x2ZWRUaXRsZSgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiByZXNvbHZlZFN1YnRpdGxlKCksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVzXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cInBlb3BsZS1vdXRsaW5lXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlQ29sbGFiVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IHR0KCdmZWF0dXJlQ29sbGFiRGVzYycpIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJzd2FwLWhvcml6b250YWwtb3V0bGluZVwiIGNsYXNzPVwiaW5mby1mZWF0dXJlX19pY29uXCIgLz5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fdGl0bGVcIj57eyB0dCgnZmVhdHVyZVN3aXRjaFRpdGxlJykgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2Rlc2NcIj57eyB0dCgnZmVhdHVyZVN3aXRjaERlc2MnKSB9fTwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZVwiPlxuICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwibWFpbC1vdXRsaW5lXCIgY2xhc3M9XCJpbmZvLWZlYXR1cmVfX2ljb25cIiAvPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1mZWF0dXJlX190aXRsZVwiPnt7IHR0KCdmZWF0dXJlSW52aXRlVGl0bGUnKSB9fTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tZmVhdHVyZV9fZGVzY1wiPnt7IHR0KCdmZWF0dXJlSW52aXRlRGVzYycpIH19PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIEBmb3IgKHBhcmEgb2YgcGFyYWdyYXBocygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDogcGFyYSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIH1cblxuICAgICAgPGRpdiBjbGFzcz1cInNoZWV0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwicmVzb2x2ZWRDbG9zZVByb3BzKClcIiAoY2xpY2spPVwiZGlzbWlzcygpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1jb250ZW50IHtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMzJweDtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgICAgbWFyZ2luOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5pbmZvLWZlYXR1cmUsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLmluZm8tZmVhdHVyZSxcbiAgICAgIDpob3N0LWNvbnRleHQoW2RhdGEtdGhlbWU9J2RhcmsnXSkgLmluZm8tZmVhdHVyZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICAuaW5mby1mZWF0dXJlX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLmluZm8tZmVhdHVyZV9fdGl0bGUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5pbmZvLWZlYXR1cmVfX2Rlc2Mge1xuICAgICAgICBmb250LXNpemU6IDAuODJyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMnB4O1xuICAgICAgfVxuICAgICAgLnNoZWV0LWZvb3RlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT3JnSW5mb1NoZWV0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcblxuICAvKiogVMOtdHVsbyBwcmluY2lwYWwgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIC8qKiBTdWJ0w610dWxvIChyZXN1ZWx0byBwb3IgZWwgY29uc3VtZXIpLiBGYWxsYmFjayBhbCBuYW1lc3BhY2UgcHJvcGlvLiAqL1xuICBASW5wdXQoKSBzdWJ0aXRsZSA9ICcnO1xuICAvKiogQ3VlcnBvIGVuIHDDoXJyYWZvcyBzZXBhcmFkb3MgcG9yIGRvYmxlIHNhbHRvIGRlIGzDrW5lYSAocmVzdWVsdG8gcG9yIGVsIGNvbnN1bWVyKS4gKi9cbiAgQElucHV0KCkgYm9keSA9ICcnO1xuICAvKiogTGFiZWwgZGVsIGJvdMOzbiBjZXJyYXIgKHJlc3VlbHRvIHBvciBlbCBjb25zdW1lcikuIEZhbGxiYWNrIGFsIG5hbWVzcGFjZSBwcm9waW8uICovXG4gIEBJbnB1dCgpIGNsb3NlTGFiZWwgPSAnJztcblxuICAvKiogUHJvcHMgZGVsIGJvdMOzbiBjZXJyYXIgZGVsIGZvb3RlciAoZWwgY29uc3VtZXIgcHVlZGUgcGFzYXIgY3VzdG9tKS4gKi9cbiAgQElucHV0KCkgY2xvc2VQcm9wczogUGFydGlhbDxCdXR0b25NZXRhZGF0YT4gPSB7XG4gICAgdGV4dDogJ0NlcnJhcicsXG4gICAgZmlsbDogJ291dGxpbmUnLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgc2l6ZTogJ2RlZmF1bHQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgfTtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gIOKAlCByZWZlcmVuY2lhIHBhcmEgY2VycmFyIGRlc2RlIGRlbnRyby4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZGRJY29ucyh7IHBlb3BsZU91dGxpbmUsIHN3YXBIb3Jpem9udGFsT3V0bGluZSwgbWFpbE91dGxpbmUgfSk7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgT1JHX0lORk9fU0hFRVRfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRUaXRsZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMudGl0bGUgfHwgdGhpcy50dCgndGl0bGUnKSk7XG4gIHJlYWRvbmx5IHJlc29sdmVkU3VidGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN1YnRpdGxlIHx8IHRoaXMudHQoJ3N1YnRpdGxlJykpO1xuICByZWFkb25seSByZXNvbHZlZENsb3NlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNsb3NlTGFiZWwgfHwgdGhpcy50dCgnY2xvc2UnKSk7XG5cbiAgcmVhZG9ubHkgcGFyYWdyYXBocyA9IGNvbXB1dGVkPHN0cmluZ1tdPigoKSA9PiB0aGlzLmJvZHkuc3BsaXQoJ1xcblxcbicpLmZpbHRlcihCb29sZWFuKSk7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDbG9zZVByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgLi4udGhpcy5jbG9zZVByb3BzLFxuICAgIHRleHQ6IHRoaXMuY2xvc2VQcm9wcy50ZXh0IHx8IHRoaXMucmVzb2x2ZWRDbG9zZUxhYmVsKCksXG4gIH0pKTtcblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgREVGQVVMVF9OQU1FU1BBQ0UpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-org-info-sheet`. Auto-registrados en el
|
|
3
|
+
* constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`OrgInfoSheet`). Cubre los textos de los 3 features (que en la versión inline
|
|
5
|
+
* de showcase estaban hardcoded) más fallbacks de título/subtítulo/closeLabel.
|
|
6
|
+
*
|
|
7
|
+
* `title`/`subtitle`/`body`/`closeLabel` los suele pasar el consumer ya resueltos
|
|
8
|
+
* por props (patrón del resto de modales); las keys `feature*` se auto-resuelven
|
|
9
|
+
* desde este namespace.
|
|
10
|
+
*/
|
|
11
|
+
export const ORG_INFO_SHEET_I18N = {
|
|
12
|
+
es: {
|
|
13
|
+
title: '¿Qué son las organizaciones?',
|
|
14
|
+
subtitle: 'Todo lo que necesitas saber',
|
|
15
|
+
close: 'Cerrar',
|
|
16
|
+
featureCollabTitle: 'Colaboración',
|
|
17
|
+
featureCollabDesc: 'Separa proyectos y datos por empresa o equipo.',
|
|
18
|
+
featureSwitchTitle: 'Cambio rápido',
|
|
19
|
+
featureSwitchDesc: 'Cambia entre organizaciones en cualquier momento.',
|
|
20
|
+
featureInviteTitle: 'Invitaciones',
|
|
21
|
+
featureInviteDesc: 'Invita a otros a unirse mediante email.',
|
|
22
|
+
},
|
|
23
|
+
en: {
|
|
24
|
+
title: 'What are organizations?',
|
|
25
|
+
subtitle: 'Everything you need to know',
|
|
26
|
+
close: 'Close',
|
|
27
|
+
featureCollabTitle: 'Collaboration',
|
|
28
|
+
featureCollabDesc: 'Separate projects and data by company or team.',
|
|
29
|
+
featureSwitchTitle: 'Quick switch',
|
|
30
|
+
featureSwitchDesc: 'Switch between organizations at any time.',
|
|
31
|
+
featureInviteTitle: 'Invitations',
|
|
32
|
+
featureInviteDesc: 'Invite others to join via email.',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JnLWluZm8tc2hlZXQuaTE4bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9vcmdhbmlzbXMvb3JnLWluZm8tc2hlZXQvb3JnLWluZm8tc2hlZXQuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBcUI7SUFDbkQsRUFBRSxFQUFFO1FBQ0YsS0FBSyxFQUFFLDhCQUE4QjtRQUNyQyxRQUFRLEVBQUUsNkJBQTZCO1FBQ3ZDLEtBQUssRUFBRSxRQUFRO1FBQ2Ysa0JBQWtCLEVBQUUsY0FBYztRQUNsQyxpQkFBaUIsRUFBRSxnREFBZ0Q7UUFDbkUsa0JBQWtCLEVBQUUsZUFBZTtRQUNuQyxpQkFBaUIsRUFBRSxtREFBbUQ7UUFDdEUsa0JBQWtCLEVBQUUsY0FBYztRQUNsQyxpQkFBaUIsRUFBRSx5Q0FBeUM7S0FDN0Q7SUFDRCxFQUFFLEVBQUU7UUFDRixLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsS0FBSyxFQUFFLE9BQU87UUFDZCxrQkFBa0IsRUFBRSxlQUFlO1FBQ25DLGlCQUFpQixFQUFFLGdEQUFnRDtRQUNuRSxrQkFBa0IsRUFBRSxjQUFjO1FBQ2xDLGlCQUFpQixFQUFFLDJDQUEyQztRQUM5RCxrQkFBa0IsRUFBRSxhQUFhO1FBQ2pDLGlCQUFpQixFQUFFLGtDQUFrQztLQUN0RDtDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMYW5ndWFnZXNDb250ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bi90eXBlcyc7XG5cbi8qKlxuICogRGVmYXVsdHMgaTE4biAoZXMvZW4pIGVtYmViaWRvcyBlbiBgdmFsLW9yZy1pbmZvLXNoZWV0YC4gQXV0by1yZWdpc3RyYWRvcyBlbiBlbFxuICogY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYE9yZ0luZm9TaGVldGApLiBDdWJyZSBsb3MgdGV4dG9zIGRlIGxvcyAzIGZlYXR1cmVzIChxdWUgZW4gbGEgdmVyc2nDs24gaW5saW5lXG4gKiBkZSBzaG93Y2FzZSBlc3RhYmFuIGhhcmRjb2RlZCkgbcOhcyBmYWxsYmFja3MgZGUgdMOtdHVsby9zdWJ0w610dWxvL2Nsb3NlTGFiZWwuXG4gKlxuICogYHRpdGxlYC9gc3VidGl0bGVgL2Bib2R5YC9gY2xvc2VMYWJlbGAgbG9zIHN1ZWxlIHBhc2FyIGVsIGNvbnN1bWVyIHlhIHJlc3VlbHRvc1xuICogcG9yIHByb3BzIChwYXRyw7NuIGRlbCByZXN0byBkZSBtb2RhbGVzKTsgbGFzIGtleXMgYGZlYXR1cmUqYCBzZSBhdXRvLXJlc3VlbHZlblxuICogZGVzZGUgZXN0ZSBuYW1lc3BhY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBPUkdfSU5GT19TSEVFVF9JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHRpdGxlOiAnwr9RdcOpIHNvbiBsYXMgb3JnYW5pemFjaW9uZXM/JyxcbiAgICBzdWJ0aXRsZTogJ1RvZG8gbG8gcXVlIG5lY2VzaXRhcyBzYWJlcicsXG4gICAgY2xvc2U6ICdDZXJyYXInLFxuICAgIGZlYXR1cmVDb2xsYWJUaXRsZTogJ0NvbGFib3JhY2nDs24nLFxuICAgIGZlYXR1cmVDb2xsYWJEZXNjOiAnU2VwYXJhIHByb3llY3RvcyB5IGRhdG9zIHBvciBlbXByZXNhIG8gZXF1aXBvLicsXG4gICAgZmVhdHVyZVN3aXRjaFRpdGxlOiAnQ2FtYmlvIHLDoXBpZG8nLFxuICAgIGZlYXR1cmVTd2l0Y2hEZXNjOiAnQ2FtYmlhIGVudHJlIG9yZ2FuaXphY2lvbmVzIGVuIGN1YWxxdWllciBtb21lbnRvLicsXG4gICAgZmVhdHVyZUludml0ZVRpdGxlOiAnSW52aXRhY2lvbmVzJyxcbiAgICBmZWF0dXJlSW52aXRlRGVzYzogJ0ludml0YSBhIG90cm9zIGEgdW5pcnNlIG1lZGlhbnRlIGVtYWlsLicsXG4gIH0sXG4gIGVuOiB7XG4gICAgdGl0bGU6ICdXaGF0IGFyZSBvcmdhbml6YXRpb25zPycsXG4gICAgc3VidGl0bGU6ICdFdmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cnLFxuICAgIGNsb3NlOiAnQ2xvc2UnLFxuICAgIGZlYXR1cmVDb2xsYWJUaXRsZTogJ0NvbGxhYm9yYXRpb24nLFxuICAgIGZlYXR1cmVDb2xsYWJEZXNjOiAnU2VwYXJhdGUgcHJvamVjdHMgYW5kIGRhdGEgYnkgY29tcGFueSBvciB0ZWFtLicsXG4gICAgZmVhdHVyZVN3aXRjaFRpdGxlOiAnUXVpY2sgc3dpdGNoJyxcbiAgICBmZWF0dXJlU3dpdGNoRGVzYzogJ1N3aXRjaCBiZXR3ZWVuIG9yZ2FuaXphdGlvbnMgYXQgYW55IHRpbWUuJyxcbiAgICBmZWF0dXJlSW52aXRlVGl0bGU6ICdJbnZpdGF0aW9ucycsXG4gICAgZmVhdHVyZUludml0ZURlc2M6ICdJbnZpdGUgb3RoZXJzIHRvIGpvaW4gdmlhIGVtYWlsLicsXG4gIH0sXG59O1xuIl19
|