valtech-components 2.0.1021 → 2.0.1023
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/invite-member-modal/invite-member-modal.component.mjs +26 -15
- package/esm2022/lib/components/organisms/member-detail-modal/member-detail-modal.component.mjs +21 -55
- package/esm2022/lib/components/organisms/org-info-sheet/org-info-sheet.component.mjs +3 -3
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -27
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +12 -15
- package/esm2022/lib/services/org/permission-catalog.service.mjs +43 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +130 -139
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/member-detail-modal/member-detail-modal.component.d.ts +3 -1
- package/lib/components/organisms/organization-view/organization-view.component.d.ts +0 -1
- package/lib/components/organisms/permissions-view/permissions-view.component.d.ts +0 -1
- package/lib/services/org/permission-catalog.service.d.ts +17 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -54,7 +54,7 @@ import 'prismjs/components/prism-json';
|
|
|
54
54
|
* Current version of valtech-components.
|
|
55
55
|
* This is automatically updated during the publish process.
|
|
56
56
|
*/
|
|
57
|
-
const VERSION = '2.0.
|
|
57
|
+
const VERSION = '2.0.1023';
|
|
58
58
|
|
|
59
59
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
60
60
|
let isRefreshing = false;
|
|
@@ -46382,7 +46382,7 @@ class OrgInfoSheetComponent {
|
|
|
46382
46382
|
<val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
|
|
46383
46383
|
</div>
|
|
46384
46384
|
</ion-content>
|
|
46385
|
-
`, isInline: true, styles: ["ion-content{--padding-bottom:
|
|
46385
|
+
`, isInline: true, styles: ["ion-content{--padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) }val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"], dependencies: [{ kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }] }); }
|
|
46386
46386
|
}
|
|
46387
46387
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OrgInfoSheetComponent, decorators: [{
|
|
46388
46388
|
type: Component,
|
|
@@ -46453,7 +46453,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
46453
46453
|
<val-button [props]="resolvedCloseProps()" (click)="dismiss()" />
|
|
46454
46454
|
</div>
|
|
46455
46455
|
</ion-content>
|
|
46456
|
-
`, styles: ["ion-content{--padding-bottom:
|
|
46456
|
+
`, styles: ["ion-content{--padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px)) }val-display{margin-bottom:4px;display:block}val-title{margin-bottom:8px;display:block}.info-features{display:flex;flex-direction:column;gap:12px;margin:16px 0}.info-feature{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border-radius:10px;background:var(--ion-color-light, #f4f5f8)}:host-context(body.dark) .info-feature,:host-context(html.ion-palette-dark) .info-feature,:host-context([data-theme=\"dark\"]) .info-feature{background:#ffffff0d}.info-feature__icon{font-size:22px;color:var(--ion-color-primary);flex-shrink:0;margin-top:2px}.info-feature__title{font-weight:600;font-size:.9rem;color:var(--ion-color-dark)}.info-feature__desc{font-size:.82rem;color:var(--ion-color-medium);margin-top:2px}.sheet-footer{margin-top:20px}\n"] }]
|
|
46457
46457
|
}], ctorParameters: () => [], propDecorators: { title: [{
|
|
46458
46458
|
type: Input
|
|
46459
46459
|
}], subtitle: [{
|
|
@@ -47985,19 +47985,30 @@ class InviteMemberModalComponent {
|
|
|
47985
47985
|
this.searchResults.set([]);
|
|
47986
47986
|
return [];
|
|
47987
47987
|
}
|
|
47988
|
-
|
|
47989
|
-
//
|
|
47990
|
-
//
|
|
47991
|
-
//
|
|
47992
|
-
//
|
|
47993
|
-
|
|
47994
|
-
|
|
47995
|
-
|
|
47996
|
-
|
|
47997
|
-
|
|
47998
|
-
|
|
47999
|
-
|
|
48000
|
-
|
|
47988
|
+
// Búsqueda por prefijo sobre DOS campos: `handle` y `nameLower`. Firestore
|
|
47989
|
+
// no soporta OR entre campos en una query, así que se lanzan dos queries en
|
|
47990
|
+
// paralelo y se mezclan (dedup por id). El sentinel alto cierra el
|
|
47991
|
+
// rango del prefijo. `nameLower` lo escribe el backend en /profiles
|
|
47992
|
+
// (NormalizeNameForSearch: lowercase + colapso de espacios); normalizamos el
|
|
47993
|
+
// query igual para que el prefijo matchee.
|
|
47994
|
+
const profiles = collection(this.firestore, 'profiles');
|
|
47995
|
+
const handleQ = (q.startsWith('@') ? q.slice(1) : q).toLowerCase();
|
|
47996
|
+
const nameQ = q.trim().toLowerCase().replace(/\s+/g, ' ');
|
|
47997
|
+
const byHandle$ = from(getDocs(query$1(profiles, orderBy('handle'), startAt(handleQ), endAt(handleQ + '\uf8ff'), limit(8))));
|
|
47998
|
+
const byName$ = from(getDocs(query$1(profiles, orderBy('nameLower'), startAt(nameQ), endAt(nameQ + '\uf8ff'), limit(8))));
|
|
47999
|
+
return forkJoin([byHandle$, byName$]).pipe(map$1(([handleSnap, nameSnap]) => {
|
|
48000
|
+
const byId = new Map();
|
|
48001
|
+
for (const d of [...handleSnap.docs, ...nameSnap.docs]) {
|
|
48002
|
+
if (byId.has(d.id))
|
|
48003
|
+
continue;
|
|
48004
|
+
byId.set(d.id, {
|
|
48005
|
+
userId: d.id,
|
|
48006
|
+
handle: d.data()['handle'],
|
|
48007
|
+
name: d.data()['name'],
|
|
48008
|
+
});
|
|
48009
|
+
}
|
|
48010
|
+
return { users: Array.from(byId.values()).slice(0, 8) };
|
|
48011
|
+
}));
|
|
48001
48012
|
}))
|
|
48002
48013
|
.subscribe({
|
|
48003
48014
|
next: res => {
|
|
@@ -48388,6 +48399,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
48388
48399
|
type: Input
|
|
48389
48400
|
}] } });
|
|
48390
48401
|
|
|
48402
|
+
/**
|
|
48403
|
+
* Consume el catálogo de permisos del backend (`GET /org/{orgId}/permissions-catalog`).
|
|
48404
|
+
* El backend es la fuente de verdad de qué permisos existen y de su alcance
|
|
48405
|
+
* (globales de plataforma vs. propios de una app). La respuesta incluye el
|
|
48406
|
+
* `appId` del request para que la vista distinga la app actual.
|
|
48407
|
+
*
|
|
48408
|
+
* Promovido desde `showcase` a la lib bajo el proceso de ADR-021. Usa
|
|
48409
|
+
* `VALTECH_AUTH_CONFIG.apiUrl` (como `OrgService`) en vez del `environment` de la
|
|
48410
|
+
* app — la lib no importa el environment del consumer.
|
|
48411
|
+
*/
|
|
48412
|
+
class PermissionCatalogService {
|
|
48413
|
+
constructor(config, http) {
|
|
48414
|
+
this.config = config;
|
|
48415
|
+
this.http = http;
|
|
48416
|
+
}
|
|
48417
|
+
getCatalog(orgId) {
|
|
48418
|
+
return this.http.get(`${this.config.apiUrl}/org/${orgId}/permissions-catalog`);
|
|
48419
|
+
}
|
|
48420
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
48421
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, providedIn: 'root' }); }
|
|
48422
|
+
}
|
|
48423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, decorators: [{
|
|
48424
|
+
type: Injectable,
|
|
48425
|
+
args: [{ providedIn: 'root' }]
|
|
48426
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
48427
|
+
type: Inject,
|
|
48428
|
+
args: [VALTECH_AUTH_CONFIG]
|
|
48429
|
+
}] }, { type: i1$3.HttpClient }] });
|
|
48430
|
+
/**
|
|
48431
|
+
* Humaniza un código crudo (`api-keys` → "Api Keys", `reset-password` → "Reset
|
|
48432
|
+
* Password") como último recurso cuando el catálogo no trae label para él.
|
|
48433
|
+
*/
|
|
48434
|
+
function humanizePermissionCode(code) {
|
|
48435
|
+
if (!code)
|
|
48436
|
+
return '';
|
|
48437
|
+
return code
|
|
48438
|
+
.split(/[-_]/)
|
|
48439
|
+
.filter(Boolean)
|
|
48440
|
+
.map(w => w.charAt(0).toUpperCase() + w.slice(1))
|
|
48441
|
+
.join(' ');
|
|
48442
|
+
}
|
|
48443
|
+
/**
|
|
48444
|
+
* Construye el resolvedor de labels de permisos a partir del catálogo del backend
|
|
48445
|
+
* (fuente única de verdad de los labels, ADR-024). Los consumers (permissions-view,
|
|
48446
|
+
* organization-view, member-detail-modal) usan esto en vez de duplicar mapas
|
|
48447
|
+
* hardcodeados `resource→key`/`action→key`.
|
|
48448
|
+
*
|
|
48449
|
+
* - Recurso → `permissions[].label[locale]`; acción → `actionLabels[action][locale]`.
|
|
48450
|
+
* - Wildcards (`*:*`, `resource:*`, `*`) usan `allLabel` (el catálogo no modela el
|
|
48451
|
+
* comodín; el consumer pasa su string i18n, p.ej. "Todos los permisos").
|
|
48452
|
+
* - Fallback humanizado si el catálogo no trae label (evita salidas vacías como
|
|
48453
|
+
* ": Gestionar" ante un recurso/acción nuevo aún sin etiqueta en el backend).
|
|
48454
|
+
*/
|
|
48455
|
+
function createPermissionLabeler(catalog, locale, opts) {
|
|
48456
|
+
const byResource = new Map();
|
|
48457
|
+
for (const r of catalog.permissions ?? [])
|
|
48458
|
+
byResource.set(r.resource, r);
|
|
48459
|
+
const actionLabels = catalog.actionLabels ?? {};
|
|
48460
|
+
const allLabel = opts?.allLabel ?? humanizePermissionCode('all');
|
|
48461
|
+
const resLabel = (resource) => byResource.get(resource)?.label?.[locale] ?? humanizePermissionCode(resource);
|
|
48462
|
+
const actLabel = (action) => actionLabels[action]?.[locale] ?? humanizePermissionCode(action);
|
|
48463
|
+
return (perm) => {
|
|
48464
|
+
const [resource, action] = perm.split(':');
|
|
48465
|
+
if (resource === '*')
|
|
48466
|
+
return allLabel;
|
|
48467
|
+
const res = resLabel(resource);
|
|
48468
|
+
const act = action === '*' ? allLabel : actLabel(action);
|
|
48469
|
+
return `${res}: ${act}`;
|
|
48470
|
+
};
|
|
48471
|
+
}
|
|
48472
|
+
|
|
48391
48473
|
/**
|
|
48392
48474
|
* Defaults i18n (es/en) embebidos en `val-member-detail-modal`. Auto-registrados
|
|
48393
48475
|
* en el constructor del componente si el consumer no proveyó el namespace
|
|
@@ -48526,6 +48608,9 @@ class MemberDetailModalComponent {
|
|
|
48526
48608
|
this.errors = inject(ValtechErrorService);
|
|
48527
48609
|
this.i18n = inject(I18nService);
|
|
48528
48610
|
this.confirmDialog = inject(ConfirmationDialogService);
|
|
48611
|
+
this.catalog = inject(PermissionCatalogService);
|
|
48612
|
+
/** Labeler de permisos con la SSOT del backend (catálogo). Se llena al cargar. */
|
|
48613
|
+
this.permLabeler = signal(null);
|
|
48529
48614
|
/** Organización a la que pertenece el miembro. */
|
|
48530
48615
|
this.orgId = '';
|
|
48531
48616
|
/** Si true, habilita cambio de rol y eliminación. */
|
|
@@ -48597,62 +48682,24 @@ class MemberDetailModalComponent {
|
|
|
48597
48682
|
if (v && v !== this.currentRole())
|
|
48598
48683
|
void this.onChangeRole(v);
|
|
48599
48684
|
});
|
|
48685
|
+
// Catálogo del backend = SSOT de los labels de permisos (ADR-024). Si falla,
|
|
48686
|
+
// `permissionLabel` cae al fallback humanizado (no rompe el modal).
|
|
48687
|
+
if (this.orgId) {
|
|
48688
|
+
this.catalog.getCatalog(this.orgId).subscribe({
|
|
48689
|
+
next: catalog => this.permLabeler.set(createPermissionLabeler(catalog, this.i18n.lang(), { allLabel: this.t('permAll') })),
|
|
48690
|
+
error: () => { },
|
|
48691
|
+
});
|
|
48692
|
+
}
|
|
48600
48693
|
}
|
|
48601
48694
|
permissionLabel(perm) {
|
|
48602
|
-
|
|
48603
|
-
|
|
48604
|
-
|
|
48605
|
-
const
|
|
48606
|
-
|
|
48607
|
-
|
|
48608
|
-
|
|
48609
|
-
|
|
48610
|
-
templates: 'permTemplates',
|
|
48611
|
-
rbac: 'permRbac',
|
|
48612
|
-
apps: 'permApps',
|
|
48613
|
-
'api-keys': 'permApiKeys',
|
|
48614
|
-
'email-logs': 'permEmailLogs',
|
|
48615
|
-
'sms-logs': 'permSmsLogs',
|
|
48616
|
-
'comms-templates': 'permCommsTemplates',
|
|
48617
|
-
requests: 'permRequests',
|
|
48618
|
-
members: 'permMembers',
|
|
48619
|
-
accounts: 'permAccounts',
|
|
48620
|
-
support: 'permSupport',
|
|
48621
|
-
bingo: 'permBingo',
|
|
48622
|
-
'*': 'permAll',
|
|
48623
|
-
};
|
|
48624
|
-
const actKey = {
|
|
48625
|
-
read: 'permRead',
|
|
48626
|
-
write: 'permWrite',
|
|
48627
|
-
create: 'permCreate',
|
|
48628
|
-
delete: 'permDelete',
|
|
48629
|
-
manage: 'permManage',
|
|
48630
|
-
edit: 'permEdit',
|
|
48631
|
-
sell: 'permSell',
|
|
48632
|
-
checkin: 'permCheckin',
|
|
48633
|
-
settle: 'permSettle',
|
|
48634
|
-
export: 'permExport',
|
|
48635
|
-
operate: 'permOperate',
|
|
48636
|
-
suspend: 'permSuspend',
|
|
48637
|
-
reactivate: 'permReactivate',
|
|
48638
|
-
'reset-password': 'permResetPassword',
|
|
48639
|
-
import: 'permImport',
|
|
48640
|
-
'*': 'permAll',
|
|
48641
|
-
};
|
|
48642
|
-
// Label del i18n si el recurso/acción está mapeado; si no, humanizar el código
|
|
48643
|
-
// crudo (evita que un recurso nuevo salga vacío, ej. ": Gestionar").
|
|
48644
|
-
const res = resKey[resource] ? this.t(resKey[resource]) : this.humanizeCode(resource);
|
|
48645
|
-
const act = actKey[action] ? this.t(actKey[action]) : this.humanizeCode(action);
|
|
48646
|
-
return `${res}: ${act}`;
|
|
48647
|
-
}
|
|
48648
|
-
humanizeCode(code) {
|
|
48649
|
-
if (!code)
|
|
48650
|
-
return '';
|
|
48651
|
-
return code
|
|
48652
|
-
.split(/[-_]/)
|
|
48653
|
-
.filter(Boolean)
|
|
48654
|
-
.map(w => w.charAt(0).toUpperCase() + w.slice(1))
|
|
48655
|
-
.join(' ');
|
|
48695
|
+
// SSOT = catálogo del backend. Hasta que cargue (o si falló), fallback a un
|
|
48696
|
+
// labeler vacío que humaniza el código crudo (evita salidas vacías como
|
|
48697
|
+
// ": Gestionar"). El `*:*` y wildcards usan el label i18n `permAll`.
|
|
48698
|
+
const labeler = this.permLabeler() ??
|
|
48699
|
+
createPermissionLabeler({ permissions: [], actionLabels: {} }, this.i18n.lang(), {
|
|
48700
|
+
allLabel: this.t('permAll'),
|
|
48701
|
+
});
|
|
48702
|
+
return labeler(perm);
|
|
48656
48703
|
}
|
|
48657
48704
|
async onChangeRole(newRoleId) {
|
|
48658
48705
|
if (this.working())
|
|
@@ -49577,35 +49624,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
49577
49624
|
args: [VALTECH_AUTH_CONFIG]
|
|
49578
49625
|
}] }, { type: i1$3.HttpClient }] });
|
|
49579
49626
|
|
|
49580
|
-
/**
|
|
49581
|
-
* Consume el catálogo de permisos del backend (`GET /org/{orgId}/permissions-catalog`).
|
|
49582
|
-
* El backend es la fuente de verdad de qué permisos existen y de su alcance
|
|
49583
|
-
* (globales de plataforma vs. propios de una app). La respuesta incluye el
|
|
49584
|
-
* `appId` del request para que la vista distinga la app actual.
|
|
49585
|
-
*
|
|
49586
|
-
* Promovido desde `showcase` a la lib bajo el proceso de ADR-021. Usa
|
|
49587
|
-
* `VALTECH_AUTH_CONFIG.apiUrl` (como `OrgService`) en vez del `environment` de la
|
|
49588
|
-
* app — la lib no importa el environment del consumer.
|
|
49589
|
-
*/
|
|
49590
|
-
class PermissionCatalogService {
|
|
49591
|
-
constructor(config, http) {
|
|
49592
|
-
this.config = config;
|
|
49593
|
-
this.http = http;
|
|
49594
|
-
}
|
|
49595
|
-
getCatalog(orgId) {
|
|
49596
|
-
return this.http.get(`${this.config.apiUrl}/org/${orgId}/permissions-catalog`);
|
|
49597
|
-
}
|
|
49598
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
49599
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, providedIn: 'root' }); }
|
|
49600
|
-
}
|
|
49601
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionCatalogService, decorators: [{
|
|
49602
|
-
type: Injectable,
|
|
49603
|
-
args: [{ providedIn: 'root' }]
|
|
49604
|
-
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
49605
|
-
type: Inject,
|
|
49606
|
-
args: [VALTECH_AUTH_CONFIG]
|
|
49607
|
-
}] }, { type: i1$3.HttpClient }] });
|
|
49608
|
-
|
|
49609
49627
|
/**
|
|
49610
49628
|
* Defaults i18n (es/en) embebidos en `val-api-keys-modal` (ADR-023).
|
|
49611
49629
|
* Auto-registrados si el consumer no proveyó el namespace `Settings.ApiKeysModal`.
|
|
@@ -50594,7 +50612,7 @@ class OrganizationViewComponent {
|
|
|
50594
50612
|
type: 'button',
|
|
50595
50613
|
},
|
|
50596
50614
|
},
|
|
50597
|
-
breakpoints: { breakpoints: [0, 0.
|
|
50615
|
+
breakpoints: { breakpoints: [0, 0.92], initialBreakpoint: 0.92, showHandle: true },
|
|
50598
50616
|
backdropDismiss: true,
|
|
50599
50617
|
});
|
|
50600
50618
|
}
|
|
@@ -50619,7 +50637,7 @@ class OrganizationViewComponent {
|
|
|
50619
50637
|
type: 'button',
|
|
50620
50638
|
},
|
|
50621
50639
|
},
|
|
50622
|
-
breakpoints: { breakpoints: [0, 0.
|
|
50640
|
+
breakpoints: { breakpoints: [0, 0.92], initialBreakpoint: 0.92, showHandle: true },
|
|
50623
50641
|
backdropDismiss: true,
|
|
50624
50642
|
});
|
|
50625
50643
|
}
|
|
@@ -50803,30 +50821,6 @@ class OrganizationViewComponent {
|
|
|
50803
50821
|
.map(w => w.charAt(0).toUpperCase() + w.slice(1))
|
|
50804
50822
|
.join(' ');
|
|
50805
50823
|
}
|
|
50806
|
-
permissionLabel(perm) {
|
|
50807
|
-
if (perm === '*:*')
|
|
50808
|
-
return this.tt('permAll');
|
|
50809
|
-
const [resource, action] = perm.split(':');
|
|
50810
|
-
const resKey = {
|
|
50811
|
-
users: 'permUsers',
|
|
50812
|
-
documents: 'permDocuments',
|
|
50813
|
-
roles: 'permRoles',
|
|
50814
|
-
media: 'permMedia',
|
|
50815
|
-
templates: 'permTemplates',
|
|
50816
|
-
'*': 'permAll',
|
|
50817
|
-
};
|
|
50818
|
-
const actKey = {
|
|
50819
|
-
read: 'permRead',
|
|
50820
|
-
write: 'permWrite',
|
|
50821
|
-
create: 'permCreate',
|
|
50822
|
-
delete: 'permDelete',
|
|
50823
|
-
manage: 'permManage',
|
|
50824
|
-
'*': 'permAll',
|
|
50825
|
-
};
|
|
50826
|
-
const res = this.tt(resKey[resource] ?? resource);
|
|
50827
|
-
const act = this.tt(actKey[action] ?? action);
|
|
50828
|
-
return `${res}: ${act}`;
|
|
50829
|
-
}
|
|
50830
50824
|
onViewMember(member) {
|
|
50831
50825
|
void this.modalService.open({
|
|
50832
50826
|
component: MemberDetailModalComponent,
|
|
@@ -52421,13 +52415,19 @@ class PermissionsViewComponent {
|
|
|
52421
52415
|
for (const r of catalog.permissions)
|
|
52422
52416
|
byResource.set(r.resource, r);
|
|
52423
52417
|
const currentAppId = catalog.appId;
|
|
52418
|
+
// Labeler con la SSOT del backend (labels del catálogo) — reemplaza el
|
|
52419
|
+
// mapa hardcodeado `perm*`. Locale del momento de carga (igual que antes:
|
|
52420
|
+
// los labels se hornean en el RoleView; cambio de idioma requiere reload).
|
|
52421
|
+
const labeler = createPermissionLabeler(catalog, this.i18n.lang(), {
|
|
52422
|
+
allLabel: this.tt('permAll'),
|
|
52423
|
+
});
|
|
52424
52424
|
this.roles.set((rawRoles ?? []).map((r) => this.buildRoleView({
|
|
52425
52425
|
id: r.id,
|
|
52426
52426
|
name: r.name,
|
|
52427
52427
|
description: r.description,
|
|
52428
52428
|
permissions: r.permissions ?? [],
|
|
52429
52429
|
isSystem: r.isSystem ?? false,
|
|
52430
|
-
}, byResource, currentAppId)));
|
|
52430
|
+
}, byResource, currentAppId, labeler)));
|
|
52431
52431
|
this.loading.set(false);
|
|
52432
52432
|
},
|
|
52433
52433
|
error: err => {
|
|
@@ -52436,12 +52436,12 @@ class PermissionsViewComponent {
|
|
|
52436
52436
|
},
|
|
52437
52437
|
});
|
|
52438
52438
|
}
|
|
52439
|
-
buildRoleView(role, byResource, currentAppId) {
|
|
52439
|
+
buildRoleView(role, byResource, currentAppId, labeler) {
|
|
52440
52440
|
const appPerms = [];
|
|
52441
52441
|
const orgPerms = [];
|
|
52442
52442
|
const otherByApp = new Map();
|
|
52443
52443
|
for (const perm of role.permissions) {
|
|
52444
|
-
const [resource
|
|
52444
|
+
const [resource] = perm.split(':');
|
|
52445
52445
|
const entry = byResource.get(resource);
|
|
52446
52446
|
// Sin entrada en el catálogo (el backend omite los recursos internal para
|
|
52447
52447
|
// no-platform-admins) o entrada internal → NUNCA se muestra a nivel de
|
|
@@ -52451,7 +52451,7 @@ class PermissionsViewComponent {
|
|
|
52451
52451
|
if (!entry || entry.scope === 'internal') {
|
|
52452
52452
|
continue;
|
|
52453
52453
|
}
|
|
52454
|
-
const label =
|
|
52454
|
+
const label = labeler(perm);
|
|
52455
52455
|
if (entry.scope === 'app') {
|
|
52456
52456
|
if (entry.appId === currentAppId) {
|
|
52457
52457
|
appPerms.push(label);
|
|
@@ -52516,15 +52516,6 @@ class PermissionsViewComponent {
|
|
|
52516
52516
|
};
|
|
52517
52517
|
return this.tt(map[name] ?? name);
|
|
52518
52518
|
}
|
|
52519
|
-
permLabel(resource, action) {
|
|
52520
|
-
if (resource === '*' && action === '*')
|
|
52521
|
-
return this.tt('permAll');
|
|
52522
|
-
const resKey = resource === '*' ? 'permAll' : `perm${resource.charAt(0).toUpperCase()}${resource.slice(1)}`;
|
|
52523
|
-
const actKey = action === '*' ? 'permAll' : `perm${action.charAt(0).toUpperCase()}${action.slice(1)}`;
|
|
52524
|
-
const res = this.tt(resKey);
|
|
52525
|
-
const act = this.tt(actKey);
|
|
52526
|
-
return `${res}: ${act}`;
|
|
52527
|
-
}
|
|
52528
52519
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PermissionsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
52529
52520
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PermissionsViewComponent, isStandalone: true, selector: "val-permissions-view", inputs: { config: "config" }, ngImport: i0, template: `
|
|
52530
52521
|
<div class="page">
|
|
@@ -64703,5 +64694,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
64703
64694
|
* Generated bundle index. Do not edit.
|
|
64704
64695
|
*/
|
|
64705
64696
|
|
|
64706
|
-
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyService, ApiKeysModalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CONTENT_CARD_DEFAULTS, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentCardComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INFO_CARD_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoCardComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor$1 as resolveColor, resolveInputDefaultValue, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
|
|
64697
|
+
export { ACTION_CARD_DEFAULTS, AD_SIZE_MAP, API_TABLE_COLUMN_LABELS, ARTICLE_CARD_DEFAULTS, ARTICLE_SPACING, ARTICLE_STRIP_DEFAULTS, AUTH_CTA_DEFAULTS, AVATAR_UPLOAD_DEFAULTS, AboutViewComponent, AccordionComponent, AccountViewComponent, ActionCardComponent, ActionHeaderComponent, ActionType, AdSlotComponent, AdsLoaderService, AdsService, AlertBoxComponent, AnalyticsErrorHandler, AnalyticsRouterTracker, AnalyticsService, AnimatedTerminalComponent, ApiKeyService, ApiKeysModalComponent, AppConfigService, AppVersionService, ArticleBuilder, ArticleCardComponent, ArticleComponent, ArticleStripComponent, AttachmentUploaderComponent, AuthBackgroundComponent, AuthCtaComponent, AuthService, AuthStateService, AuthStorageService, AuthSyncService, AvatarComponent, AvatarUploadComponent, BOTTOM_NAV_DEFAULTS, BannerComponent, BaseDefault, BlogPostBuilder, BottomNavComponent, BoxComponent, BreadcrumbComponent, ButtonComponent, ButtonGroupComponent, CALLOUT_LABELS, CHEV_KEYS, CIRCLE_KEYS, COMMON_COUNTRY_CODES, COMMON_CURRENCIES, CONTENT_CARD_DEFAULTS, CORNER_KEYS, CTA_CARD_DEFAULTS, CURRENCY_INFO, CardComponent, CardSection, CardType, CardsCarouselComponent, ChangeEmailModalComponent, ChangePasswordModalComponent, CheckInputComponent, CheckboxRadioInputComponent, ChipGroupComponent, ClearDefault, ClearDefaultBlock, ClearDefaultFull, ClearDefaultRound, ClearDefaultRoundBlock, ClearDefaultRoundFull, CodeDisplayComponent, CommandDisplayComponent, CommentComponent, CommentInputComponent, CommentSectionComponent, CompanyFooterComponent, ComponentStates, ConfirmationDialogService, ContainerComponent, ContentCardComponent, ContentLoaderComponent, ContentReactionComponent, ContentService, ContentTransformer, CookieBannerComponent, CountdownComponent, CreateOrgModalComponent, CtaCardComponent, CurrencyInputComponent, DEFAULT_ADS_CONFIG, DEFAULT_APP_CONFIG_SERVICE_CONFIG, DEFAULT_APP_VERSION_SERVICE_CONFIG, DEFAULT_AUTH_CONFIG, DEFAULT_BACK_HEADER, DEFAULT_CANCEL_BUTTON, DEFAULT_CHECK_INTERVAL_MS, DEFAULT_CONFIRM_BUTTON, DEFAULT_COUNTDOWN_LABELS, DEFAULT_COUNTDOWN_LABELS_EN, DEFAULT_DEBUG_CONSOLE_CONFIG, DEFAULT_DONATION_CONFIG, DEFAULT_EMPTY_STATE, DEFAULT_EMULATOR_CONFIG, DEFAULT_FEEDBACK_CONFIG, DEFAULT_FEEDBACK_TYPE_OPTIONS, DEFAULT_HOME_HEADER, DEFAULT_INFINITE_LIST_METADATA, DEFAULT_MODAL_CANCEL_BUTTON, DEFAULT_MODAL_CONFIRM_BUTTON, DEFAULT_PAGE_SIZE_OPTIONS, DEFAULT_PLATFORMS, DEFAULT_REFRESHER_METADATA, DEFAULT_SKELETON_CONFIG, DEFAULT_SPLASH_SCREEN_CONFIG, DataTableComponent, DateInputComponent, DateRangeInputComponent, DebugConsoleComponent, DeleteAccountModalComponent, DetailSkeletonComponent, DeviceService, DisplayComponent, DividerComponent, DocsApiTableComponent, DocsBreadcrumbComponent, DocsBuilder, DocsCalloutComponent, DocsCodeExampleComponent, DocsLayoutComponent, DocsNavLinksComponent, DocsNavigationService, DocsPageComponent, DocsSearchComponent, DocsSectionComponent, DocsShellComponent, DocsSidebarComponent, DocsTocComponent, DonationService, DownloadService, EditOrgModalComponent, EmailInputComponent, EmptyStateComponent, ExpandableTextComponent, FEATURES_LIST_DEFAULTS, FUN_MODAL_DEFAULTS, FabComponent, FaqComponent, FeaturesListComponent, FeedbackFormComponent, FeedbackService, FileInputComponent, FirebaseService, FirestoreCollectionFactory, FirestoreService, FontSizeOption, FontSizeService, FooterComponent, FooterLinksComponent, FormComponent, FormSkeletonComponent, FunHeaderComponent, FunModalComponent, GlassComponent, GlowCardComponent, GlowComponent, GridSkeletonComponent, HANDOFF_ROUTE_PARAM, HANDOFF_TOKEN_PARAM, HandoffService, HasPermissionDirective, HeaderComponent, HintComponent, HorizontalScrollComponent, HourInputComponent, HrefComponent, I18nService, IMAGE_DEFAULTS, INFO_CARD_DEFAULTS, INITIAL_AUTH_STATE, INITIAL_MFA_STATE, INVITATION_CARD_DEFAULTS, Icon, IconComponent, IconService, ImageComponent, ImageCropComponent, ImageService, InAppBrowserService, InfiniteListComponent, InfoCardComponent, InfoComponent, InputI18nHelper, InputType, InvitationCardComponent, InviteMemberModalComponent, ItemListComponent, LANG_STORAGE_KEY$1 as LANG_STORAGE_KEY, LEGAL_CONTENT_CONFIG, LOGIN_DEFAULTS, LandingSplitComponent, LandingStepsComponent, LanguageSelectorComponent, LayeredCardComponent, LegalContentService, LegalLinkService, LinkComponent, LinkProcessorService, LinkedProvidersComponent, LinksAccordionComponent, LinksCakeComponent, ListSkeletonComponent, LoadingDirective, LocalStorageService, LocaleService, LoginAttemptModalComponent, LoginComponent, MEDIA_OBJECT_DEFAULTS, MEMBER_CARD_DEFAULTS, METRIC_CARD_DEFAULTS, MODAL_SIZES, MOTIF_KEYS, MOTION, MaintenancePageComponent, MarkdownArticleParserService, MediaObjectComponent, MemberCardComponent, MemberDetailModalComponent, MemberImportModalComponent, MenuComponent, MessagingService, MetaService, MetricCardComponent, MfaModalComponent, ModalService, ModalShellComponent, MultiSelectSearchComponent, NUM_KEYS, NavigationService, NetworkBannerComponent, NetworkStatusService, NewsBuilder, NoContentComponent, NotesBoxComponent, NotificationActionService, NotificationPreferencesViewComponent, NotificationsService, NotificationsViewComponent, NumberFromToComponent, NumberInputComponent, NumberStepperComponent, OAUTH_PROVIDERS_INFO, OAuthCallbackComponent, OAuthService, OrgInfoSheetComponent, OrgService, OrgSwitchService, OrganizationViewComponent, OutlineDefault, OutlineDefaultBlock, OutlineDefaultFull, OutlineDefaultRound, OutlineDefaultRoundBlock, OutlineDefaultRoundFull, PATTERN_MOTIFS, PATTERN_PALETTES, PATTERN_STYLE_CONFIGS, PLATFORM_CONFIGS, PageContentComponent, PageLinksComponent, PageRefreshService, PageTemplateComponent, PageWavesComponent, PageWrapperComponent, PaginationComponent, PaginationService, PasswordInputComponent, PatternComponent, PermissionCatalogService, PermissionSelectorComponent, PermissionsViewComponent, PhoneInputComponent, PillComponent, PinInputComponent, PlainCodeBoxComponent, PopoverSelectorComponent, PreferencesService, PreferencesViewComponent, PresetService, PriceTagComponent, PrimarySolidBlockButton, PrimarySolidBlockHrefButton, PrimarySolidBlockIconButton, PrimarySolidBlockIconHrefButton, PrimarySolidDefaultRoundButton, PrimarySolidDefaultRoundHrefButton, PrimarySolidDefaultRoundIconButton, PrimarySolidDefaultRoundIconHrefButton, PrimarySolidFullButton, PrimarySolidFullHrefButton, PrimarySolidFullIconButton, PrimarySolidFullIconHrefButton, PrimarySolidLargeRoundButton, PrimarySolidLargeRoundHrefButton, PrimarySolidLargeRoundIconButton, PrimarySolidLargeRoundIconHrefButton, PrimarySolidSmallRoundButton, PrimarySolidSmallRoundHrefButton, PrimarySolidSmallRoundIconButton, PrimarySolidSmallRoundIconHrefButton, ProcessLinksPipe, ProfileSkeletonComponent, ProfileViewComponent, ProgressBarComponent, ProgressRingComponent, ProgressStatusComponent, PrompterComponent, QR_PRESETS, QrCodeComponent, QrGeneratorService, QueryBuilder, QuoteBoxComponent, REQUEST_STATUSES, RadioInputComponent, RangeInputComponent, RatingComponent, RefresherComponent, RequestFirestoreService, RequestFormBuilderService, RequestService, RightsFooterComponent, RotatingTextComponent, SEARCH_HEADER_DEFAULTS, SETTINGS_SECTIONS_CATALOG, SHAPE_KEYS, SHARE_PROFILE_MODAL_DEFAULTS, SKELETON_LAYOUT_DEFAULT_ROWS, SKELETON_PRESETS, SOLID_KEYS, STATS_BAR_DEFAULTS, STROKE_KEYS, SearchHeaderComponent, SearchSelectorComponent, SearchbarComponent, SecondarySolidBlockButton, SecondarySolidBlockHrefButton, SecondarySolidBlockIconButton, SecondarySolidBlockIconHrefButton, SecondarySolidDefaultRoundButton, SecondarySolidDefaultRoundHrefButton, SecondarySolidDefaultRoundIconButton, SecondarySolidDefaultRoundIconHrefButton, SecondarySolidFullButton, SecondarySolidFullHrefButton, SecondarySolidFullIconButton, SecondarySolidFullIconHrefButton, SecondarySolidLargeRoundButton, SecondarySolidLargeRoundHrefButton, SecondarySolidLargeRoundIconButton, SecondarySolidLargeRoundIconHrefButton, SecondarySolidSmallRoundButton, SecondarySolidSmallRoundHrefButton, SecondarySolidSmallRoundIconButton, SecondarySolidSmallRoundIconHrefButton, SecurityViewComponent, SegmentControlComponent, SelectSearchComponent, SessionListModalComponent, SessionService, SettingsHubComponent, ShareButtonsComponent, ShareProfileModalComponent, SimpleComponent, SkeletonComponent, SkeletonLayoutComponent, SkeletonService, SolidBlockButton, SolidDefault, SolidDefaultBlock, SolidDefaultButton, SolidDefaultFull, SolidDefaultRound, SolidDefaultRoundBlock, SolidDefaultRoundButton, SolidDefaultRoundFull, SolidFullButton, SolidLargeButton, SolidLargeRoundButton, SolidSmallButton, SolidSmallRoundButton, SplashScreenService, StatsBarComponent, StatsCardComponent, StepperComponent, StorageService, SwipeCarouselComponent, SwitchOrgModalComponent, TRI_KEYS, TabbedContentComponent, TableSkeletonComponent, TabsComponent, Terminal404Component, TestimonialCardComponent, TestimonialCarouselComponent, TextComponent, TextInputComponent, TextareaInputComponent, ThemeOption, ThemeService, TimelineComponent, TitleBlockComponent, TitleComponent, ToastService, ToggleInputComponent, TokenService, ToolbarActionType, ToolbarComponent, TransferOwnershipModalComponent, TranslatePipe, TypedCollection, UPDATE_BANNER_DEFAULT_CONTENT, UPDATE_BANNER_I18N_NAMESPACE, UpdateBannerComponent, UserAvatarComponent, UsernameInputComponent, VALTECH_ADS_CONFIG, VALTECH_APP_CONFIG, VALTECH_APP_VERSION, VALTECH_AUTH_CONFIG, VALTECH_COMPANY_LINKS, VALTECH_CONTENT_CONFIG, VALTECH_DEBUG_CONSOLE, VALTECH_DEFAULT_CONTENT, VALTECH_DONATION_CONFIG, VALTECH_FEEDBACK_CONFIG, VALTECH_FIREBASE_CONFIG, VALTECH_FOOTER_I18N, VALTECH_FOOTER_LOGO, VALTECH_LANGUAGE_SELECTOR, VALTECH_LEGAL_CONFIG, VALTECH_NETWORK_ERROR_KEY, VALTECH_SETTINGS_MENU_LINKS, VALTECH_SITE_PATHS, VALTECH_SOCIAL_LINKS, VALTECH_SPLASH_SCREEN, VALTECH_WEB_BASE_URLS, VERSION, ValtechErrorService, WizardComponent, WizardFooterComponent, applyDefaultValueToControl, authGuard, authInterceptor, authPasswordValidator, beautifyLegalArticle, blogPost, buildCompanyFooterProps, buildFooterLinks, buildLegalLinkResolver, buildPath, buildSettingsCards, collections, connectPageRefresh, createErrorStateProps, createFirebaseConfig, createGlowCardProps, createInitialPaginationState, createNumberFromToField, createPermissionLabeler, createRefreshableStream, createTitleProps, docs, errorLoggingInterceptor, extractPathParams, generatePatternTiles, generateRandomTile, getAppInfo, getAppVersion, getCollectionPath, getDocumentId, getTimeOfDayKey, goToTop, guestGuard, hasEmulators, interpretError, isAtEnd, isCollectionPath, isDocumentPath, isEmulatorMode, isValidPath, joinPath, maxLength, mulberry32, news, parseMarkdownArticle, permissionGuard, permissionGuardFromRoute, provideLegalContent, provideSplashScreen, provideValtechAboutRoutes, provideValtechAccountRoutes, provideValtechAds, provideValtechAppConfig, provideValtechAppVersion, provideValtechAuth, provideValtechAuthInterceptor, provideValtechContent, provideValtechDebugConsole, provideValtechDonations, provideValtechErrorHandling, provideValtechFeedback, provideValtechFirebase, provideValtechI18n, provideValtechLegal, provideValtechNotificationPreferencesRoutes, provideValtechNotificationsRoutes, provideValtechOrganizationRoutes, provideValtechPermissionsRoutes, provideValtechPreferencesRoutes, provideValtechPresets, provideValtechProfileRoutes, provideValtechSecurityRoutes, provideValtechSettingsRoutes, provideValtechSite, provideValtechSkeleton, query, renderPatternSvgInner, replaceSpecialChars, resolveColor$1 as resolveColor, resolveInputDefaultValue, resolveWebBaseUrl, roleGuard, storagePaths, superAdminGuard, toArticle };
|
|
64707
64698
|
//# sourceMappingURL=valtech-components.mjs.map
|