nextalys-carousel 0.0.58 → 0.0.59

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.
Files changed (88) hide show
  1. package/bundles/nextalys-carousel-lib-nxs-carousel-mock.umd.js +103 -0
  2. package/bundles/nextalys-carousel-lib-nxs-carousel-mock.umd.js.map +1 -0
  3. package/bundles/nextalys-carousel-lib-nxs-carousel-mock.umd.min.js +2 -0
  4. package/bundles/nextalys-carousel-lib-nxs-carousel-mock.umd.min.js.map +1 -0
  5. package/bundles/nextalys-carousel-lib-nxs-carousel.umd.js +670 -0
  6. package/bundles/nextalys-carousel-lib-nxs-carousel.umd.js.map +1 -0
  7. package/bundles/nextalys-carousel-lib-nxs-carousel.umd.min.js +16 -0
  8. package/bundles/nextalys-carousel-lib-nxs-carousel.umd.min.js.map +1 -0
  9. package/bundles/nextalys-carousel.umd.js +5 -650
  10. package/bundles/nextalys-carousel.umd.js.map +1 -1
  11. package/bundles/nextalys-carousel.umd.min.js +1 -15
  12. package/bundles/nextalys-carousel.umd.min.js.map +1 -1
  13. package/common-types.d.ts +8 -0
  14. package/common-types.d.ts.map +1 -0
  15. package/esm2015/common-types.js +6 -0
  16. package/esm2015/lib/nxs-carousel/common-types.js +6 -0
  17. package/esm2015/lib/nxs-carousel/nextalys-carousel-lib-nxs-carousel.js +8 -0
  18. package/esm2015/lib/nxs-carousel/nxs-carousel/nxs-carousel-dialog.component.js +33 -0
  19. package/esm2015/lib/nxs-carousel/nxs-carousel/nxs-carousel-types.js +2 -0
  20. package/esm2015/lib/nxs-carousel/nxs-carousel/nxs-carousel.component.js +249 -0
  21. package/esm2015/lib/nxs-carousel/nxs-carousel/nxs-carousel.module.js +41 -0
  22. package/esm2015/lib/nxs-carousel/nxs-carousel/swiper-directives.js +9 -0
  23. package/esm2015/lib/nxs-carousel/public-api-carousel.js +4 -0
  24. package/esm2015/lib/nxs-carousel-mock/common-types.js +6 -0
  25. package/esm2015/lib/nxs-carousel-mock/nextalys-carousel-lib-nxs-carousel-mock.js +7 -0
  26. package/esm2015/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.component.js +37 -0
  27. package/esm2015/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.module.js +31 -0
  28. package/esm2015/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-types.js +2 -0
  29. package/esm2015/lib/nxs-carousel-mock/nxs-carousel-mock/swiper-directives.js +9 -0
  30. package/esm2015/lib/nxs-carousel-mock/public-api-carousel-mock.js +4 -0
  31. package/esm2015/nextalys-carousel.js +1 -3
  32. package/esm2015/public-api.js +5 -4
  33. package/fesm2015/nextalys-carousel-lib-nxs-carousel-mock.js +85 -0
  34. package/fesm2015/nextalys-carousel-lib-nxs-carousel-mock.js.map +1 -0
  35. package/fesm2015/nextalys-carousel-lib-nxs-carousel.js +329 -0
  36. package/fesm2015/nextalys-carousel-lib-nxs-carousel.js.map +1 -0
  37. package/fesm2015/nextalys-carousel.js +2 -317
  38. package/fesm2015/nextalys-carousel.js.map +1 -1
  39. package/lib/nxs-carousel/common-types.d.ts +8 -0
  40. package/lib/nxs-carousel/common-types.d.ts.map +1 -0
  41. package/lib/nxs-carousel/nextalys-carousel-lib-nxs-carousel.d.ts +8 -0
  42. package/lib/nxs-carousel/nextalys-carousel-lib-nxs-carousel.d.ts.map +1 -0
  43. package/lib/nxs-carousel/nextalys-carousel-lib-nxs-carousel.metadata.json +1 -0
  44. package/lib/nxs-carousel/{nxs-carousel-dialog.component.d.ts → nxs-carousel/nxs-carousel-dialog.component.d.ts} +2 -1
  45. package/lib/nxs-carousel/nxs-carousel/nxs-carousel-dialog.component.d.ts.map +1 -0
  46. package/lib/nxs-carousel/{nxs-carousel-types.d.ts → nxs-carousel/nxs-carousel-types.d.ts} +0 -7
  47. package/lib/nxs-carousel/nxs-carousel/nxs-carousel-types.d.ts.map +1 -0
  48. package/lib/nxs-carousel/{nxs-carousel.component.d.ts → nxs-carousel/nxs-carousel.component.d.ts} +2 -1
  49. package/lib/nxs-carousel/nxs-carousel/nxs-carousel.component.d.ts.map +1 -0
  50. package/lib/nxs-carousel/{nxs-carousel.module.d.ts → nxs-carousel/nxs-carousel.module.d.ts} +1 -1
  51. package/lib/nxs-carousel/nxs-carousel/nxs-carousel.module.d.ts.map +1 -0
  52. package/lib/nxs-carousel/nxs-carousel/swiper-directives.d.ts +3 -0
  53. package/lib/nxs-carousel/nxs-carousel/swiper-directives.d.ts.map +1 -0
  54. package/lib/nxs-carousel/package.json +11 -0
  55. package/lib/nxs-carousel/public-api-carousel.d.ts +4 -0
  56. package/lib/nxs-carousel/public-api-carousel.d.ts.map +1 -0
  57. package/lib/nxs-carousel-mock/common-types.d.ts +8 -0
  58. package/lib/nxs-carousel-mock/common-types.d.ts.map +1 -0
  59. package/lib/nxs-carousel-mock/nextalys-carousel-lib-nxs-carousel-mock.d.ts +7 -0
  60. package/lib/nxs-carousel-mock/nextalys-carousel-lib-nxs-carousel-mock.d.ts.map +1 -0
  61. package/lib/nxs-carousel-mock/nextalys-carousel-lib-nxs-carousel-mock.metadata.json +1 -0
  62. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.component.d.ts +19 -0
  63. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.component.d.ts.map +1 -0
  64. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.module.d.ts +6 -0
  65. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-mock.module.d.ts.map +1 -0
  66. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-types.d.ts +2 -0
  67. package/lib/nxs-carousel-mock/nxs-carousel-mock/nxs-carousel-types.d.ts.map +1 -0
  68. package/lib/{nxs-carousel → nxs-carousel-mock/nxs-carousel-mock}/swiper-directives.d.ts +0 -0
  69. package/lib/nxs-carousel-mock/nxs-carousel-mock/swiper-directives.d.ts.map +1 -0
  70. package/lib/nxs-carousel-mock/package.json +11 -0
  71. package/lib/nxs-carousel-mock/public-api-carousel-mock.d.ts +4 -0
  72. package/lib/nxs-carousel-mock/public-api-carousel-mock.d.ts.map +1 -0
  73. package/nextalys-carousel.d.ts +0 -2
  74. package/nextalys-carousel.d.ts.map +1 -1
  75. package/nextalys-carousel.metadata.json +1 -1
  76. package/package.json +1 -1
  77. package/public-api.d.ts +1 -3
  78. package/public-api.d.ts.map +1 -1
  79. package/esm2015/lib/nxs-carousel/nxs-carousel-dialog.component.js +0 -33
  80. package/esm2015/lib/nxs-carousel/nxs-carousel-types.js +0 -6
  81. package/esm2015/lib/nxs-carousel/nxs-carousel.component.js +0 -249
  82. package/esm2015/lib/nxs-carousel/nxs-carousel.module.js +0 -41
  83. package/esm2015/lib/nxs-carousel/swiper-directives.js +0 -9
  84. package/lib/nxs-carousel/nxs-carousel-dialog.component.d.ts.map +0 -1
  85. package/lib/nxs-carousel/nxs-carousel-types.d.ts.map +0 -1
  86. package/lib/nxs-carousel/nxs-carousel.component.d.ts.map +0 -1
  87. package/lib/nxs-carousel/nxs-carousel.module.d.ts.map +0 -1
  88. package/lib/nxs-carousel/swiper-directives.d.ts.map +0 -1
