valtech-components 4.0.29 → 4.0.31
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/organisms/account-view/account-view.component.mjs +13 -21
- package/esm2022/lib/components/organisms/avatar-upload/avatar-upload.component.mjs +25 -12
- package/esm2022/lib/components/organisms/edit-org-modal/edit-org-modal.component.mjs +57 -5
- package/esm2022/lib/components/organisms/login/types.mjs +9 -7
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +49 -38
- package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +2 -2
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.component.mjs +59 -6
- package/esm2022/lib/components/organisms/switch-org-modal/switch-org-modal.i18n.mjs +3 -1
- package/esm2022/lib/services/org/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +204 -83
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +1 -1
- package/lib/components/atoms/text/text.component.d.ts +1 -1
- package/lib/components/atoms/user-avatar/user-avatar.component.d.ts +1 -1
- package/lib/components/molecules/cta-card/cta-card.component.d.ts +1 -1
- package/lib/components/molecules/features-list/features-list.component.d.ts +1 -1
- package/lib/components/molecules/metric-card/metric-card.component.d.ts +1 -1
- package/lib/components/organisms/article/article.component.d.ts +5 -5
- package/lib/components/organisms/auth-cta/auth-cta.component.d.ts +1 -1
- package/lib/components/organisms/avatar-upload/avatar-upload.component.d.ts +10 -1
- package/lib/components/organisms/edit-org-modal/edit-org-modal.component.d.ts +5 -1
- package/lib/components/organisms/login/types.d.ts +6 -4
- package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +1 -1
- package/lib/components/organisms/switch-org-modal/switch-org-modal.component.d.ts +6 -1
- package/lib/services/org/types.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
|
56
56
|
* Current version of valtech-components.
|
|
57
57
|
* This is automatically updated during the publish process.
|
|
58
58
|
*/
|
|
59
|
-
const VERSION = '4.0.
|
|
59
|
+
const VERSION = '4.0.31';
|
|
60
60
|
|
|
61
61
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
62
62
|
let isRefreshing = false;
|
|
@@ -40221,16 +40221,18 @@ const LOGIN_DEFAULTS = {
|
|
|
40221
40221
|
/**
|
|
40222
40222
|
* Logo por defecto de la card de login cuando el consumer no pasa `logo`.
|
|
40223
40223
|
*
|
|
40224
|
-
* Usa el token CSS `--main-logo` (
|
|
40225
|
-
*
|
|
40226
|
-
*
|
|
40227
|
-
*
|
|
40224
|
+
* Usa el token CSS `--main-logo-mini` (el logo MINI/icono, el mismo que el
|
|
40225
|
+
* side menu `val-menu`), resuelto por `val-image` vía `var(--main-logo-mini)`.
|
|
40226
|
+
* Cada app del factory lo define en su `theme/variables.scss` (showcase →
|
|
40227
|
+
* `main-icon.png`, bingo → `favicon-balls.svg`). NO es el lockup grande
|
|
40228
|
+
* `--main-logo` del header. Así el login muestra SIEMPRE el icono de marca de
|
|
40229
|
+
* la app sin acoplar la lib a una marca concreta — es el estándar del factory.
|
|
40228
40230
|
*
|
|
40229
40231
|
* Una app puede override pasando su propio `logo` en `LoginMetadata` (ej.
|
|
40230
40232
|
* showcase usa un mark propio `terminal.svg`).
|
|
40231
40233
|
*/
|
|
40232
40234
|
const DEFAULT_LOGIN_LOGO = {
|
|
40233
|
-
src: '--main-logo',
|
|
40235
|
+
src: '--main-logo-mini',
|
|
40234
40236
|
alt: '',
|
|
40235
40237
|
mode: 'box',
|
|
40236
40238
|
shaded: false,
|
|
@@ -40238,7 +40240,7 @@ const DEFAULT_LOGIN_LOGO = {
|
|
|
40238
40240
|
size: 'xlarge',
|
|
40239
40241
|
alignment: 'center',
|
|
40240
40242
|
flex: true,
|
|
40241
|
-
width:
|
|
40243
|
+
width: 4,
|
|
40242
40244
|
};
|
|
40243
40245
|
|
|
40244
40246
|
class LoginComponent {
|
|
@@ -42060,6 +42062,15 @@ class AvatarUploadComponent {
|
|
|
42060
42062
|
this.i18n = inject(I18nService);
|
|
42061
42063
|
/** Component configuration */
|
|
42062
42064
|
this.props = input({});
|
|
42065
|
+
/** Custom storage path for the full-size image (e.g. 'orgs/{orgId}/logo.jpg').
|
|
42066
|
+
* When provided, overrides the default 'users/{userId}/avatar.jpg' path. */
|
|
42067
|
+
this.customPath = input(null);
|
|
42068
|
+
/** Custom storage path for the thumbnail (e.g. 'orgs/{orgId}/thumb.jpg').
|
|
42069
|
+
* When provided, overrides the default 'users/{userId}/thumb.jpg' path. */
|
|
42070
|
+
this.customThumbPath = input(null);
|
|
42071
|
+
/** When true, skips the AuthService.updateAvatar() backend sync call after upload.
|
|
42072
|
+
* Use this when the caller will handle the backend update (e.g. via OrgService). */
|
|
42073
|
+
this.skipBackendSync = input(false);
|
|
42063
42074
|
/** Emitted after successful upload and backend sync */
|
|
42064
42075
|
this.uploaded = new EventEmitter();
|
|
42065
42076
|
/** Emitted on any error during the process */
|
|
@@ -42167,16 +42178,18 @@ class AvatarUploadComponent {
|
|
|
42167
42178
|
// 3. Set preview immediately
|
|
42168
42179
|
this.previewUrl.set(compressed.dataUrl);
|
|
42169
42180
|
this.imageLoadError.set(false);
|
|
42170
|
-
// 4. Get user ID for storage path
|
|
42181
|
+
// 4. Get user ID for storage path (only required when using default user paths)
|
|
42182
|
+
const customAvatarPath = this.customPath();
|
|
42171
42183
|
const userId = this.authService.user()?.userId;
|
|
42172
|
-
if (!userId) {
|
|
42184
|
+
if (!customAvatarPath && !userId) {
|
|
42173
42185
|
throw new Error('User not authenticated');
|
|
42174
42186
|
}
|
|
42175
42187
|
// 5. Upload to Firebase Storage with predictable paths
|
|
42176
|
-
//
|
|
42188
|
+
// When customPath is provided (e.g. orgs/{orgId}/logo.jpg), use it directly.
|
|
42189
|
+
// Otherwise fall back to the default user avatar path.
|
|
42177
42190
|
// skipPrefix: true - bypasses appId prefix for shared/cross-app paths
|
|
42178
|
-
const avatarPath =
|
|
42179
|
-
const thumbPath =
|
|
42191
|
+
const avatarPath = customAvatarPath ?? 'users/' + userId + '/avatar.jpg';
|
|
42192
|
+
const thumbPath = this.customThumbPath() ?? 'users/' + userId + '/thumb.jpg';
|
|
42180
42193
|
const uploadMetadata = { skipPrefix: true, contentType: 'image/jpeg' };
|
|
42181
42194
|
// Race against timeout to prevent infinite loading
|
|
42182
42195
|
const [avatarResult, thumbResult] = await Promise.race([
|
|
@@ -42186,11 +42199,13 @@ class AvatarUploadComponent {
|
|
|
42186
42199
|
]),
|
|
42187
42200
|
uploadTimeout,
|
|
42188
42201
|
]);
|
|
42189
|
-
// 6. Update backend with URLs
|
|
42190
|
-
|
|
42191
|
-
|
|
42192
|
-
|
|
42193
|
-
|
|
42202
|
+
// 6. Update backend with URLs (skipped when skipBackendSync is true)
|
|
42203
|
+
if (!this.skipBackendSync()) {
|
|
42204
|
+
await firstValueFrom(this.authService.updateAvatar({
|
|
42205
|
+
avatarUrl: avatarResult.downloadUrl,
|
|
42206
|
+
avatarThumbnail: thumbResult.downloadUrl,
|
|
42207
|
+
}));
|
|
42208
|
+
}
|
|
42194
42209
|
// 7. Update preview with cache-busting to force refresh
|
|
42195
42210
|
const cacheBuster = `?t=${Date.now()}`;
|
|
42196
42211
|
this.previewUrl.set(avatarResult.downloadUrl + cacheBuster);
|
|
@@ -42231,7 +42246,7 @@ class AvatarUploadComponent {
|
|
|
42231
42246
|
this.error.emit({ type, message, originalError });
|
|
42232
42247
|
}
|
|
42233
42248
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AvatarUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42234
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AvatarUploadComponent, isStandalone: true, selector: "val-avatar-upload", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { uploaded: "uploaded", error: "error", uploadStart: "uploadStart" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
|
|
42249
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AvatarUploadComponent, isStandalone: true, selector: "val-avatar-upload", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, customPath: { classPropertyName: "customPath", publicName: "customPath", isSignal: true, isRequired: false, transformFunction: null }, customThumbPath: { classPropertyName: "customThumbPath", publicName: "customThumbPath", isSignal: true, isRequired: false, transformFunction: null }, skipBackendSync: { classPropertyName: "skipBackendSync", publicName: "skipBackendSync", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { uploaded: "uploaded", error: "error", uploadStart: "uploadStart" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], ngImport: i0, template: `
|
|
42235
42250
|
<div class="avatar-upload" [style.--avatar-size.px]="config().size" [class.avatar-upload--loading]="loading()">
|
|
42236
42251
|
<div class="avatar-container">
|
|
42237
42252
|
<!-- Avatar Image or Initials -->
|
|
@@ -43602,7 +43617,7 @@ class ProfileViewComponent {
|
|
|
43602
43617
|
}
|
|
43603
43618
|
}
|
|
43604
43619
|
</div>
|
|
43605
|
-
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.page-header h1{font-size:22px;font-weight:700;margin:0 0 4px}.hint{font-size:13px;opacity:.7;margin:0 0 12px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props"], outputs: ["uploaded", "error", "uploadStart"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { 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"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
|
|
43620
|
+
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.page-header h1{font-size:22px;font-weight:700;margin:0 0 4px}.hint{font-size:13px;opacity:.7;margin:0 0 12px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.avatar-section{display:flex;align-items:center;gap:16px}.avatar-meta{display:flex;flex-direction:column;gap:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { 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"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
|
|
43606
43621
|
}
|
|
43607
43622
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ProfileViewComponent, decorators: [{
|
|
43608
43623
|
type: Component,
|
|
@@ -47511,6 +47526,7 @@ const SWITCH_ORG_MODAL_I18N = {
|
|
|
47511
47526
|
current: 'Actual',
|
|
47512
47527
|
close: 'Cerrar',
|
|
47513
47528
|
switchError: 'No se pudo cambiar de organización.',
|
|
47529
|
+
profile: 'Mi perfil',
|
|
47514
47530
|
},
|
|
47515
47531
|
en: {
|
|
47516
47532
|
title: 'Switch account',
|
|
@@ -47520,6 +47536,7 @@ const SWITCH_ORG_MODAL_I18N = {
|
|
|
47520
47536
|
current: 'Active',
|
|
47521
47537
|
close: 'Close',
|
|
47522
47538
|
switchError: 'Could not switch organization.',
|
|
47539
|
+
profile: 'My profile',
|
|
47523
47540
|
},
|
|
47524
47541
|
};
|
|
47525
47542
|
|
|
@@ -47554,6 +47571,11 @@ class SwitchOrgModalComponent {
|
|
|
47554
47571
|
this.loading = signal(false);
|
|
47555
47572
|
this.query = signal('');
|
|
47556
47573
|
this.switchingId = signal(null);
|
|
47574
|
+
this.user = computed(() => this.auth.user());
|
|
47575
|
+
this.userInitials = computed(() => {
|
|
47576
|
+
const name = this.user()?.name ?? this.user()?.email ?? '?';
|
|
47577
|
+
return name.slice(0, 2).toUpperCase();
|
|
47578
|
+
});
|
|
47557
47579
|
this.activeOrgId = computed(() => {
|
|
47558
47580
|
const u = this.auth.user();
|
|
47559
47581
|
return u?.activeOrgId ?? u?.activeOrg ?? '';
|
|
@@ -47605,6 +47627,10 @@ class SwitchOrgModalComponent {
|
|
|
47605
47627
|
error: () => this.loading.set(false),
|
|
47606
47628
|
});
|
|
47607
47629
|
}
|
|
47630
|
+
onProfile() {
|
|
47631
|
+
this.dismiss();
|
|
47632
|
+
this.onProfileClick?.();
|
|
47633
|
+
}
|
|
47608
47634
|
dismiss() {
|
|
47609
47635
|
this._modalRef?.dismiss(null, 'cancel');
|
|
47610
47636
|
}
|
|
@@ -47612,7 +47638,7 @@ class SwitchOrgModalComponent {
|
|
|
47612
47638
|
return this.i18n.t(key, this.i18nNamespace);
|
|
47613
47639
|
}
|
|
47614
47640
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwitchOrgModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47615
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SwitchOrgModalComponent, isStandalone: true, selector: "val-switch-org-modal", inputs: { _modalRef: "_modalRef", onSuccess: "onSuccess", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
|
|
47641
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SwitchOrgModalComponent, isStandalone: true, selector: "val-switch-org-modal", inputs: { _modalRef: "_modalRef", onSuccess: "onSuccess", onProfileClick: "onProfileClick", i18nNamespace: "i18nNamespace" }, ngImport: i0, template: `
|
|
47616
47642
|
<ion-header>
|
|
47617
47643
|
<ion-toolbar>
|
|
47618
47644
|
<ion-buttons slot="end">
|
|
@@ -47634,6 +47660,23 @@ class SwitchOrgModalComponent {
|
|
|
47634
47660
|
}"
|
|
47635
47661
|
/>
|
|
47636
47662
|
|
|
47663
|
+
<div class="user-strip">
|
|
47664
|
+
<div class="user-strip__avatar">
|
|
47665
|
+
@if (user()?.avatarUrl) {
|
|
47666
|
+
<img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" />
|
|
47667
|
+
} @else {
|
|
47668
|
+
<span>{{ userInitials() }}</span>
|
|
47669
|
+
}
|
|
47670
|
+
</div>
|
|
47671
|
+
<div class="user-strip__info">
|
|
47672
|
+
<span class="user-strip__name">{{ user()?.name || user()?.email || '' }}</span>
|
|
47673
|
+
<span class="user-strip__email">{{ user()?.email || '' }}</span>
|
|
47674
|
+
</div>
|
|
47675
|
+
<button class="user-strip__profile-btn" type="button" (click)="onProfile()">
|
|
47676
|
+
{{ t('profile') }}
|
|
47677
|
+
</button>
|
|
47678
|
+
</div>
|
|
47679
|
+
|
|
47637
47680
|
<div class="switch-section">
|
|
47638
47681
|
<val-searchbar
|
|
47639
47682
|
[props]="{
|
|
@@ -47667,7 +47710,11 @@ class SwitchOrgModalComponent {
|
|
|
47667
47710
|
(click)="onSelect(org)"
|
|
47668
47711
|
>
|
|
47669
47712
|
<div class="org-row__icon">
|
|
47670
|
-
|
|
47713
|
+
@if (org.logoUrl) {
|
|
47714
|
+
<img [src]="org.logoUrl" [alt]="org.name" />
|
|
47715
|
+
} @else {
|
|
47716
|
+
<ion-icon name="business-outline" />
|
|
47717
|
+
}
|
|
47671
47718
|
</div>
|
|
47672
47719
|
<div class="org-row__body">
|
|
47673
47720
|
<span class="org-row__name">{{ org.name }}</span>
|
|
@@ -47687,7 +47734,7 @@ class SwitchOrgModalComponent {
|
|
|
47687
47734
|
}
|
|
47688
47735
|
</div>
|
|
47689
47736
|
</ion-content>
|
|
47690
|
-
`, isInline: true, styles: [".switch-section{margin-top:16px;display:flex;flex-direction:column;gap:12px}.switch-state{display:flex;justify-content:center;padding:24px 0}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid rgba(var(--ion-color-dark-rgb),.14);border-radius:12px;background:var(--ion-card-background, var(--ion-background-color));cursor:pointer;text-align:left;transition:border-color .15s ease,opacity .15s ease}.org-row:not(:disabled):active{opacity:.7}.org-row:disabled{cursor:default}.org-row--active{border-color:var(--ion-color-dark)}.org-row__icon{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ion-color-dark);background:rgba(var(--ion-color-dark-rgb),.08)}.org-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-row__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-row__type{font-size:.8rem;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__end{display:flex;align-items:center;gap:6px;flex-shrink:0}.org-row__current{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__check{font-size:1.1rem;color:var(--ion-color-dark)}.org-row__spinner{width:18px;height:18px;color:var(--ion-color-dark)}\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: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["preset", "props"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
47737
|
+
`, isInline: true, styles: [".switch-section{margin-top:16px;display:flex;flex-direction:column;gap:12px}.switch-state{display:flex;justify-content:center;padding:24px 0}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid rgba(var(--ion-color-dark-rgb),.14);border-radius:12px;background:var(--ion-card-background, var(--ion-background-color));cursor:pointer;text-align:left;transition:border-color .15s ease,opacity .15s ease}.org-row:not(:disabled):active{opacity:.7}.org-row:disabled{cursor:default}.org-row--active{border-color:var(--ion-color-dark)}.org-row__icon{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ion-color-dark);background:rgba(var(--ion-color-dark-rgb),.08)}.org-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-row__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-row__type{font-size:.8rem;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__end{display:flex;align-items:center;gap:6px;flex-shrink:0}.org-row__current{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__check{font-size:1.1rem;color:var(--ion-color-dark)}.org-row__spinner{width:18px;height:18px;color:var(--ion-color-dark)}.org-row__icon img{width:100%;height:100%;object-fit:cover;border-radius:50%}.user-strip{display:flex;align-items:center;gap:12px;padding:12px 0 4px;margin-bottom:8px;border-bottom:1px solid rgba(var(--ion-color-dark-rgb),.1)}.user-strip__avatar{width:44px;height:44px;border-radius:50%;flex-shrink:0;overflow:hidden;background:rgba(var(--ion-color-dark-rgb),.1);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;color:var(--ion-color-dark)}.user-strip__avatar img{width:100%;height:100%;object-fit:cover}.user-strip__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.user-strip__name{font-weight:600;font-size:.9rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-strip__email{font-size:.78rem;color:rgba(var(--ion-color-dark-rgb),.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-strip__profile-btn{background:none;border:none;padding:6px 0;font-size:.82rem;font-weight:600;color:var(--ion-color-dark);cursor:pointer;white-space:nowrap;text-decoration:underline;text-underline-offset:3px}\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: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SearchbarComponent, selector: "val-searchbar", inputs: ["preset", "props"], outputs: ["filterEvent", "focusEvent", "blurEvent"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
47691
47738
|
}
|
|
47692
47739
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SwitchOrgModalComponent, decorators: [{
|
|
47693
47740
|
type: Component,
|
|
@@ -47725,6 +47772,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
47725
47772
|
}"
|
|
47726
47773
|
/>
|
|
47727
47774
|
|
|
47775
|
+
<div class="user-strip">
|
|
47776
|
+
<div class="user-strip__avatar">
|
|
47777
|
+
@if (user()?.avatarUrl) {
|
|
47778
|
+
<img [src]="user()!.avatarUrl!" [alt]="user()?.name ?? ''" />
|
|
47779
|
+
} @else {
|
|
47780
|
+
<span>{{ userInitials() }}</span>
|
|
47781
|
+
}
|
|
47782
|
+
</div>
|
|
47783
|
+
<div class="user-strip__info">
|
|
47784
|
+
<span class="user-strip__name">{{ user()?.name || user()?.email || '' }}</span>
|
|
47785
|
+
<span class="user-strip__email">{{ user()?.email || '' }}</span>
|
|
47786
|
+
</div>
|
|
47787
|
+
<button class="user-strip__profile-btn" type="button" (click)="onProfile()">
|
|
47788
|
+
{{ t('profile') }}
|
|
47789
|
+
</button>
|
|
47790
|
+
</div>
|
|
47791
|
+
|
|
47728
47792
|
<div class="switch-section">
|
|
47729
47793
|
<val-searchbar
|
|
47730
47794
|
[props]="{
|
|
@@ -47758,7 +47822,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
47758
47822
|
(click)="onSelect(org)"
|
|
47759
47823
|
>
|
|
47760
47824
|
<div class="org-row__icon">
|
|
47761
|
-
|
|
47825
|
+
@if (org.logoUrl) {
|
|
47826
|
+
<img [src]="org.logoUrl" [alt]="org.name" />
|
|
47827
|
+
} @else {
|
|
47828
|
+
<ion-icon name="business-outline" />
|
|
47829
|
+
}
|
|
47762
47830
|
</div>
|
|
47763
47831
|
<div class="org-row__body">
|
|
47764
47832
|
<span class="org-row__name">{{ org.name }}</span>
|
|
@@ -47778,11 +47846,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
47778
47846
|
}
|
|
47779
47847
|
</div>
|
|
47780
47848
|
</ion-content>
|
|
47781
|
-
`, styles: [".switch-section{margin-top:16px;display:flex;flex-direction:column;gap:12px}.switch-state{display:flex;justify-content:center;padding:24px 0}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid rgba(var(--ion-color-dark-rgb),.14);border-radius:12px;background:var(--ion-card-background, var(--ion-background-color));cursor:pointer;text-align:left;transition:border-color .15s ease,opacity .15s ease}.org-row:not(:disabled):active{opacity:.7}.org-row:disabled{cursor:default}.org-row--active{border-color:var(--ion-color-dark)}.org-row__icon{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ion-color-dark);background:rgba(var(--ion-color-dark-rgb),.08)}.org-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-row__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-row__type{font-size:.8rem;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__end{display:flex;align-items:center;gap:6px;flex-shrink:0}.org-row__current{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__check{font-size:1.1rem;color:var(--ion-color-dark)}.org-row__spinner{width:18px;height:18px;color:var(--ion-color-dark)}\n"] }]
|
|
47849
|
+
`, styles: [".switch-section{margin-top:16px;display:flex;flex-direction:column;gap:12px}.switch-state{display:flex;justify-content:center;padding:24px 0}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:1px solid rgba(var(--ion-color-dark-rgb),.14);border-radius:12px;background:var(--ion-card-background, var(--ion-background-color));cursor:pointer;text-align:left;transition:border-color .15s ease,opacity .15s ease}.org-row:not(:disabled):active{opacity:.7}.org-row:disabled{cursor:default}.org-row--active{border-color:var(--ion-color-dark)}.org-row__icon{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ion-color-dark);background:rgba(var(--ion-color-dark-rgb),.08)}.org-row__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-row__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-row__type{font-size:.8rem;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__end{display:flex;align-items:center;gap:6px;flex-shrink:0}.org-row__current{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:rgba(var(--ion-color-dark-rgb),.7)}.org-row__check{font-size:1.1rem;color:var(--ion-color-dark)}.org-row__spinner{width:18px;height:18px;color:var(--ion-color-dark)}.org-row__icon img{width:100%;height:100%;object-fit:cover;border-radius:50%}.user-strip{display:flex;align-items:center;gap:12px;padding:12px 0 4px;margin-bottom:8px;border-bottom:1px solid rgba(var(--ion-color-dark-rgb),.1)}.user-strip__avatar{width:44px;height:44px;border-radius:50%;flex-shrink:0;overflow:hidden;background:rgba(var(--ion-color-dark-rgb),.1);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;color:var(--ion-color-dark)}.user-strip__avatar img{width:100%;height:100%;object-fit:cover}.user-strip__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.user-strip__name{font-weight:600;font-size:.9rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-strip__email{font-size:.78rem;color:rgba(var(--ion-color-dark-rgb),.6);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-strip__profile-btn{background:none;border:none;padding:6px 0;font-size:.82rem;font-weight:600;color:var(--ion-color-dark);cursor:pointer;white-space:nowrap;text-decoration:underline;text-underline-offset:3px}\n"] }]
|
|
47782
47850
|
}], ctorParameters: () => [], propDecorators: { _modalRef: [{
|
|
47783
47851
|
type: Input
|
|
47784
47852
|
}], onSuccess: [{
|
|
47785
47853
|
type: Input
|
|
47854
|
+
}], onProfileClick: [{
|
|
47855
|
+
type: Input
|
|
47786
47856
|
}], i18nNamespace: [{
|
|
47787
47857
|
type: Input
|
|
47788
47858
|
}] } });
|
|
@@ -47883,7 +47953,7 @@ const ACCOUNT_VIEW_I18N = {
|
|
|
47883
47953
|
},
|
|
47884
47954
|
};
|
|
47885
47955
|
|
|
47886
|
-
addIcons({ peopleOutline, businessOutline, chevronForwardOutline, swapHorizontalOutline, mailOutline });
|
|
47956
|
+
addIcons({ peopleOutline, businessOutline, chevronForwardOutline, swapHorizontalOutline, mailOutline, warningOutline });
|
|
47887
47957
|
const DEFAULT_NAMESPACE$d = 'Settings.Account';
|
|
47888
47958
|
const DEFAULT_MANAGE_ORG_ROUTE = '/app/settings/organization';
|
|
47889
47959
|
/**
|
|
@@ -48348,14 +48418,10 @@ class AccountViewComponent {
|
|
|
48348
48418
|
@if (resolvedConfig().showDeleteAccount) {
|
|
48349
48419
|
<!-- Delete account -->
|
|
48350
48420
|
<section class="settings-section">
|
|
48351
|
-
<
|
|
48352
|
-
|
|
48353
|
-
|
|
48354
|
-
|
|
48355
|
-
bold: true,
|
|
48356
|
-
content: dangerDeleteTitle(),
|
|
48357
|
-
}"
|
|
48358
|
-
/>
|
|
48421
|
+
<div class="section-title-danger">
|
|
48422
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
48423
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: dangerDeleteTitle() }" />
|
|
48424
|
+
</div>
|
|
48359
48425
|
<div class="section-body">
|
|
48360
48426
|
<val-text
|
|
48361
48427
|
[props]="{
|
|
@@ -48383,7 +48449,7 @@ class AccountViewComponent {
|
|
|
48383
48449
|
(dismissed)="deleteAccountOpen.set(false)"
|
|
48384
48450
|
/>
|
|
48385
48451
|
</div>
|
|
48386
|
-
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: CtaCardComponent, selector: "val-cta-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: InvitationCardComponent, selector: "val-invitation-card", inputs: ["props"], outputs: ["onAccept", "onDecline"] }, { kind: "component", type: CreateOrgModalComponent, selector: "val-create-org-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed", "created"] }, { kind: "component", type: DeleteAccountModalComponent, selector: "val-delete-account-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
|
|
48452
|
+
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}.section-title-danger{display:flex;align-items:center;gap:8px}.danger-icon{font-size:1.15rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: CtaCardComponent, selector: "val-cta-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: InvitationCardComponent, selector: "val-invitation-card", inputs: ["props"], outputs: ["onAccept", "onDecline"] }, { kind: "component", type: CreateOrgModalComponent, selector: "val-create-org-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed", "created"] }, { kind: "component", type: DeleteAccountModalComponent, selector: "val-delete-account-modal", inputs: ["i18nNamespace", "isOpen"], outputs: ["dismissed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: "pipe", type: TitleCasePipe, name: "titlecase" }] }); }
|
|
48387
48453
|
}
|
|
48388
48454
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccountViewComponent, decorators: [{
|
|
48389
48455
|
type: Component,
|
|
@@ -48548,14 +48614,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48548
48614
|
@if (resolvedConfig().showDeleteAccount) {
|
|
48549
48615
|
<!-- Delete account -->
|
|
48550
48616
|
<section class="settings-section">
|
|
48551
|
-
<
|
|
48552
|
-
|
|
48553
|
-
|
|
48554
|
-
|
|
48555
|
-
bold: true,
|
|
48556
|
-
content: dangerDeleteTitle(),
|
|
48557
|
-
}"
|
|
48558
|
-
/>
|
|
48617
|
+
<div class="section-title-danger">
|
|
48618
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
48619
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: dangerDeleteTitle() }" />
|
|
48620
|
+
</div>
|
|
48559
48621
|
<div class="section-body">
|
|
48560
48622
|
<val-text
|
|
48561
48623
|
[props]="{
|
|
@@ -48583,7 +48645,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48583
48645
|
(dismissed)="deleteAccountOpen.set(false)"
|
|
48584
48646
|
/>
|
|
48585
48647
|
</div>
|
|
48586
|
-
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}\n"] }]
|
|
48648
|
+
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.settings-section val-title{display:block;margin-bottom:12px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;flex-wrap:wrap;gap:8px}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.org-new-cta-card{display:block;margin-top:12px}.orgs-empty-card{background:var(--ion-color-secondary-tint, rgba(var(--ion-color-secondary-rgb, 130, 101, 208), .2));border-radius:18px;padding:18px 16px 12px;display:flex;flex-direction:column;gap:8px}.orgs-empty-card__main{display:flex;align-items:center;gap:10px}.orgs-empty-card__icon{font-size:20px;flex-shrink:0;color:var(--ion-color-dark)}.orgs-empty-card__text{font-size:.875rem;color:var(--ion-color-dark)}.orgs-empty-card__link{background:none;border:none;padding:0;cursor:pointer;font-size:.8125rem;color:var(--ion-color-primary);text-align:left;text-decoration:underline;text-underline-offset:2px;font-family:inherit}.orgs-list{display:flex;flex-direction:column;gap:8px}.org-card{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:12px;background:var(--ion-color-light, #f4f5f8);border:1.5px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.org-card:active{opacity:.75}.org-card--active{border-color:var(--ion-color-primary);background:color-mix(in srgb,var(--ion-color-primary) 8%,transparent)}:host-context(body.dark) .org-card,:host-context(html.ion-palette-dark) .org-card,:host-context([data-theme=\"dark\"]) .org-card{background:#ffffff0d}:host-context(body.dark) .org-card--active,:host-context(html.ion-palette-dark) .org-card--active,:host-context([data-theme=\"dark\"]) .org-card--active{background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent)}.org-card__icon{width:40px;height:40px;border-radius:50%;background:color-mix(in srgb,var(--ion-color-primary) 15%,transparent);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:20px;color:var(--ion-color-primary)}.org-card__body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.org-card__name{font-weight:600;font-size:.95rem;color:var(--ion-color-dark);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.org-card__meta{display:flex;flex-direction:column;gap:1px;margin-top:3px}.org-card__meta-item{font-size:.78rem;color:var(--ion-color-dark)}.org-card__meta-label{font-weight:600;color:var(--ion-color-dark);margin-right:4px}.org-card__end{display:flex;align-items:center;gap:8px;flex-shrink:0}.section-title-danger{display:flex;align-items:center;gap:8px}.danger-icon{font-size:1.15rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}\n"] }]
|
|
48587
48649
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
48588
48650
|
type: Input
|
|
48589
48651
|
}] } });
|
|
@@ -48753,6 +48815,11 @@ class EditOrgModalComponent {
|
|
|
48753
48815
|
/** Namespace i18n con que la vista resuelve sus textos. */
|
|
48754
48816
|
this.i18nNamespace = DEFAULT_NAMESPACE$c;
|
|
48755
48817
|
this.saving = signal(false);
|
|
48818
|
+
this.logoUrl = signal(null);
|
|
48819
|
+
this.orgInitials = computed(() => {
|
|
48820
|
+
const name = this.org?.name ?? '';
|
|
48821
|
+
return name.slice(0, 2).toUpperCase() || '?';
|
|
48822
|
+
});
|
|
48756
48823
|
if (!this.i18n.hasNamespace(DEFAULT_NAMESPACE$c)) {
|
|
48757
48824
|
this.i18n.registerContent(DEFAULT_NAMESPACE$c, EDIT_ORG_MODAL_I18N);
|
|
48758
48825
|
}
|
|
@@ -48774,6 +48841,7 @@ class EditOrgModalComponent {
|
|
|
48774
48841
|
}, { allowSignalWrites: true });
|
|
48775
48842
|
}
|
|
48776
48843
|
ngOnInit() {
|
|
48844
|
+
this.logoUrl.set(this.org?.logoUrl ?? null);
|
|
48777
48845
|
this.formMeta.set(this.buildFormMeta());
|
|
48778
48846
|
}
|
|
48779
48847
|
get activeOrgId() {
|
|
@@ -48867,6 +48935,23 @@ class EditOrgModalComponent {
|
|
|
48867
48935
|
this.saving.set(false);
|
|
48868
48936
|
}
|
|
48869
48937
|
}
|
|
48938
|
+
async onLogoUploaded(result) {
|
|
48939
|
+
const orgId = this.org?.id ?? this.activeOrgId;
|
|
48940
|
+
if (!orgId)
|
|
48941
|
+
return;
|
|
48942
|
+
this.logoUrl.set(result.avatarUrl);
|
|
48943
|
+
try {
|
|
48944
|
+
const updated = await firstValueFrom(this.orgService.updateOrg(orgId, { logoUrl: result.avatarUrl }));
|
|
48945
|
+
this.onSuccess?.(updated);
|
|
48946
|
+
}
|
|
48947
|
+
catch (err) {
|
|
48948
|
+
this.errors.handle(err, {
|
|
48949
|
+
context: 'editOrgModal.logo',
|
|
48950
|
+
fallbackKey: 'saveError',
|
|
48951
|
+
i18nNamespace: this.i18nNamespace,
|
|
48952
|
+
});
|
|
48953
|
+
}
|
|
48954
|
+
}
|
|
48870
48955
|
dismiss() {
|
|
48871
48956
|
this._modalRef?.dismiss(null, 'cancel');
|
|
48872
48957
|
}
|
|
@@ -48885,6 +48970,15 @@ class EditOrgModalComponent {
|
|
|
48885
48970
|
</ion-toolbar>
|
|
48886
48971
|
</ion-header>
|
|
48887
48972
|
<ion-content class="ion-padding">
|
|
48973
|
+
<div class="logo-upload-wrapper">
|
|
48974
|
+
<val-avatar-upload
|
|
48975
|
+
[props]="{ currentUrl: logoUrl(), initials: orgInitials(), size: 80, editable: true, showViewButton: false }"
|
|
48976
|
+
[customPath]="'orgs/' + (org?.id ?? activeOrgId) + '/logo.jpg'"
|
|
48977
|
+
[customThumbPath]="'orgs/' + (org?.id ?? activeOrgId) + '/thumb.jpg'"
|
|
48978
|
+
[skipBackendSync]="true"
|
|
48979
|
+
(uploaded)="onLogoUploaded($event)"
|
|
48980
|
+
/>
|
|
48981
|
+
</div>
|
|
48888
48982
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
48889
48983
|
<val-title
|
|
48890
48984
|
[props]="{
|
|
@@ -48901,11 +48995,21 @@ class EditOrgModalComponent {
|
|
|
48901
48995
|
</ion-button>
|
|
48902
48996
|
</div>
|
|
48903
48997
|
</ion-content>
|
|
48904
|
-
`, isInline: true, styles: [".modal-close-bottom{margin-top:16px}\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: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
48998
|
+
`, isInline: true, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\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: FormComponent, selector: "val-form", inputs: ["props"], outputs: ["onSubmit", "onInvalid", "onSelectChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: AvatarUploadComponent, selector: "val-avatar-upload", inputs: ["props", "customPath", "customThumbPath", "skipBackendSync"], outputs: ["uploaded", "error", "uploadStart"] }] }); }
|
|
48905
48999
|
}
|
|
48906
49000
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EditOrgModalComponent, decorators: [{
|
|
48907
49001
|
type: Component,
|
|
48908
|
-
args: [{ selector: 'val-edit-org-modal', standalone: true, imports: [
|
|
49002
|
+
args: [{ selector: 'val-edit-org-modal', standalone: true, imports: [
|
|
49003
|
+
IonHeader,
|
|
49004
|
+
IonToolbar,
|
|
49005
|
+
IonButtons,
|
|
49006
|
+
IonButton,
|
|
49007
|
+
IonContent,
|
|
49008
|
+
FormComponent,
|
|
49009
|
+
DisplayComponent,
|
|
49010
|
+
TitleComponent,
|
|
49011
|
+
AvatarUploadComponent,
|
|
49012
|
+
], template: `
|
|
48909
49013
|
<ion-header>
|
|
48910
49014
|
<ion-toolbar>
|
|
48911
49015
|
<ion-buttons slot="end">
|
|
@@ -48916,6 +49020,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48916
49020
|
</ion-toolbar>
|
|
48917
49021
|
</ion-header>
|
|
48918
49022
|
<ion-content class="ion-padding">
|
|
49023
|
+
<div class="logo-upload-wrapper">
|
|
49024
|
+
<val-avatar-upload
|
|
49025
|
+
[props]="{ currentUrl: logoUrl(), initials: orgInitials(), size: 80, editable: true, showViewButton: false }"
|
|
49026
|
+
[customPath]="'orgs/' + (org?.id ?? activeOrgId) + '/logo.jpg'"
|
|
49027
|
+
[customThumbPath]="'orgs/' + (org?.id ?? activeOrgId) + '/thumb.jpg'"
|
|
49028
|
+
[skipBackendSync]="true"
|
|
49029
|
+
(uploaded)="onLogoUploaded($event)"
|
|
49030
|
+
/>
|
|
49031
|
+
</div>
|
|
48919
49032
|
<val-display [props]="{ content: t('title'), size: 'small', color: 'dark' }" />
|
|
48920
49033
|
<val-title
|
|
48921
49034
|
[props]="{
|
|
@@ -48932,7 +49045,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48932
49045
|
</ion-button>
|
|
48933
49046
|
</div>
|
|
48934
49047
|
</ion-content>
|
|
48935
|
-
`, styles: [".modal-close-bottom{margin-top:16px}\n"] }]
|
|
49048
|
+
`, styles: [".modal-close-bottom{margin-top:16px}.logo-upload-wrapper{display:flex;justify-content:center;padding:8px 0 16px}\n"] }]
|
|
48936
49049
|
}], ctorParameters: () => [], propDecorators: { _modalRef: [{
|
|
48937
49050
|
type: Input
|
|
48938
49051
|
}], org: [{
|
|
@@ -51769,6 +51882,7 @@ const ORGANIZATION_VIEW_I18N = {
|
|
|
51769
51882
|
},
|
|
51770
51883
|
};
|
|
51771
51884
|
|
|
51885
|
+
addIcons({ warningOutline });
|
|
51772
51886
|
const DEFAULT_NAMESPACE$6 = 'Settings.Organization';
|
|
51773
51887
|
const DEFAULT_VIEW_PERMISSIONS_ROUTE = '/app/settings/permissions';
|
|
51774
51888
|
const DEFAULT_API_KEYS_ROUTE = '/app/settings/api-keys';
|
|
@@ -52116,9 +52230,21 @@ class OrganizationViewComponent {
|
|
|
52116
52230
|
componentProps: {
|
|
52117
52231
|
showFeatures: false,
|
|
52118
52232
|
features: [
|
|
52119
|
-
{
|
|
52120
|
-
|
|
52121
|
-
|
|
52233
|
+
{
|
|
52234
|
+
icon: 'code-slash-outline',
|
|
52235
|
+
title: this.tt('apiKeysFeatureAutoTitle'),
|
|
52236
|
+
desc: this.tt('apiKeysFeatureAutoDesc'),
|
|
52237
|
+
},
|
|
52238
|
+
{
|
|
52239
|
+
icon: 'shield-checkmark-outline',
|
|
52240
|
+
title: this.tt('apiKeysFeaturePermsTitle'),
|
|
52241
|
+
desc: this.tt('apiKeysFeaturePermsDesc'),
|
|
52242
|
+
},
|
|
52243
|
+
{
|
|
52244
|
+
icon: 'warning-outline',
|
|
52245
|
+
title: this.tt('apiKeysFeatureSecretTitle'),
|
|
52246
|
+
desc: this.tt('apiKeysFeatureSecretDesc'),
|
|
52247
|
+
},
|
|
52122
52248
|
],
|
|
52123
52249
|
title: this.tt('apiKeysInfoTitle'),
|
|
52124
52250
|
subtitle: this.tt('apiKeysInfoSubtitle'),
|
|
@@ -52369,6 +52495,11 @@ class OrganizationViewComponent {
|
|
|
52369
52495
|
} @else {
|
|
52370
52496
|
@if (org(); as o) {
|
|
52371
52497
|
<div class="org-info-card">
|
|
52498
|
+
@if (o.logoUrl) {
|
|
52499
|
+
<div class="org-info-logo">
|
|
52500
|
+
<img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" />
|
|
52501
|
+
</div>
|
|
52502
|
+
}
|
|
52372
52503
|
<div class="org-info-field">
|
|
52373
52504
|
<span class="org-info-label">{{ tt('infoName') }}</span>
|
|
52374
52505
|
<span class="org-info-value">{{ o.name }}</span>
|
|
@@ -52526,14 +52657,10 @@ class OrganizationViewComponent {
|
|
|
52526
52657
|
@if (resolvedConfig().showTransferOwnership && isOwner()) {
|
|
52527
52658
|
<!-- Transfer ownership: solo owner (gating RBAC interno) -->
|
|
52528
52659
|
<section class="settings-section" data-testid="org-transfer-section">
|
|
52529
|
-
<
|
|
52530
|
-
|
|
52531
|
-
|
|
52532
|
-
|
|
52533
|
-
bold: true,
|
|
52534
|
-
content: tt('transferTitle'),
|
|
52535
|
-
}"
|
|
52536
|
-
/>
|
|
52660
|
+
<div class="section-title-danger">
|
|
52661
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
52662
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: tt('transferTitle') }" />
|
|
52663
|
+
</div>
|
|
52537
52664
|
<div class="section-body">
|
|
52538
52665
|
<val-text
|
|
52539
52666
|
[props]="{
|
|
@@ -52564,14 +52691,10 @@ class OrganizationViewComponent {
|
|
|
52564
52691
|
@if (resolvedConfig().showLeave) {
|
|
52565
52692
|
<!-- Leave org -->
|
|
52566
52693
|
<section class="settings-section">
|
|
52567
|
-
<
|
|
52568
|
-
|
|
52569
|
-
|
|
52570
|
-
|
|
52571
|
-
bold: true,
|
|
52572
|
-
content: tt('leaveTitle'),
|
|
52573
|
-
}"
|
|
52574
|
-
/>
|
|
52694
|
+
<div class="section-title-danger">
|
|
52695
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
52696
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: tt('leaveTitle') }" />
|
|
52697
|
+
</div>
|
|
52575
52698
|
<div class="section-body">
|
|
52576
52699
|
<val-text
|
|
52577
52700
|
[props]="{
|
|
@@ -52618,7 +52741,7 @@ class OrganizationViewComponent {
|
|
|
52618
52741
|
(dismissed)="permissionsOpen.set(false)"
|
|
52619
52742
|
/>
|
|
52620
52743
|
</div>
|
|
52621
|
-
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.org-more-info-link{background:none;border:none;padding:4px 0;margin-top:4px;font-size:13px;font-weight:600;color:var(--ion-color-primary, #7026df);cursor:pointer;text-align:left}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;gap:8px}.invite-cta{display:flex;flex-direction:column;gap:16px}.invite-cta__text{display:flex;flex-direction:column;gap:4px}.invite-cta__actions{display:flex;gap:12px;flex-wrap:wrap}.org-info-card{border-radius:14px;background:var(--ion-color-light, #f4f5f8);overflow:hidden}:host-context(body.dark) .org-info-card,:host-context(html.ion-palette-dark) .org-info-card,:host-context([data-theme=\"dark\"]) .org-info-card{background:#ffffff0d}.org-info-field{padding:12px 16px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--val-border-color, rgba(0, 0, 0, .06))}.org-info-field:last-child{border-bottom:none}.org-info-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.org-info-value{font-size:.95rem;font-weight:500;color:var(--ion-color-dark)}.org-info-value--muted{color:var(--ion-color-medium);font-weight:400}.plan-badge{display:inline-block;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:20px;width:fit-content}.plan-badge--free{background:var(--ion-color-light-shade, #d7d8da);color:var(--ion-color-dark)}.plan-badge--pro{background:var(--ion-color-primary);color:#fff}.plan-badge--enterprise{background:#f5c542;color:#222}.members-list{display:flex;flex-direction:column;gap:8px}.members-show-more{background:none;border:none;color:var(--ion-color-primary);font-size:14px;font-weight:500;cursor:pointer;padding:8px 0}.rbac-debug{opacity:.7}.rbac-debug__body{display:flex;flex-direction:column;gap:6px;font-family:monospace;font-size:.78rem}.rbac-debug__row{display:flex;gap:8px;align-items:flex-start}.rbac-debug__label{color:var(--ion-color-medium);min-width:72px;flex-shrink:0}.rbac-debug__value{color:var(--ion-color-dark);word-break:break-all}.rbac-debug__value--perms{color:var(--ion-color-medium)}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "directive", type: HasPermissionDirective, selector: "[valHasPermission]", inputs: ["valHasPermission"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: MemberCardComponent, selector: "val-member-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: PermissionsModalComponent, selector: "val-permissions-modal", inputs: ["isOpen", "config"], outputs: ["dismissed"] }] }); }
|
|
52744
|
+
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.org-more-info-link{background:none;border:none;padding:4px 0;margin-top:4px;font-size:13px;font-weight:600;color:var(--ion-color-primary, #7026df);cursor:pointer;text-align:left}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;gap:8px}.invite-cta{display:flex;flex-direction:column;gap:16px}.invite-cta__text{display:flex;flex-direction:column;gap:4px}.invite-cta__actions{display:flex;gap:12px;flex-wrap:wrap}.org-info-card{border-radius:14px;background:var(--ion-color-light, #f4f5f8);overflow:hidden}.org-info-logo{display:flex;justify-content:center;padding:8px 0 16px}.org-logo-img{width:80px;height:80px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-color-light)}:host-context(body.dark) .org-info-card,:host-context(html.ion-palette-dark) .org-info-card,:host-context([data-theme=\"dark\"]) .org-info-card{background:#ffffff0d}.org-info-field{padding:12px 16px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--val-border-color, rgba(0, 0, 0, .06))}.org-info-field:last-child{border-bottom:none}.org-info-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.org-info-value{font-size:.95rem;font-weight:500;color:var(--ion-color-dark)}.org-info-value--muted{color:var(--ion-color-medium);font-weight:400}.plan-badge{display:inline-block;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:20px;width:fit-content}.plan-badge--free{background:var(--ion-color-light-shade, #d7d8da);color:var(--ion-color-dark)}.plan-badge--pro{background:var(--ion-color-primary);color:#fff}.plan-badge--enterprise{background:#f5c542;color:#222}.members-list{display:flex;flex-direction:column;gap:8px}.members-show-more{background:none;border:none;color:var(--ion-color-primary);font-size:14px;font-weight:500;cursor:pointer;padding:8px 0}.rbac-debug{opacity:.7}.rbac-debug__body{display:flex;flex-direction:column;gap:6px;font-family:monospace;font-size:.78rem}.rbac-debug__row{display:flex;gap:8px;align-items:flex-start}.rbac-debug__label{color:var(--ion-color-medium);min-width:72px;flex-shrink:0}.rbac-debug__value{color:var(--ion-color-dark);word-break:break-all}.rbac-debug__value--perms{color:var(--ion-color-medium)}.section-title-danger{display:flex;align-items:center;gap:8px}.danger-icon{font-size:1.15rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "directive", type: HasPermissionDirective, selector: "[valHasPermission]", inputs: ["valHasPermission"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: MemberCardComponent, selector: "val-member-card", inputs: ["props"], outputs: ["onAction"] }, { kind: "component", type: PermissionsModalComponent, selector: "val-permissions-modal", inputs: ["isOpen", "config"], outputs: ["dismissed"] }] }); }
|
|
52622
52745
|
}
|
|
52623
52746
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrganizationViewComponent, decorators: [{
|
|
52624
52747
|
type: Component,
|
|
@@ -52626,6 +52749,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52626
52749
|
DisplayComponent,
|
|
52627
52750
|
EmptyStateComponent,
|
|
52628
52751
|
HasPermissionDirective,
|
|
52752
|
+
IonIcon,
|
|
52629
52753
|
SkeletonLayoutComponent,
|
|
52630
52754
|
TitleComponent,
|
|
52631
52755
|
TextComponent,
|
|
@@ -52679,6 +52803,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52679
52803
|
} @else {
|
|
52680
52804
|
@if (org(); as o) {
|
|
52681
52805
|
<div class="org-info-card">
|
|
52806
|
+
@if (o.logoUrl) {
|
|
52807
|
+
<div class="org-info-logo">
|
|
52808
|
+
<img class="org-logo-img" [src]="o.logoUrl" [alt]="o.name" />
|
|
52809
|
+
</div>
|
|
52810
|
+
}
|
|
52682
52811
|
<div class="org-info-field">
|
|
52683
52812
|
<span class="org-info-label">{{ tt('infoName') }}</span>
|
|
52684
52813
|
<span class="org-info-value">{{ o.name }}</span>
|
|
@@ -52836,14 +52965,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52836
52965
|
@if (resolvedConfig().showTransferOwnership && isOwner()) {
|
|
52837
52966
|
<!-- Transfer ownership: solo owner (gating RBAC interno) -->
|
|
52838
52967
|
<section class="settings-section" data-testid="org-transfer-section">
|
|
52839
|
-
<
|
|
52840
|
-
|
|
52841
|
-
|
|
52842
|
-
|
|
52843
|
-
bold: true,
|
|
52844
|
-
content: tt('transferTitle'),
|
|
52845
|
-
}"
|
|
52846
|
-
/>
|
|
52968
|
+
<div class="section-title-danger">
|
|
52969
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
52970
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: tt('transferTitle') }" />
|
|
52971
|
+
</div>
|
|
52847
52972
|
<div class="section-body">
|
|
52848
52973
|
<val-text
|
|
52849
52974
|
[props]="{
|
|
@@ -52874,14 +52999,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52874
52999
|
@if (resolvedConfig().showLeave) {
|
|
52875
53000
|
<!-- Leave org -->
|
|
52876
53001
|
<section class="settings-section">
|
|
52877
|
-
<
|
|
52878
|
-
|
|
52879
|
-
|
|
52880
|
-
|
|
52881
|
-
bold: true,
|
|
52882
|
-
content: tt('leaveTitle'),
|
|
52883
|
-
}"
|
|
52884
|
-
/>
|
|
53002
|
+
<div class="section-title-danger">
|
|
53003
|
+
<ion-icon name="warning-outline" class="danger-icon" aria-hidden="true"></ion-icon>
|
|
53004
|
+
<val-title [props]="{ size: 'medium', color: 'dark', bold: true, content: tt('leaveTitle') }" />
|
|
53005
|
+
</div>
|
|
52885
53006
|
<div class="section-body">
|
|
52886
53007
|
<val-text
|
|
52887
53008
|
[props]="{
|
|
@@ -52928,7 +53049,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
52928
53049
|
(dismissed)="permissionsOpen.set(false)"
|
|
52929
53050
|
/>
|
|
52930
53051
|
</div>
|
|
52931
|
-
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.org-more-info-link{background:none;border:none;padding:4px 0;margin-top:4px;font-size:13px;font-weight:600;color:var(--ion-color-primary, #7026df);cursor:pointer;text-align:left}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;gap:8px}.invite-cta{display:flex;flex-direction:column;gap:16px}.invite-cta__text{display:flex;flex-direction:column;gap:4px}.invite-cta__actions{display:flex;gap:12px;flex-wrap:wrap}.org-info-card{border-radius:14px;background:var(--ion-color-light, #f4f5f8);overflow:hidden}:host-context(body.dark) .org-info-card,:host-context(html.ion-palette-dark) .org-info-card,:host-context([data-theme=\"dark\"]) .org-info-card{background:#ffffff0d}.org-info-field{padding:12px 16px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--val-border-color, rgba(0, 0, 0, .06))}.org-info-field:last-child{border-bottom:none}.org-info-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.org-info-value{font-size:.95rem;font-weight:500;color:var(--ion-color-dark)}.org-info-value--muted{color:var(--ion-color-medium);font-weight:400}.plan-badge{display:inline-block;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:20px;width:fit-content}.plan-badge--free{background:var(--ion-color-light-shade, #d7d8da);color:var(--ion-color-dark)}.plan-badge--pro{background:var(--ion-color-primary);color:#fff}.plan-badge--enterprise{background:#f5c542;color:#222}.members-list{display:flex;flex-direction:column;gap:8px}.members-show-more{background:none;border:none;color:var(--ion-color-primary);font-size:14px;font-weight:500;cursor:pointer;padding:8px 0}.rbac-debug{opacity:.7}.rbac-debug__body{display:flex;flex-direction:column;gap:6px;font-family:monospace;font-size:.78rem}.rbac-debug__row{display:flex;gap:8px;align-items:flex-start}.rbac-debug__label{color:var(--ion-color-medium);min-width:72px;flex-shrink:0}.rbac-debug__value{color:var(--ion-color-dark);word-break:break-all}.rbac-debug__value--perms{color:var(--ion-color-medium)}\n"] }]
|
|
53052
|
+
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.org-more-info-link{background:none;border:none;padding:4px 0;margin-top:4px;font-size:13px;font-weight:600;color:var(--ion-color-primary, #7026df);cursor:pointer;text-align:left}.page-header{margin-bottom:16px}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-header-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}.section-body{display:flex;flex-direction:column;gap:10px}.row-actions{margin-top:12px}.row-actions--gap{display:flex;gap:8px}.invite-cta{display:flex;flex-direction:column;gap:16px}.invite-cta__text{display:flex;flex-direction:column;gap:4px}.invite-cta__actions{display:flex;gap:12px;flex-wrap:wrap}.org-info-card{border-radius:14px;background:var(--ion-color-light, #f4f5f8);overflow:hidden}.org-info-logo{display:flex;justify-content:center;padding:8px 0 16px}.org-logo-img{width:80px;height:80px;border-radius:50%;object-fit:cover;border:2px solid var(--ion-color-light)}:host-context(body.dark) .org-info-card,:host-context(html.ion-palette-dark) .org-info-card,:host-context([data-theme=\"dark\"]) .org-info-card{background:#ffffff0d}.org-info-field{padding:12px 16px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--val-border-color, rgba(0, 0, 0, .06))}.org-info-field:last-child{border-bottom:none}.org-info-label{font-size:.74rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--ion-color-medium)}.org-info-value{font-size:.95rem;font-weight:500;color:var(--ion-color-dark)}.org-info-value--muted{color:var(--ion-color-medium);font-weight:400}.plan-badge{display:inline-block;font-size:.78rem;font-weight:700;padding:3px 10px;border-radius:20px;width:fit-content}.plan-badge--free{background:var(--ion-color-light-shade, #d7d8da);color:var(--ion-color-dark)}.plan-badge--pro{background:var(--ion-color-primary);color:#fff}.plan-badge--enterprise{background:#f5c542;color:#222}.members-list{display:flex;flex-direction:column;gap:8px}.members-show-more{background:none;border:none;color:var(--ion-color-primary);font-size:14px;font-weight:500;cursor:pointer;padding:8px 0}.rbac-debug{opacity:.7}.rbac-debug__body{display:flex;flex-direction:column;gap:6px;font-family:monospace;font-size:.78rem}.rbac-debug__row{display:flex;gap:8px;align-items:flex-start}.rbac-debug__label{color:var(--ion-color-medium);min-width:72px;flex-shrink:0}.rbac-debug__value{color:var(--ion-color-dark);word-break:break-all}.rbac-debug__value--perms{color:var(--ion-color-medium)}.section-title-danger{display:flex;align-items:center;gap:8px}.danger-icon{font-size:1.15rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}\n"] }]
|
|
52932
53053
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
52933
53054
|
type: Input
|
|
52934
53055
|
}] } });
|