@solcre-org/core-ui 2.12.28 → 2.12.29
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.
|
@@ -12243,11 +12243,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
12243
12243
|
// Este archivo es generado automáticamente por scripts/update-version.js
|
|
12244
12244
|
// No edites manualmente este archivo
|
|
12245
12245
|
const VERSION = {
|
|
12246
|
-
full: '2.12.
|
|
12246
|
+
full: '2.12.29',
|
|
12247
12247
|
major: 2,
|
|
12248
12248
|
minor: 12,
|
|
12249
|
-
patch:
|
|
12250
|
-
timestamp: '2025-09-
|
|
12249
|
+
patch: 29,
|
|
12250
|
+
timestamp: '2025-09-11T15:51:08.747Z',
|
|
12251
12251
|
buildDate: '11/9/2025'
|
|
12252
12252
|
};
|
|
12253
12253
|
|
|
@@ -15136,6 +15136,373 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
15136
15136
|
args: ['document:keydown', ['$event']]
|
|
15137
15137
|
}] } });
|
|
15138
15138
|
|
|
15139
|
+
var GalleryLayoutType;
|
|
15140
|
+
(function (GalleryLayoutType) {
|
|
15141
|
+
GalleryLayoutType["MAIN_LEFT"] = "main-left";
|
|
15142
|
+
GalleryLayoutType["MAIN_RIGHT"] = "main-right";
|
|
15143
|
+
GalleryLayoutType["MAIN_TOP"] = "main-top";
|
|
15144
|
+
GalleryLayoutType["SINGLE"] = "single";
|
|
15145
|
+
})(GalleryLayoutType || (GalleryLayoutType = {}));
|
|
15146
|
+
|
|
15147
|
+
var GalleryAnimationType;
|
|
15148
|
+
(function (GalleryAnimationType) {
|
|
15149
|
+
GalleryAnimationType["FADE"] = "fade";
|
|
15150
|
+
GalleryAnimationType["SLIDE_DOWN"] = "slide-down";
|
|
15151
|
+
GalleryAnimationType["SLIDE_UP"] = "slide-up";
|
|
15152
|
+
GalleryAnimationType["SLIDE_LEFT"] = "slide-left";
|
|
15153
|
+
GalleryAnimationType["SLIDE_RIGHT"] = "slide-right";
|
|
15154
|
+
GalleryAnimationType["ZOOM"] = "zoom";
|
|
15155
|
+
GalleryAnimationType["NONE"] = "none";
|
|
15156
|
+
})(GalleryAnimationType || (GalleryAnimationType = {}));
|
|
15157
|
+
|
|
15158
|
+
class GalleryModalService {
|
|
15159
|
+
_isModalOpen = signal(false);
|
|
15160
|
+
_currentImages = signal([]);
|
|
15161
|
+
_currentIndex = signal(0);
|
|
15162
|
+
_isClosing = signal(false);
|
|
15163
|
+
isModalOpen = this._isModalOpen.asReadonly();
|
|
15164
|
+
currentImages = this._currentImages.asReadonly();
|
|
15165
|
+
currentIndex = this._currentIndex.asReadonly();
|
|
15166
|
+
currentImage = computed(() => {
|
|
15167
|
+
const images = this._currentImages();
|
|
15168
|
+
const index = this._currentIndex();
|
|
15169
|
+
return images[index] || null;
|
|
15170
|
+
});
|
|
15171
|
+
hasPrevious = computed(() => {
|
|
15172
|
+
return this._currentIndex() > 0;
|
|
15173
|
+
});
|
|
15174
|
+
hasNext = computed(() => {
|
|
15175
|
+
const images = this._currentImages();
|
|
15176
|
+
const index = this._currentIndex();
|
|
15177
|
+
return index < images.length - 1;
|
|
15178
|
+
});
|
|
15179
|
+
imageCounter = computed(() => {
|
|
15180
|
+
const total = this._currentImages().length;
|
|
15181
|
+
const current = this._currentIndex() + 1;
|
|
15182
|
+
return `${current} / ${total}`;
|
|
15183
|
+
});
|
|
15184
|
+
isClosing = this._isClosing.asReadonly();
|
|
15185
|
+
openModal(images, initialIndex = 0) {
|
|
15186
|
+
if (!images || images.length === 0) {
|
|
15187
|
+
console.warn('GalleryModalService: No se proporcionaron imágenes');
|
|
15188
|
+
return;
|
|
15189
|
+
}
|
|
15190
|
+
this._currentImages.set(images);
|
|
15191
|
+
this._currentIndex.set(Math.min(initialIndex, images.length - 1));
|
|
15192
|
+
this._isClosing.set(false);
|
|
15193
|
+
this._isModalOpen.set(true);
|
|
15194
|
+
}
|
|
15195
|
+
closeModal(immediate = false) {
|
|
15196
|
+
if (!this._isModalOpen()) {
|
|
15197
|
+
return;
|
|
15198
|
+
}
|
|
15199
|
+
if (immediate) {
|
|
15200
|
+
this._isModalOpen.set(false);
|
|
15201
|
+
this._isClosing.set(false);
|
|
15202
|
+
this._currentImages.set([]);
|
|
15203
|
+
this._currentIndex.set(0);
|
|
15204
|
+
}
|
|
15205
|
+
else {
|
|
15206
|
+
this._isClosing.set(true);
|
|
15207
|
+
setTimeout(() => {
|
|
15208
|
+
this._isModalOpen.set(false);
|
|
15209
|
+
this._isClosing.set(false);
|
|
15210
|
+
this._currentImages.set([]);
|
|
15211
|
+
this._currentIndex.set(0);
|
|
15212
|
+
}, 200);
|
|
15213
|
+
}
|
|
15214
|
+
}
|
|
15215
|
+
previousImage() {
|
|
15216
|
+
if (this.hasPrevious()) {
|
|
15217
|
+
this._currentIndex.update(index => index - 1);
|
|
15218
|
+
}
|
|
15219
|
+
}
|
|
15220
|
+
nextImage() {
|
|
15221
|
+
if (this.hasNext()) {
|
|
15222
|
+
this._currentIndex.update(index => index + 1);
|
|
15223
|
+
}
|
|
15224
|
+
}
|
|
15225
|
+
goToImage(index) {
|
|
15226
|
+
const images = this._currentImages();
|
|
15227
|
+
if (index >= 0 && index < images.length) {
|
|
15228
|
+
this._currentIndex.set(index);
|
|
15229
|
+
}
|
|
15230
|
+
}
|
|
15231
|
+
getImageIndexById(imageId) {
|
|
15232
|
+
const images = this._currentImages();
|
|
15233
|
+
return images.findIndex(img => img.id === imageId);
|
|
15234
|
+
}
|
|
15235
|
+
updateImages(images) {
|
|
15236
|
+
if (this._isModalOpen()) {
|
|
15237
|
+
this._currentImages.set(images);
|
|
15238
|
+
if (this._currentIndex() >= images.length) {
|
|
15239
|
+
this._currentIndex.set(Math.max(0, images.length - 1));
|
|
15240
|
+
}
|
|
15241
|
+
}
|
|
15242
|
+
}
|
|
15243
|
+
reset() {
|
|
15244
|
+
this._isModalOpen.set(false);
|
|
15245
|
+
this._isClosing.set(false);
|
|
15246
|
+
this._currentImages.set([]);
|
|
15247
|
+
this._currentIndex.set(0);
|
|
15248
|
+
}
|
|
15249
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GalleryModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
15250
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GalleryModalService, providedIn: 'root' });
|
|
15251
|
+
}
|
|
15252
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GalleryModalService, decorators: [{
|
|
15253
|
+
type: Injectable,
|
|
15254
|
+
args: [{
|
|
15255
|
+
providedIn: 'root'
|
|
15256
|
+
}]
|
|
15257
|
+
}] });
|
|
15258
|
+
|
|
15259
|
+
class GenericGalleryComponent {
|
|
15260
|
+
galleryModalService = inject(GalleryModalService);
|
|
15261
|
+
images = input.required();
|
|
15262
|
+
config = input({});
|
|
15263
|
+
imageClick = output();
|
|
15264
|
+
modalOpen = output();
|
|
15265
|
+
modalClose = output();
|
|
15266
|
+
imageChange = output();
|
|
15267
|
+
imageLoadingStates = signal(new Map());
|
|
15268
|
+
imageErrorStates = signal(new Map());
|
|
15269
|
+
SkeletonType = SkeletonType;
|
|
15270
|
+
SkeletonAnimation = SkeletonAnimation;
|
|
15271
|
+
defaultConfig = {
|
|
15272
|
+
layoutType: GalleryLayoutType.MAIN_LEFT,
|
|
15273
|
+
totalItems: 3,
|
|
15274
|
+
gap: '8px',
|
|
15275
|
+
borderRadius: '16px',
|
|
15276
|
+
showCounter: true,
|
|
15277
|
+
showNavigation: true,
|
|
15278
|
+
enableKeyboardNavigation: true,
|
|
15279
|
+
closeOnOutsideClick: true,
|
|
15280
|
+
showDescription: false,
|
|
15281
|
+
animationType: GalleryAnimationType.FADE,
|
|
15282
|
+
animationInDuration: 400,
|
|
15283
|
+
animationOutDuration: 200,
|
|
15284
|
+
lazyLoading: true
|
|
15285
|
+
};
|
|
15286
|
+
finalConfig = computed(() => ({
|
|
15287
|
+
...this.defaultConfig,
|
|
15288
|
+
...this.config()
|
|
15289
|
+
}));
|
|
15290
|
+
mainImage = computed(() => {
|
|
15291
|
+
const imgs = this.images();
|
|
15292
|
+
return imgs.length > 0 ? imgs[0] : null;
|
|
15293
|
+
});
|
|
15294
|
+
thumbnailImages = computed(() => {
|
|
15295
|
+
const imgs = this.images();
|
|
15296
|
+
const config = this.finalConfig();
|
|
15297
|
+
const totalItems = config.totalItems || 3;
|
|
15298
|
+
if (config.layoutType === GalleryLayoutType.MAIN_LEFT ||
|
|
15299
|
+
config.layoutType === GalleryLayoutType.MAIN_RIGHT) {
|
|
15300
|
+
return imgs.slice(1, totalItems);
|
|
15301
|
+
}
|
|
15302
|
+
return imgs.slice(0, totalItems);
|
|
15303
|
+
});
|
|
15304
|
+
containerClasses = computed(() => {
|
|
15305
|
+
const config = this.finalConfig();
|
|
15306
|
+
const classes = ['c-gallery-grid', 'js-gallery-grid'];
|
|
15307
|
+
if (config.layoutType === GalleryLayoutType.MAIN_LEFT ||
|
|
15308
|
+
config.layoutType === GalleryLayoutType.MAIN_RIGHT) {
|
|
15309
|
+
classes.push('c-gallery-grid--side-items');
|
|
15310
|
+
}
|
|
15311
|
+
if (config.customClass) {
|
|
15312
|
+
classes.push(config.customClass);
|
|
15313
|
+
}
|
|
15314
|
+
return classes.join(' ');
|
|
15315
|
+
});
|
|
15316
|
+
containerStyles = computed(() => {
|
|
15317
|
+
const config = this.finalConfig();
|
|
15318
|
+
const inputConfig = this.config();
|
|
15319
|
+
let sidesSize;
|
|
15320
|
+
if (inputConfig.sidesSize) {
|
|
15321
|
+
sidesSize = inputConfig.sidesSize;
|
|
15322
|
+
}
|
|
15323
|
+
else {
|
|
15324
|
+
switch (config.layoutType) {
|
|
15325
|
+
case GalleryLayoutType.MAIN_LEFT:
|
|
15326
|
+
case GalleryLayoutType.MAIN_TOP:
|
|
15327
|
+
sidesSize = '1.5fr 0.5fr';
|
|
15328
|
+
break;
|
|
15329
|
+
case GalleryLayoutType.MAIN_RIGHT:
|
|
15330
|
+
sidesSize = '0.5fr 1.5fr';
|
|
15331
|
+
break;
|
|
15332
|
+
default:
|
|
15333
|
+
sidesSize = '1.5fr 0.5fr';
|
|
15334
|
+
break;
|
|
15335
|
+
}
|
|
15336
|
+
}
|
|
15337
|
+
const styles = {
|
|
15338
|
+
'--total-items': config.totalItems || 3,
|
|
15339
|
+
'--sides-size': sidesSize,
|
|
15340
|
+
};
|
|
15341
|
+
return styles;
|
|
15342
|
+
});
|
|
15343
|
+
isModalOpen = this.galleryModalService.isModalOpen;
|
|
15344
|
+
isModalClosing = this.galleryModalService.isClosing;
|
|
15345
|
+
currentModalImage = this.galleryModalService.currentImage;
|
|
15346
|
+
currentModalIndex = this.galleryModalService.currentIndex;
|
|
15347
|
+
modalImageCounter = this.galleryModalService.imageCounter;
|
|
15348
|
+
canNavigatePrevious = this.galleryModalService.hasPrevious;
|
|
15349
|
+
canNavigateNext = this.galleryModalService.hasNext;
|
|
15350
|
+
keyboardListener;
|
|
15351
|
+
constructor() {
|
|
15352
|
+
effect(() => {
|
|
15353
|
+
const images = this.images();
|
|
15354
|
+
if (images.length > 0) {
|
|
15355
|
+
this.initializeImageStates();
|
|
15356
|
+
}
|
|
15357
|
+
});
|
|
15358
|
+
effect(() => {
|
|
15359
|
+
const config = this.finalConfig();
|
|
15360
|
+
if (config.enableKeyboardNavigation && this.isModalOpen()) {
|
|
15361
|
+
this.setupKeyboardNavigation();
|
|
15362
|
+
}
|
|
15363
|
+
else {
|
|
15364
|
+
this.removeKeyboardNavigation();
|
|
15365
|
+
}
|
|
15366
|
+
});
|
|
15367
|
+
effect(() => {
|
|
15368
|
+
const image = this.currentModalImage();
|
|
15369
|
+
const index = this.currentModalIndex();
|
|
15370
|
+
if (image && this.isModalOpen()) {
|
|
15371
|
+
this.imageChange.emit({ image, index });
|
|
15372
|
+
}
|
|
15373
|
+
});
|
|
15374
|
+
}
|
|
15375
|
+
ngOnDestroy() {
|
|
15376
|
+
this.removeKeyboardNavigation();
|
|
15377
|
+
this.galleryModalService.reset();
|
|
15378
|
+
}
|
|
15379
|
+
onImageClick(image, index) {
|
|
15380
|
+
this.imageClick.emit({ image, index });
|
|
15381
|
+
this.openModal(index);
|
|
15382
|
+
}
|
|
15383
|
+
openModal(initialIndex = 0) {
|
|
15384
|
+
const images = this.images();
|
|
15385
|
+
this.galleryModalService.openModal(images, initialIndex);
|
|
15386
|
+
this.modalOpen.emit({ images, index: initialIndex });
|
|
15387
|
+
}
|
|
15388
|
+
closeModal() {
|
|
15389
|
+
const config = this.finalConfig();
|
|
15390
|
+
const immediate = config.animationType === GalleryAnimationType.NONE;
|
|
15391
|
+
this.galleryModalService.closeModal(immediate);
|
|
15392
|
+
this.modalClose.emit();
|
|
15393
|
+
}
|
|
15394
|
+
previousImage() {
|
|
15395
|
+
this.galleryModalService.previousImage();
|
|
15396
|
+
}
|
|
15397
|
+
nextImage() {
|
|
15398
|
+
this.galleryModalService.nextImage();
|
|
15399
|
+
}
|
|
15400
|
+
onOverlayClick() {
|
|
15401
|
+
if (this.finalConfig().closeOnOutsideClick) {
|
|
15402
|
+
this.closeModal();
|
|
15403
|
+
}
|
|
15404
|
+
}
|
|
15405
|
+
setupKeyboardNavigation() {
|
|
15406
|
+
this.removeKeyboardNavigation();
|
|
15407
|
+
this.keyboardListener = (event) => {
|
|
15408
|
+
if (!this.isModalOpen())
|
|
15409
|
+
return;
|
|
15410
|
+
switch (event.key) {
|
|
15411
|
+
case 'ArrowLeft':
|
|
15412
|
+
event.preventDefault();
|
|
15413
|
+
this.previousImage();
|
|
15414
|
+
break;
|
|
15415
|
+
case 'ArrowRight':
|
|
15416
|
+
event.preventDefault();
|
|
15417
|
+
this.nextImage();
|
|
15418
|
+
break;
|
|
15419
|
+
case 'Escape':
|
|
15420
|
+
event.preventDefault();
|
|
15421
|
+
this.closeModal();
|
|
15422
|
+
break;
|
|
15423
|
+
}
|
|
15424
|
+
};
|
|
15425
|
+
document.addEventListener('keydown', this.keyboardListener);
|
|
15426
|
+
}
|
|
15427
|
+
removeKeyboardNavigation() {
|
|
15428
|
+
if (this.keyboardListener) {
|
|
15429
|
+
document.removeEventListener('keydown', this.keyboardListener);
|
|
15430
|
+
this.keyboardListener = undefined;
|
|
15431
|
+
}
|
|
15432
|
+
}
|
|
15433
|
+
getModalClasses() {
|
|
15434
|
+
const classes = ['c-gallery-modal', 'js-gallery-modal'];
|
|
15435
|
+
if (this.isModalOpen()) {
|
|
15436
|
+
classes.push('is-visible');
|
|
15437
|
+
}
|
|
15438
|
+
if (this.isModalClosing()) {
|
|
15439
|
+
classes.push('is-closing');
|
|
15440
|
+
}
|
|
15441
|
+
return classes.join(' ');
|
|
15442
|
+
}
|
|
15443
|
+
getModalStyles() {
|
|
15444
|
+
const config = this.finalConfig();
|
|
15445
|
+
return {
|
|
15446
|
+
'--_modal-animation-in': `${config.animationInDuration}ms`,
|
|
15447
|
+
'--_modal-animation-out': `${config.animationOutDuration}ms`
|
|
15448
|
+
};
|
|
15449
|
+
}
|
|
15450
|
+
getImageKey(image, index) {
|
|
15451
|
+
return image.id?.toString() || image.src || index.toString();
|
|
15452
|
+
}
|
|
15453
|
+
isImageLoading(image, index) {
|
|
15454
|
+
const key = this.getImageKey(image, index);
|
|
15455
|
+
return this.imageLoadingStates().get(key) ?? true;
|
|
15456
|
+
}
|
|
15457
|
+
hasImageError(image, index) {
|
|
15458
|
+
const key = this.getImageKey(image, index);
|
|
15459
|
+
return this.imageErrorStates().get(key) ?? false;
|
|
15460
|
+
}
|
|
15461
|
+
onImageLoad(image, index) {
|
|
15462
|
+
const key = this.getImageKey(image, index);
|
|
15463
|
+
const loadingStates = new Map(this.imageLoadingStates());
|
|
15464
|
+
const errorStates = new Map(this.imageErrorStates());
|
|
15465
|
+
loadingStates.set(key, false);
|
|
15466
|
+
errorStates.set(key, false);
|
|
15467
|
+
this.imageLoadingStates.set(loadingStates);
|
|
15468
|
+
this.imageErrorStates.set(errorStates);
|
|
15469
|
+
}
|
|
15470
|
+
onImageError(image, index) {
|
|
15471
|
+
const key = this.getImageKey(image, index);
|
|
15472
|
+
const loadingStates = new Map(this.imageLoadingStates());
|
|
15473
|
+
const errorStates = new Map(this.imageErrorStates());
|
|
15474
|
+
loadingStates.set(key, false);
|
|
15475
|
+
errorStates.set(key, true);
|
|
15476
|
+
this.imageLoadingStates.set(loadingStates);
|
|
15477
|
+
this.imageErrorStates.set(errorStates);
|
|
15478
|
+
}
|
|
15479
|
+
initializeImageStates() {
|
|
15480
|
+
const images = this.images();
|
|
15481
|
+
const loadingStates = new Map();
|
|
15482
|
+
const errorStates = new Map();
|
|
15483
|
+
images.forEach((image, index) => {
|
|
15484
|
+
const key = this.getImageKey(image, index);
|
|
15485
|
+
loadingStates.set(key, true);
|
|
15486
|
+
errorStates.set(key, false);
|
|
15487
|
+
});
|
|
15488
|
+
this.imageLoadingStates.set(loadingStates);
|
|
15489
|
+
this.imageErrorStates.set(errorStates);
|
|
15490
|
+
}
|
|
15491
|
+
getImageLoading(isMainImage = false) {
|
|
15492
|
+
const config = this.finalConfig();
|
|
15493
|
+
if (isMainImage) {
|
|
15494
|
+
return 'eager';
|
|
15495
|
+
}
|
|
15496
|
+
return config.lazyLoading ? 'lazy' : 'eager';
|
|
15497
|
+
}
|
|
15498
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericGalleryComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15499
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: GenericGalleryComponent, isStandalone: true, selector: "core-generic-gallery", inputs: { images: { classPropertyName: "images", publicName: "images", isSignal: true, isRequired: true, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { imageClick: "imageClick", modalOpen: "modalOpen", modalClose: "modalClose", imageChange: "imageChange" }, providers: [], ngImport: i0, template: "<div [class]=\"containerClasses()\" \n [ngStyle]=\"containerStyles()\">\n \n @if (finalConfig().layoutType === 'main-left') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-right') {\n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n \n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-top') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n\n @if (finalConfig().layoutType === 'single') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Single image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n</div>\n\n@if (isModalOpen()) {\n <div [class]=\"getModalClasses()\" \n [ngStyle]=\"getModalStyles()\">\n \n <span class=\"c-gallery-modal__close icon-cross-thin js-gallery-modal-close\" \n (click)=\"closeModal()\"></span>\n \n <div class=\"c-gallery-modal__overlay js-gallery-modal-close\" \n (click)=\"onOverlayClick()\"></div>\n \n <div class=\"c-gallery-modal__content\">\n \n @if (canNavigatePrevious()) {\n <button class=\"c-gallery-modal__nav c-gallery-modal__nav--prev icon-arrow-left\" \n (click)=\"previousImage()\"\n [attr.aria-label]=\"'Imagen anterior'\">\n </button>\n }\n \n @if (canNavigateNext()) {\n <button class=\"c-gallery-modal__nav c-gallery-modal__nav--next icon-arrow-right\" \n (click)=\"nextImage()\"\n [attr.aria-label]=\"'Siguiente imagen'\">\n </button>\n }\n \n @if (currentModalImage()) {\n <div class=\"c-gallery-modal__image-container\">\n <img \n [src]=\"currentModalImage()!.src\"\n [alt]=\"currentModalImage()!.alt || ''\"\n [title]=\"currentModalImage()!.title || ''\"\n loading=\"eager\"\n class=\"c-gallery-modal__image\">\n \n @if (finalConfig().showDescription && currentModalImage()!.description) {\n <div class=\"c-gallery-modal__description\">\n {{ currentModalImage()!.description }}\n </div>\n }\n </div>\n }\n \n @if (finalConfig().showCounter) {\n <div class=\"c-gallery-modal__counter\">\n {{ modalImageCounter() }}\n </div>\n }\n \n </div>\n </div>\n}\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: GenericSkeletonComponent, selector: "core-generic-skeleton", inputs: ["config", "items", "type", "size", "width", "height", "animated", "animation", "lines", "customClass", "ariaLabel"] }] });
|
|
15500
|
+
}
|
|
15501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: GenericGalleryComponent, decorators: [{
|
|
15502
|
+
type: Component,
|
|
15503
|
+
args: [{ selector: 'core-generic-gallery', standalone: true, imports: [CommonModule, GenericSkeletonComponent], providers: [], template: "<div [class]=\"containerClasses()\" \n [ngStyle]=\"containerStyles()\">\n \n @if (finalConfig().layoutType === 'main-left') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-right') {\n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n \n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n \n @if (finalConfig().layoutType === 'main-top') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Main image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n \n @if (thumbnailImages().length > 0) {\n <div class=\"c-gallery-grid__imgs-xs\">\n @for (image of thumbnailImages(); track image.id || $index; let i = $index) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(image, i + 1)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(image, i + 1)\">\n \n @if (isImageLoading(image, i + 1)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading thumbnail: ' + (image.alt || 'Thumbnail')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(image, i + 1) && !hasImageError(image, i + 1)) {\n <img\n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n [title]=\"image.title || ''\"\n [loading]=\"getImageLoading(false)\"\n (click)=\"onImageClick(image, i + 1)\">\n }\n \n @if (isImageLoading(image, i + 1)) {\n <img \n [src]=\"image.thumbnail || image.src\"\n [alt]=\"image.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(image, i + 1)\"\n (error)=\"onImageError(image, i + 1)\">\n }\n \n @if (hasImageError(image, i + 1)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error</span>\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n }\n\n @if (finalConfig().layoutType === 'single') {\n @if (mainImage()) {\n <div class=\"c-gallery-grid__img\" \n [class.c-gallery-grid__img--loading]=\"isImageLoading(mainImage()!, 0)\"\n [class.c-gallery-grid__img--error]=\"hasImageError(mainImage()!, 0)\">\n \n @if (isImageLoading(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__skeleton\">\n <core-generic-skeleton \n [type]=\"SkeletonType.IMAGE\"\n width=\"100%\"\n height=\"100%\"\n [animation]=\"SkeletonAnimation.SHIMMER\"\n [ariaLabel]=\"'Loading image: ' + (mainImage()!.alt || 'Single image')\">\n </core-generic-skeleton>\n </div>\n }\n \n @if (!isImageLoading(mainImage()!, 0) && !hasImageError(mainImage()!, 0)) {\n <img\n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n [title]=\"mainImage()!.title || ''\"\n [loading]=\"getImageLoading(true)\"\n (click)=\"onImageClick(mainImage()!, 0)\">\n }\n \n @if (isImageLoading(mainImage()!, 0)) {\n <img \n [src]=\"mainImage()!.src\"\n [alt]=\"mainImage()!.alt || ''\"\n style=\"display: none;\"\n (load)=\"onImageLoad(mainImage()!, 0)\"\n (error)=\"onImageError(mainImage()!, 0)\">\n }\n \n @if (hasImageError(mainImage()!, 0)) {\n <div class=\"c-gallery-grid__error\">\n <div class=\"c-gallery-grid__error-content\">\n <span class=\"c-gallery-grid__error-icon\">\uD83D\uDCF7</span>\n <span class=\"c-gallery-grid__error-text\">Error al cargar imagen</span>\n </div>\n </div>\n }\n </div>\n }\n }\n</div>\n\n@if (isModalOpen()) {\n <div [class]=\"getModalClasses()\" \n [ngStyle]=\"getModalStyles()\">\n \n <span class=\"c-gallery-modal__close icon-cross-thin js-gallery-modal-close\" \n (click)=\"closeModal()\"></span>\n \n <div class=\"c-gallery-modal__overlay js-gallery-modal-close\" \n (click)=\"onOverlayClick()\"></div>\n \n <div class=\"c-gallery-modal__content\">\n \n @if (canNavigatePrevious()) {\n <button class=\"c-gallery-modal__nav c-gallery-modal__nav--prev icon-arrow-left\" \n (click)=\"previousImage()\"\n [attr.aria-label]=\"'Imagen anterior'\">\n </button>\n }\n \n @if (canNavigateNext()) {\n <button class=\"c-gallery-modal__nav c-gallery-modal__nav--next icon-arrow-right\" \n (click)=\"nextImage()\"\n [attr.aria-label]=\"'Siguiente imagen'\">\n </button>\n }\n \n @if (currentModalImage()) {\n <div class=\"c-gallery-modal__image-container\">\n <img \n [src]=\"currentModalImage()!.src\"\n [alt]=\"currentModalImage()!.alt || ''\"\n [title]=\"currentModalImage()!.title || ''\"\n loading=\"eager\"\n class=\"c-gallery-modal__image\">\n \n @if (finalConfig().showDescription && currentModalImage()!.description) {\n <div class=\"c-gallery-modal__description\">\n {{ currentModalImage()!.description }}\n </div>\n }\n </div>\n }\n \n @if (finalConfig().showCounter) {\n <div class=\"c-gallery-modal__counter\">\n {{ modalImageCounter() }}\n </div>\n }\n \n </div>\n </div>\n}\n" }]
|
|
15504
|
+
}], ctorParameters: () => [] });
|
|
15505
|
+
|
|
15139
15506
|
class CacheBustingInterceptor {
|
|
15140
15507
|
intercept(req, next) {
|
|
15141
15508
|
if (req.url.includes('/assets/i18n/') && req.url.endsWith('.json')) {
|
|
@@ -15323,5 +15690,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImpor
|
|
|
15323
15690
|
* Generated bundle index. Do not edit.
|
|
15324
15691
|
*/
|
|
15325
15692
|
|
|
15326
|
-
export { ActiveFiltersComponent, AlertComponent, AlertContainerComponent, AlertService, AlertType, ApiConfigurationProvider, BaseFieldComponent, ButtonContext, ButtonSize, ButtonType, CacheBustingInterceptor, CardComponent, CarouselComponent, ChatMessagePosition, ChatMessageType, CheckboxFieldComponent, ConfigurationModel, ConfirmationDialogComponent, ConfirmationDialogService, CoreHostDirective, CoreManualRefreshComponent, CoreUiHttpLoaderFactory, CoreUiTranslateLoader, CoreUiTranslateService, DataListComponent, DataListItemComponent, DateFieldComponent, DateUtility, DatetimeFieldComponent, DialogActions, DocumentAction, DocumentDisplayMode, DropdownComponent, DropdownDirection, DropdownService, DynamicFieldDirective, DynamicFieldsHelper, FieldErrorsComponent, FieldType, FileFieldComponent, FileModel, FilePreviewActionType, FileTemplateModel, FileTemplateType, FileType, FileTypeModel, FileUploadService, FilterModalComponent, FilterService, FilterType, GenericButtonComponent, GenericChatComponent, GenericChatService, GenericDocumentationComponent, GenericModalComponent, GenericPaginationComponent, GenericRatingComponent, GenericSidebarComponent, GenericSkeletonComponent, GenericStepsComponent, GenericTableComponent, GenericTabsComponent, GenericTimelineComponent, GlobalApiConfigService, HeaderComponent, HeaderConfigurationService, HeaderElementType, HeaderService, HttpLoaderFactory, ImageModalComponent, ImageModalService, ImagePreviewComponent, LayoutAuth, LayoutBreakpoint, LayoutComponent, LayoutService, LayoutStateService, LayoutType, LoaderComponent, LoaderService, MainNavComponent, MainNavService, ManualRefreshService, ModalMode, ModelApiService, MultiEntryFieldComponent, MultiEntryOutputFormat, NumberFieldComponent, NumberFieldConfigType, NumberFieldType, NumberRange, PERMISSION_ACTIONS_PROVIDER, PERMISSION_PROVIDER, PERMISSION_RESOURCES_PROVIDER, PaginationService, PasswordFieldComponent, PermissionEnumsService, PermissionModel, PermissionService, PermissionWrapperService, PermissionsActions, PermissionsInterceptor, PermissionsResources, ProgressBarComponent, ProgressBarSize, RatingService, RatingSize, RatingType, ResetPasswordModel, RoleModel, SelectFieldComponent, ServerSelectFieldComponent, ServerSelectService, SidebarCustomModalComponent, SidebarCustomModalService, SidebarHeight, SidebarMobileModalService, SidebarMobileType, SidebarPosition, SidebarService, SidebarState, SidebarTemplateRegistryService, SidebarVisibility, SidebarWidth, SkeletonAnimation, SkeletonService, SkeletonSize, SkeletonType, SmartFieldComponent, SortDirection, SortMode, StepSize, StepStatus, StepType, StepsService, SwitchFieldComponent, TableAction, TableActionService, TableDataService, TableSortService, TextAreaFieldComponent, TextFieldComponent, TimeFieldComponent, TimeInterval, TimelineService, TimelineStatus, TimelineType, TranslationMergeService, UsersModel, VERSION, equalToValidator, isSameDate, provideCoreUiTranslateLoader, providePermissionActions, providePermissionEnums, providePermissionResources, providePermissionService, providePermissionServiceFactory, provideTranslateLoader };
|
|
15693
|
+
export { ActiveFiltersComponent, AlertComponent, AlertContainerComponent, AlertService, AlertType, ApiConfigurationProvider, BaseFieldComponent, ButtonContext, ButtonSize, ButtonType, CacheBustingInterceptor, CardComponent, CarouselComponent, ChatMessagePosition, ChatMessageType, CheckboxFieldComponent, ConfigurationModel, ConfirmationDialogComponent, ConfirmationDialogService, CoreHostDirective, CoreManualRefreshComponent, CoreUiHttpLoaderFactory, CoreUiTranslateLoader, CoreUiTranslateService, DataListComponent, DataListItemComponent, DateFieldComponent, DateUtility, DatetimeFieldComponent, DialogActions, DocumentAction, DocumentDisplayMode, DropdownComponent, DropdownDirection, DropdownService, DynamicFieldDirective, DynamicFieldsHelper, FieldErrorsComponent, FieldType, FileFieldComponent, FileModel, FilePreviewActionType, FileTemplateModel, FileTemplateType, FileType, FileTypeModel, FileUploadService, FilterModalComponent, FilterService, FilterType, GalleryAnimationType, GalleryLayoutType, GalleryModalService, GenericButtonComponent, GenericChatComponent, GenericChatService, GenericDocumentationComponent, GenericGalleryComponent, GenericModalComponent, GenericPaginationComponent, GenericRatingComponent, GenericSidebarComponent, GenericSkeletonComponent, GenericStepsComponent, GenericTableComponent, GenericTabsComponent, GenericTimelineComponent, GlobalApiConfigService, HeaderComponent, HeaderConfigurationService, HeaderElementType, HeaderService, HttpLoaderFactory, ImageModalComponent, ImageModalService, ImagePreviewComponent, LayoutAuth, LayoutBreakpoint, LayoutComponent, LayoutService, LayoutStateService, LayoutType, LoaderComponent, LoaderService, MainNavComponent, MainNavService, ManualRefreshService, ModalMode, ModelApiService, MultiEntryFieldComponent, MultiEntryOutputFormat, NumberFieldComponent, NumberFieldConfigType, NumberFieldType, NumberRange, PERMISSION_ACTIONS_PROVIDER, PERMISSION_PROVIDER, PERMISSION_RESOURCES_PROVIDER, PaginationService, PasswordFieldComponent, PermissionEnumsService, PermissionModel, PermissionService, PermissionWrapperService, PermissionsActions, PermissionsInterceptor, PermissionsResources, ProgressBarComponent, ProgressBarSize, RatingService, RatingSize, RatingType, ResetPasswordModel, RoleModel, SelectFieldComponent, ServerSelectFieldComponent, ServerSelectService, SidebarCustomModalComponent, SidebarCustomModalService, SidebarHeight, SidebarMobileModalService, SidebarMobileType, SidebarPosition, SidebarService, SidebarState, SidebarTemplateRegistryService, SidebarVisibility, SidebarWidth, SkeletonAnimation, SkeletonService, SkeletonSize, SkeletonType, SmartFieldComponent, SortDirection, SortMode, StepSize, StepStatus, StepType, StepsService, SwitchFieldComponent, TableAction, TableActionService, TableDataService, TableSortService, TextAreaFieldComponent, TextFieldComponent, TimeFieldComponent, TimeInterval, TimelineService, TimelineStatus, TimelineType, TranslationMergeService, UsersModel, VERSION, equalToValidator, isSameDate, provideCoreUiTranslateLoader, providePermissionActions, providePermissionEnums, providePermissionResources, providePermissionService, providePermissionServiceFactory, provideTranslateLoader };
|
|
15327
15694
|
//# sourceMappingURL=solcre-org-core-ui.mjs.map
|