@@ -0,0 +1,329 @@
1
+ import { Component, ViewEncapsulation, Inject, Directive, EventEmitter, NgZone, PLATFORM_ID, Optional, ContentChildren, TemplateRef, ViewChild, Input, Output, NgModule } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialog, MatDialogModule } from '@angular/material/dialog';
3
+ import { isPlatformBrowser, CommonModule } from '@angular/common';
4
+ import { EventsCollector } from 'nextalys-js-helpers/dist/events';
5
+ import SwiperCore, { Navigation, Pagination, Autoplay, Lazy, Thumbs } from 'swiper';
6
+ import { SwiperModule } from 'swiper/angular';
7
+ import { MatButtonModule } from '@angular/material/button';
8
+ import { MatIconModule } from '@angular/material/icon';
9
+
10
+ class NxsCarouselDialogComponent {
11
+ constructor(data, dialogRef) {
12
+ this.data = data;
13
+ this.dialogRef = dialogRef;
14
+ this.wrapperClass = 'nxs-carousel-wrapper';
15
+ if (data.wrapperClass)
16
+ this.wrapperClass += ' ' + data.wrapperClass;
17
+ }
18
+ }
19
+ NxsCarouselDialogComponent.decorators = [
20
+ { type: Component, args: [{
21
+ selector: 'nxs-carousel-dialog',
22
+ template: `
23
+ <div class="nxs-carousel-dialog-flex-wrapper">
24
+ <div class="nxs-carousel-dialog-header">
25
+ <button (click)="dialogRef.close()" mat-icon-button><mat-icon>close</mat-icon></button>
26
+ </div>
27
+ <div [class]="wrapperClass">
28
+ <nxs-carousel [options]="data.options" [images]="data.images"></nxs-carousel>
29
+ </div>
30
+ </div>
31
+ `,
32
+ encapsulation: ViewEncapsulation.None,
33
+ styles: [".nxs-carousel-dialog{max-width:98vw!important;width:98vw;height:98vh}.nxs-carousel-dialog .nxs-carousel-dialog-flex-wrapper{display:flex;height:100%;flex-direction:column}.nxs-carousel-dialog .nxs-carousel-dialog-flex-wrapper .nxs-carousel-wrapper{flex:auto}.nxs-carousel-dialog .nxs-carousel-dialog-header{position:relative;display:flex;justify-content:flex-end;padding-bottom:8px}.nxs-carousel-dialog mat-dialog-container{padding:20px}.nxs-carousel-dialog .nxs-carousel-wrapper{width:100%;margin:auto;height:100%}"]
34
+ },] }
35
+ ];
36
+ NxsCarouselDialogComponent.ctorParameters = () => [
37
+ { type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
38
+ { type: MatDialogRef }
39
+ ];
40
+
41
+ class NxsSwiperTemplateDirective {
42
+ }
43
+ NxsSwiperTemplateDirective.decorators = [
44
+ { type: Directive, args: [{
45
+ selector: '[nxsSwiperTemplate]',
46
+ },] }
47
+ ];
48
+
49
+ class NxsCarouselModuleConfig {
50
+ constructor() {
51
+ this.debug = false;
52
+ }
53
+ }
54
+
55
+ // install Swiper modules
56
+ SwiperCore.use([Navigation, Pagination, Autoplay, Lazy, Thumbs]);
57
+ class NxsCarouselComponent {
58
+ constructor(matDialog, zone, platformId, config) {
59
+ this.matDialog = matDialog;
60
+ this.zone = zone;
61
+ this.platformId = platformId;
62
+ this.config = config;
63
+ this.lazy = true;
64
+ this.eventsCollector = new EventsCollector();
65
+ this.options = null;
66
+ this.thumbnailsOptions = null;
67
+ this.hasHtmlContent = false;
68
+ this.slidesCount = 0;
69
+ this.slideChange = new EventEmitter();
70
+ this.currentSlide = 0;
71
+ this.slideClick = new EventEmitter();
72
+ this.isBrowser = false;
73
+ if (!this.config)
74
+ this.config = { debug: false };
75
+ this.isBrowser = isPlatformBrowser(this.platformId);
76
+ this.log('constructor - isBrowser', this.isBrowser);
77
+ this.options = this.setDefaultOptions(undefined, false);
78
+ }
79
+ set setOptions(val) {
80
+ this.options = this.setDefaultOptions(val, false);
81
+ this.setThumbnailsOptions();
82
+ }
83
+ log(...args) {
84
+ if (!this.config.debug)
85
+ return;
86
+ console.log('[NxsCarousel]', ...args);
87
+ }
88
+ destroy() {
89
+ var _a;
90
+ if (!this.isBrowser) {
91
+ return;
92
+ }
93
+ (_a = this.eventsCollector) === null || _a === void 0 ? void 0 : _a.unsubscribeAll();
94
+ }
95
+ ngOnDestroy() {
96
+ this.destroy();
97
+ }
98
+ ngAfterViewInit() {
99
+ // console.log('thi.contents', this.contents);
100
+ // this.initSlides();
101
+ // this.createSlider(true);
102
+ }
103
+ getMainSliderHeight() {
104
+ if (!this.options)
105
+ return '';
106
+ if (this.options.nxsThumbnails && this.options.nxsThumbnails.show) {
107
+ if (this.options.nxsThumbnails.onMainSlider) {
108
+ return '100%';
109
+ }
110
+ else if (this.options.nxsThumbnails.percentHeight) {
111
+ return (100 - this.options.nxsThumbnails.percentHeight) + '%';
112
+ }
113
+ }
114
+ return '';
115
+ }
116
+ setDefaultOptions(options, forDialog) {
117
+ var _a;
118
+ if (!options && forDialog) {
119
+ options = {
120
+ nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true,
121
+ lazy: true,
122
+ };
123
+ }
124
+ else if (!options) {
125
+ options = {
126
+ nxsShowNavigationBullets: true, loop: true,
127
+ nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {},
128
+ lazy: true,
129
+ };
130
+ }
131
+ if (options.nxsCarouselDialogOptions) {
132
+ if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')
133
+ options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };
134
+ if (typeof options.nxsCarouselDialogOptions.effect === 'undefined')
135
+ options.nxsCarouselDialogOptions.effect = 'slide';
136
+ if (typeof options.nxsCarouselDialogOptions.nxsShowNavigationArrows === 'undefined')
137
+ options.nxsCarouselDialogOptions.nxsShowNavigationArrows = true;
138
+ if (!!((_a = options.nxsCarouselDialogOptions.nxsThumbnails) === null || _a === void 0 ? void 0 : _a.show)) {
139
+ if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight === 'undefined')
140
+ options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight = 20;
141
+ if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.perView === 'undefined')
142
+ options.nxsCarouselDialogOptions.nxsThumbnails.perView = 10;
143
+ options.nxsCarouselDialogOptions.nxsThumbnails.breakpoints = {
144
+ 640: {
145
+ slidesPerView: 5,
146
+ },
147
+ 768: {
148
+ slidesPerView: 7,
149
+ },
150
+ 1024: {
151
+ slidesPerView: 8,
152
+ },
153
+ };
154
+ }
155
+ }
156
+ if (!options.nxsThumbnails)
157
+ options.nxsThumbnails = { show: false };
158
+ if (options.nxsThumbnails.show && typeof options.nxsThumbnails.percentHeight === 'undefined')
159
+ options.nxsThumbnails.percentHeight = 20;
160
+ if (options.nxsThumbnails.show && typeof options.nxsThumbnails.perView === 'undefined')
161
+ options.nxsThumbnails.perView = 10;
162
+ if (forDialog)
163
+ options.nxsfullscreenOnClick = false;
164
+ if (options.nxsThumbnails.onMainSlider)
165
+ options.nxsShowNavigationBullets = false;
166
+ if (typeof options.lazy === 'undefined')
167
+ options.lazy = true;
168
+ if (typeof options.navigation === 'undefined')
169
+ options.navigation = true;
170
+ if (typeof options.pagination === 'undefined')
171
+ options.pagination = { clickable: true };
172
+ // console.log("Log ~ file: nxs-carousel.component.ts ~ line 272 ~ NxsCarouselComponent ~ setDefaultOptions ~ options", options);
173
+ return options;
174
+ }
175
+ setThumbnailsOptions() {
176
+ var _a, _b;
177
+ if (!!((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.nxsThumbnails) === null || _b === void 0 ? void 0 : _b.show)) {
178
+ this.thumbnailsOptions = {
179
+ slidesPerView: this.options.nxsThumbnails.perView,
180
+ loop: false,
181
+ freeMode: true,
182
+ // watchSlidesVisibility: true,
183
+ watchSlidesProgress: true,
184
+ breakpoints: this.options.nxsThumbnails.breakpoints,
185
+ // spaceBetween: 10,
186
+ };
187
+ if (this.lazy) {
188
+ // Disable preloading of all images
189
+ this.thumbnailsOptions.preloadImages = false;
190
+ // Enable lazy loading
191
+ this.thumbnailsOptions.lazy = true;
192
+ }
193
+ // this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);
194
+ // this.options.thumbs = { swiper: this.thumbnailsSliderInstance };
195
+ }
196
+ }
197
+ showFullScreenCarousel(images, wrapperClass) {
198
+ this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);
199
+ const data = { images, wrapperClass, options: this.options.nxsCarouselDialogOptions };
200
+ this.matDialog.open(NxsCarouselDialogComponent, {
201
+ data,
202
+ panelClass: 'nxs-carousel-dialog',
203
+ width: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.width : undefined,
204
+ height: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.height : undefined,
205
+ disableClose: !this.options.nxsCarouselDialogExitable,
206
+ });
207
+ }
208
+ goToSlide(index, speed) {
209
+ var _a;
210
+ (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slideTo(index, speed);
211
+ }
212
+ next() {
213
+ var _a;
214
+ (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slideNext();
215
+ }
216
+ previous() {
217
+ var _a;
218
+ (_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.slidePrev();
219
+ }
220
+ onSwiperThumbnails(instance) {
221
+ var _a, _b;
222
+ if ((_b = (_a = this.options) === null || _a === void 0 ? void 0 : _a.nxsThumbnails) === null || _b === void 0 ? void 0 : _b.show)
223
+ this.thumbnailsSwiperInstance = instance;
224
+ else
225
+ this.thumbnailsSwiperInstance = null;
226
+ // if (this.options?.nxsThumbnails?.show) {
227
+ // const optionsClone = MainHelpers.cloneObject(this.options);
228
+ // optionsClone.thumbs = { swiper: this.thumbnailsSwiperInstance };
229
+ // // this.options = optionsClone;
230
+ // // this.options = { ...this.options, thumbs: { swiper: this.thumbnailsSwiperInstance } };
231
+ // console.log("Log ~ file: nxs-carousel.component.ts ~ line 416 ~ NxsCarouselComponent ~ onSwiperThumbnails ~ this.options ", this.options);
232
+ // this.options.thumbs = { swiper: this.thumbnailsSwiperInstance };
233
+ // }
234
+ }
235
+ onSwiper(instance) {
236
+ this.log('swiper ready - instance', instance);
237
+ this.swiperInstance = instance;
238
+ this.swiperInstance.on('click', (swiperInstance, evt) => {
239
+ // console.log("Log ~ file: nxs-carousel.component.ts ~ line 392 ~ NxsCarouselComponent ~ this.swiperInstance.on ~ evt", evt);
240
+ const target = evt.target;
241
+ if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)
242
+ return;
243
+ this.runInZone(() => {
244
+ this.slideClick.next(evt);
245
+ if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {
246
+ this.showFullScreenCarousel(this.images, 'fullscreen-carousel');
247
+ }
248
+ });
249
+ });
250
+ }
251
+ runInZone(callback, ...args) {
252
+ if (!this.zone) {
253
+ callback(args);
254
+ }
255
+ return this.zone.run(() => callback(args));
256
+ }
257
+ onSlideChange(instances) {
258
+ // this.swiperInstance = instance;
259
+ // this.log('slide change - instance', instance);
260
+ this.runInZone(() => {
261
+ var _a;
262
+ this.currentSlide = ((_a = this.swiperInstance) === null || _a === void 0 ? void 0 : _a.realIndex) || 0;
263
+ this.log('slide change - currentSlide', this.currentSlide);
264
+ this.slideChange.next(this.currentSlide);
265
+ });
266
+ }
267
+ }
268
+ NxsCarouselComponent.decorators = [
269
+ { type: Component, args: [{
270
+ selector: 'nxs-carousel',
271
+ template: "<div *ngIf=\"options\"\n [ngClass]=\"{'swiper-container':true,'nxs-slider-with-thumbnails':!!options.nxsThumbnails && options.nxsThumbnails.show}\"\n [style.height]=\"getMainSliderHeight()\">\n <swiper [config]=\"options\" (swiper)=\"onSwiper($event)\" (slideChange)=\"onSlideChange($event)\"\n [thumbs]=\"{ swiper: thumbnailsSwiperInstance }\">\n <ng-container *ngIf=\"hasHtmlContent\">\n <ng-template *ngFor=\"let slide of contents\" swiperSlide>\n <ng-template [ngTemplateOutlet]=\"slide\" [ngTemplateOutletContext]=\"{\n $implicit: slide\n }\"></ng-template>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"!hasHtmlContent && images?.length\">\n <ng-template swiperSlide *ngFor=\"let slideImage of images\">\n <img class=\"nxs-image-slide swiper-lazy\" [attr.data-src]=\"slideImage.src\" />\n <div class=\"swiper-lazy-preloader swiper-lazy-preloader-black\"></div>\n </ng-template>\n </ng-container>\n </swiper>\n <ng-container *ngIf=\"images && options.nxsShowImagesCount\">\n <div class=\"nxs-image-counter\">\n {{currentSlide+1}} / {{images.length}}\n </div>\n </ng-container>\n</div>\n\n<div *ngIf=\"thumbnailsOptions && images?.length\"\n [style.height]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight) ? (options.nxsThumbnails.percentHeight + '%'):''\"\n [style.top]=\"(!!options.nxsThumbnails && options.nxsThumbnails.show && !!options.nxsThumbnails.percentHeight && options.nxsThumbnails.onMainSlider) ? ('-' + (options.nxsThumbnails.percentHeight) + '%'):''\"\n [ngClass]=\"{'swiper-container':true, 'nxs-slider-thumbnails-container':true,'nxs-slider-thumbnails-on-main-slider':options.nxsThumbnails && options.nxsThumbnails.onMainSlider}\">\n <swiper [config]=\"thumbnailsOptions\" (swiper)=\"onSwiperThumbnails($event)\">\n <ng-template swiperSlide *ngFor=\"let slideImage of images\">\n <img class=\"nxs-image-slide swiper-lazy\" [attr.data-src]=\"slideImage.src\" />\n <div class=\"swiper-lazy-preloader swiper-lazy-preloader-black\"></div>\n </ng-template>\n </swiper>\n</div>",
272
+ encapsulation: ViewEncapsulation.None,
273
+ styles: ["nxs-carousel{display:block;height:100%;position:relative;--swiper-navigation-color:#fff;--swiper-pagination-color:#fff;--swiper-theme-color:#fff}nxs-carousel .swiper-container{width:100%;height:100%;display:block;position:relative}nxs-carousel .swiper-container swiper{height:100%}nxs-carousel .swiper-container .swiper-wrapper .swiper-slide{height:100%;position:relative;width:auto;min-height:50px;background-size:cover;background-position:50%;background-repeat:no-repeat}nxs-carousel .swiper-container .nxs-image-slide{height:100%;-o-object-fit:cover;object-fit:cover;width:100%;-o-object-position:center;object-position:center}nxs-carousel .swiper-container.nxs-slider-with-thumbnails{height:80%}nxs-carousel .swiper-container.nxs-slider-thumbnails-container{height:20%;background:transparent;padding:6px 0}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide{cursor:pointer;border-radius:6px;margin:0 6px;border:2px solid transparent}nxs-carousel .swiper-container.nxs-slider-thumbnails-container .swiper-slide.swiper-slide-thumb-active{border:2px solid #add8e6}nxs-carousel .swiper-container.nxs-slider-thumbnails-on-main-slider{top:-20%}nxs-carousel .nxs-image-counter{position:absolute;top:0;right:0;color:#fff;padding:4px;font-weight:700;z-index:10}"]
274
+ },] }
275
+ ];
276
+ NxsCarouselComponent.ctorParameters = () => [
277
+ { type: MatDialog },
278
+ { type: NgZone },
279
+ { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },
280
+ { type: NxsCarouselModuleConfig, decorators: [{ type: Optional }] }
281
+ ];
282
+ NxsCarouselComponent.propDecorators = {
283
+ contents: [{ type: ContentChildren, args: [NxsSwiperTemplateDirective, { read: TemplateRef },] }],
284
+ swiperComponent: [{ type: ViewChild, args: ['swiper', { static: false },] }],
285
+ lazy: [{ type: Input }],
286
+ images: [{ type: Input }],
287
+ setOptions: [{ type: Input, args: ['options',] }],
288
+ hasHtmlContent: [{ type: Input }],
289
+ slideChange: [{ type: Output }],
290
+ slideClick: [{ type: Output }]
291
+ };
292
+
293
+ class NxsCarouselModule {
294
+ static forRoot(config) {
295
+ return {
296
+ ngModule: NxsCarouselModule,
297
+ providers: [
298
+ { provide: NxsCarouselModuleConfig, useValue: config },
299
+ ]
300
+ };
301
+ }
302
+ }
303
+ NxsCarouselModule.decorators = [
304
+ { type: NgModule, args: [{
305
+ declarations: [
306
+ NxsCarouselComponent,
307
+ NxsCarouselDialogComponent,
308
+ NxsSwiperTemplateDirective,
309
+ ],
310
+ imports: [
311
+ CommonModule,
312
+ MatIconModule,
313
+ MatButtonModule,
314
+ MatDialogModule,
315
+ SwiperModule,
316
+ ],
317
+ exports: [
318
+ NxsCarouselComponent,
319
+ NxsSwiperTemplateDirective,
320
+ ],
321
+ },] }
322
+ ];
323
+
324
+ /**
325
+ * Generated bundle index. Do not edit.
326
+ */
327
+
328
+ export { NxsCarouselComponent, NxsCarouselModule, NxsSwiperTemplateDirective as ɵa, NxsCarouselModuleConfig as ɵb, NxsCarouselDialogComponent as ɵc };
329
+ //# sourceMappingURL=nextalys-carousel-lib-nxs-carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextalys-carousel-lib-nxs-carousel.js","sources":["../../lib/nxs-carousel/nxs-carousel-dialog.component.ts","../../lib/nxs-carousel/swiper-directives.ts","../../lib/common-types.ts","../../lib/nxs-carousel/nxs-carousel.component.ts","../../lib/nxs-carousel/nxs-carousel.module.ts","../../lib/nextalys-carousel-lib-nxs-carousel.ts"],"sourcesContent":["import { Component, Inject, ViewEncapsulation } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { NxsCarouselImage } from '../common-types';\nimport { NxsCarouselOptions } from './nxs-carousel-types';\n\nexport interface NxsCarouselDialogData {\n images: NxsCarouselImage[];\n options?: NxsCarouselOptions;\n wrapperClass?: string;\n}\n@Component({\n selector: 'nxs-carousel-dialog',\n template: `\n <div class=\"nxs-carousel-dialog-flex-wrapper\">\n <div class=\"nxs-carousel-dialog-header\">\n <button (click)=\"dialogRef.close()\" mat-icon-button><mat-icon>close</mat-icon></button>\n </div>\n <div [class]=\"wrapperClass\">\n <nxs-carousel [options]=\"data.options\" [images]=\"data.images\"></nxs-carousel>\n </div>\n</div>\n `,\n styleUrls: ['./nxs-carousel-dialog.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselDialogComponent {\n public wrapperClass: string = 'nxs-carousel-wrapper';\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: NxsCarouselDialogData,\n public dialogRef: MatDialogRef<NxsCarouselDialogComponent>,\n ) {\n if (data.wrapperClass)\n this.wrapperClass += ' ' + data.wrapperClass;\n }\n\n}\n","import { Directive } from \"@angular/core\";\n\n@Directive({\n selector: '[nxsSwiperTemplate]',\n})\nexport class NxsSwiperTemplateDirective { }\n","\nexport interface NxsCarouselImage {\n alt?: string;\n src: string;\n}\nexport class NxsCarouselModuleConfig {\n debug?: boolean = false;\n}","import { Component, ViewEncapsulation, Input, ViewChild, Output, EventEmitter, PLATFORM_ID, Inject, Optional, NgZone, ContentChildren, TemplateRef } from '@angular/core';\nimport { NxsCarouselOptions } from './nxs-carousel-types';\nimport { NxsCarouselDialogData, NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatDialog } from '@angular/material/dialog';\nimport { isPlatformBrowser } from '@angular/common';\nimport { EventsCollector } from 'nextalys-js-helpers/dist/events';\n// import Swiper core and required modules\nimport SwiperCore, { Navigation, Pagination, Autoplay, Lazy, Swiper, SwiperOptions, Thumbs } from 'swiper';\n//Virtual,Scrollbar,A11y\nimport { SwiperComponent } from 'swiper/angular';\nimport { NxsSwiperTemplateDirective } from './swiper-directives';\nimport { NxsCarouselImage, NxsCarouselModuleConfig } from '../common-types';\n\n// install Swiper modules\nSwiperCore.use([Navigation, Pagination, Autoplay, Lazy, Thumbs]);\n@Component({\n selector: 'nxs-carousel',\n templateUrl: './nxs-carousel.component.html',\n styleUrls: ['./nxs-carousel.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class NxsCarouselComponent {\n @ContentChildren(NxsSwiperTemplateDirective, { read: TemplateRef })\n contents!: TemplateRef<HTMLElement>;\n @ViewChild('swiper', { static: false })\n swiperComponent?: SwiperComponent;\n @Input()\n lazy = true;\n private eventsCollector = new EventsCollector();\n\n @Input()\n public images: NxsCarouselImage[];\n options: NxsCarouselOptions = null;\n thumbnailsOptions: SwiperOptions = null;\n @Input('options')\n set setOptions(val: NxsCarouselOptions) {\n this.options = this.setDefaultOptions(val, false);\n this.setThumbnailsOptions();\n }\n @Input()\n hasHtmlContent = false;\n slidesCount: number = 0;\n private swiperInstance: Swiper;\n thumbnailsSwiperInstance: Swiper;\n\n @Output()\n slideChange = new EventEmitter<number>();\n public currentSlide = 0;\n @Output()\n slideClick = new EventEmitter<MouseEvent | TouchEvent | PointerEvent>();\n isBrowser = false;\n\n constructor(\n private matDialog: MatDialog,\n private zone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private config?: NxsCarouselModuleConfig,\n ) {\n if (!this.config)\n this.config = { debug: false };\n this.isBrowser = isPlatformBrowser(this.platformId);\n this.log('constructor - isBrowser', this.isBrowser);\n this.options = this.setDefaultOptions(undefined, false);\n }\n private log(...args: any[]) {\n if (!this.config.debug)\n return;\n console.log('[NxsCarousel]', ...args);\n }\n private destroy() {\n if (!this.isBrowser) {\n return;\n }\n this.eventsCollector?.unsubscribeAll();\n }\n ngOnDestroy(): void {\n this.destroy();\n }\n ngAfterViewInit(): void {\n // console.log('thi.contents', this.contents);\n // this.initSlides();\n // this.createSlider(true);\n }\n getMainSliderHeight() {\n if (!this.options)\n return '';\n if (this.options.nxsThumbnails && this.options.nxsThumbnails.show) {\n if (this.options.nxsThumbnails.onMainSlider) {\n return '100%';\n }\n else if (this.options.nxsThumbnails.percentHeight) {\n return (100 - this.options.nxsThumbnails.percentHeight) + '%';\n }\n }\n return '';\n }\n private setDefaultOptions(options: NxsCarouselOptions, forDialog: boolean) {\n if (!options && forDialog) {\n options = {\n nxsShowNavigationBullets: true, loop: true, nxsThumbnails: { show: true }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: true,\n lazy: true,\n };\n }\n else if (!options) {\n options = {\n nxsShowNavigationBullets: true, loop: true,\n nxsThumbnails: { show: false }, effect: 'slide', nxsShowNavigationArrows: true, nxsShowImagesCount: false, nxsCarouselDialogOptions: {},\n lazy: true,\n };\n }\n if (options.nxsCarouselDialogOptions) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails = { show: false };\n if (typeof options.nxsCarouselDialogOptions.effect === 'undefined')\n options.nxsCarouselDialogOptions.effect = 'slide';\n if (typeof options.nxsCarouselDialogOptions.nxsShowNavigationArrows === 'undefined')\n options.nxsCarouselDialogOptions.nxsShowNavigationArrows = true;\n\n if (!!options.nxsCarouselDialogOptions.nxsThumbnails?.show) {\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.percentHeight = 20;\n if (typeof options.nxsCarouselDialogOptions.nxsThumbnails.perView === 'undefined')\n options.nxsCarouselDialogOptions.nxsThumbnails.perView = 10;\n options.nxsCarouselDialogOptions.nxsThumbnails.breakpoints = {\n 640: {\n slidesPerView: 5,\n },\n 768: {\n slidesPerView: 7,\n },\n 1024: {\n slidesPerView: 8,\n },\n };\n }\n }\n if (!options.nxsThumbnails)\n options.nxsThumbnails = { show: false };\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.percentHeight === 'undefined')\n options.nxsThumbnails.percentHeight = 20;\n\n if (options.nxsThumbnails.show && typeof options.nxsThumbnails.perView === 'undefined')\n options.nxsThumbnails.perView = 10;\n\n\n if (forDialog)\n options.nxsfullscreenOnClick = false;\n if (options.nxsThumbnails.onMainSlider)\n options.nxsShowNavigationBullets = false;\n\n if (typeof options.lazy === 'undefined')\n options.lazy = true;\n\n if (typeof options.navigation === 'undefined')\n options.navigation = true;\n if (typeof options.pagination === 'undefined')\n options.pagination = { clickable: true };\n // console.log(\"Log ~ file: nxs-carousel.component.ts ~ line 272 ~ NxsCarouselComponent ~ setDefaultOptions ~ options\", options);\n\n return options;\n }\n\n private setThumbnailsOptions() {\n if (!!this.options?.nxsThumbnails?.show) {\n this.thumbnailsOptions = {\n slidesPerView: this.options.nxsThumbnails.perView,\n loop: false,\n freeMode: true,\n // watchSlidesVisibility: true,\n watchSlidesProgress: true,\n breakpoints: this.options.nxsThumbnails.breakpoints,\n // spaceBetween: 10,\n };\n if (this.lazy) {\n // Disable preloading of all images\n this.thumbnailsOptions.preloadImages = false;\n // Enable lazy loading\n this.thumbnailsOptions.lazy = true;\n }\n // this.thumbnailsSliderInstance = new Swiper(this.nxsThumbnailsSliderContainer.nativeElement, thumbnailsOptions);\n // this.options.thumbs = { swiper: this.thumbnailsSliderInstance };\n }\n }\n public showFullScreenCarousel(images: NxsCarouselImage[], wrapperClass?: string) {\n this.options.nxsCarouselDialogOptions = this.setDefaultOptions(this.options.nxsCarouselDialogOptions, true);\n const data: NxsCarouselDialogData = { images, wrapperClass, options: this.options.nxsCarouselDialogOptions };\n this.matDialog.open(NxsCarouselDialogComponent, {\n data,\n panelClass: 'nxs-carousel-dialog',\n width: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.width : undefined,\n height: !!this.options.nxsCarouselDialogSize ? this.options.nxsCarouselDialogSize.height : undefined,\n disableClose: !this.options.nxsCarouselDialogExitable,\n });\n }\n goToSlide(index: number, speed?: number) {\n this.swiperInstance?.slideTo(index, speed);\n }\n next() {\n this.swiperInstance?.slideNext();\n }\n previous() {\n this.swiperInstance?.slidePrev();\n }\n onSwiperThumbnails(instance: Swiper) {\n if (this.options?.nxsThumbnails?.show)\n this.thumbnailsSwiperInstance = instance;\n else\n this.thumbnailsSwiperInstance = null;\n\n // if (this.options?.nxsThumbnails?.show) {\n // const optionsClone = MainHelpers.cloneObject(this.options);\n // optionsClone.thumbs = { swiper: this.thumbnailsSwiperInstance };\n // // this.options = optionsClone;\n // // this.options = { ...this.options, thumbs: { swiper: this.thumbnailsSwiperInstance } };\n // console.log(\"Log ~ file: nxs-carousel.component.ts ~ line 416 ~ NxsCarouselComponent ~ onSwiperThumbnails ~ this.options \", this.options);\n // this.options.thumbs = { swiper: this.thumbnailsSwiperInstance };\n // }\n }\n onSwiper(instance: Swiper) {\n this.log('swiper ready - instance', instance);\n this.swiperInstance = instance;\n this.swiperInstance.on('click', (swiperInstance, evt) => {\n // console.log(\"Log ~ file: nxs-carousel.component.ts ~ line 392 ~ NxsCarouselComponent ~ this.swiperInstance.on ~ evt\", evt);\n const target = evt.target as HTMLElement;\n if (target.className.indexOf('nxs-carousel-button') !== -1 || target.className.indexOf('swiper-pagination') !== -1)\n return;\n this.runInZone(() => {\n this.slideClick.next(evt);\n if (this.options.nxsfullscreenOnClick && this.images && this.images.length && !this.hasHtmlContent) {\n this.showFullScreenCarousel(this.images, 'fullscreen-carousel');\n }\n });\n\n });\n }\n private runInZone<T extends (...args: any[]) => void>(callback: T, ...args: any[]) {\n if (!this.zone) {\n callback(args);\n }\n return this.zone.run(() => callback(args));\n }\n\n onSlideChange(instances: Swiper[]) {\n // this.swiperInstance = instance;\n // this.log('slide change - instance', instance);\n this.runInZone(() => {\n this.currentSlide = this.swiperInstance?.realIndex || 0;\n this.log('slide change - currentSlide', this.currentSlide);\n this.slideChange.next(this.currentSlide);\n });\n }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { NxsCarouselDialogComponent } from './nxs-carousel-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { NxsCarouselComponent } from './nxs-carousel.component';\nimport { SwiperModule } from 'swiper/angular';\nimport { NxsSwiperTemplateDirective } from './swiper-directives';\nimport { NxsCarouselModuleConfig } from '../common-types';\n\n@NgModule({\n declarations: [\n NxsCarouselComponent,\n NxsCarouselDialogComponent,\n NxsSwiperTemplateDirective,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatDialogModule,\n SwiperModule,\n ],\n exports: [\n NxsCarouselComponent,\n NxsSwiperTemplateDirective,\n ],\n})\nexport class NxsCarouselModule {\n public static forRoot(config?: NxsCarouselModuleConfig): ModuleWithProviders<NxsCarouselModule> {\n return {\n ngModule: NxsCarouselModule,\n providers: [\n { provide: NxsCarouselModuleConfig, useValue: config },\n ]\n };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api-carousel';\n\nexport {NxsCarouselModuleConfig as ɵb} from './common-types';\nexport {NxsCarouselDialogComponent as ɵc} from './nxs-carousel/nxs-carousel-dialog.component';\nexport {NxsSwiperTemplateDirective as ɵa} from './nxs-carousel/swiper-directives';"],"names":[],"mappings":"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"}