valtech-components 4.0.217 → 4.0.219

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.
@@ -50105,28 +50105,6 @@ class AccountViewComponent {
50105
50105
  onAccountDeleted: merged.onAccountDeleted,
50106
50106
  };
50107
50107
  });
50108
- this.orgs = signal([]);
50109
- this.orgsLoading = signal(false);
50110
- this.orgsError = signal(null);
50111
- this.orgsErrorState = computed(() => {
50112
- this.i18n.lang();
50113
- const err = this.orgsError();
50114
- if (!err)
50115
- return null;
50116
- return createErrorStateProps(err, {
50117
- title: {
50118
- offline: this.tt('orgsOfflineTitle'),
50119
- error: this.tt('orgsErrorTitle'),
50120
- },
50121
- description: {
50122
- offline: this.tt('orgsOfflineHint'),
50123
- error: this.tt('orgsErrorHint'),
50124
- },
50125
- retryLabel: this.tt('orgsRetry'),
50126
- onRetry: () => this.loadOrgs(),
50127
- retrying: this.orgsLoading(),
50128
- });
50129
- });
50130
50108
  this.createOrgOpen = signal(false);
50131
50109
  this.deleteAccountOpen = signal(false);
50132
50110
  this.activeOrgLogoFailed = signal(false);
@@ -50198,7 +50176,6 @@ class AccountViewComponent {
50198
50176
  const ns = this.ns;
50199
50177
  this.i18n.registerDefaults(ns, ACCOUNT_VIEW_I18N);
50200
50178
  this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
50201
- this.loadOrgs();
50202
50179
  this.loadPendingInvites();
50203
50180
  effect(() => {
50204
50181
  const orgId = this.activeOrgId();
@@ -50214,10 +50191,8 @@ class AccountViewComponent {
50214
50191
  next: org => this.activeOrg.set(org),
50215
50192
  error: () => this.activeOrg.set(null),
50216
50193
  });
50217
- });
50218
- connectPageRefresh(async () => {
50219
- await Promise.all([this.loadOrgs(), this.loadPendingInvites()]);
50220
- });
50194
+ }, { allowSignalWrites: true });
50195
+ connectPageRefresh(() => this.loadPendingInvites());
50221
50196
  }
50222
50197
  orgTypeLabel(type) {
50223
50198
  const map = {
@@ -50239,7 +50214,6 @@ class AccountViewComponent {
50239
50214
  this.createOrgOpen.set(true);
50240
50215
  }
50241
50216
  onOrgCreated(newOrg) {
50242
- this.loadOrgs();
50243
50217
  this.resolvedConfig().onOrgCreated?.(newOrg);
50244
50218
  }
50245
50219
  onMoreInfo() {
@@ -50305,7 +50279,6 @@ class AccountViewComponent {
50305
50279
  duration: 3500,
50306
50280
  });
50307
50281
  this.pendingInvites.update(list => list.filter(i => i.orgId !== invite.orgId));
50308
- this.loadOrgs();
50309
50282
  },
50310
50283
  error: err => {
50311
50284
  this.errors.handle(err, { context: 'account.acceptPendingInvite' });
@@ -50337,26 +50310,6 @@ class AccountViewComponent {
50337
50310
  complete: () => this.inviteAccepting.set(null),
50338
50311
  });
50339
50312
  }
50340
- loadOrgs() {
50341
- this.orgsLoading.set(true);
50342
- this.orgsError.set(null);
50343
- return new Promise(resolve => {
50344
- this.orgService.listMyOrgs().subscribe({
50345
- next: orgs => {
50346
- const activeId = this.activeOrgId();
50347
- this.orgs.set([...orgs].sort((a, b) => (a.id === activeId ? -1 : b.id === activeId ? 1 : 0)));
50348
- this.activeOrgLogoFailed.set(false);
50349
- this.orgsLoading.set(false);
50350
- resolve();
50351
- },
50352
- error: err => {
50353
- this.orgsError.set(err);
50354
- this.orgsLoading.set(false);
50355
- resolve();
50356
- },
50357
- });
50358
- });
50359
- }
50360
50313
  tt(key) {
50361
50314
  return this.i18n.t(key, this.ns);
50362
50315
  }
