@xsmusices/ui 1.41.1 → 1.43.0
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/fesm2022/{xsmusices-ui-index-BpVmLxoG.mjs → xsmusices-ui-index-DRXscULI.mjs} +1 -4
- package/fesm2022/xsmusices-ui-index-DRXscULI.mjs.map +1 -0
- package/fesm2022/{xsmusices-ui-xs-badge.xsstory-BZnTAQWz.mjs → xsmusices-ui-xs-badge.xsstory-B1QXLQ4H.mjs} +1 -4
- package/fesm2022/xsmusices-ui-xs-badge.xsstory-B1QXLQ4H.mjs.map +1 -0
- package/fesm2022/{xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs → xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs} +2 -2
- package/fesm2022/{xsmusices-ui-xs-item-compact.xsstory-DuSgaCDY.mjs.map → xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs.map} +1 -1
- package/fesm2022/{xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs → xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs} +2 -2
- package/fesm2022/{xsmusices-ui-xs-item-type.xsstory-BWJQ-hDk.mjs.map → xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs.map} +1 -1
- package/fesm2022/{xsmusices-ui-xs-items-slider.xsstory-CS4xTKuJ.mjs → xsmusices-ui-xs-items-slider.xsstory-Dt0bXZI_.mjs} +2 -2
- package/fesm2022/{xsmusices-ui-xs-items-slider.xsstory-CS4xTKuJ.mjs.map → xsmusices-ui-xs-items-slider.xsstory-Dt0bXZI_.mjs.map} +1 -1
- package/fesm2022/{xsmusices-ui-xs-list.xsstory-BxAErIEF.mjs → xsmusices-ui-xs-list.xsstory-lElGfvcY.mjs} +2 -2
- package/fesm2022/{xsmusices-ui-xs-list.xsstory-BxAErIEF.mjs.map → xsmusices-ui-xs-list.xsstory-lElGfvcY.mjs.map} +1 -1
- package/fesm2022/{xsmusices-ui-xs-map.xsstory-DBT6h0Hv.mjs → xsmusices-ui-xs-map.xsstory-C__bUaLQ.mjs} +1 -5
- package/fesm2022/xsmusices-ui-xs-map.xsstory-C__bUaLQ.mjs.map +1 -0
- package/fesm2022/{xsmusices-ui-xs-navbar.xsstory-CkdvldoV.mjs → xsmusices-ui-xs-navbar.xsstory-BDW0nLAH.mjs} +32 -1
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-BDW0nLAH.mjs.map +1 -0
- package/fesm2022/{xsmusices-ui-xs-table.xsstory-DXiZHI7p.mjs → xsmusices-ui-xs-table.xsstory-s13JV3k9.mjs} +2 -2
- package/fesm2022/{xsmusices-ui-xs-table.xsstory-DXiZHI7p.mjs.map → xsmusices-ui-xs-table.xsstory-s13JV3k9.mjs.map} +1 -1
- package/fesm2022/xsmusices-ui.mjs +43 -132
- package/fesm2022/xsmusices-ui.mjs.map +1 -1
- package/index.d.ts +2 -17
- package/package.json +1 -1
- package/styles/shared-utilities.css +0 -1
- package/fesm2022/xsmusices-ui-index-BpVmLxoG.mjs.map +0 -1
- package/fesm2022/xsmusices-ui-xs-badge.xsstory-BZnTAQWz.mjs.map +0 -1
- package/fesm2022/xsmusices-ui-xs-map.xsstory-DBT6h0Hv.mjs.map +0 -1
- package/fesm2022/xsmusices-ui-xs-navbar.xsstory-CkdvldoV.mjs.map +0 -1
|
@@ -2143,7 +2143,6 @@ class XSDateFormatPipe {
|
|
|
2143
2143
|
: dateTime);
|
|
2144
2144
|
if (Number.isNaN(d.getTime()))
|
|
2145
2145
|
return '';
|
|
2146
|
-
// Handle specific formats
|
|
2147
2146
|
if (format === 'MMMM') {
|
|
2148
2147
|
try {
|
|
2149
2148
|
return new Intl.DateTimeFormat(locale, {
|
|
@@ -2164,7 +2163,6 @@ class XSDateFormatPipe {
|
|
|
2164
2163
|
return d.toLocaleString(locale, { month: 'short' });
|
|
2165
2164
|
}
|
|
2166
2165
|
}
|
|
2167
|
-
// Handle time formats
|
|
2168
2166
|
if (format === 'HH') {
|
|
2169
2167
|
try {
|
|
2170
2168
|
return new Intl.DateTimeFormat('es-ES', {
|
|
@@ -2225,7 +2223,6 @@ class XSDateFormatPipe {
|
|
|
2225
2223
|
return `${day}-${month}-${year} ${hours}:${minutes}`;
|
|
2226
2224
|
}
|
|
2227
2225
|
}
|
|
2228
|
-
// Fallback to default locale string
|
|
2229
2226
|
return d.toLocaleString(locale);
|
|
2230
2227
|
}
|
|
2231
2228
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSDateFormatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -2331,13 +2328,10 @@ class XSAvatarService {
|
|
|
2331
2328
|
getInitials(name) {
|
|
2332
2329
|
if (!name)
|
|
2333
2330
|
return 'U';
|
|
2334
|
-
// 1. Quitar contenido entre paréntesis y corchetes (ej. Cream (KR) -> Cream)
|
|
2335
2331
|
let clean = name
|
|
2336
2332
|
.replace(/\(.*?\)/g, '')
|
|
2337
2333
|
.replace(/\[.*?\]/g, '');
|
|
2338
|
-
// 2. Dejar solo letras (incluyendo acentos y ñ/ü) y convertir otros caracteres a espacios
|
|
2339
2334
|
clean = clean.replace(/[^a-zA-ZáéíóúÁÉÍÓÚñÑüÜ]/g, ' ');
|
|
2340
|
-
// 3. Dividir por espacios y filtrar partes vacías
|
|
2341
2335
|
const parts = clean
|
|
2342
2336
|
.trim()
|
|
2343
2337
|
.split(/\s+/)
|
|
@@ -2358,9 +2352,9 @@ class XSAvatarService {
|
|
|
2358
2352
|
for (let i = 0; i < name.length; i++) {
|
|
2359
2353
|
hash = name.codePointAt(i) + ((hash << 5) - hash);
|
|
2360
2354
|
}
|
|
2361
|
-
const hue = Math.abs(hash) % 360;
|
|
2362
|
-
const saturation = 65;
|
|
2363
|
-
const lightness = 45;
|
|
2355
|
+
const hue = Math.abs(hash) % 360;
|
|
2356
|
+
const saturation = 65;
|
|
2357
|
+
const lightness = 45;
|
|
2364
2358
|
return this.hslToHex(hue, saturation, lightness);
|
|
2365
2359
|
}
|
|
2366
2360
|
hslToHex(h, s, l) {
|
|
@@ -2424,7 +2418,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
2424
2418
|
}]
|
|
2425
2419
|
}] });
|
|
2426
2420
|
|
|
2427
|
-
// file: lib/tokens/api-url.token.ts
|
|
2428
2421
|
const XS_API_URL = new InjectionToken('URL del servidor API', {
|
|
2429
2422
|
providedIn: 'root',
|
|
2430
2423
|
factory: () => 'https://api-v2.xsmusic.es',
|
|
@@ -2653,7 +2646,6 @@ class NumberToMonthPipe {
|
|
|
2653
2646
|
}
|
|
2654
2647
|
// El constructor de Date usa meses de 0 a 11, por lo que restamos 1 al número.
|
|
2655
2648
|
const date = new Date(2025, monthNumber - 1, 1);
|
|
2656
|
-
// Usamos formatDate para obtener el nombre completo del mes.
|
|
2657
2649
|
return formatDate(date, 'MMMM', locale);
|
|
2658
2650
|
}
|
|
2659
2651
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: NumberToMonthPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -3841,9 +3833,7 @@ class XSSafeUrlPipe {
|
|
|
3841
3833
|
return this.sanitizer.bypassSecurityTrustResourceUrl(value);
|
|
3842
3834
|
}
|
|
3843
3835
|
}
|
|
3844
|
-
catch {
|
|
3845
|
-
// URL inválida: devolver vacío seguro
|
|
3846
|
-
}
|
|
3836
|
+
catch { }
|
|
3847
3837
|
return this.sanitizer.bypassSecurityTrustResourceUrl(EMPTY_SAFE_URL);
|
|
3848
3838
|
}
|
|
3849
3839
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSSafeUrlPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
@@ -4590,23 +4580,18 @@ class XSToastService {
|
|
|
4590
4580
|
// Estado centralizado con Signals para máxima performance en Angular 20
|
|
4591
4581
|
_toasts = signal([], ...(ngDevMode ? [{ debugName: "_toasts" }] : []));
|
|
4592
4582
|
toasts = this._toasts.asReadonly();
|
|
4593
|
-
// Eventos de stream para el chat
|
|
4594
4583
|
_chatNotificationClicked = new Subject();
|
|
4595
4584
|
chatNotificationClicked$ = this._chatNotificationClicked.asObservable();
|
|
4596
|
-
/**
|
|
4597
|
-
* Método core privado para instanciar cualquier toast
|
|
4598
|
-
*/
|
|
4599
4585
|
show(config) {
|
|
4600
4586
|
const id = config.id || v4();
|
|
4601
4587
|
const newToast = {
|
|
4602
|
-
message: '',
|
|
4588
|
+
message: '',
|
|
4603
4589
|
...config,
|
|
4604
4590
|
id,
|
|
4605
4591
|
duration: config.duration ?? 3000,
|
|
4606
4592
|
closable: config.closable ?? true,
|
|
4607
4593
|
type: config.type ?? 'info',
|
|
4608
4594
|
};
|
|
4609
|
-
// Actualización atómica del estado
|
|
4610
4595
|
this._toasts.update((state) => [...state, newToast]);
|
|
4611
4596
|
// Auto-cierre: Solo si tiene duración 0 se considera permanente
|
|
4612
4597
|
const isPermanent = newToast.duration === 0;
|
|
@@ -4614,15 +4599,11 @@ class XSToastService {
|
|
|
4614
4599
|
setTimeout(() => this.removeToast(id), newToast.duration);
|
|
4615
4600
|
}
|
|
4616
4601
|
}
|
|
4617
|
-
/**
|
|
4618
|
-
* Elimina un toast por su ID
|
|
4619
|
-
*/
|
|
4620
4602
|
removeToast(id) {
|
|
4621
4603
|
if (!id)
|
|
4622
4604
|
return;
|
|
4623
4605
|
this._toasts.update((state) => state.filter((t) => t.id !== id));
|
|
4624
4606
|
}
|
|
4625
|
-
// --- Métodos de conveniencia ---
|
|
4626
4607
|
showSuccess(message, title, duration) {
|
|
4627
4608
|
this.show({ message, title, type: 'success', duration });
|
|
4628
4609
|
}
|
|
@@ -4654,9 +4635,6 @@ class XSToastService {
|
|
|
4654
4635
|
closable: true,
|
|
4655
4636
|
});
|
|
4656
4637
|
}
|
|
4657
|
-
/**
|
|
4658
|
-
* Notificación específica de Chat con avatares
|
|
4659
|
-
*/
|
|
4660
4638
|
showNotification(message, chatId, items, senderName, messagePreview, duration = 0) {
|
|
4661
4639
|
this.show({
|
|
4662
4640
|
message,
|
|
@@ -4670,15 +4648,9 @@ class XSToastService {
|
|
|
4670
4648
|
closable: true,
|
|
4671
4649
|
});
|
|
4672
4650
|
}
|
|
4673
|
-
/**
|
|
4674
|
-
* Emite el evento de click en chat y limpia el rastro
|
|
4675
|
-
*/
|
|
4676
4651
|
emitChatNotificationClicked(chatId) {
|
|
4677
4652
|
this._chatNotificationClicked.next(chatId);
|
|
4678
4653
|
}
|
|
4679
|
-
/**
|
|
4680
|
-
* Limpia toda la pantalla de notificaciones
|
|
4681
|
-
*/
|
|
4682
4654
|
closeAll() {
|
|
4683
4655
|
this._toasts.set([]);
|
|
4684
4656
|
}
|
|
@@ -5210,11 +5182,11 @@ class XSItemsSliderTitleButtonsComponent {
|
|
|
5210
5182
|
return null;
|
|
5211
5183
|
}
|
|
5212
5184
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemsSliderTitleButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5213
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemsSliderTitleButtonsComponent, isStandalone: true, selector: "xs-items-slider-title-buttons", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, hasSortButton: { classPropertyName: "hasSortButton", publicName: "hasSortButton", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, manage: { classPropertyName: "manage", publicName: "manage", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, hasViewButtons: { classPropertyName: "hasViewButtons", publicName: "hasViewButtons", isSignal: true, isRequired: false, transformFunction: null }, hasSoundcloudItems: { classPropertyName: "hasSoundcloudItems", publicName: "hasSoundcloudItems", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, selectedTab: { classPropertyName: "selectedTab", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, texts: { classPropertyName: "texts", publicName: "texts", isSignal: true, isRequired: false, transformFunction: null }, isPlayingAll: { classPropertyName: "isPlayingAll", publicName: "isPlayingAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTab: "selectedTabChange", onClickChangeView: "onClickChangeView", onClickPlayAll: "onClickPlayAll", onClickSort: "onClickSort", onChangeState: "onChangeState", onClickTab: "onClickTab" }, host: { attributes: { "xs-items-slider-title-buttons-host": "" } }, ngImport: i0, template: "<div\n class=\"flex justify-between\"\n [ngClass]=\"{\n 'items-center w-full px-6 py-2 rounded-xl bg-zinc-900/50 hover:opacity-70 cursor-pointer':\n manage(),\n 'items-end': !manage(),\n }\"\n (click)=\"manage() ? onChangeState.emit(undefined) : null\"\n (keydown.enter)=\"manage() ? onChangeState.emit(undefined) : null\"\n>\n <div\n [id]=\"titleId() ? titleId() : 'profile-' + type() + '-title'\"\n class=\"flex items-center gap-1 font-black text-left\"\n [ngClass]=\"{ 'text-sm': manage() }\"\n >\n
|
|
5185
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemsSliderTitleButtonsComponent, isStandalone: true, selector: "xs-items-slider-title-buttons", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, hasSortButton: { classPropertyName: "hasSortButton", publicName: "hasSortButton", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, manage: { classPropertyName: "manage", publicName: "manage", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, hasViewButtons: { classPropertyName: "hasViewButtons", publicName: "hasViewButtons", isSignal: true, isRequired: false, transformFunction: null }, hasSoundcloudItems: { classPropertyName: "hasSoundcloudItems", publicName: "hasSoundcloudItems", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, selectedTab: { classPropertyName: "selectedTab", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, texts: { classPropertyName: "texts", publicName: "texts", isSignal: true, isRequired: false, transformFunction: null }, isPlayingAll: { classPropertyName: "isPlayingAll", publicName: "isPlayingAll", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedTab: "selectedTabChange", onClickChangeView: "onClickChangeView", onClickPlayAll: "onClickPlayAll", onClickSort: "onClickSort", onChangeState: "onChangeState", onClickTab: "onClickTab" }, host: { attributes: { "xs-items-slider-title-buttons-host": "" } }, ngImport: i0, template: "<div\n class=\"flex justify-between\"\n [ngClass]=\"{\n 'items-center w-full px-6 py-2 rounded-xl bg-zinc-900/50 hover:opacity-70 cursor-pointer':\n manage(),\n 'items-end': !manage(),\n }\"\n (click)=\"manage() ? onChangeState.emit(undefined) : null\"\n (keydown.enter)=\"manage() ? onChangeState.emit(undefined) : null\"\n>\n <div\n [id]=\"titleId() ? titleId() : 'profile-' + type() + '-title'\"\n class=\"flex items-center gap-1 font-black text-left\"\n [ngClass]=\"{ 'text-sm': manage() }\"\n >\n @if (type() !== 'setup') {\n @if (label()) {\n {{ label() }}\n }\n @if (label() && total() && total() > 0) {\n <span\n class=\"pt-0.5 text-xs font-extralight\"\n >\n ({{ total() }})\n </span>\n }\n }\n\n @if (type() === 'setup') {\n @if (label()) {\n Setup\n {{ tabSelected?.name | titlecase }}\n }\n @if (tabSelected?.components?.length) {\n <span\n class=\"pt-0.5 text-xs font-extralight\"\n >\n ({{ tabSelected?.components?.length }})\n </span>\n }\n }\n </div>\n\n <div class=\"flex items-center gap-2\">\n <div class=\"flex gap-2 text-xs text-zinc-400\">\n @if (tabs() && tabs()!.length <= 2 && tabs()!.length > 1) {\n @for (tab of tabs()!; track $index; let i = $index) {\n <xs-button\n [variant]=\"selectedTab() !== i ? 'primary' : 'selected'\"\n [label]=\"tab.label\"\n [layout]=\"'badge'\"\n (click)=\"onClickTab.emit(i)\"\n (keydown.enter)=\"onClickTab.emit(i)\"\n >\n {{ tab.label }}\n </xs-button>\n }\n }\n @if (tabs() && tabs()!.length > 2) {\n <xs-button\n label=\"\"\n [variant]=\"selectedTab() === 0 ? 'selected' : 'primary'\"\n [layout]=\"'iconOnlyMini'\"\n [icon]=\"{ name: 'chevron-left' }\"\n [disabled]=\"selectedTab() === 0\"\n (click)=\"onClickTabChevron('left')\"\n (keydown.enter)=\"onClickTabChevron('left')\"\n >\n </xs-button>\n <xs-button\n label=\"\"\n [variant]=\"\n selectedTab() === (tabs()?.length ?? 0) - 1\n ? 'selected'\n : 'primary'\n \"\n [layout]=\"'iconOnlyMini'\"\n [icon]=\"{ name: 'chevron-right' }\"\n [disabled]=\"selectedTab() === (tabs()?.length ?? 0) - 1\"\n (click)=\"onClickTabChevron('right')\"\n (keydown.enter)=\"onClickTabChevron('right')\"\n >\n </xs-button>\n }\n </div>\n\n @if (tabs() && tabs()!.length > 1) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasSoundcloudItems()) {\n <xs-button\n icon=\"play\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl bg-zinc-900/50 hover:opacity-70\"\n (onClick)=\"!isPlayingAll() && onClickPlayAll.emit(undefined)\"\n [title]=\"texts().play\"\n [disabled]=\"loading().play || isPlayingAll()\"\n />\n }\n\n @if (hasSoundcloudItems()) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasViewButtons()) {\n <xs-button\n icon=\"image\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl hover:opacity-70\"\n [ngClass]=\"{\n 'bg-zinc-700': view() === 'cards',\n 'bg-zinc-900': view() === 'list',\n }\"\n (onClick)=\"onClickChangeView.emit('cards')\"\n [title]=\"texts().changeView\"\n />\n <xs-button\n icon=\"list\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl hover:opacity-70\"\n [ngClass]=\"{\n 'bg-zinc-700': view() === 'list',\n 'bg-zinc-900': view() === 'cards',\n }\"\n (onClick)=\"onClickChangeView.emit('list')\"\n [title]=\"texts().changeView\"\n />\n }\n\n @if (hasSortButton()) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasSortButton()) {\n <xs-button\n icon=\"sort\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl bg-zinc-900/50 hover:opacity-70\"\n (onClick)=\"onClickSort.emit(undefined)\"\n [title]=\"texts().sort\"\n />\n }\n </div>\n\n @if (manage()) {\n <xs-button\n [icon]=\"{ name: !state() ? 'chevron-down' : 'chevron-up' }\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"hover:opacity-70\"\n [title]=\"texts().changeView\"\n />\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "ngmodule", type: PipesModule }, { kind: "pipe", type: i1$1.TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5214
5186
|
}
|
|
5215
5187
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemsSliderTitleButtonsComponent, decorators: [{
|
|
5216
5188
|
type: Component,
|
|
5217
|
-
args: [{ selector: 'xs-items-slider-title-buttons', host: { 'xs-items-slider-title-buttons-host': '' }, imports: [CommonModule, XSButtonComponent, PipesModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex justify-between\"\n [ngClass]=\"{\n 'items-center w-full px-6 py-2 rounded-xl bg-zinc-900/50 hover:opacity-70 cursor-pointer':\n manage(),\n 'items-end': !manage(),\n }\"\n (click)=\"manage() ? onChangeState.emit(undefined) : null\"\n (keydown.enter)=\"manage() ? onChangeState.emit(undefined) : null\"\n>\n <div\n [id]=\"titleId() ? titleId() : 'profile-' + type() + '-title'\"\n class=\"flex items-center gap-1 font-black text-left\"\n [ngClass]=\"{ 'text-sm': manage() }\"\n >\n
|
|
5189
|
+
args: [{ selector: 'xs-items-slider-title-buttons', host: { 'xs-items-slider-title-buttons-host': '' }, imports: [CommonModule, XSButtonComponent, PipesModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"flex justify-between\"\n [ngClass]=\"{\n 'items-center w-full px-6 py-2 rounded-xl bg-zinc-900/50 hover:opacity-70 cursor-pointer':\n manage(),\n 'items-end': !manage(),\n }\"\n (click)=\"manage() ? onChangeState.emit(undefined) : null\"\n (keydown.enter)=\"manage() ? onChangeState.emit(undefined) : null\"\n>\n <div\n [id]=\"titleId() ? titleId() : 'profile-' + type() + '-title'\"\n class=\"flex items-center gap-1 font-black text-left\"\n [ngClass]=\"{ 'text-sm': manage() }\"\n >\n @if (type() !== 'setup') {\n @if (label()) {\n {{ label() }}\n }\n @if (label() && total() && total() > 0) {\n <span\n class=\"pt-0.5 text-xs font-extralight\"\n >\n ({{ total() }})\n </span>\n }\n }\n\n @if (type() === 'setup') {\n @if (label()) {\n Setup\n {{ tabSelected?.name | titlecase }}\n }\n @if (tabSelected?.components?.length) {\n <span\n class=\"pt-0.5 text-xs font-extralight\"\n >\n ({{ tabSelected?.components?.length }})\n </span>\n }\n }\n </div>\n\n <div class=\"flex items-center gap-2\">\n <div class=\"flex gap-2 text-xs text-zinc-400\">\n @if (tabs() && tabs()!.length <= 2 && tabs()!.length > 1) {\n @for (tab of tabs()!; track $index; let i = $index) {\n <xs-button\n [variant]=\"selectedTab() !== i ? 'primary' : 'selected'\"\n [label]=\"tab.label\"\n [layout]=\"'badge'\"\n (click)=\"onClickTab.emit(i)\"\n (keydown.enter)=\"onClickTab.emit(i)\"\n >\n {{ tab.label }}\n </xs-button>\n }\n }\n @if (tabs() && tabs()!.length > 2) {\n <xs-button\n label=\"\"\n [variant]=\"selectedTab() === 0 ? 'selected' : 'primary'\"\n [layout]=\"'iconOnlyMini'\"\n [icon]=\"{ name: 'chevron-left' }\"\n [disabled]=\"selectedTab() === 0\"\n (click)=\"onClickTabChevron('left')\"\n (keydown.enter)=\"onClickTabChevron('left')\"\n >\n </xs-button>\n <xs-button\n label=\"\"\n [variant]=\"\n selectedTab() === (tabs()?.length ?? 0) - 1\n ? 'selected'\n : 'primary'\n \"\n [layout]=\"'iconOnlyMini'\"\n [icon]=\"{ name: 'chevron-right' }\"\n [disabled]=\"selectedTab() === (tabs()?.length ?? 0) - 1\"\n (click)=\"onClickTabChevron('right')\"\n (keydown.enter)=\"onClickTabChevron('right')\"\n >\n </xs-button>\n }\n </div>\n\n @if (tabs() && tabs()!.length > 1) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasSoundcloudItems()) {\n <xs-button\n icon=\"play\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl bg-zinc-900/50 hover:opacity-70\"\n (onClick)=\"!isPlayingAll() && onClickPlayAll.emit(undefined)\"\n [title]=\"texts().play\"\n [disabled]=\"loading().play || isPlayingAll()\"\n />\n }\n\n @if (hasSoundcloudItems()) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasViewButtons()) {\n <xs-button\n icon=\"image\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl hover:opacity-70\"\n [ngClass]=\"{\n 'bg-zinc-700': view() === 'cards',\n 'bg-zinc-900': view() === 'list',\n }\"\n (onClick)=\"onClickChangeView.emit('cards')\"\n [title]=\"texts().changeView\"\n />\n <xs-button\n icon=\"list\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl hover:opacity-70\"\n [ngClass]=\"{\n 'bg-zinc-700': view() === 'list',\n 'bg-zinc-900': view() === 'cards',\n }\"\n (onClick)=\"onClickChangeView.emit('list')\"\n [title]=\"texts().changeView\"\n />\n }\n\n @if (hasSortButton()) {\n <span class=\"text-zinc-900\">|</span>\n }\n\n @if (hasSortButton()) {\n <xs-button\n icon=\"sort\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"px-3 py-1 rounded-xl bg-zinc-900/50 hover:opacity-70\"\n (onClick)=\"onClickSort.emit(undefined)\"\n [title]=\"texts().sort\"\n />\n }\n </div>\n\n @if (manage()) {\n <xs-button\n [icon]=\"{ name: !state() ? 'chevron-down' : 'chevron-up' }\"\n layout=\"iconOnlyMini\"\n variant=\"custom\"\n customClass=\"hover:opacity-70\"\n [title]=\"texts().changeView\"\n />\n }\n</div>\n" }]
|
|
5218
5190
|
}], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], titleId: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleId", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: true }] }], hasSortButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSortButton", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], manage: [{ type: i0.Input, args: [{ isSignal: true, alias: "manage", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], total: [{ type: i0.Input, args: [{ isSignal: true, alias: "total", required: false }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }], hasViewButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasViewButtons", required: false }] }], hasSoundcloudItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSoundcloudItems", required: false }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], selectedTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTab", required: false }] }, { type: i0.Output, args: ["selectedTabChange"] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], texts: [{ type: i0.Input, args: [{ isSignal: true, alias: "texts", required: false }] }], isPlayingAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPlayingAll", required: false }] }], onClickChangeView: [{ type: i0.Output, args: ["onClickChangeView"] }], onClickPlayAll: [{ type: i0.Output, args: ["onClickPlayAll"] }], onClickSort: [{ type: i0.Output, args: ["onClickSort"] }], onChangeState: [{ type: i0.Output, args: ["onChangeState"] }], onClickTab: [{ type: i0.Output, args: ["onClickTab"] }] } });
|
|
5219
5191
|
|
|
5220
5192
|
class XSSkeletonForSliderComponent {
|
|
@@ -5524,7 +5496,7 @@ class XSItemsSliderComponent {
|
|
|
5524
5496
|
this.loadMoreData.emit();
|
|
5525
5497
|
}
|
|
5526
5498
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemsSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5527
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemsSliderComponent, isStandalone: true, selector: "xs-items-slider", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, typeFrom: { classPropertyName: "typeFrom", publicName: "typeFrom", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, hasViewButtons: { classPropertyName: "hasViewButtons", publicName: "hasViewButtons", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, sortButtonInput: { classPropertyName: "sortButtonInput", publicName: "sortButtonInput", isSignal: true, isRequired: false, transformFunction: null }, sortValues: { classPropertyName: "sortValues", publicName: "sortValues", isSignal: true, isRequired: false, transformFunction: null }, manage: { classPropertyName: "manage", publicName: "manage", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, selectedTab: { classPropertyName: "selectedTab", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null }, hasSoundcloudItems: { classPropertyName: "hasSoundcloudItems", publicName: "hasSoundcloudItems", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, texts: { classPropertyName: "texts", publicName: "texts", isSignal: true, isRequired: false, transformFunction: null }, itemCardTexts: { classPropertyName: "itemCardTexts", publicName: "itemCardTexts", isSignal: true, isRequired: false, transformFunction: null }, isPlayingAll: { classPropertyName: "isPlayingAll", publicName: "isPlayingAll", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", selectedTab: "selectedTabChange", loadMoreData: "loadMoreData", onClickChangeSort: "onClickChangeSort", onClickPlay: "onClickPlay" }, host: { attributes: { "xs-items-slider-host": "" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"pt-3 mx-auto max-w-full-xl max-w-7sm\"\n [ngClass]=\"{\n 'mb-3 pt-3': !manage(),\n 'mb-2': manage(),\n }\"\n>\n <xs-items-slider-title-buttons\n [label]=\"label()\"\n [items]=\"items()\"\n [type]=\"type()\"\n [titleId]=\"titleId()\"\n [hasSortButton]=\"hasSortButton()\"\n [manage]=\"manage()\"\n [state]=\"state()\"\n [total]=\"total()\"\n [view]=\"view()\"\n [hasViewButtons]=\"hasViewButtons()\"\n [hasSoundcloudItems]=\"hasSoundcloudItems()\"\n [tabs]=\"tabs()\"\n [selectedTab]=\"selectedTab()\"\n [texts]=\"texts()\"\n [isPlayingAll]=\"isPlayingAll()\"\n (onClickChangeView)=\"onClickChangeView($event)\"\n (onClickPlayAll)=\"onClickPlay.emit()\"\n (onClickSort)=\"onClickSort()\"\n (onClickTab)=\"onClickTab($event)\"\n ></xs-items-slider-title-buttons>\n\n @if ((manage() && state()) || (!manage() && !state())) {\n <!-- CARDS -->\n @if (!loading().items && view() === 'cards') {\n <div class=\"relative\">\n @if (canScrollLeft) {\n <button\n (click)=\"scrollLeftBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg left-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n }\n\n @if (type() !== 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (scroll)=\"onScroll()\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @for (item of items(); track $index; let i = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"item\"\n [type]=\"$any(type())\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"i\"\n [user]=\"user()\"\n [year]=\"type() === 'media'\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n </div>\n }\n @if (type() === 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"component\"\n [type]=\"'equipment'\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"ii\"\n [user]=\"user()\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n }\n </div>\n }\n\n @if (canScrollRight) {\n <button\n (click)=\"scrollRightBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg right-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n }\n </div>\n }\n\n @if (loading().items && view() === 'cards') {\n <div class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\" (wheel)=\"onHorizontalWheel($event)\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <xs-skeleton-for-slider\n type=\"normal\"\n ></xs-skeleton-for-slider>\n }\n </div>\n }\n\n <!-- LIST -->\n @if (view() === 'list') {\n <div\n class=\"grid w-full grid-cols-1 gap-2 lg:gap-3 p-1.5 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n >\n @if (type() !== 'setup') {\n @for (item of items(); track $index; let i = $index) {\n <!-- <xs-item-compact\n [item]=\"item\"\n [type]=\"type\"\n [user]=\"user\"\n [language]=\"language\"\n ></xs-item-compact> -->\n }\n }\n\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n <!-- <xs-item-compact\n [item]=\"component\"\n [type]=\"'equipment'\"\n [user]=\"user\"\n [language]=\"language\"\n ></xs-item-compact> -->\n }\n }\n </div>\n @if (!loading().items && items().length >= 10 && total() > items().length) {\n <xs-button\n [label]=\"texts().viewMore\"\n [layout]=\"'between'\"\n [isFull]=\"true\"\n [icon]=\"{ name: 'plus' }\"\n [disabled]=\"loading().more || loading().items\"\n [loading]=\"loading().more || loading().items\"\n (onClick)=\"onScrollTable()\"\n >\n </xs-button>\n }\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XSItemCardComponent, selector: "xs-item-card", inputs: ["type", "subtypeForced", "item", "viewTransitionName", "forSlider", "forTop", "position", "edit", "year", "styles", "stylesLeft", "link", "clickEmit", "i", "user", "count", "showLabelType", "language", "texts"], outputs: ["onGoToItem"] }, { kind: "component", type: XSItemsSliderTitleButtonsComponent, selector: "xs-items-slider-title-buttons", inputs: ["label", "titleId", "type", "hasSortButton", "items", "manage", "state", "total", "view", "hasViewButtons", "hasSoundcloudItems", "tabs", "selectedTab", "loading", "texts", "isPlayingAll"], outputs: ["selectedTabChange", "onClickChangeView", "onClickPlayAll", "onClickSort", "onChangeState", "onClickTab"] }, { kind: "component", type: XSSkeletonForSliderComponent, selector: "xs-skeleton-for-slider", inputs: ["displayType", "forSlider"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "ngmodule", type: PipesModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5499
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemsSliderComponent, isStandalone: true, selector: "xs-items-slider", inputs: { type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, typeFrom: { classPropertyName: "typeFrom", publicName: "typeFrom", isSignal: true, isRequired: false, transformFunction: null }, total: { classPropertyName: "total", publicName: "total", isSignal: true, isRequired: false, transformFunction: null }, view: { classPropertyName: "view", publicName: "view", isSignal: true, isRequired: false, transformFunction: null }, hasViewButtons: { classPropertyName: "hasViewButtons", publicName: "hasViewButtons", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, sortButtonInput: { classPropertyName: "sortButtonInput", publicName: "sortButtonInput", isSignal: true, isRequired: false, transformFunction: null }, sortValues: { classPropertyName: "sortValues", publicName: "sortValues", isSignal: true, isRequired: false, transformFunction: null }, manage: { classPropertyName: "manage", publicName: "manage", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, user: { classPropertyName: "user", publicName: "user", isSignal: true, isRequired: false, transformFunction: null }, tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: false, transformFunction: null }, selectedTab: { classPropertyName: "selectedTab", publicName: "selectedTab", isSignal: true, isRequired: false, transformFunction: null }, hasSoundcloudItems: { classPropertyName: "hasSoundcloudItems", publicName: "hasSoundcloudItems", isSignal: true, isRequired: false, transformFunction: null }, language: { classPropertyName: "language", publicName: "language", isSignal: true, isRequired: false, transformFunction: null }, texts: { classPropertyName: "texts", publicName: "texts", isSignal: true, isRequired: false, transformFunction: null }, itemCardTexts: { classPropertyName: "itemCardTexts", publicName: "itemCardTexts", isSignal: true, isRequired: false, transformFunction: null }, isPlayingAll: { classPropertyName: "isPlayingAll", publicName: "isPlayingAll", isSignal: true, isRequired: false, transformFunction: null }, titleId: { classPropertyName: "titleId", publicName: "titleId", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { view: "viewChange", selectedTab: "selectedTabChange", loadMoreData: "loadMoreData", onClickChangeSort: "onClickChangeSort", onClickPlay: "onClickPlay" }, host: { attributes: { "xs-items-slider-host": "" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true, isSignal: true }], ngImport: i0, template: "<div\n class=\"pt-3 mx-auto max-w-full-xl max-w-7sm\"\n [ngClass]=\"{\n 'mb-3 pt-3': !manage(),\n 'mb-2': manage(),\n }\"\n>\n <xs-items-slider-title-buttons\n [label]=\"label()\"\n [items]=\"items()\"\n [type]=\"type()\"\n [titleId]=\"titleId()\"\n [hasSortButton]=\"hasSortButton()\"\n [manage]=\"manage()\"\n [state]=\"state()\"\n [total]=\"total()\"\n [view]=\"view()\"\n [hasViewButtons]=\"hasViewButtons()\"\n [hasSoundcloudItems]=\"hasSoundcloudItems()\"\n [tabs]=\"tabs()\"\n [selectedTab]=\"selectedTab()\"\n [texts]=\"texts()\"\n [isPlayingAll]=\"isPlayingAll()\"\n (onClickChangeView)=\"onClickChangeView($event)\"\n (onClickPlayAll)=\"onClickPlay.emit()\"\n (onClickSort)=\"onClickSort()\"\n (onClickTab)=\"onClickTab($event)\"\n ></xs-items-slider-title-buttons>\n\n @if ((manage() && state()) || (!manage() && !state())) {\n @if (!loading().items && view() === 'cards') {\n <div class=\"relative\">\n @if (canScrollLeft) {\n <button\n (click)=\"scrollLeftBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg left-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n }\n\n @if (type() !== 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (scroll)=\"onScroll()\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @for (item of items(); track $index; let i = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"item\"\n [type]=\"$any(type())\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"i\"\n [user]=\"user()\"\n [year]=\"type() === 'media'\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n </div>\n }\n @if (type() === 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"component\"\n [type]=\"'equipment'\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"ii\"\n [user]=\"user()\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n }\n </div>\n }\n\n @if (canScrollRight) {\n <button\n (click)=\"scrollRightBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg right-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n }\n </div>\n }\n\n @if (loading().items && view() === 'cards') {\n <div class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\" (wheel)=\"onHorizontalWheel($event)\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <xs-skeleton-for-slider\n type=\"normal\"\n ></xs-skeleton-for-slider>\n }\n </div>\n }\n\n @if (view() === 'list') {\n <div\n class=\"grid w-full grid-cols-1 gap-2 lg:gap-3 p-1.5 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n >\n @if (type() !== 'setup') {\n @for (item of items(); track $index; let i = $index) {\n }\n }\n\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n }\n }\n </div>\n @if (!loading().items && items().length >= 10 && total() > items().length) {\n <xs-button\n [label]=\"texts().viewMore\"\n [layout]=\"'between'\"\n [isFull]=\"true\"\n [icon]=\"{ name: 'plus' }\"\n [disabled]=\"loading().more || loading().items\"\n [loading]=\"loading().more || loading().items\"\n (onClick)=\"onScrollTable()\"\n >\n </xs-button>\n }\n }\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XSItemCardComponent, selector: "xs-item-card", inputs: ["type", "subtypeForced", "item", "viewTransitionName", "forSlider", "forTop", "position", "edit", "year", "styles", "stylesLeft", "link", "clickEmit", "i", "user", "count", "showLabelType", "language", "texts"], outputs: ["onGoToItem"] }, { kind: "component", type: XSItemsSliderTitleButtonsComponent, selector: "xs-items-slider-title-buttons", inputs: ["label", "titleId", "type", "hasSortButton", "items", "manage", "state", "total", "view", "hasViewButtons", "hasSoundcloudItems", "tabs", "selectedTab", "loading", "texts", "isPlayingAll"], outputs: ["selectedTabChange", "onClickChangeView", "onClickPlayAll", "onClickSort", "onChangeState", "onClickTab"] }, { kind: "component", type: XSSkeletonForSliderComponent, selector: "xs-skeleton-for-slider", inputs: ["displayType", "forSlider"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "ngmodule", type: PipesModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5528
5500
|
}
|
|
5529
5501
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemsSliderComponent, decorators: [{
|
|
5530
5502
|
type: Component,
|
|
@@ -5535,7 +5507,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
5535
5507
|
XSSkeletonForSliderComponent,
|
|
5536
5508
|
XSButtonComponent,
|
|
5537
5509
|
PipesModule,
|
|
5538
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"pt-3 mx-auto max-w-full-xl max-w-7sm\"\n [ngClass]=\"{\n 'mb-3 pt-3': !manage(),\n 'mb-2': manage(),\n }\"\n>\n <xs-items-slider-title-buttons\n [label]=\"label()\"\n [items]=\"items()\"\n [type]=\"type()\"\n [titleId]=\"titleId()\"\n [hasSortButton]=\"hasSortButton()\"\n [manage]=\"manage()\"\n [state]=\"state()\"\n [total]=\"total()\"\n [view]=\"view()\"\n [hasViewButtons]=\"hasViewButtons()\"\n [hasSoundcloudItems]=\"hasSoundcloudItems()\"\n [tabs]=\"tabs()\"\n [selectedTab]=\"selectedTab()\"\n [texts]=\"texts()\"\n [isPlayingAll]=\"isPlayingAll()\"\n (onClickChangeView)=\"onClickChangeView($event)\"\n (onClickPlayAll)=\"onClickPlay.emit()\"\n (onClickSort)=\"onClickSort()\"\n (onClickTab)=\"onClickTab($event)\"\n ></xs-items-slider-title-buttons>\n\n @if ((manage() && state()) || (!manage() && !state())) {\n
|
|
5510
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"pt-3 mx-auto max-w-full-xl max-w-7sm\"\n [ngClass]=\"{\n 'mb-3 pt-3': !manage(),\n 'mb-2': manage(),\n }\"\n>\n <xs-items-slider-title-buttons\n [label]=\"label()\"\n [items]=\"items()\"\n [type]=\"type()\"\n [titleId]=\"titleId()\"\n [hasSortButton]=\"hasSortButton()\"\n [manage]=\"manage()\"\n [state]=\"state()\"\n [total]=\"total()\"\n [view]=\"view()\"\n [hasViewButtons]=\"hasViewButtons()\"\n [hasSoundcloudItems]=\"hasSoundcloudItems()\"\n [tabs]=\"tabs()\"\n [selectedTab]=\"selectedTab()\"\n [texts]=\"texts()\"\n [isPlayingAll]=\"isPlayingAll()\"\n (onClickChangeView)=\"onClickChangeView($event)\"\n (onClickPlayAll)=\"onClickPlay.emit()\"\n (onClickSort)=\"onClickSort()\"\n (onClickTab)=\"onClickTab($event)\"\n ></xs-items-slider-title-buttons>\n\n @if ((manage() && state()) || (!manage() && !state())) {\n @if (!loading().items && view() === 'cards') {\n <div class=\"relative\">\n @if (canScrollLeft) {\n <button\n (click)=\"scrollLeftBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg left-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M15 19l-7-7 7-7\"\n />\n </svg>\n </button>\n }\n\n @if (type() !== 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (scroll)=\"onScroll()\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @for (item of items(); track $index; let i = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"item\"\n [type]=\"$any(type())\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"i\"\n [user]=\"user()\"\n [year]=\"type() === 'media'\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n </div>\n }\n @if (type() === 'setup') {\n <div\n #scrollContainer\n class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\"\n (wheel)=\"onHorizontalWheel($event)\"\n >\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n <div\n class=\"flex flex-col items-center flex-shrink-0\"\n >\n <xs-item-card\n [item]=\"component\"\n [type]=\"'equipment'\"\n [forSlider]=\"true\"\n [styles]=\"true\"\n [i]=\"ii\"\n [user]=\"user()\"\n [texts]=\"itemCardTexts()\"\n [language]=\"language()\"\n ></xs-item-card>\n </div>\n }\n }\n </div>\n }\n\n @if (canScrollRight) {\n <button\n (click)=\"scrollRightBtn()\"\n class=\"absolute z-10 p-2 text-white transition-opacity -translate-y-1/2 rounded-full shadow-lg right-2 top-1/2 bg-black/70 hover:bg-black/90\"\n >\n <svg\n class=\"w-6 h-6\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"2\"\n d=\"M9 5l7 7-7 7\"\n />\n </svg>\n </button>\n }\n </div>\n }\n\n @if (loading().items && view() === 'cards') {\n <div class=\"flex gap-4 py-2 overflow-scroll overflow-x-auto scrollbar-hidden scroll-smooth\" (wheel)=\"onHorizontalWheel($event)\">\n @for (i of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; track $index) {\n <xs-skeleton-for-slider\n type=\"normal\"\n ></xs-skeleton-for-slider>\n }\n </div>\n }\n\n @if (view() === 'list') {\n <div\n class=\"grid w-full grid-cols-1 gap-2 lg:gap-3 p-1.5 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\"\n >\n @if (type() !== 'setup') {\n @for (item of items(); track $index; let i = $index) {\n }\n }\n\n @if (items() && items().length > 0 && selectedTab() !== undefined && selectedTab() >= 0 && selectedTab() < items().length && $any(items()[selectedTab()])?.components) {\n @for (component of $any(items()[selectedTab()]).components; track $index; let ii = $index) {\n }\n }\n </div>\n @if (!loading().items && items().length >= 10 && total() > items().length) {\n <xs-button\n [label]=\"texts().viewMore\"\n [layout]=\"'between'\"\n [isFull]=\"true\"\n [icon]=\"{ name: 'plus' }\"\n [disabled]=\"loading().more || loading().items\"\n [loading]=\"loading().more || loading().items\"\n (onClick)=\"onScrollTable()\"\n >\n </xs-button>\n }\n }\n }\n</div>\n" }]
|
|
5539
5511
|
}], ctorParameters: () => [], propDecorators: { scrollContainer: [{ type: i0.ViewChild, args: ['scrollContainer', { isSignal: true }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], items: [{ type: i0.Input, args: [{ isSignal: true, alias: "items", required: false }] }], typeFrom: [{ type: i0.Input, args: [{ isSignal: true, alias: "typeFrom", required: false }] }], total: [{ type: i0.Input, args: [{ isSignal: true, alias: "total", required: false }] }], view: [{ type: i0.Input, args: [{ isSignal: true, alias: "view", required: false }] }, { type: i0.Output, args: ["viewChange"] }], hasViewButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasViewButtons", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], sortButtonInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortButtonInput", required: false }] }], sortValues: [{ type: i0.Input, args: [{ isSignal: true, alias: "sortValues", required: false }] }], manage: [{ type: i0.Input, args: [{ isSignal: true, alias: "manage", required: false }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], user: [{ type: i0.Input, args: [{ isSignal: true, alias: "user", required: false }] }], tabs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabs", required: false }] }], selectedTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedTab", required: false }] }, { type: i0.Output, args: ["selectedTabChange"] }], hasSoundcloudItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasSoundcloudItems", required: false }] }], language: [{ type: i0.Input, args: [{ isSignal: true, alias: "language", required: false }] }], texts: [{ type: i0.Input, args: [{ isSignal: true, alias: "texts", required: false }] }], itemCardTexts: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemCardTexts", required: false }] }], isPlayingAll: [{ type: i0.Input, args: [{ isSignal: true, alias: "isPlayingAll", required: false }] }], titleId: [{ type: i0.Input, args: [{ isSignal: true, alias: "titleId", required: false }] }], loadMoreData: [{ type: i0.Output, args: ["loadMoreData"] }], onClickChangeSort: [{ type: i0.Output, args: ["onClickChangeSort"] }], onClickPlay: [{ type: i0.Output, args: ["onClickPlay"] }] } });
|
|
5540
5512
|
|
|
5541
5513
|
class XSTitleCollapseComponent {
|
|
@@ -9147,7 +9119,6 @@ class XSModalService {
|
|
|
9147
9119
|
this.translateService.registerTranslations({ es: es$l, en: en$l });
|
|
9148
9120
|
}
|
|
9149
9121
|
open(componentType, options = {}) {
|
|
9150
|
-
// Set default values
|
|
9151
9122
|
const defaultOptions = {
|
|
9152
9123
|
type: 'bottom-sheet',
|
|
9153
9124
|
};
|
|
@@ -11408,7 +11379,6 @@ class XSAuthComponent {
|
|
|
11408
11379
|
get showInfoIcons() {
|
|
11409
11380
|
return this.cfg?.showInfoIcons !== false;
|
|
11410
11381
|
}
|
|
11411
|
-
// --- Header ---
|
|
11412
11382
|
get title() {
|
|
11413
11383
|
this.syncTranslations();
|
|
11414
11384
|
switch (this.activeMode) {
|
|
@@ -11447,7 +11417,6 @@ class XSAuthComponent {
|
|
|
11447
11417
|
return '';
|
|
11448
11418
|
}
|
|
11449
11419
|
}
|
|
11450
|
-
// --- Form fields ---
|
|
11451
11420
|
get loginFields() {
|
|
11452
11421
|
this.syncTranslations();
|
|
11453
11422
|
if (!this._loginFields) {
|
|
@@ -11553,7 +11522,6 @@ class XSAuthComponent {
|
|
|
11553
11522
|
}
|
|
11554
11523
|
return this._twoFactorFields;
|
|
11555
11524
|
}
|
|
11556
|
-
// --- Mode switching ---
|
|
11557
11525
|
changeMode(mode) {
|
|
11558
11526
|
this.service.activeMode = mode;
|
|
11559
11527
|
this.formModel = {};
|
|
@@ -11564,7 +11532,6 @@ class XSAuthComponent {
|
|
|
11564
11532
|
markEmailSent() {
|
|
11565
11533
|
this.emailSent.set(true);
|
|
11566
11534
|
}
|
|
11567
|
-
// --- Form handlers ---
|
|
11568
11535
|
onFormReady(form) {
|
|
11569
11536
|
this.formGroup = form;
|
|
11570
11537
|
Promise.resolve().then(() => {
|
|
@@ -11578,7 +11545,6 @@ class XSAuthComponent {
|
|
|
11578
11545
|
this.formModel = formData ?? {};
|
|
11579
11546
|
this.isFormValid = this.formGroup?.valid ?? false;
|
|
11580
11547
|
}
|
|
11581
|
-
// --- Actions ---
|
|
11582
11548
|
actionSocial(provider) {
|
|
11583
11549
|
this.onAction.emit({
|
|
11584
11550
|
action: provider === 'google'
|
|
@@ -12649,7 +12615,6 @@ class XSFullImageComponent {
|
|
|
12649
12615
|
this.dismiss();
|
|
12650
12616
|
}
|
|
12651
12617
|
}
|
|
12652
|
-
/* ---- Zoom helpers ---- */
|
|
12653
12618
|
resetZoom() {
|
|
12654
12619
|
this.zoom.set(1);
|
|
12655
12620
|
this.translateX.set(0);
|
|
@@ -12665,7 +12630,6 @@ class XSFullImageComponent {
|
|
|
12665
12630
|
this.translateY.set(0);
|
|
12666
12631
|
}
|
|
12667
12632
|
}
|
|
12668
|
-
/* ---- Backdrop click ---- */
|
|
12669
12633
|
onBackdropClick(event) {
|
|
12670
12634
|
if (event.target === event.currentTarget) {
|
|
12671
12635
|
this.dismiss();
|
|
@@ -12676,7 +12640,6 @@ class XSFullImageComponent {
|
|
|
12676
12640
|
event.stopPropagation();
|
|
12677
12641
|
this.dismiss();
|
|
12678
12642
|
}
|
|
12679
|
-
/* ---- Pointer pan (desktop) ---- */
|
|
12680
12643
|
onImagePointerDown(event) {
|
|
12681
12644
|
event.stopPropagation();
|
|
12682
12645
|
if (this.zoom() <= 1)
|
|
@@ -12699,7 +12662,6 @@ class XSFullImageComponent {
|
|
|
12699
12662
|
onPointerUp(_event) {
|
|
12700
12663
|
this.isPointerPanning = false;
|
|
12701
12664
|
}
|
|
12702
|
-
/* ---- Touch handlers (mobile) ---- */
|
|
12703
12665
|
onTouchStart(event) {
|
|
12704
12666
|
if (!isPlatformBrowser(this.platformId))
|
|
12705
12667
|
return;
|
|
@@ -12778,7 +12740,6 @@ class XSFullImageComponent {
|
|
|
12778
12740
|
const dy = touches[0].clientY - touches[1].clientY;
|
|
12779
12741
|
return Math.sqrt(dx * dx + dy * dy);
|
|
12780
12742
|
}
|
|
12781
|
-
/* ---- Scroll wheel zoom (desktop) ---- */
|
|
12782
12743
|
onWheel(event) {
|
|
12783
12744
|
if (!isPlatformBrowser(this.platformId))
|
|
12784
12745
|
return;
|
|
@@ -12786,7 +12747,6 @@ class XSFullImageComponent {
|
|
|
12786
12747
|
const delta = event.deltaY > 0 ? -0.1 : 0.1;
|
|
12787
12748
|
this.setZoom(this.zoom() + delta);
|
|
12788
12749
|
}
|
|
12789
|
-
/* ---- Download ---- */
|
|
12790
12750
|
onDownload(event) {
|
|
12791
12751
|
event.stopPropagation();
|
|
12792
12752
|
if (!isPlatformBrowser(this.platformId))
|
|
@@ -12815,7 +12775,6 @@ class XSFullImageComponent {
|
|
|
12815
12775
|
a.click();
|
|
12816
12776
|
});
|
|
12817
12777
|
}
|
|
12818
|
-
/* ---- Share ---- */
|
|
12819
12778
|
async onShare(event) {
|
|
12820
12779
|
event.stopPropagation();
|
|
12821
12780
|
if (!isPlatformBrowser(this.platformId))
|
|
@@ -16063,6 +16022,7 @@ class XSNavbarComponent {
|
|
|
16063
16022
|
showBack = input(true, ...(ngDevMode ? [{ debugName: "showBack" }] : []));
|
|
16064
16023
|
showMenu = input(false, ...(ngDevMode ? [{ debugName: "showMenu" }] : []));
|
|
16065
16024
|
menuIcon = input('bars', ...(ngDevMode ? [{ debugName: "menuIcon" }] : []));
|
|
16025
|
+
contextual = input(false, ...(ngDevMode ? [{ debugName: "contextual" }] : []));
|
|
16066
16026
|
showLanguage = input(true, ...(ngDevMode ? [{ debugName: "showLanguage" }] : []));
|
|
16067
16027
|
showNotifications = input(false, ...(ngDevMode ? [{ debugName: "showNotifications" }] : []));
|
|
16068
16028
|
showChat = input(false, ...(ngDevMode ? [{ debugName: "showChat" }] : []));
|
|
@@ -16121,7 +16081,7 @@ class XSNavbarComponent {
|
|
|
16121
16081
|
this.translateService.setLanguage(newLang);
|
|
16122
16082
|
}
|
|
16123
16083
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16124
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSNavbarComponent, isStandalone: true, selector: "xs-navbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, mobileTitle: { classPropertyName: "mobileTitle", publicName: "mobileTitle", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, mobileSubtitle: { classPropertyName: "mobileSubtitle", publicName: "mobileSubtitle", isSignal: true, isRequired: false, transformFunction: null }, showBorder: { classPropertyName: "showBorder", publicName: "showBorder", isSignal: true, isRequired: false, transformFunction: null }, transparent: { classPropertyName: "transparent", publicName: "transparent", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null }, showLanguage: { classPropertyName: "showLanguage", publicName: "showLanguage", isSignal: true, isRequired: false, transformFunction: null }, showNotifications: { classPropertyName: "showNotifications", publicName: "showNotifications", isSignal: true, isRequired: false, transformFunction: null }, showChat: { classPropertyName: "showChat", publicName: "showChat", isSignal: true, isRequired: false, transformFunction: null }, showImpersonation: { classPropertyName: "showImpersonation", publicName: "showImpersonation", isSignal: true, isRequired: false, transformFunction: null }, unreadChatMessages: { classPropertyName: "unreadChatMessages", publicName: "unreadChatMessages", isSignal: true, isRequired: false, transformFunction: null }, unreadNotifications: { classPropertyName: "unreadNotifications", publicName: "unreadNotifications", isSignal: true, isRequired: false, transformFunction: null }, homeRoute: { classPropertyName: "homeRoute", publicName: "homeRoute", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, hideEnvBadge: { classPropertyName: "hideEnvBadge", publicName: "hideEnvBadge", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { back: "back", menuToggle: "menuToggle", titleClick: "titleClick", notificationsClick: "notificationsClick", chatClick: "chatClick", impersonationClick: "impersonationClick" }, host: { attributes: { "role": "banner" }, properties: { "class.sticky": "sticky()", "class.top-0": "sticky()", "class.z-50": "sticky()" } }, queries: [{ propertyName: "bottomContent", first: true, predicate: ["[bottom]"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (!hidden()) {\n<header\n [class.bg-black/80]=\"!transparent()\"\n [class.backdrop-blur-xl]=\"!transparent()\"\n class=\"ease-in-out transition-all duration-300\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n>\n <div\n class=\"mx-auto px-4 pt-3 pb-2\"\n [class.border-b]=\"showBorder()\"\n [class.border-white/5]=\"showBorder()\"\n [style.max-width]=\"maxWidth()\"\n >\n <div class=\"flex items-center justify-between gap-4 w-full\">\n <div class=\"flex items-center min-w-0 flex-1\">\n @if (showLeftButton) {\n <xs-button\n (onClick)=\"showBack() ? back.emit() : menuToggle.emit()\"\n [icon]=\"{ name: showBack() ? 'arrow-left' : (menuIcon()) }\"\n layout=\"iconOnlyHeader\"\n variant=\"custom\"\n customClass=\"flex-none p-2 -ml-2 text-zinc-400 hover:text-white active:scale-90 rounded-xl hover:bg-zinc-900/50\"\n [title]=\"showBack() ? t('GO_BACK') : t('OPEN_MENU')\"\n />\n }\n\n <div class=\"flex flex-col min-w-0 flex-1\">\n <a\n [routerLink]=\"homeRoute()\"\n (click)=\"titleClick.emit()\"\n class=\"inline-block text-2xl sm:text-3xl font-black tracking-[0.01em] text-white uppercase leading-none truncate transition-[letter-spacing_0.5s_ease-out,color_0.2s_ease] hover:tracking-[0.05em] hover:text-zinc-300 will-change-[letter-spacing] no-underline\"\n [attr.aria-label]=\"t('GO_TO') + ' ' + (homeRoute() || t('HOME'))\"\n >\n @if (mobileTitle()) {\n <span class=\"lg:hidden\">{{ mobileTitle() }}</span>\n <span class=\"hidden lg:inline\">{{ title() }}</span>\n } @else {\n {{ title() }}\n }\n </a>\n\n @if (subtitle()) {\n <div\n class=\"flex items-center gap-2 mt-1 animate-in fade-in slide-in-from-left-2 duration-500 min-w-0\"\n >\n <div\n class=\"text-zinc-400 text-[10px] font-black tracking-[0.2em] uppercase leading-none truncate\"\n >\n @if (mobileSubtitle()) {\n <span class=\"lg:hidden\">{{ mobileSubtitle() }}</span>\n <span class=\"hidden lg:inline\">{{ subtitle() }}</span>\n } @else {\n {{ subtitle() }}\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"flex items-center justify-end gap-3 min-w-0\">\n <ng-content select=\"[actions]\"></ng-content>\n\n @if (envName !== 'prod' && !hideEnvBadge() && !isCapacitorNative) {\n <span\n class=\"hidden sm:flex flex-none items-center justify-center w-9 h-9 rounded-xl border text-[9px] font-black tracking-[0.1em] select-none\"\n [class.bg-amber-500/10]=\"envName === 'dev'\"\n [class.border-amber-500/20]=\"envName === 'dev'\"\n [class.text-amber-500]=\"envName === 'dev'\"\n [class.bg-orange-500/10]=\"envName === 'uat'\"\n [class.border-orange-500/20]=\"envName === 'uat'\"\n [class.text-orange-500]=\"envName === 'uat'\"\n [title]=\"envName\"\n >{{ envName }}</span>\n }\n\n @if (showChat()) {\n <button\n (click)=\"chatClick.emit()\"\n class=\"relative flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('CHAT')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4\">\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z\"/>\n </svg>\n @if (unreadChatMessages() > 0) {\n <span\n class=\"absolute -top-1 -right-1 min-w-[16px] h-4 px-1 bg-green-500 rounded-full text-[8px] font-bold text-white flex items-center justify-center\"\n [attr.aria-label]=\"unreadChatMessages() + ' ' + t('UNREAD_MESSAGES')\"\n >\n {{ unreadChatMessages() > 9 ? '9+' : unreadChatMessages() }}\n </span>\n }\n </button>\n }\n\n @if (showNotifications()) {\n <xs-button\n (onClick)=\"notificationsClick.emit()\"\n icon=\"bell\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95\"\n [title]=\"t('NOTIFICATIONS')\"\n [badgeCount]=\"unreadNotifications()\"\n />\n }\n\n @if (showImpersonation()) {\n <button\n (click)=\"impersonationClick.emit()\"\n class=\"flex-none flex items-center justify-center w-9 h-9 bg-amber-500/10 rounded-xl border border-amber-500/20 hover:bg-amber-500/20 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('BACK_TO_ADMIN')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4 text-amber-500\">\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"/>\n </svg>\n </button>\n }\n\n @if (showLanguage()) {\n <button\n (click)=\"onToggleLang()\"\n class=\"flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('SWITCH_LANG_TO') + ' ' + (langSignal() === 'es' ? t('ENGLISH') : t('SPANISH'))\"\n >\n <img\n [src]=\"\n langSignal() === 'es'\n ? ('es' | countryFlag)\n : ('us' | countryFlag)\n \"\n class=\"w-4 h-3 object-cover rounded-[1px] shadow-sm\"\n [alt]=\"langSignal() === 'es' ? t('SPANISH') : t('ENGLISH')\"\n />\n </button>\n }\n </div>\n </div>\n\n @if (hasBottom) {\n <div\n class=\"mt-6 animate-in fade-in slide-in-from-top-2 duration-700\"\n >\n <ng-content select=\"[bottom]\"></ng-content>\n </div>\n }\n </div>\n</header>\n}\n", styles: [":host{display:block;width:100%}:host(.sticky){position:sticky}header{-webkit-backdrop-filter:blur(20px)}button:focus-visible{outline:2px solid rgb(113 113 122);outline-offset:2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16084
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSNavbarComponent, isStandalone: true, selector: "xs-navbar", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, mobileTitle: { classPropertyName: "mobileTitle", publicName: "mobileTitle", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, mobileSubtitle: { classPropertyName: "mobileSubtitle", publicName: "mobileSubtitle", isSignal: true, isRequired: false, transformFunction: null }, showBorder: { classPropertyName: "showBorder", publicName: "showBorder", isSignal: true, isRequired: false, transformFunction: null }, transparent: { classPropertyName: "transparent", publicName: "transparent", isSignal: true, isRequired: false, transformFunction: null }, sticky: { classPropertyName: "sticky", publicName: "sticky", isSignal: true, isRequired: false, transformFunction: null }, showBack: { classPropertyName: "showBack", publicName: "showBack", isSignal: true, isRequired: false, transformFunction: null }, showMenu: { classPropertyName: "showMenu", publicName: "showMenu", isSignal: true, isRequired: false, transformFunction: null }, menuIcon: { classPropertyName: "menuIcon", publicName: "menuIcon", isSignal: true, isRequired: false, transformFunction: null }, contextual: { classPropertyName: "contextual", publicName: "contextual", isSignal: true, isRequired: false, transformFunction: null }, showLanguage: { classPropertyName: "showLanguage", publicName: "showLanguage", isSignal: true, isRequired: false, transformFunction: null }, showNotifications: { classPropertyName: "showNotifications", publicName: "showNotifications", isSignal: true, isRequired: false, transformFunction: null }, showChat: { classPropertyName: "showChat", publicName: "showChat", isSignal: true, isRequired: false, transformFunction: null }, showImpersonation: { classPropertyName: "showImpersonation", publicName: "showImpersonation", isSignal: true, isRequired: false, transformFunction: null }, unreadChatMessages: { classPropertyName: "unreadChatMessages", publicName: "unreadChatMessages", isSignal: true, isRequired: false, transformFunction: null }, unreadNotifications: { classPropertyName: "unreadNotifications", publicName: "unreadNotifications", isSignal: true, isRequired: false, transformFunction: null }, homeRoute: { classPropertyName: "homeRoute", publicName: "homeRoute", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, hidden: { classPropertyName: "hidden", publicName: "hidden", isSignal: true, isRequired: false, transformFunction: null }, hideEnvBadge: { classPropertyName: "hideEnvBadge", publicName: "hideEnvBadge", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { back: "back", menuToggle: "menuToggle", titleClick: "titleClick", notificationsClick: "notificationsClick", chatClick: "chatClick", impersonationClick: "impersonationClick" }, host: { attributes: { "role": "banner" }, properties: { "class.sticky": "sticky()", "class.top-0": "sticky()", "class.z-50": "sticky()", "class.navbar-contextual": "contextual()" } }, queries: [{ propertyName: "bottomContent", first: true, predicate: ["[bottom]"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (!hidden()) {\n<header\n [class.bg-black/80]=\"!transparent()\"\n [class.backdrop-blur-xl]=\"!transparent()\"\n class=\"ease-in-out transition-all duration-300\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n>\n <div\n class=\"mx-auto px-4 pt-3 pb-2\"\n [class.border-b]=\"showBorder()\"\n [class.border-white/5]=\"showBorder()\"\n [style.max-width]=\"maxWidth()\"\n >\n <div class=\"flex items-center justify-between gap-4 w-full\">\n <div class=\"navbar-left flex items-center min-w-0 flex-1\">\n @if (showLeftButton) {\n <xs-button\n (onClick)=\"showBack() ? back.emit() : menuToggle.emit()\"\n [icon]=\"{ name: showBack() ? 'arrow-left' : (menuIcon()) }\"\n layout=\"iconOnlyHeader\"\n variant=\"custom\"\n customClass=\"flex-none p-2 -ml-2 text-zinc-400 hover:text-white active:scale-90 rounded-xl hover:bg-zinc-900/50\"\n [title]=\"showBack() ? t('GO_BACK') : t('OPEN_MENU')\"\n />\n }\n\n <div class=\"navbar-leading flex-none\">\n <ng-content select=\"[leading]\"></ng-content>\n </div>\n\n <div class=\"navbar-title-wrap flex flex-col min-w-0 flex-1\">\n <a\n [routerLink]=\"homeRoute()\"\n (click)=\"titleClick.emit()\"\n class=\"navbar-default-title inline-block text-2xl sm:text-3xl font-black tracking-[0.01em] text-white uppercase leading-none truncate transition-[letter-spacing_0.5s_ease-out,color_0.2s_ease] hover:tracking-[0.05em] hover:text-zinc-300 will-change-[letter-spacing] no-underline\"\n [attr.aria-label]=\"t('GO_TO') + ' ' + (homeRoute() || t('HOME'))\"\n >\n @if (mobileTitle()) {\n <span class=\"lg:hidden\">{{ mobileTitle() }}</span>\n <span class=\"hidden lg:inline\">{{ title() }}</span>\n } @else {\n {{ title() }}\n }\n </a>\n\n @if (subtitle()) {\n <div\n class=\"navbar-default-subtitle flex items-center gap-2 mt-1 animate-in fade-in slide-in-from-left-2 duration-500 min-w-0\"\n >\n <div\n class=\"text-zinc-400 text-[10px] font-black tracking-[0.2em] uppercase leading-none truncate\"\n >\n @if (mobileSubtitle()) {\n <span class=\"lg:hidden\">{{ mobileSubtitle() }}</span>\n <span class=\"hidden lg:inline\">{{ subtitle() }}</span>\n } @else {\n {{ subtitle() }}\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"navbar-right flex items-center justify-end gap-3 min-w-0\">\n <ng-content select=\"[actions]\"></ng-content>\n\n @if (envName !== 'prod' && !hideEnvBadge() && !isCapacitorNative) {\n <span\n class=\"hidden sm:flex flex-none items-center justify-center w-9 h-9 rounded-xl border text-[9px] font-black tracking-[0.1em] select-none\"\n [class.bg-amber-500/10]=\"envName === 'dev'\"\n [class.border-amber-500/20]=\"envName === 'dev'\"\n [class.text-amber-500]=\"envName === 'dev'\"\n [class.bg-orange-500/10]=\"envName === 'uat'\"\n [class.border-orange-500/20]=\"envName === 'uat'\"\n [class.text-orange-500]=\"envName === 'uat'\"\n [title]=\"envName\"\n >{{ envName }}</span>\n }\n\n @if (showChat()) {\n <button\n (click)=\"chatClick.emit()\"\n class=\"relative flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('CHAT')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4\">\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z\"/>\n </svg>\n @if (unreadChatMessages() > 0) {\n <span\n class=\"absolute -top-1 -right-1 min-w-[16px] h-4 px-1 bg-green-500 rounded-full text-[8px] font-bold text-white flex items-center justify-center\"\n [attr.aria-label]=\"unreadChatMessages() + ' ' + t('UNREAD_MESSAGES')\"\n >\n {{ unreadChatMessages() > 9 ? '9+' : unreadChatMessages() }}\n </span>\n }\n </button>\n }\n\n @if (showNotifications()) {\n <xs-button\n (onClick)=\"notificationsClick.emit()\"\n icon=\"bell\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95\"\n [title]=\"t('NOTIFICATIONS')\"\n [badgeCount]=\"unreadNotifications()\"\n />\n }\n\n @if (showImpersonation()) {\n <button\n (click)=\"impersonationClick.emit()\"\n class=\"flex-none flex items-center justify-center w-9 h-9 bg-amber-500/10 rounded-xl border border-amber-500/20 hover:bg-amber-500/20 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('BACK_TO_ADMIN')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4 text-amber-500\">\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"/>\n </svg>\n </button>\n }\n\n @if (showLanguage()) {\n <button\n (click)=\"onToggleLang()\"\n class=\"navbar-lang flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('SWITCH_LANG_TO') + ' ' + (langSignal() === 'es' ? t('ENGLISH') : t('SPANISH'))\"\n >\n <img\n [src]=\"\n langSignal() === 'es'\n ? ('es' | countryFlag)\n : ('us' | countryFlag)\n \"\n class=\"w-4 h-3 object-cover rounded-[1px] shadow-sm\"\n [alt]=\"langSignal() === 'es' ? t('SPANISH') : t('ENGLISH')\"\n />\n </button>\n }\n </div>\n </div>\n\n @if (hasBottom) {\n <div\n class=\"mt-6 animate-in fade-in slide-in-from-top-2 duration-700\"\n >\n <ng-content select=\"[bottom]\"></ng-content>\n </div>\n }\n </div>\n</header>\n}\n", styles: [":host{display:block;width:100%}:host(.sticky){position:sticky}header{-webkit-backdrop-filter:blur(20px)}button:focus-visible{outline:2px solid rgb(113 113 122);outline-offset:2px}.navbar-leading:has(>*){margin-left:4px}:host(.navbar-contextual) .navbar-title-wrap{display:none}:host(.navbar-contextual) .navbar-lang{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: XSButtonComponent, selector: "xs-button", inputs: ["id", "label", "type", "icon", "action", "customClass", "variant", "layout", "badgeCount", "isFull", "disabled", "loading", "title", "ariaLabel", "borderRadius", "isGrouped", "groupPosition"], outputs: ["isGroupedChange", "groupPositionChange", "click", "onClick"] }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16125
16085
|
}
|
|
16126
16086
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSNavbarComponent, decorators: [{
|
|
16127
16087
|
type: Component,
|
|
@@ -16135,8 +16095,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
16135
16095
|
'[class.sticky]': 'sticky()',
|
|
16136
16096
|
'[class.top-0]': 'sticky()',
|
|
16137
16097
|
'[class.z-50]': 'sticky()',
|
|
16138
|
-
|
|
16139
|
-
|
|
16098
|
+
'[class.navbar-contextual]': 'contextual()',
|
|
16099
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!hidden()) {\n<header\n [class.bg-black/80]=\"!transparent()\"\n [class.backdrop-blur-xl]=\"!transparent()\"\n class=\"ease-in-out transition-all duration-300\"\n [attr.aria-label]=\"ariaLabel() || title()\"\n>\n <div\n class=\"mx-auto px-4 pt-3 pb-2\"\n [class.border-b]=\"showBorder()\"\n [class.border-white/5]=\"showBorder()\"\n [style.max-width]=\"maxWidth()\"\n >\n <div class=\"flex items-center justify-between gap-4 w-full\">\n <div class=\"navbar-left flex items-center min-w-0 flex-1\">\n @if (showLeftButton) {\n <xs-button\n (onClick)=\"showBack() ? back.emit() : menuToggle.emit()\"\n [icon]=\"{ name: showBack() ? 'arrow-left' : (menuIcon()) }\"\n layout=\"iconOnlyHeader\"\n variant=\"custom\"\n customClass=\"flex-none p-2 -ml-2 text-zinc-400 hover:text-white active:scale-90 rounded-xl hover:bg-zinc-900/50\"\n [title]=\"showBack() ? t('GO_BACK') : t('OPEN_MENU')\"\n />\n }\n\n <div class=\"navbar-leading flex-none\">\n <ng-content select=\"[leading]\"></ng-content>\n </div>\n\n <div class=\"navbar-title-wrap flex flex-col min-w-0 flex-1\">\n <a\n [routerLink]=\"homeRoute()\"\n (click)=\"titleClick.emit()\"\n class=\"navbar-default-title inline-block text-2xl sm:text-3xl font-black tracking-[0.01em] text-white uppercase leading-none truncate transition-[letter-spacing_0.5s_ease-out,color_0.2s_ease] hover:tracking-[0.05em] hover:text-zinc-300 will-change-[letter-spacing] no-underline\"\n [attr.aria-label]=\"t('GO_TO') + ' ' + (homeRoute() || t('HOME'))\"\n >\n @if (mobileTitle()) {\n <span class=\"lg:hidden\">{{ mobileTitle() }}</span>\n <span class=\"hidden lg:inline\">{{ title() }}</span>\n } @else {\n {{ title() }}\n }\n </a>\n\n @if (subtitle()) {\n <div\n class=\"navbar-default-subtitle flex items-center gap-2 mt-1 animate-in fade-in slide-in-from-left-2 duration-500 min-w-0\"\n >\n <div\n class=\"text-zinc-400 text-[10px] font-black tracking-[0.2em] uppercase leading-none truncate\"\n >\n @if (mobileSubtitle()) {\n <span class=\"lg:hidden\">{{ mobileSubtitle() }}</span>\n <span class=\"hidden lg:inline\">{{ subtitle() }}</span>\n } @else {\n {{ subtitle() }}\n }\n </div>\n </div>\n }\n </div>\n </div>\n\n <div class=\"navbar-right flex items-center justify-end gap-3 min-w-0\">\n <ng-content select=\"[actions]\"></ng-content>\n\n @if (envName !== 'prod' && !hideEnvBadge() && !isCapacitorNative) {\n <span\n class=\"hidden sm:flex flex-none items-center justify-center w-9 h-9 rounded-xl border text-[9px] font-black tracking-[0.1em] select-none\"\n [class.bg-amber-500/10]=\"envName === 'dev'\"\n [class.border-amber-500/20]=\"envName === 'dev'\"\n [class.text-amber-500]=\"envName === 'dev'\"\n [class.bg-orange-500/10]=\"envName === 'uat'\"\n [class.border-orange-500/20]=\"envName === 'uat'\"\n [class.text-orange-500]=\"envName === 'uat'\"\n [title]=\"envName\"\n >{{ envName }}</span>\n }\n\n @if (showChat()) {\n <button\n (click)=\"chatClick.emit()\"\n class=\"relative flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('CHAT')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4\">\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z\"/>\n </svg>\n @if (unreadChatMessages() > 0) {\n <span\n class=\"absolute -top-1 -right-1 min-w-[16px] h-4 px-1 bg-green-500 rounded-full text-[8px] font-bold text-white flex items-center justify-center\"\n [attr.aria-label]=\"unreadChatMessages() + ' ' + t('UNREAD_MESSAGES')\"\n >\n {{ unreadChatMessages() > 9 ? '9+' : unreadChatMessages() }}\n </span>\n }\n </button>\n }\n\n @if (showNotifications()) {\n <xs-button\n (onClick)=\"notificationsClick.emit()\"\n icon=\"bell\"\n layout=\"iconOnly\"\n variant=\"custom\"\n customClass=\"w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95\"\n [title]=\"t('NOTIFICATIONS')\"\n [badgeCount]=\"unreadNotifications()\"\n />\n }\n\n @if (showImpersonation()) {\n <button\n (click)=\"impersonationClick.emit()\"\n class=\"flex-none flex items-center justify-center w-9 h-9 bg-amber-500/10 rounded-xl border border-amber-500/20 hover:bg-amber-500/20 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('BACK_TO_ADMIN')\"\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" class=\"w-4 h-4 text-amber-500\">\n <path d=\"M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 10.99h7c-.53 4.12-3.28 7.79-7 8.94V12H5V6.3l7-3.11v8.8z\"/>\n </svg>\n </button>\n }\n\n @if (showLanguage()) {\n <button\n (click)=\"onToggleLang()\"\n class=\"navbar-lang flex-none flex items-center justify-center w-9 h-9 bg-zinc-900/40 rounded-xl border border-white/5 hover:bg-zinc-800 active:scale-95 transition-all\"\n type=\"button\"\n [attr.aria-label]=\"t('SWITCH_LANG_TO') + ' ' + (langSignal() === 'es' ? t('ENGLISH') : t('SPANISH'))\"\n >\n <img\n [src]=\"\n langSignal() === 'es'\n ? ('es' | countryFlag)\n : ('us' | countryFlag)\n \"\n class=\"w-4 h-3 object-cover rounded-[1px] shadow-sm\"\n [alt]=\"langSignal() === 'es' ? t('SPANISH') : t('ENGLISH')\"\n />\n </button>\n }\n </div>\n </div>\n\n @if (hasBottom) {\n <div\n class=\"mt-6 animate-in fade-in slide-in-from-top-2 duration-700\"\n >\n <ng-content select=\"[bottom]\"></ng-content>\n </div>\n }\n </div>\n</header>\n}\n", styles: [":host{display:block;width:100%}:host(.sticky){position:sticky}header{-webkit-backdrop-filter:blur(20px)}button:focus-visible{outline:2px solid rgb(113 113 122);outline-offset:2px}.navbar-leading:has(>*){margin-left:4px}:host(.navbar-contextual) .navbar-title-wrap{display:none}:host(.navbar-contextual) .navbar-lang{display:none}\n"] }]
|
|
16100
|
+
}], propDecorators: { title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], mobileTitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileTitle", required: false }] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], mobileSubtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mobileSubtitle", required: false }] }], showBorder: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBorder", required: false }] }], transparent: [{ type: i0.Input, args: [{ isSignal: true, alias: "transparent", required: false }] }], sticky: [{ type: i0.Input, args: [{ isSignal: true, alias: "sticky", required: false }] }], showBack: [{ type: i0.Input, args: [{ isSignal: true, alias: "showBack", required: false }] }], showMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showMenu", required: false }] }], menuIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "menuIcon", required: false }] }], contextual: [{ type: i0.Input, args: [{ isSignal: true, alias: "contextual", required: false }] }], showLanguage: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLanguage", required: false }] }], showNotifications: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNotifications", required: false }] }], showChat: [{ type: i0.Input, args: [{ isSignal: true, alias: "showChat", required: false }] }], showImpersonation: [{ type: i0.Input, args: [{ isSignal: true, alias: "showImpersonation", required: false }] }], unreadChatMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "unreadChatMessages", required: false }] }], unreadNotifications: [{ type: i0.Input, args: [{ isSignal: true, alias: "unreadNotifications", required: false }] }], homeRoute: [{ type: i0.Input, args: [{ isSignal: true, alias: "homeRoute", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], hidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "hidden", required: false }] }], hideEnvBadge: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideEnvBadge", required: false }] }], maxWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxWidth", required: false }] }], back: [{ type: i0.Output, args: ["back"] }], menuToggle: [{ type: i0.Output, args: ["menuToggle"] }], titleClick: [{ type: i0.Output, args: ["titleClick"] }], notificationsClick: [{ type: i0.Output, args: ["notificationsClick"] }], chatClick: [{ type: i0.Output, args: ["chatClick"] }], impersonationClick: [{ type: i0.Output, args: ["impersonationClick"] }], bottomContent: [{ type: i0.ContentChild, args: ['[bottom]', { ...{
|
|
16140
16101
|
read: ElementRef,
|
|
16141
16102
|
}, isSignal: true }] }] } });
|
|
16142
16103
|
|
|
@@ -16545,7 +16506,6 @@ class OnImageErrorDirective {
|
|
|
16545
16506
|
el.src = this.defaultImagePath;
|
|
16546
16507
|
return;
|
|
16547
16508
|
}
|
|
16548
|
-
// Generar avatar con iniciales
|
|
16549
16509
|
el.src = this.avatarService.generateAvatar(nameForAvatar);
|
|
16550
16510
|
}
|
|
16551
16511
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: OnImageErrorDirective, deps: [{ token: i0.ElementRef }, { token: XS_DEFAULT_IMAGE_PATH }, { token: XSAvatarService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -16802,7 +16762,7 @@ class XSItemTypeUserComponent extends XSItemTypeBaseComponent {
|
|
|
16802
16762
|
return typeof type === 'string' ? type : '';
|
|
16803
16763
|
}
|
|
16804
16764
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeUserComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
16805
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeUserComponent, isStandalone: true, selector: "xs-item-type-user", host: { attributes: { "xs-item-type-user-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
16765
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeUserComponent, isStandalone: true, selector: "xs-item-type-user", host: { attributes: { "xs-item-type-user-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n <xs-image\n [src]=\"item() | imageApi: 'user' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item()['name'] }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <img\n [src]=\"getCountryCode() | countryFlag\"\n [alt]=\"getCountryName()\"\n class=\"flex-shrink-0 w-3 h-3 rounded-sm \"\n />\n <span class=\"flex-1 truncate\">\n {{ getItemType() | XSTypeUser }}\n </span>\n </div>\n </div>\n </div>\n\n @if (\n item()['value'] !== undefined && item()['unit']\n ) {\n <div class=\"flex items-center text-right mr-2\">\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: XSTypeUserPipe, name: "XSTypeUser" }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
16806
16766
|
}
|
|
16807
16767
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeUserComponent, decorators: [{
|
|
16808
16768
|
type: Component,
|
|
@@ -16814,7 +16774,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
16814
16774
|
XSIconComponent,
|
|
16815
16775
|
ImageApiPipe,
|
|
16816
16776
|
CountryFlagPipe,
|
|
16817
|
-
], host: { 'xs-item-type-user-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
16777
|
+
], host: { 'xs-item-type-user-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n <xs-image\n [src]=\"item() | imageApi: 'user' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ item()['name'] }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <img\n [src]=\"getCountryCode() | countryFlag\"\n [alt]=\"getCountryName()\"\n class=\"flex-shrink-0 w-3 h-3 rounded-sm \"\n />\n <span class=\"flex-1 truncate\">\n {{ getItemType() | XSTypeUser }}\n </span>\n </div>\n </div>\n </div>\n\n @if (\n item()['value'] !== undefined && item()['unit']\n ) {\n <div class=\"flex items-center text-right mr-2\">\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
16818
16778
|
}] });
|
|
16819
16779
|
|
|
16820
16780
|
class XSItemTypeUserStatsComponent extends XSItemTypeBaseComponent {
|
|
@@ -17051,7 +17011,7 @@ class XSItemTypeTrackingComponent extends XSItemTypeBaseComponent {
|
|
|
17051
17011
|
};
|
|
17052
17012
|
}
|
|
17053
17013
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeTrackingComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17054
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeTrackingComponent, isStandalone: true, selector: "xs-item-type-tracking", host: { attributes: { "xs-item-type-tracking-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17014
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeTrackingComponent, isStandalone: true, selector: "xs-item-type-tracking", host: { attributes: { "xs-item-type-tracking-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n <xs-image\n [item]=\"userForImage\"\n typeItem=\"user\"\n imageType=\"small\"\n size=\"full\"\n objectFit=\"cover\"\n [generateAvatar]=\"true\"\n ></xs-image>\n </div>\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getModule() | firstLetterCase }}\n {{ getAction() }}\n </span>\n </h3>\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex items-center gap-1\">\n\n <img\n [src]=\"getDeviceCountry() | countryFlag\"\n [alt]=\"getDeviceCountry()\"\n class=\"flex-shrink-0 w-3 h-3 rounded-sm\"\n />\n\n {{ getUserName() }}\n </span>\n </div>\n </div>\n </div>\n\n <div\n class=\"flex flex-col items-end justify-center gap-0 py-0 text-xs text-zinc-300\"\n >\n <span class=\"font-semibold\">{{\n item()['created'] | dateChat | firstLetterCase\n }}</span>\n <span\n class=\"font-extralight\"\n [ngClass]=\"{\n 'text-red-600': item()['isError'],\n 'text-green-500': !item()['isError'],\n }\"\n >\n {{ item()['isError'] ? 'Error' : 'OK' }}\n </span>\n </div>\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "pipe", type: CountryFlagPipe, name: "countryFlag" }, { kind: "pipe", type: DateChatPipe, name: "dateChat" }, { kind: "pipe", type: XSFirstLetterPipe, name: "firstLetterCase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17055
17015
|
}
|
|
17056
17016
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeTrackingComponent, decorators: [{
|
|
17057
17017
|
type: Component,
|
|
@@ -17062,7 +17022,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17062
17022
|
DateChatPipe,
|
|
17063
17023
|
XSImageComponent,
|
|
17064
17024
|
XSFirstLetterPipe,
|
|
17065
|
-
], host: { 'xs-item-type-tracking-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17025
|
+
], host: { 'xs-item-type-tracking-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n <xs-image\n [item]=\"userForImage\"\n typeItem=\"user\"\n imageType=\"small\"\n size=\"full\"\n objectFit=\"cover\"\n [generateAvatar]=\"true\"\n ></xs-image>\n </div>\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getModule() | firstLetterCase }}\n {{ getAction() }}\n </span>\n </h3>\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex items-center gap-1\">\n\n <img\n [src]=\"getDeviceCountry() | countryFlag\"\n [alt]=\"getDeviceCountry()\"\n class=\"flex-shrink-0 w-3 h-3 rounded-sm\"\n />\n\n {{ getUserName() }}\n </span>\n </div>\n </div>\n </div>\n\n <div\n class=\"flex flex-col items-end justify-center gap-0 py-0 text-xs text-zinc-300\"\n >\n <span class=\"font-semibold\">{{\n item()['created'] | dateChat | firstLetterCase\n }}</span>\n <span\n class=\"font-extralight\"\n [ngClass]=\"{\n 'text-red-600': item()['isError'],\n 'text-green-500': !item()['isError'],\n }\"\n >\n {{ item()['isError'] ? 'Error' : 'OK' }}\n </span>\n </div>\n </div>\n </a>\n }\n " }]
|
|
17066
17026
|
}] });
|
|
17067
17027
|
|
|
17068
17028
|
class XSItemTypeEventComponent extends XSItemTypeBaseComponent {
|
|
@@ -17088,7 +17048,7 @@ class XSItemTypeEventComponent extends XSItemTypeBaseComponent {
|
|
|
17088
17048
|
});
|
|
17089
17049
|
}
|
|
17090
17050
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeEventComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17091
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeEventComponent, isStandalone: true, selector: "xs-item-type-event", host: { attributes: { "xs-item-type-event-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17051
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeEventComponent, isStandalone: true, selector: "xs-item-type-event", host: { attributes: { "xs-item-type-event-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'event' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"calendar\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Evento </span>\n @if (item()['date']) {\n <span class=\"text-zinc-400\">\n \u2022 {{ formatDate(getItemDate()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17092
17052
|
}
|
|
17093
17053
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeEventComponent, decorators: [{
|
|
17094
17054
|
type: Component,
|
|
@@ -17098,7 +17058,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17098
17058
|
ImageApiPipe,
|
|
17099
17059
|
XSImageComponent,
|
|
17100
17060
|
XSIconComponent,
|
|
17101
|
-
], host: { 'xs-item-type-event-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17061
|
+
], host: { 'xs-item-type-event-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'event' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"calendar\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Evento </span>\n @if (item()['date']) {\n <span class=\"text-zinc-400\">\n \u2022 {{ formatDate(getItemDate()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17102
17062
|
}] });
|
|
17103
17063
|
|
|
17104
17064
|
class XSItemTypeEquipmentComponent extends XSItemTypeBaseComponent {
|
|
@@ -17118,7 +17078,7 @@ class XSItemTypeEquipmentComponent extends XSItemTypeBaseComponent {
|
|
|
17118
17078
|
return this.item()?.['unit'];
|
|
17119
17079
|
}
|
|
17120
17080
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeEquipmentComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17121
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeEquipmentComponent, isStandalone: true, selector: "xs-item-type-equipment", host: { attributes: { "xs-item-type-equipment-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17081
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeEquipmentComponent, isStandalone: true, selector: "xs-item-type-equipment", host: { attributes: { "xs-item-type-equipment-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'equipment' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"cogs\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Equipo </span>\n @if (getItemCategory()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemCategory() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17122
17082
|
}
|
|
17123
17083
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeEquipmentComponent, decorators: [{
|
|
17124
17084
|
type: Component,
|
|
@@ -17128,7 +17088,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17128
17088
|
ImageApiPipe,
|
|
17129
17089
|
XSImageComponent,
|
|
17130
17090
|
XSIconComponent,
|
|
17131
|
-
], host: { 'xs-item-type-equipment-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17091
|
+
], host: { 'xs-item-type-equipment-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'equipment' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"cogs\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Equipo </span>\n @if (getItemCategory()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemCategory() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17132
17092
|
}] });
|
|
17133
17093
|
|
|
17134
17094
|
class XSItemTypeMediaComponent extends XSItemTypeBaseComponent {
|
|
@@ -17148,7 +17108,7 @@ class XSItemTypeMediaComponent extends XSItemTypeBaseComponent {
|
|
|
17148
17108
|
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
|
|
17149
17109
|
}
|
|
17150
17110
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeMediaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17151
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeMediaComponent, isStandalone: true, selector: "xs-item-type-media", host: { attributes: { "xs-item-type-media-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17111
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeMediaComponent, isStandalone: true, selector: "xs-item-type-media", host: { attributes: { "xs-item-type-media-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'media' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"music\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Media </span>\n @if (item()['duration']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ formatDuration(getItemDuration()) }}\n </span>\n }\n @if (item()['genre']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ item()['genre'] }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17152
17112
|
}
|
|
17153
17113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeMediaComponent, decorators: [{
|
|
17154
17114
|
type: Component,
|
|
@@ -17158,7 +17118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17158
17118
|
ImageApiPipe,
|
|
17159
17119
|
XSImageComponent,
|
|
17160
17120
|
XSIconComponent,
|
|
17161
|
-
], host: { 'xs-item-type-media-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17121
|
+
], host: { 'xs-item-type-media-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'media' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"music\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Media </span>\n @if (item()['duration']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ formatDuration(getItemDuration()) }}\n </span>\n }\n @if (item()['genre']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ item()['genre'] }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17162
17122
|
}] });
|
|
17163
17123
|
|
|
17164
17124
|
class XSItemTypePlaylistComponent extends XSItemTypeBaseComponent {
|
|
@@ -17182,7 +17142,7 @@ class XSItemTypePlaylistComponent extends XSItemTypeBaseComponent {
|
|
|
17182
17142
|
return `${minutes}:${remainingSeconds.toString().padStart(2, '0')}`;
|
|
17183
17143
|
}
|
|
17184
17144
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypePlaylistComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17185
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypePlaylistComponent, isStandalone: true, selector: "xs-item-type-playlist", host: { attributes: { "xs-item-type-playlist-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17145
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypePlaylistComponent, isStandalone: true, selector: "xs-item-type-playlist", host: { attributes: { "xs-item-type-playlist-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'playlist' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"list\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Playlist </span>\n @if (getTracksLength() > 0) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getTracksLength() }} pistas\n </span>\n }\n @if (getItemDuration() > 0) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ formatDuration(getItemDuration()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17186
17146
|
}
|
|
17187
17147
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypePlaylistComponent, decorators: [{
|
|
17188
17148
|
type: Component,
|
|
@@ -17192,7 +17152,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17192
17152
|
ImageApiPipe,
|
|
17193
17153
|
XSImageComponent,
|
|
17194
17154
|
XSIconComponent,
|
|
17195
|
-
], host: { 'xs-item-type-playlist-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17155
|
+
], host: { 'xs-item-type-playlist-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'playlist' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"list\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Playlist </span>\n @if (getTracksLength() > 0) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getTracksLength() }} pistas\n </span>\n }\n @if (getItemDuration() > 0) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ formatDuration(getItemDuration()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17196
17156
|
}] });
|
|
17197
17157
|
|
|
17198
17158
|
class XSItemTypeOrganizationComponent extends XSItemTypeBaseComponent {
|
|
@@ -17212,7 +17172,7 @@ class XSItemTypeOrganizationComponent extends XSItemTypeBaseComponent {
|
|
|
17212
17172
|
return this.item()?.['unit'];
|
|
17213
17173
|
}
|
|
17214
17174
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeOrganizationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17215
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeOrganizationComponent, isStandalone: true, selector: "xs-item-type-organization", host: { attributes: { "xs-item-type-organization-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17175
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeOrganizationComponent, isStandalone: true, selector: "xs-item-type-organization", host: { attributes: { "xs-item-type-organization-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'organization' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"building\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Organizaci\u00F3n </span>\n @if (getItemOrgType()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemOrgType() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17216
17176
|
}
|
|
17217
17177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeOrganizationComponent, decorators: [{
|
|
17218
17178
|
type: Component,
|
|
@@ -17222,7 +17182,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17222
17182
|
ImageApiPipe,
|
|
17223
17183
|
XSImageComponent,
|
|
17224
17184
|
XSIconComponent,
|
|
17225
|
-
], host: { 'xs-item-type-organization-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17185
|
+
], host: { 'xs-item-type-organization-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'organization' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"building\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Organizaci\u00F3n </span>\n @if (getItemOrgType()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemOrgType() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17226
17186
|
}] });
|
|
17227
17187
|
|
|
17228
17188
|
class XSItemTypeSiteComponent extends XSItemTypeBaseComponent {
|
|
@@ -17240,12 +17200,11 @@ class XSItemTypeSiteComponent extends XSItemTypeBaseComponent {
|
|
|
17240
17200
|
getShortAddress(address) {
|
|
17241
17201
|
if (!address || typeof address !== 'string')
|
|
17242
17202
|
return '';
|
|
17243
|
-
// Mostrar solo la primera parte de la dirección
|
|
17244
17203
|
const parts = address.split(',');
|
|
17245
17204
|
return parts[0].trim();
|
|
17246
17205
|
}
|
|
17247
17206
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeSiteComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17248
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeSiteComponent, isStandalone: true, selector: "xs-item-type-site", host: { attributes: { "xs-item-type-site-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17207
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeSiteComponent, isStandalone: true, selector: "xs-item-type-site", host: { attributes: { "xs-item-type-site-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'site' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"map-marker-alt\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Sitio </span>\n @if (item()['address']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getShortAddress(getItemAddress()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17249
17208
|
}
|
|
17250
17209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeSiteComponent, decorators: [{
|
|
17251
17210
|
type: Component,
|
|
@@ -17255,7 +17214,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17255
17214
|
ImageApiPipe,
|
|
17256
17215
|
XSImageComponent,
|
|
17257
17216
|
XSIconComponent,
|
|
17258
|
-
], host: { 'xs-item-type-site-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17217
|
+
], host: { 'xs-item-type-site-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!item()['imageUrl']) {\n <xs-image\n [src]=\"item() | imageApi: 'site' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (item()['imageUrl']) {\n <xs-image\n [src]=\"item()['imageUrl']\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!item()['imageUrl']) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"map-marker-alt\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Sitio </span>\n @if (item()['address']) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getShortAddress(getItemAddress()) }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (item()['value'] !== undefined && item()['unit']) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ item()['value'] }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ item()['unit'] }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n item()['value'] !== undefined && item()['unit']\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17259
17218
|
}] });
|
|
17260
17219
|
|
|
17261
17220
|
class XSItemTypeTipComponent extends XSItemTypeBaseComponent {
|
|
@@ -17279,7 +17238,7 @@ class XSItemTypeTipComponent extends XSItemTypeBaseComponent {
|
|
|
17279
17238
|
return this.item()?.['unit'];
|
|
17280
17239
|
}
|
|
17281
17240
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeTipComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
17282
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeTipComponent, isStandalone: true, selector: "xs-item-type-tip", host: { attributes: { "xs-item-type-tip-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17241
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSItemTypeTipComponent, isStandalone: true, selector: "xs-item-type-tip", host: { attributes: { "xs-item-type-tip-host": "" } }, usesInheritance: true, ngImport: i0, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'tip' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"lightbulb\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Tip </span>\n @if (getItemCategory()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemCategory() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n ", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FontAwesomeModule }, { kind: "component", type: XSImageComponent, selector: "xs-image", inputs: ["config", "viewTransitionName", "src", "alt", "width", "height", "size", "rounded", "objectFit", "clickable", "item", "typeItem", "imageType", "fallbackSrc", "loading", "priority", "customClass", "generateAvatar"], outputs: ["onClick", "onLoad", "onError"] }, { kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }, { kind: "pipe", type: ImageApiPipe, name: "imageApi" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
17283
17242
|
}
|
|
17284
17243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSItemTypeTipComponent, decorators: [{
|
|
17285
17244
|
type: Component,
|
|
@@ -17289,7 +17248,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
17289
17248
|
ImageApiPipe,
|
|
17290
17249
|
XSImageComponent,
|
|
17291
17250
|
XSIconComponent,
|
|
17292
|
-
], host: { 'xs-item-type-tip-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n
|
|
17251
|
+
], host: { 'xs-item-type-tip-host': '' }, changeDetection: ChangeDetectionStrategy.OnPush, template: "\n @if (isLink()) {\n <a\n [class]=\"itemClasses\"\n (click)=\"handleClick($event)\"\n >\n <div class=\"flex items-center justify-between w-full\">\n <div class=\"flex items-center flex-1 min-w-0 gap-2\">\n <div\n class=\"flex-shrink-0 w-10 h-10 overflow-hidden rounded-xl\"\n [ngClass]=\"[\n size() === 'small' ? 'w-8 h-8' : 'w-10 h-10 mr-1',\n ]\"\n >\n @if (!getItemImageUrl()) {\n <xs-image\n [src]=\"item() | imageApi: 'tip' : 'small'\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (getItemImageUrl()) {\n <xs-image\n [src]=\"getItemImageUrl()\"\n size=\"full\"\n objectFit=\"cover\"\n ></xs-image>\n }\n @if (!getItemImageUrl()) {\n <div\n class=\"flex items-center justify-center w-full h-full rounded-xl bg-zinc-700\"\n >\n <xs-icon\n icon=\"lightbulb\"\n class=\"text-zinc-400\"\n ></xs-icon>\n </div>\n }\n </div>\n\n <div\n class=\"flex flex-col items-start justify-start w-full min-w-0\"\n >\n <h3\n class=\"w-full text-[16px] font-semibold text-white pr-2\"\n >\n <span class=\"block max-w-full pr-2 truncate\">\n {{ getItemTitle() }}\n </span>\n </h3>\n\n <div\n class=\"flex items-center min-w-0 gap-1 text-xs text-zinc-500\"\n >\n <span class=\"flex-1 truncate\"> Tip </span>\n @if (getItemCategory()) {\n <span\n class=\"text-zinc-400\"\n >\n \u2022 {{ getItemCategory() }}\n </span>\n }\n </div>\n </div>\n </div>\n\n @if (getItemValue() !== undefined && getItemUnit()) {\n <div\n class=\"flex items-center text-right mr-2\"\n >\n <span class=\"text-white font-semibold text-sm\">\n {{ getItemValue() }}\n </span>\n <span class=\"text-zinc-400 text-xs ml-1\">\n {{ getItemUnit() }}\n </span>\n </div>\n }\n\n @if (showChevron() || loading()) {\n <div\n class=\"flex items-center flex-shrink-0 h-full ml-2\"\n >\n @if (loading()) {\n <div\n class=\"w-4 h-4 border-2 border-white rounded-full border-t-transparent animate-spin\"\n aria-label=\"Cargando\"\n ></div>\n }\n @if (!loading()) {\n <xs-icon\n icon=\"chevron-right\"\n class=\"text-zinc-400\"\n [ngClass]=\"\n getItemValue() !== undefined && getItemUnit()\n ? 'ml-1'\n : 'ml-2'\n \"\n ></xs-icon>\n }\n </div>\n }\n </div>\n </a>\n }\n " }]
|
|
17293
17252
|
}] });
|
|
17294
17253
|
|
|
17295
17254
|
class XSItemTypeComponent {
|
|
@@ -18009,7 +17968,6 @@ class XSTableItemsComponent {
|
|
|
18009
17968
|
ngOnDestroy() {
|
|
18010
17969
|
this.langSubscription.unsubscribe();
|
|
18011
17970
|
}
|
|
18012
|
-
// --- LÓGICA DE VALIDACIÓN ---
|
|
18013
17971
|
isString(val) {
|
|
18014
17972
|
return typeof val === 'string';
|
|
18015
17973
|
}
|
|
@@ -18022,7 +17980,6 @@ class XSTableItemsComponent {
|
|
|
18022
17980
|
isNotArray(value) {
|
|
18023
17981
|
return !Array.isArray(value);
|
|
18024
17982
|
}
|
|
18025
|
-
// --- LÓGICA DE IMAGEN Y DISPLAY ---
|
|
18026
17983
|
get typeForImage() {
|
|
18027
17984
|
if (this.header().key === 'name' && this.item()?.['slides'])
|
|
18028
17985
|
return 'tip';
|
|
@@ -18131,7 +18088,6 @@ class XSTableItemsComponent {
|
|
|
18131
18088
|
}
|
|
18132
18089
|
return type;
|
|
18133
18090
|
}
|
|
18134
|
-
// --- LÓGICA DE FECHAS Y TIEMPO ---
|
|
18135
18091
|
isDateInRangeF(date, minDays, maxDays) {
|
|
18136
18092
|
if (!date)
|
|
18137
18093
|
return false;
|
|
@@ -18192,7 +18148,6 @@ class XSTableItemsComponent {
|
|
|
18192
18148
|
return 0;
|
|
18193
18149
|
}
|
|
18194
18150
|
}
|
|
18195
|
-
// --- LÓGICA DE ESTADOS Y CLASES ---
|
|
18196
18151
|
getStateClasses(state) {
|
|
18197
18152
|
const base = 'inline-flex items-center gap-2 px-3 py-1.5 text-sm font-semibold rounded-xl';
|
|
18198
18153
|
switch (state?.toLowerCase()) {
|
|
@@ -18248,7 +18203,6 @@ class XSTableItemsComponent {
|
|
|
18248
18203
|
getStateFullText = (state) => state
|
|
18249
18204
|
? state.toLowerCase().replaceAll('_', ' ')
|
|
18250
18205
|
: 'desconocido';
|
|
18251
|
-
// --- LÓGICA DE USUARIOS Y ROLES ---
|
|
18252
18206
|
getRoleIcon(role) {
|
|
18253
18207
|
const roles = {
|
|
18254
18208
|
admin: 'crown',
|
|
@@ -18291,7 +18245,6 @@ class XSTableItemsComponent {
|
|
|
18291
18245
|
});
|
|
18292
18246
|
return buttons;
|
|
18293
18247
|
}
|
|
18294
|
-
// --- LÓGICA DE MÉTRICAS ---
|
|
18295
18248
|
sumVisitsf(item) {
|
|
18296
18249
|
if (!item)
|
|
18297
18250
|
return 0;
|
|
@@ -18319,7 +18272,6 @@ class XSTableItemsComponent {
|
|
|
18319
18272
|
return 0;
|
|
18320
18273
|
return ((i.maxUses - (i.usedCount ?? 0)) / i.maxUses) * 100;
|
|
18321
18274
|
}
|
|
18322
|
-
// --- OTROS AYUDANTES ---
|
|
18323
18275
|
getUrlStatsPage = (item) => {
|
|
18324
18276
|
const i = item;
|
|
18325
18277
|
return i.path ? `https://xsmusic.es${i.path}` : '';
|
|
@@ -18449,11 +18401,11 @@ class XSTableCheckboxComponent {
|
|
|
18449
18401
|
this.checkedChange.emit(!this.checked());
|
|
18450
18402
|
}
|
|
18451
18403
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSTableCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
18452
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
18404
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.33", type: XSTableCheckboxComponent, isStandalone: true, selector: "xs-table-checkbox", inputs: { checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checkedChange: "checkedChange" }, ngImport: i0, template: " <label\n class=\"relative flex items-center justify-center cursor-pointer\"\n >\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [checked]=\"checked()\"\n (change)=\"onToggle()\"\n [attr.aria-label]=\"checked() ? 'Deseleccionar fila' : 'Seleccionar fila'\"\n />\n <div\n class=\"flex items-center justify-center w-5 h-5 border-2 border-zinc-800 rounded-md peer-checked:bg-zinc-100 peer-checked:border-zinc-100 transition-all duration-300\"\n [class.border-zinc-700]=\"checked()\"\n >\n @if (checked()) {\n <xs-icon\n icon=\"check\"\n class=\"text-zinc-900 text-[10px]\"\n />\n }\n </div>\n </label>\n", dependencies: [{ kind: "component", type: XSIconComponent, selector: "xs-icon", inputs: ["icon", "size", "class"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
18453
18405
|
}
|
|
18454
18406
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImport: i0, type: XSTableCheckboxComponent, decorators: [{
|
|
18455
18407
|
type: Component,
|
|
18456
|
-
args: [{ selector: 'xs-table-checkbox', standalone: true, imports: [XSIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: " <label\n class=\"relative flex items-center justify-center cursor-pointer\"\n >\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [checked]=\"checked()\"\n (change)=\"onToggle()\"\n [attr.aria-label]=\"checked() ? 'Deseleccionar fila' : 'Seleccionar fila'\"\n />\n <div\n class=\"w-5 h-5 border-2 border-zinc-800 rounded-md peer-checked:bg-zinc-100 peer-checked:border-zinc-100 transition-all duration-300\"\n [class.border-zinc-700]=\"checked()\"\n >\n <xs-icon\n
|
|
18408
|
+
args: [{ selector: 'xs-table-checkbox', standalone: true, imports: [XSIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: " <label\n class=\"relative flex items-center justify-center cursor-pointer\"\n >\n <input\n type=\"checkbox\"\n class=\"sr-only peer\"\n [checked]=\"checked()\"\n (change)=\"onToggle()\"\n [attr.aria-label]=\"checked() ? 'Deseleccionar fila' : 'Seleccionar fila'\"\n />\n <div\n class=\"flex items-center justify-center w-5 h-5 border-2 border-zinc-800 rounded-md peer-checked:bg-zinc-100 peer-checked:border-zinc-100 transition-all duration-300\"\n [class.border-zinc-700]=\"checked()\"\n >\n @if (checked()) {\n <xs-icon\n icon=\"check\"\n class=\"text-zinc-900 text-[10px]\"\n />\n }\n </div>\n </label>\n" }]
|
|
18457
18409
|
}], propDecorators: { checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], checkedChange: [{ type: i0.Output, args: ["checkedChange"] }] } });
|
|
18458
18410
|
|
|
18459
18411
|
function getVal(item, key) {
|
|
@@ -18552,7 +18504,6 @@ class XSTableComponent {
|
|
|
18552
18504
|
langVersion = signal(0, ...(ngDevMode ? [{ debugName: "langVersion" }] : []));
|
|
18553
18505
|
platformId = inject(PLATFORM_ID);
|
|
18554
18506
|
uid = `xs-table-jump-${Math.random().toString(36).slice(2, 9)}`;
|
|
18555
|
-
// -- Inputs --
|
|
18556
18507
|
headers = input([], ...(ngDevMode ? [{ debugName: "headers" }] : []));
|
|
18557
18508
|
items = input([], ...(ngDevMode ? [{ debugName: "items" }] : []));
|
|
18558
18509
|
loading = input(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
@@ -18588,21 +18539,17 @@ class XSTableComponent {
|
|
|
18588
18539
|
idKey = input('_id', ...(ngDevMode ? [{ debugName: "idKey" }] : []));
|
|
18589
18540
|
page = model(1, ...(ngDevMode ? [{ debugName: "page" }] : []));
|
|
18590
18541
|
pageSize = model(25, ...(ngDevMode ? [{ debugName: "pageSize" }] : []));
|
|
18591
|
-
// -- Sticky mode --
|
|
18592
18542
|
sticky = input(false, ...(ngDevMode ? [{ debugName: "sticky" }] : []));
|
|
18593
18543
|
containerHeight = input('100%', ...(ngDevMode ? [{ debugName: "containerHeight" }] : []));
|
|
18594
|
-
// -- Outputs --
|
|
18595
18544
|
rowClick = output();
|
|
18596
18545
|
selectionChange = output();
|
|
18597
18546
|
selectedAction = output();
|
|
18598
18547
|
sortChange = output();
|
|
18599
18548
|
searchQuerySubmit = output();
|
|
18600
|
-
// -- Content children --
|
|
18601
18549
|
cellTemplate = contentChild('xsCell', ...(ngDevMode ? [{ debugName: "cellTemplate" }] : []));
|
|
18602
18550
|
expandedContent = contentChild('xsExpandedRow', ...(ngDevMode ? [{ debugName: "expandedContent" }] : []));
|
|
18603
18551
|
toolbarExtra = contentChild('toolbarExtra', ...(ngDevMode ? [{ debugName: "toolbarExtra" }] : []));
|
|
18604
18552
|
columnTemplates = input({}, ...(ngDevMode ? [{ debugName: "columnTemplates" }] : []));
|
|
18605
|
-
// -- State signals --
|
|
18606
18553
|
selectedSet = signal(new Set(), ...(ngDevMode ? [{ debugName: "selectedSet" }] : []));
|
|
18607
18554
|
expandedItemId = signal(null, ...(ngDevMode ? [{ debugName: "expandedItemId" }] : []));
|
|
18608
18555
|
sortState = signal({
|
|
@@ -18617,7 +18564,6 @@ class XSTableComponent {
|
|
|
18617
18564
|
searchTimer;
|
|
18618
18565
|
saveTimeoutId;
|
|
18619
18566
|
resizeData = null;
|
|
18620
|
-
// -- Computeds --
|
|
18621
18567
|
showSelection = computed(() => this.selectable() ||
|
|
18622
18568
|
(this.selectedButtons()?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "showSelection" }] : []));
|
|
18623
18569
|
hasActions = computed(() => (this.actionButtons()?.length ?? 0) > 0 ||
|
|
@@ -18725,7 +18671,6 @@ class XSTableComponent {
|
|
|
18725
18671
|
this.copyable() ||
|
|
18726
18672
|
this.toolbarButtons().length > 0 ||
|
|
18727
18673
|
!!this.toolbarExtra(), ...(ngDevMode ? [{ debugName: "showToolbar" }] : []));
|
|
18728
|
-
// -- Lifecycle --
|
|
18729
18674
|
constructor() {
|
|
18730
18675
|
if (typeof this.translateService?.registerTranslations ===
|
|
18731
18676
|
'function') {
|
|
@@ -18754,7 +18699,6 @@ class XSTableComponent {
|
|
|
18754
18699
|
clearTimeout(this.saveTimeoutId);
|
|
18755
18700
|
});
|
|
18756
18701
|
}
|
|
18757
|
-
// -- Search --
|
|
18758
18702
|
onSearchInput(value) {
|
|
18759
18703
|
clearTimeout(this.searchTimer);
|
|
18760
18704
|
this.searchTimer = setTimeout(() => {
|
|
@@ -18774,7 +18718,6 @@ class XSTableComponent {
|
|
|
18774
18718
|
this.searchQuery.set('');
|
|
18775
18719
|
this.searchQuerySubmit.emit('');
|
|
18776
18720
|
}
|
|
18777
|
-
// -- Persistence --
|
|
18778
18721
|
loadState() {
|
|
18779
18722
|
const k = this.storageKey();
|
|
18780
18723
|
if (!k)
|
|
@@ -18817,7 +18760,6 @@ class XSTableComponent {
|
|
|
18817
18760
|
/* ignore */
|
|
18818
18761
|
}
|
|
18819
18762
|
}
|
|
18820
|
-
// -- Pagination --
|
|
18821
18763
|
jumpPageTimeoutId;
|
|
18822
18764
|
onJumpPageInput(event) {
|
|
18823
18765
|
const target = event.target;
|
|
@@ -18841,7 +18783,6 @@ class XSTableComponent {
|
|
|
18841
18783
|
this.pageSize.set(Number(value));
|
|
18842
18784
|
this.page.set(1);
|
|
18843
18785
|
}
|
|
18844
|
-
// -- Sort --
|
|
18845
18786
|
toggleSort(header) {
|
|
18846
18787
|
if (!header.action)
|
|
18847
18788
|
return;
|
|
@@ -18858,7 +18799,6 @@ class XSTableComponent {
|
|
|
18858
18799
|
});
|
|
18859
18800
|
this.scheduleSave();
|
|
18860
18801
|
}
|
|
18861
|
-
// -- Selection --
|
|
18862
18802
|
onToggleAll(checked) {
|
|
18863
18803
|
this.selectedSet.update((set) => {
|
|
18864
18804
|
const newSet = new Set(set);
|
|
@@ -18881,7 +18821,6 @@ class XSTableComponent {
|
|
|
18881
18821
|
return newSet;
|
|
18882
18822
|
});
|
|
18883
18823
|
}
|
|
18884
|
-
// -- Row click --
|
|
18885
18824
|
onRowClick(item) {
|
|
18886
18825
|
if (this.expandable()) {
|
|
18887
18826
|
const id = getItemId(item, this.idKey());
|
|
@@ -18890,7 +18829,6 @@ class XSTableComponent {
|
|
|
18890
18829
|
if (this.hasActions())
|
|
18891
18830
|
this.rowClick.emit(item);
|
|
18892
18831
|
}
|
|
18893
|
-
// -- Three dots --
|
|
18894
18832
|
onThreeDotsClick() {
|
|
18895
18833
|
const items = this.selectedButtons().map((btn) => ({
|
|
18896
18834
|
name: btn.name || btn.action,
|
|
@@ -18906,7 +18844,6 @@ class XSTableComponent {
|
|
|
18906
18844
|
}
|
|
18907
18845
|
});
|
|
18908
18846
|
}
|
|
18909
|
-
// -- Export --
|
|
18910
18847
|
async onCopyVisible() {
|
|
18911
18848
|
const h = this.processedHeaders();
|
|
18912
18849
|
const rows = this.renderedItems();
|
|
@@ -18941,7 +18878,6 @@ class XSTableComponent {
|
|
|
18941
18878
|
a.click();
|
|
18942
18879
|
URL.revokeObjectURL(url);
|
|
18943
18880
|
}
|
|
18944
|
-
// -- Cell context --
|
|
18945
18881
|
getCellContext(item, header, rowIndex) {
|
|
18946
18882
|
return { $implicit: item, header, rowIndex };
|
|
18947
18883
|
}
|
|
@@ -18964,7 +18900,6 @@ class XSTableComponent {
|
|
|
18964
18900
|
return cellString(item, header, this.idKey());
|
|
18965
18901
|
}
|
|
18966
18902
|
trackById = (index, item) => getItemId(item, this.idKey()) || index;
|
|
18967
|
-
// -- Column resize --
|
|
18968
18903
|
onResizeStart(key, event) {
|
|
18969
18904
|
event.preventDefault();
|
|
18970
18905
|
const target = event.currentTarget;
|
|
@@ -18999,7 +18934,6 @@ class XSTableComponent {
|
|
|
18999
18934
|
[this.resizeData.key]: newWidth,
|
|
19000
18935
|
}));
|
|
19001
18936
|
}
|
|
19002
|
-
// -- Column toggle --
|
|
19003
18937
|
toggleColumn(key) {
|
|
19004
18938
|
this.visibleColumnKeys.update((current) => {
|
|
19005
18939
|
const s = new Set(current ?? this.headers().map((h) => h.key));
|
|
@@ -19011,7 +18945,6 @@ class XSTableComponent {
|
|
|
19011
18945
|
const v = this.visibleColumnKeys();
|
|
19012
18946
|
return v ? v.has(key) : true;
|
|
19013
18947
|
}
|
|
19014
|
-
// -- Column reorder --
|
|
19015
18948
|
onHeaderDragStart(key, event) {
|
|
19016
18949
|
event.dataTransfer?.setData('text/plain', key);
|
|
19017
18950
|
}
|
|
@@ -20800,9 +20733,7 @@ class XSMapLibreService {
|
|
|
20800
20733
|
}
|
|
20801
20734
|
this.loadedImages.add(url);
|
|
20802
20735
|
}
|
|
20803
|
-
catch {
|
|
20804
|
-
// ignore
|
|
20805
|
-
}
|
|
20736
|
+
catch { }
|
|
20806
20737
|
}));
|
|
20807
20738
|
await new Promise((r) => setTimeout(r, 50));
|
|
20808
20739
|
}
|
|
@@ -23195,28 +23126,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.33", ngImpo
|
|
|
23195
23126
|
args: [{ selector: 'xs-feedback', host: { 'xs-feedback-host': '' }, imports: [CommonModule, FormsModule, XSIconComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"xs-feedback-container\">\n @if (state() === 'initial') {\n <div class=\"xs-feedback-row\">\n <span class=\"xs-feedback-question\">{{ effectiveQuestion() }}</span>\n <div class=\"xs-feedback-actions\">\n <button\n class=\"xs-feedback-btn xs-feedback-btn--positive\"\n (click)=\"onVote('positive')\"\n aria-label=\"Positivo\"\n type=\"button\">\n <xs-icon icon=\"thumbs-up\" size=\"sm\"></xs-icon>\n </button>\n <button\n class=\"xs-feedback-btn xs-feedback-btn--negative\"\n (click)=\"onVote('negative')\"\n aria-label=\"Negativo\"\n type=\"button\">\n <xs-icon icon=\"thumbs-down\" size=\"sm\"></xs-icon>\n </button>\n </div>\n </div>\n }\n\n @if (state() === 'positive') {\n <div class=\"xs-feedback-row\">\n <span class=\"xs-feedback-thanks\">Gracias por tu feedback</span>\n @if (effectiveAllowComment()) {\n <div class=\"xs-feedback-comment-row\">\n <input\n class=\"xs-feedback-input\"\n type=\"text\"\n placeholder=\"Comentario opcional...\"\n [ngModel]=\"commentText()\"\n (ngModelChange)=\"commentText.set($event)\"\n (keyup.enter)=\"onSubmitComment()\"\n />\n <button\n class=\"xs-feedback-submit\"\n (click)=\"onSubmitComment()\"\n type=\"button\">\n Enviar\n </button>\n <button\n class=\"xs-feedback-skip\"\n (click)=\"onSkipComment()\"\n type=\"button\">\n Omitir\n </button>\n </div>\n }\n </div>\n }\n\n @if (state() === 'negative') {\n <div class=\"xs-feedback-col\">\n <span class=\"xs-feedback-thanks\">Gracias por tu feedback</span>\n @if (effectiveShowNegativeOptions() && effectiveNegativeOptions().length > 0) {\n <span class=\"xs-feedback-subtitle\">\u00BFQu\u00E9 ha fallado?</span>\n <div class=\"xs-feedback-options\">\n @for (option of effectiveNegativeOptions(); track option) {\n <button\n class=\"xs-feedback-option\"\n [class.xs-feedback-option--selected]=\"selectedReason() === option\"\n (click)=\"onNegativeReasonSelect(option)\"\n type=\"button\">\n {{ option }}\n </button>\n }\n </div>\n }\n @if (effectiveAllowComment()) {\n <div class=\"xs-feedback-comment-row\">\n <input\n class=\"xs-feedback-input\"\n type=\"text\"\n placeholder=\"Comentario opcional...\"\n [ngModel]=\"commentText()\"\n (ngModelChange)=\"commentText.set($event)\"\n (keyup.enter)=\"onSubmitComment()\"\n />\n <button\n class=\"xs-feedback-submit\"\n (click)=\"onSubmitComment()\"\n type=\"button\">\n Enviar\n </button>\n <button\n class=\"xs-feedback-skip\"\n (click)=\"onSkipComment()\"\n type=\"button\">\n Omitir\n </button>\n </div>\n }\n </div>\n }\n\n @if (state() === 'submitted') {\n <div class=\"xs-feedback-row\">\n <span class=\"xs-feedback-thanks\">Gracias por tu feedback</span>\n </div>\n }\n</div>\n", styles: [":host{display:block;width:100%}.xs-feedback-container{width:100%;border-radius:.75rem;background-color:#18181b80;padding:.75rem 1rem}.xs-feedback-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.xs-feedback-col{display:flex;flex-direction:column;gap:.5rem}.xs-feedback-question{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1))}.xs-feedback-thanks{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.xs-feedback-subtitle{font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1))}.xs-feedback-actions{display:flex;flex-shrink:0;align-items:center;gap:.25rem}.xs-feedback-btn{display:flex;height:1.75rem;width:1.75rem;cursor:pointer;align-items:center;justify-content:center;border-radius:.375rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.xs-feedback-btn:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.xs-feedback-btn--positive:hover{--tw-text-opacity: 1;color:rgb(74 222 128 / var(--tw-text-opacity, 1))}.xs-feedback-btn--negative:hover{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.xs-feedback-options{display:flex;flex-wrap:wrap;gap:.5rem}.xs-feedback-option{cursor:pointer;border-radius:.5rem;border-width:1px;border-color:#3f3f4680;background-color:transparent;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.xs-feedback-option:hover{--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.xs-feedback-option--selected{--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(39 39 42 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.xs-feedback-comment-row{margin-top:.25rem;display:flex;align-items:center;gap:.5rem}.xs-feedback-input{flex:1 1 0%;border-radius:.5rem;border-width:1px;border-color:#3f3f4680;background-color:transparent;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.xs-feedback-input::placeholder{--tw-placeholder-opacity: 1;color:rgb(82 82 91 / var(--tw-placeholder-opacity, 1))}.xs-feedback-input{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.xs-feedback-input:focus{--tw-border-opacity: 1;border-color:rgb(113 113 122 / var(--tw-border-opacity, 1));outline:2px solid transparent;outline-offset:2px}.xs-feedback-submit{cursor:pointer;border-radius:.5rem;--tw-bg-opacity: 1;background-color:rgb(63 63 70 / var(--tw-bg-opacity, 1));padding:.375rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.xs-feedback-submit:hover{--tw-bg-opacity: 1;background-color:rgb(82 82 91 / var(--tw-bg-opacity, 1))}.xs-feedback-skip{cursor:pointer;border-radius:.5rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;--tw-text-opacity: 1;color:rgb(113 113 122 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.xs-feedback-skip:hover{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}\n"] }]
|
|
23196
23127
|
}], propDecorators: { survey: [{ type: i0.Input, args: [{ isSignal: true, alias: "survey", required: true }] }], question: [{ type: i0.Input, args: [{ isSignal: true, alias: "question", required: false }] }], allowComment: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowComment", required: false }] }], showNegativeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "showNegativeOptions", required: false }] }], negativeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "negativeOptions", required: false }] }], voteSubmitted: [{ type: i0.Output, args: ["voteSubmitted"] }], commentSubmitted: [{ type: i0.Output, args: ["commentSubmitted"] }], negativeReasonSubmitted: [{ type: i0.Output, args: ["negativeReasonSubmitted"] }], dismissed: [{ type: i0.Output, args: ["dismissed"] }] } });
|
|
23197
23128
|
|
|
23198
|
-
// Core UI primitives — always bundled
|
|
23199
|
-
|
|
23200
23129
|
// Form components — lazy-loadable (brings @ngx-formly)
|
|
23201
23130
|
|
|
23202
|
-
// Layout components — section titles, tabs, breadcrumbs, scroll
|
|
23203
|
-
|
|
23204
|
-
// Data display — tables, lists, cards, filters, info blocks
|
|
23205
|
-
|
|
23206
23131
|
// Chart components — lazy-loadable (brings chart.js ~220KB)
|
|
23207
23132
|
|
|
23208
|
-
// Profile components — used in artist/event/site detail pages
|
|
23209
|
-
|
|
23210
|
-
// Alert components — notification system
|
|
23211
|
-
|
|
23212
|
-
// Auth components — login, register, 2FA
|
|
23213
|
-
|
|
23214
23133
|
// Map components — lazy-loadable (brings maplibre ~1MB)
|
|
23215
23134
|
|
|
23216
|
-
/*
|
|
23217
|
-
* Public API Surface of xs-ui
|
|
23218
|
-
*/
|
|
23219
|
-
|
|
23220
23135
|
const LIB_STORIES = [
|
|
23221
23136
|
() => import('./xsmusices-ui-xs-action-sheet.xsstory-CBpZBlfx.mjs').then((m) => m.story),
|
|
23222
23137
|
() => import('./xsmusices-ui-xs-block.xsstory-GXV6UFJo.mjs').then((m) => m.story),
|
|
@@ -23228,14 +23143,14 @@ const LIB_STORIES = [
|
|
|
23228
23143
|
() => import('./xsmusices-ui-xs-icon.xsstory-asFaHy5H.mjs').then((m) => m.story),
|
|
23229
23144
|
() => import('./xsmusices-ui-xs-image.xsstory-BaeUg3Zp.mjs').then((m) => m.story),
|
|
23230
23145
|
() => import('./xsmusices-ui-xs-modal.xsstory-B96CYHF0.mjs').then((m) => m.story),
|
|
23231
|
-
() => import('./xsmusices-ui-xs-navbar.xsstory-
|
|
23146
|
+
() => import('./xsmusices-ui-xs-navbar.xsstory-BDW0nLAH.mjs').then((m) => m.story),
|
|
23232
23147
|
() => import('./xsmusices-ui-xs-navbar-sidebar.xsstory-DHmPSARx.mjs').then((m) => m.story),
|
|
23233
23148
|
() => import('./xsmusices-ui-stats-card.xsstory-PWTUDysc.mjs').then((m) => m.story),
|
|
23234
23149
|
() => import('./xsmusices-ui-xs-toast.xsstory-BBhGu-j4.mjs').then((m) => m.story),
|
|
23235
23150
|
() => import('./xsmusices-ui-xs-alert.xsstory-CXTRbHHS.mjs').then((m) => m.story),
|
|
23236
23151
|
() => import('./xsmusices-ui-xs-alert-group.xsstory-HMGGLHfv.mjs').then((m) => m.story),
|
|
23237
23152
|
() => import('./xsmusices-ui-xs-auth.xsstory-DxO8iDpd.mjs').then((m) => m.story),
|
|
23238
|
-
() => import('./xsmusices-ui-xs-badge.xsstory-
|
|
23153
|
+
() => import('./xsmusices-ui-xs-badge.xsstory-B1QXLQ4H.mjs').then((m) => m.story),
|
|
23239
23154
|
() => import('./xsmusices-ui-xs-breadcrumbs.xsstory-CNyBeURd.mjs').then((m) => m.story),
|
|
23240
23155
|
() => import('./xsmusices-ui-xs-date-mini.xsstory-DXog7Yhg.mjs').then((m) => m.story),
|
|
23241
23156
|
() => import('./xsmusices-ui-xs-filter-panel.xsstory-DbvxGppo.mjs').then((m) => m.story),
|
|
@@ -23243,11 +23158,11 @@ const LIB_STORIES = [
|
|
|
23243
23158
|
() => import('./xsmusices-ui-xs-info-blocks.xsstory-BHtaC7U6.mjs').then((m) => m.story),
|
|
23244
23159
|
() => import('./xsmusices-ui-xs-item-card.xsstory-EGJ6itkx.mjs').then((m) => m.story),
|
|
23245
23160
|
() => import('./xsmusices-ui-xs-item-action.xsstory-839UkJyC.mjs').then((m) => m.story),
|
|
23246
|
-
() => import('./xsmusices-ui-xs-item-compact.xsstory-
|
|
23247
|
-
() => import('./xsmusices-ui-xs-item-type.xsstory-
|
|
23248
|
-
() => import('./xsmusices-ui-xs-items-slider.xsstory-
|
|
23249
|
-
() => import('./xsmusices-ui-xs-list.xsstory-
|
|
23250
|
-
() => import('./xsmusices-ui-xs-map.xsstory-
|
|
23161
|
+
() => import('./xsmusices-ui-xs-item-compact.xsstory-LhApuPL7.mjs').then((m) => m.story),
|
|
23162
|
+
() => import('./xsmusices-ui-xs-item-type.xsstory-DUeCnW0R.mjs').then((m) => m.story),
|
|
23163
|
+
() => import('./xsmusices-ui-xs-items-slider.xsstory-Dt0bXZI_.mjs').then((m) => m.story),
|
|
23164
|
+
() => import('./xsmusices-ui-xs-list.xsstory-lElGfvcY.mjs').then((m) => m.story),
|
|
23165
|
+
() => import('./xsmusices-ui-xs-map.xsstory-C__bUaLQ.mjs').then((m) => m.story),
|
|
23251
23166
|
() => import('./xsmusices-ui-xs-maplibre.xsstory-u_NroLqJ.mjs').then((m) => m.story),
|
|
23252
23167
|
() => import('./xsmusices-ui-xs-profile-comments.xsstory-CHpCDxLe.mjs').then((m) => m.story),
|
|
23253
23168
|
() => import('./xsmusices-ui-xs-profile-current-event.xsstory-BtRq4wE4.mjs').then((m) => m.story),
|
|
@@ -23261,7 +23176,7 @@ const LIB_STORIES = [
|
|
|
23261
23176
|
() => import('./xsmusices-ui-xs-profile-verified.xsstory-HtbUlJFX.mjs').then((m) => m.story),
|
|
23262
23177
|
() => import('./xsmusices-ui-xs-skeleton-for-slider.xsstory-k-uutKIV.mjs').then((m) => m.story),
|
|
23263
23178
|
() => import('./xsmusices-ui-xs-table-items.xsstory-vR5x6wZe.mjs').then((m) => m.story),
|
|
23264
|
-
() => import('./xsmusices-ui-xs-table.xsstory-
|
|
23179
|
+
() => import('./xsmusices-ui-xs-table.xsstory-s13JV3k9.mjs').then((m) => m.story),
|
|
23265
23180
|
() => import('./xsmusices-ui-xs-title-collapse.xsstory-COqb1jdP.mjs').then((m) => m.story),
|
|
23266
23181
|
() => Promise.resolve().then(function () { return xsSpinner_xsstory; }).then((m) => m.story),
|
|
23267
23182
|
() => import('./xsmusices-ui-country-flag.xsstory-BPTu5b4i.mjs').then((m) => m.story),
|
|
@@ -23417,10 +23332,6 @@ const uiComponentsExportWithDateMini = [
|
|
|
23417
23332
|
XSDateMiniComponent,
|
|
23418
23333
|
];
|
|
23419
23334
|
|
|
23420
|
-
/*
|
|
23421
|
-
* Public API Surface of xs-ui
|
|
23422
|
-
*/
|
|
23423
|
-
|
|
23424
23335
|
/**
|
|
23425
23336
|
* Generated bundle index. Do not edit.
|
|
23426
23337
|
*/
|