@@ -50416,66 +50369,59 @@ class AccountViewComponent {
50416
50369
  />
50417
50370
  </div>
50418
50371
  <div class="section-body">
50419
- @if (orgsLoading()) {
50420
- <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
50421
- } @else if (orgsErrorState()) {
50422
- <val-empty-state [props]="orgsErrorState()!" />
50423
- } @else {
50424
- @if (activeOrg(); as org) {
50425
- <div class="orgs-list">
50426
- <div class="org-card org-card--active">
50427
- <div class="org-card__icon">
50428
- @if (activeOrg()?.logoUrl && !activeOrgLogoFailed()) {
50429
- <img
50430
- [src]="activeOrg()!.logoUrl!"
50431
- [alt]="activeOrg()?.name ?? ''"
50432
- (error)="activeOrgLogoFailed.set(true)"
50433
- />
50434
- } @else {
50435
- <ion-icon name="business-outline" />
50436
- }
50437
- </div>
50438
- <div class="org-card__body">
50439
- <span class="org-card__name">{{ org.name }}</span>
50440
- <div class="org-card__meta">
50441
- <span class="org-card__meta-item">
50442
- <span class="org-card__meta-label">{{ tt('orgsLabelType') }}</span>
50443
- {{ orgTypeLabel(org.type) }}
50444
- </span>
50445
- @if (activeOrgRole()) {
50446
- <span class="org-card__meta-item">
50447
- <span class="org-card__meta-label">{{ tt('orgsLabelRole') }}</span>
50448
- {{ activeOrgRole() | titlecase }}
50449
- </span>
50450
- }
50372
+ @if (activeOrg(); as org) {
50373
+ <div class="orgs-list">
50374
+ <div class="org-card org-card--active">
50375
+ <div class="org-card__icon">
50376
+ @if (activeOrg()?.logoUrl && !activeOrgLogoFailed()) {
50377
+ <img
50378
+ [src]="activeOrg()!.logoUrl!"
50379
+ [alt]="activeOrg()?.name ?? ''"
50380
+ (error)="activeOrgLogoFailed.set(true)"
50381
+ />
50382
+ } @else {
50383
+ <ion-icon name="business-outline" />
50384
+ }
50385
+ </div>
50386
+ <div class="org-card__body">
50387
+ <span class="org-card__name">{{ org.name }}</span>
50388
+ <div class="org-card__meta">
50389
+ <span class="org-card__meta-item">
50390
+ <span class="org-card__meta-label">{{ tt('orgsLabelType') }}</span>
50391
+ {{ orgTypeLabel(org.type) }}
50392
+ </span>
50393
+ @if (activeOrgRole()) {
50451
50394
  <span class="org-card__meta-item">
50452
- <span class="org-card__meta-label">{{ tt('orgsLabelStatus') }}</span>
50453
- {{ tt('orgsStatusActive') }}
50395
+ <span class="org-card__meta-label">{{ tt('orgsLabelRole') }}</span>
50396
+ {{ activeOrgRole() | titlecase }}
50454
50397
  </span>
50455
- </div>
50456
- </div>
50457
- <div class="org-card__end">
50458
- <ion-button fill="outline" color="dark" shape="round" size="small" (click)="onManageOrg()">
50459
- {{ tt('orgsManage') }}
50460
- </ion-button>
50398
+ }
50399
+ <span class="org-card__meta-item">
50400
+ <span class="org-card__meta-label">{{ tt('orgsLabelStatus') }}</span>
50401
+ {{ tt('orgsStatusActive') }}
50402
+ </span>
50461
50403
  </div>
50462
50404
  </div>
50463
- </div>
50464
- } @else if (orgs().length === 0) {
50465
- <div class="orgs-empty-card">
50466
- <div class="orgs-empty-card__main">
50467
- <ion-icon name="people-outline" class="orgs-empty-card__icon" />
50468
- <span class="orgs-empty-card__text">{{ orgsEmpty() }}</span>
50405
+ <div class="org-card__end">
50406
+ <ion-button fill="outline" color="dark" shape="round" size="small" (click)="onManageOrg()">
50407
+ {{ tt('orgsManage') }}
50408
+ </ion-button>
50469
50409
  </div>
50470
- <button class="orgs-empty-card__link" (click)="onMoreInfo()">
50471
- {{ orgsMoreInfo() }}
50472
- </button>
50473
50410
  </div>
50474
- }
50475
- @if (resolvedConfig().showNewOrgCta) {
50476
- <!-- Nueva organizacion: CTA card con titulo, subtitulo y boton -->
50477
- <val-cta-card class="org-new-cta-card" [props]="newOrgCtaProps()" (onAction)="onNewOrg()" />
50478
- }
50411
+ </div>
50412
+ } @else if (!activeOrgId()) {
50413
+ <div class="orgs-empty-card">
50414
+ <div class="orgs-empty-card__main">
50415
+ <ion-icon name="people-outline" class="orgs-empty-card__icon" />
50416
+ <span class="orgs-empty-card__text">{{ orgsEmpty() }}</span>
50417
+ </div>
50418
+ <button class="orgs-empty-card__link" (click)="onMoreInfo()">
50419
+ {{ orgsMoreInfo() }}
50420
+ </button>
50421
+ </div>
50422
+ }
50423
+ @if (resolvedConfig().showNewOrgCta) {
50424
+ <val-cta-card class="org-new-cta-card" [props]="newOrgCtaProps()" (onAction)="onNewOrg()" />
50479
50425
  }
50480
50426
  </div>
50481
50427
  </section>
@@ -50542,14 +50488,12 @@ class AccountViewComponent {
50542
50488
  (dismissed)="deleteAccountOpen.set(false)"
50543
50489
  />
50544
50490
  </div>
50545
- `, 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);overflow:hidden;img{width:100%;height:100%;object-fit:cover;border-radius:50%}}.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;margin-bottom:12px}.section-title-danger val-title{display:block;margin:0}.danger-icon{display:block;font-size:1.125rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}.settings-section--danger{background:color-mix(in srgb,var(--ion-color-danger) 4%,transparent);border-radius:14px;padding:16px;margin:0 -4px}:host-context(body.dark) .settings-section--danger,:host-context(html.ion-palette-dark) .settings-section--danger,:host-context([data-theme=\"dark\"]) .settings-section--danger{background:color-mix(in srgb,var(--ion-color-danger) 8%,transparent)}\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" }] }); }
50491
+ `, 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);overflow:hidden;img{width:100%;height:100%;object-fit:cover;border-radius:50%}}.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;margin-bottom:12px}.section-title-danger val-title{display:block;margin:0}.danger-icon{display:block;font-size:1.125rem;color:var(--ion-color-warning-shade, #d4a017);flex-shrink:0}.settings-section--danger{background:color-mix(in srgb,var(--ion-color-danger) 4%,transparent);border-radius:14px;padding:16px;margin:0 -4px}:host-context(body.dark) .settings-section--danger,:host-context(html.ion-palette-dark) .settings-section--danger,:host-context([data-theme=\"dark\"]) .settings-section--danger{background:color-mix(in srgb,var(--ion-color-danger) 8%,transparent)}\n"], dependencies: [{ kind: "component", type: DisplayComponent, selector: "val-display", 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" }] }); }
50546
50492
  }
50547
50493
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AccountViewComponent, decorators: [{
50548
50494
  type: Component,
50549
50495
  args: [{ selector: 'val-account-view', standalone: true, imports: [
50550
50496
  DisplayComponent,
50551
- EmptyStateComponent,
50552
- SkeletonLayoutComponent,
50553
50497
  TitleComponent,
50554
50498
  TextComponent,
50555
50499
  ButtonComponent,
@@ -50615,66 +50559,59 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
50615
50559
  />
50616
50560
  </div>
50617
50561
  <div class="section-body">
50618
- @if (orgsLoading()) {
50619
- <val-skeleton-layout [props]="{ preset: 'list', rows: 3 }" />
50620
- } @else if (orgsErrorState()) {
50621
- <val-empty-state [props]="orgsErrorState()!" />
50622
- } @else {
50623
- @if (activeOrg(); as org) {
50624
- <div class="orgs-list">
50625
- <div class="org-card org-card--active">
50626
- <div class="org-card__icon">
50627
- @if (activeOrg()?.logoUrl && !activeOrgLogoFailed()) {
50628
- <img
50629
- [src]="activeOrg()!.logoUrl!"
50630
- [alt]="activeOrg()?.name ?? ''"
50631
- (error)="activeOrgLogoFailed.set(true)"
50632
- />
50633
- } @else {
50634
- <ion-icon name="business-outline" />
50635
- }
50636
- </div>
50637
- <div class="org-card__body">
50638
- <span class="org-card__name">{{ org.name }}</span>
50639
- <div class="org-card__meta">
50640
- <span class="org-card__meta-item">
50641
- <span class="org-card__meta-label">{{ tt('orgsLabelType') }}</span>
50642
- {{ orgTypeLabel(org.type) }}
50643
- </span>
50644
- @if (activeOrgRole()) {
50645
- <span class="org-card__meta-item">
50646
- <span class="org-card__meta-label">{{ tt('orgsLabelRole') }}</span>
50647
- {{ activeOrgRole() | titlecase }}
50648
- </span>
50649
- }
50562
+ @if (activeOrg(); as org) {
50563
+ <div class="orgs-list">
50564
+ <div class="org-card org-card--active">
50565
+ <div class="org-card__icon">
50566
+ @if (activeOrg()?.logoUrl && !activeOrgLogoFailed()) {
50567
+ <img
50568
+ [src]="activeOrg()!.logoUrl!"
50569
+ [alt]="activeOrg()?.name ?? ''"
50570
+ (error)="activeOrgLogoFailed.set(true)"
50571
+ />
50572
+ } @else {
50573
+ <ion-icon name="business-outline" />
50574
+ }
50575
+ </div>
50576
+ <div class="org-card__body">
50577
+ <span class="org-card__name">{{ org.name }}</span>
50578
+ <div class="org-card__meta">
50579
+ <span class="org-card__meta-item">
50580
+ <span class="org-card__meta-label">{{ tt('orgsLabelType') }}</span>
50581
+ {{ orgTypeLabel(org.type) }}
50582
+ </span>
50583
+ @if (activeOrgRole()) {
50650
50584
  <span class="org-card__meta-item">
50651
- <span class="org-card__meta-label">{{ tt('orgsLabelStatus') }}</span>
50652
- {{ tt('orgsStatusActive') }}
50585
+ <span class="org-card__meta-label">{{ tt('orgsLabelRole') }}</span>
50586
+ {{ activeOrgRole() | titlecase }}
50653
50587
  </span>
50654
- </div>
50655
- </div>
50656
- <div class="org-card__end">
50657
- <ion-button fill="outline" color="dark" shape="round" size="small" (click)="onManageOrg()">
50658
- {{ tt('orgsManage') }}
50659
- </ion-button>
50588
+ }
50589
+ <span class="org-card__meta-item">
50590
+ <span class="org-card__meta-label">{{ tt('orgsLabelStatus') }}</span>
50591
+ {{ tt('orgsStatusActive') }}
50592
+ </span>
50660
50593
  </div>
50661
50594
  </div>
50662
- </div>
50663
- } @else if (orgs().length === 0) {
50664
- <div class="orgs-empty-card">
50665
- <div class="orgs-empty-card__main">
50666
- <ion-icon name="people-outline" class="orgs-empty-card__icon" />
50667
- <span class="orgs-empty-card__text">{{ orgsEmpty() }}</span>
50595
+ <div class="org-card__end">
50596
+ <ion-button fill="outline" color="dark" shape="round" size="small" (click)="onManageOrg()">
50597
+ {{ tt('orgsManage') }}
50598
+ </ion-button>
50668
50599
  </div>
50669
- <button class="orgs-empty-card__link" (click)="onMoreInfo()">
50670
- {{ orgsMoreInfo() }}
50671
- </button>
50672
50600
  </div>
50673
- }
50674
- @if (resolvedConfig().showNewOrgCta) {
50675
- <!-- Nueva organizacion: CTA card con titulo, subtitulo y boton -->
50676
- <val-cta-card class="org-new-cta-card" [props]="newOrgCtaProps()" (onAction)="onNewOrg()" />
50677
- }
50601
+ </div>
50602
+ } @else if (!activeOrgId()) {
50603
+ <div class="orgs-empty-card">
50604
+ <div class="orgs-empty-card__main">
50605
+ <ion-icon name="people-outline" class="orgs-empty-card__icon" />
50606
+ <span class="orgs-empty-card__text">{{ orgsEmpty() }}</span>
50607
+ </div>
50608
+ <button class="orgs-empty-card__link" (click)="onMoreInfo()">
50609
+ {{ orgsMoreInfo() }}
50610
+ </button>
50611
+ </div>
50612
+ }
50613
+ @if (resolvedConfig().showNewOrgCta) {
50614
+ <val-cta-card class="org-new-cta-card" [props]="newOrgCtaProps()" (onAction)="onNewOrg()" />
50678
50615
  }
50679
50616
  </div>
50680
50617
  </section>