@severfam/simple-slider-angular 0.1.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.
@@ -0,0 +1,364 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, PLATFORM_ID, input, output, ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, DestroyRef, afterNextRender, effect, ElementRef, ViewChild } from '@angular/core';
3
+ import { isPlatformBrowser, NgOptimizedImage } from '@angular/common';
4
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
5
+ import { fromEvent, startWith, switchMap, of, distinctUntilChanged, debounceTime, delay, takeUntil, interval } from 'rxjs';
6
+
7
+ const WINDOW = new InjectionToken('window');
8
+ /* eslint-disable @typescript-eslint/no-explicit-any */
9
+ const windowProvider = {
10
+ provide: WINDOW,
11
+ useFactory: (platformId) => {
12
+ if (isPlatformBrowser(platformId)) {
13
+ return window;
14
+ }
15
+ return {};
16
+ },
17
+ deps: [PLATFORM_ID],
18
+ };
19
+ const WINDOW_PROVIDERS = [windowProvider];
20
+
21
+ var ESliderAction;
22
+ (function (ESliderAction) {
23
+ ESliderAction["COMPUTE_POSITION"] = "computePosition";
24
+ ESliderAction["STEP_NEXT"] = "stepNext";
25
+ ESliderAction["STEP_PREV"] = "stepPrev";
26
+ ESliderAction["TOUCH_MOVE"] = "touchMove";
27
+ })(ESliderAction || (ESliderAction = {}));
28
+ var EArrowAction;
29
+ (function (EArrowAction) {
30
+ EArrowAction["STEP_NEXT"] = "stepNext";
31
+ EArrowAction["STEP_PREV"] = "stepPrev";
32
+ })(EArrowAction || (EArrowAction = {}));
33
+
34
+ class SimpleSliderPhotoComponent {
35
+ photoLink = input(...(ngDevMode ? [undefined, { debugName: "photoLink" }] : /* istanbul ignore next */ []));
36
+ photoAlt = input('', ...(ngDevMode ? [{ debugName: "photoAlt" }] : /* istanbul ignore next */ []));
37
+ isActive = input(false, ...(ngDevMode ? [{ debugName: "isActive" }] : /* istanbul ignore next */ []));
38
+ isDisabled = input(false, ...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
39
+ cardWidth = input(0, ...(ngDevMode ? [{ debugName: "cardWidth" }] : /* istanbul ignore next */ []));
40
+ cardHeight = input(0, ...(ngDevMode ? [{ debugName: "cardHeight" }] : /* istanbul ignore next */ []));
41
+ borderWidth = input(0, ...(ngDevMode ? [{ debugName: "borderWidth" }] : /* istanbul ignore next */ []));
42
+ cardPadding = input(0, ...(ngDevMode ? [{ debugName: "cardPadding" }] : /* istanbul ignore next */ []));
43
+ activeBorderColor = input('#1976d2', ...(ngDevMode ? [{ debugName: "activeBorderColor" }] : /* istanbul ignore next */ []));
44
+ defaultBorderColor = input('#fff', ...(ngDevMode ? [{ debugName: "defaultBorderColor" }] : /* istanbul ignore next */ []));
45
+ changeModel = output();
46
+ get borderColor() {
47
+ return this.isActive() ? this.activeBorderColor() : this.defaultBorderColor();
48
+ }
49
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SimpleSliderPhotoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
50
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: SimpleSliderPhotoComponent, isStandalone: true, selector: "simple-slider-photo", inputs: { photoLink: { classPropertyName: "photoLink", publicName: "photoLink", isSignal: true, isRequired: false, transformFunction: null }, photoAlt: { classPropertyName: "photoAlt", publicName: "photoAlt", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, isDisabled: { classPropertyName: "isDisabled", publicName: "isDisabled", isSignal: true, isRequired: false, transformFunction: null }, cardWidth: { classPropertyName: "cardWidth", publicName: "cardWidth", isSignal: true, isRequired: false, transformFunction: null }, cardHeight: { classPropertyName: "cardHeight", publicName: "cardHeight", isSignal: true, isRequired: false, transformFunction: null }, borderWidth: { classPropertyName: "borderWidth", publicName: "borderWidth", isSignal: true, isRequired: false, transformFunction: null }, cardPadding: { classPropertyName: "cardPadding", publicName: "cardPadding", isSignal: true, isRequired: false, transformFunction: null }, activeBorderColor: { classPropertyName: "activeBorderColor", publicName: "activeBorderColor", isSignal: true, isRequired: false, transformFunction: null }, defaultBorderColor: { classPropertyName: "defaultBorderColor", publicName: "defaultBorderColor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changeModel: "changeModel" }, ngImport: i0, template: "<div\r\n class=\"simple-slider-photo\"\r\n [class.simple-slider-photo--disabled]=\"isDisabled()\"\r\n [style.border-width.px]=\"borderWidth()\"\r\n [style.padding.px]=\"cardPadding()\"\r\n [style.border-color]=\"borderColor\"\r\n (click)=\"changeModel.emit()\"\r\n>\r\n @if (photoLink()) {\r\n <img\r\n class=\"simple-slider-photo__image\"\r\n [alt]=\"photoAlt()\"\r\n [ngSrc]=\"photoLink()!\"\r\n [width]=\"cardWidth() - 2*cardPadding() - 2*borderWidth()\"\r\n [height]=\"cardHeight() - 2*cardPadding() - 2*borderWidth()\"\r\n />\r\n }\r\n</div>\r\n", styles: [".simple-slider-photo{border-radius:4px;cursor:pointer;border-style:solid}.simple-slider-photo--disabled{opacity:15%}.simple-slider-photo__image{border-radius:4px;object-fit:cover}\n"], dependencies: [{ kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "decoding", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
51
+ }
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SimpleSliderPhotoComponent, decorators: [{
53
+ type: Component,
54
+ args: [{ selector: 'simple-slider-photo', imports: [NgOptimizedImage], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n class=\"simple-slider-photo\"\r\n [class.simple-slider-photo--disabled]=\"isDisabled()\"\r\n [style.border-width.px]=\"borderWidth()\"\r\n [style.padding.px]=\"cardPadding()\"\r\n [style.border-color]=\"borderColor\"\r\n (click)=\"changeModel.emit()\"\r\n>\r\n @if (photoLink()) {\r\n <img\r\n class=\"simple-slider-photo__image\"\r\n [alt]=\"photoAlt()\"\r\n [ngSrc]=\"photoLink()!\"\r\n [width]=\"cardWidth() - 2*cardPadding() - 2*borderWidth()\"\r\n [height]=\"cardHeight() - 2*cardPadding() - 2*borderWidth()\"\r\n />\r\n }\r\n</div>\r\n", styles: [".simple-slider-photo{border-radius:4px;cursor:pointer;border-style:solid}.simple-slider-photo--disabled{opacity:15%}.simple-slider-photo__image{border-radius:4px;object-fit:cover}\n"] }]
55
+ }], propDecorators: { photoLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "photoLink", required: false }] }], photoAlt: [{ type: i0.Input, args: [{ isSignal: true, alias: "photoAlt", required: false }] }], isActive: [{ type: i0.Input, args: [{ isSignal: true, alias: "isActive", required: false }] }], isDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "isDisabled", required: false }] }], cardWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardWidth", required: false }] }], cardHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardHeight", required: false }] }], borderWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderWidth", required: false }] }], cardPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardPadding", required: false }] }], activeBorderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeBorderColor", required: false }] }], defaultBorderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultBorderColor", required: false }] }], changeModel: [{ type: i0.Output, args: ["changeModel"] }] } });
56
+
57
+ class SimpleSliderComponent {
58
+ window = inject(WINDOW);
59
+ cdr = inject(ChangeDetectorRef);
60
+ destroyRef = inject(DestroyRef);
61
+ propertyPhotos = input([], ...(ngDevMode ? [{ debugName: "propertyPhotos" }] : /* istanbul ignore next */ []));
62
+ selectedElementIndex = input(0, ...(ngDevMode ? [{ debugName: "selectedElementIndex" }] : /* istanbul ignore next */ []));
63
+ cardWidth = input(60, ...(ngDevMode ? [{ debugName: "cardWidth" }] : /* istanbul ignore next */ []));
64
+ cardHeight = input(90, ...(ngDevMode ? [{ debugName: "cardHeight" }] : /* istanbul ignore next */ []));
65
+ cardMargin = input(10, ...(ngDevMode ? [{ debugName: "cardMargin" }] : /* istanbul ignore next */ []));
66
+ borderWidth = input(1, ...(ngDevMode ? [{ debugName: "borderWidth" }] : /* istanbul ignore next */ []));
67
+ cardPadding = input(2, ...(ngDevMode ? [{ debugName: "cardPadding" }] : /* istanbul ignore next */ []));
68
+ activeBorderColor = input('#1976d2', ...(ngDevMode ? [{ debugName: "activeBorderColor" }] : /* istanbul ignore next */ []));
69
+ defaultBorderColor = input('#fff', ...(ngDevMode ? [{ debugName: "defaultBorderColor" }] : /* istanbul ignore next */ []));
70
+ inactiveIconColor = input('#9e9e9e', ...(ngDevMode ? [{ debugName: "inactiveIconColor" }] : /* istanbul ignore next */ []));
71
+ longClickDelay = input(200, ...(ngDevMode ? [{ debugName: "longClickDelay" }] : /* istanbul ignore next */ []));
72
+ arrowBackgroundColor = input('transparent', ...(ngDevMode ? [{ debugName: "arrowBackgroundColor" }] : /* istanbul ignore next */ []));
73
+ arrowBorderColor = input('transparent', ...(ngDevMode ? [{ debugName: "arrowBorderColor" }] : /* istanbul ignore next */ []));
74
+ arrowBorderWidth = input(0, ...(ngDevMode ? [{ debugName: "arrowBorderWidth" }] : /* istanbul ignore next */ []));
75
+ arrowColor = input('#333', ...(ngDevMode ? [{ debugName: "arrowColor" }] : /* istanbul ignore next */ []));
76
+ touchDelta = input(20, ...(ngDevMode ? [{ debugName: "touchDelta" }] : /* istanbul ignore next */ []));
77
+ arrowWidth = input(36, ...(ngDevMode ? [{ debugName: "arrowWidth" }] : /* istanbul ignore next */ []));
78
+ changeModel = output();
79
+ sliderContainer;
80
+ galleryTrack;
81
+ arrowPrevButton;
82
+ arrowNextButton;
83
+ prevArrowLongPress = false;
84
+ nextArrowLongPress = false;
85
+ _sliderContainer;
86
+ _galleryTrack;
87
+ isNextArrowDisabled = false;
88
+ isPrevArrowDisabled = false;
89
+ photoCount = 0;
90
+ galleryWidth = 0;
91
+ arrowsHidden = false;
92
+ touchStartX = 0;
93
+ touchCurrentX = 0;
94
+ constructor() {
95
+ afterNextRender(() => {
96
+ if (this.sliderContainer) {
97
+ this.initSliderContainer();
98
+ }
99
+ if (this.arrowPrevButton) {
100
+ this.initArrowPrevButtonActions();
101
+ }
102
+ if (this.arrowNextButton) {
103
+ this.initArrowNextButtonActions();
104
+ }
105
+ });
106
+ }
107
+ syncCardSliderCount = effect(() => {
108
+ const photos = this.propertyPhotos();
109
+ if (photos?.length) {
110
+ this.photoCount = photos.length;
111
+ }
112
+ }, { ...(ngDevMode ? { debugName: "syncCardSliderCount" } : /* istanbul ignore next */ {}), allowSignalWrites: true });
113
+ ngAfterViewInit() {
114
+ if (this.galleryTrack) {
115
+ this.initGalleryTrack();
116
+ this.initWheelAction(this.galleryTrack);
117
+ }
118
+ }
119
+ stepPrevSlider() {
120
+ this.actionSlider(ESliderAction.STEP_PREV);
121
+ }
122
+ stepNextSlider() {
123
+ this.actionSlider(ESliderAction.STEP_NEXT);
124
+ }
125
+ computedPositionSlider() {
126
+ this.actionSlider(ESliderAction.COMPUTE_POSITION);
127
+ }
128
+ actionSlider(action, touchDelta = 0) {
129
+ const countVisibleSlider = Math.floor(this.galleryWidth / (this.cardWidth() + this.cardMargin()));
130
+ let currentMarginLeft = parseInt((this._galleryTrack?.style.marginLeft).replace('px', ''), 10);
131
+ currentMarginLeft = isNaN(currentMarginLeft) ? 0 : currentMarginLeft;
132
+ let computedPositionSlider = 0;
133
+ const maxDelta = -(this.cardWidth() + this.cardMargin()) * this.photoCount + this.galleryWidth;
134
+ let positionSlider = 0;
135
+ switch (action) {
136
+ case ESliderAction.STEP_NEXT: {
137
+ computedPositionSlider = currentMarginLeft - (this.cardWidth() + this.cardMargin());
138
+ positionSlider = Math.max(computedPositionSlider, maxDelta);
139
+ if (positionSlider < maxDelta) {
140
+ positionSlider = maxDelta;
141
+ }
142
+ if (countVisibleSlider >= this.photoCount) {
143
+ positionSlider = 0;
144
+ }
145
+ break;
146
+ }
147
+ case ESliderAction.STEP_PREV: {
148
+ computedPositionSlider = currentMarginLeft + (this.cardWidth() + this.cardMargin());
149
+ positionSlider = Math.min(computedPositionSlider, 0);
150
+ if (positionSlider > 0) {
151
+ positionSlider = 0;
152
+ }
153
+ break;
154
+ }
155
+ case ESliderAction.COMPUTE_POSITION: {
156
+ computedPositionSlider = -(this.cardWidth() + this.cardMargin()) * this.selectedElementIndex();
157
+ positionSlider = Math.max(computedPositionSlider, maxDelta);
158
+ if (positionSlider > 0) {
159
+ positionSlider = 0;
160
+ }
161
+ break;
162
+ }
163
+ case ESliderAction.TOUCH_MOVE: {
164
+ positionSlider = currentMarginLeft + touchDelta;
165
+ if (positionSlider > 0) {
166
+ positionSlider = 0;
167
+ }
168
+ if (positionSlider < maxDelta) {
169
+ positionSlider = maxDelta;
170
+ }
171
+ if (countVisibleSlider >= this.photoCount) {
172
+ positionSlider = 0;
173
+ }
174
+ break;
175
+ }
176
+ }
177
+ if (this._galleryTrack) {
178
+ this._galleryTrack.style.marginLeft = positionSlider + 'px';
179
+ }
180
+ this.isPrevArrowDisabled = positionSlider === 0;
181
+ this.isNextArrowDisabled = maxDelta === positionSlider;
182
+ this.cdr.detectChanges();
183
+ }
184
+ touchStartGallery(evt) {
185
+ const countTouch = evt.touches.length;
186
+ if (countTouch > 1) {
187
+ return;
188
+ }
189
+ this.touchStartX = evt.touches[0].clientX;
190
+ this.touchCurrentX = this.touchStartX;
191
+ }
192
+ touchMoveGallery(evt) {
193
+ if (!this.arrowsHidden) {
194
+ evt.preventDefault();
195
+ }
196
+ const countTouch = evt.touches.length;
197
+ if (countTouch > 1) {
198
+ return;
199
+ }
200
+ const curr = evt.touches[0].clientX;
201
+ const touchDelta = curr - this.touchCurrentX;
202
+ if (Math.abs(touchDelta) > this.touchDelta()) {
203
+ this.actionSlider(ESliderAction.TOUCH_MOVE, touchDelta);
204
+ this.touchCurrentX = curr;
205
+ }
206
+ }
207
+ initGalleryTrack() {
208
+ this._galleryTrack = this.galleryTrack?.nativeElement;
209
+ this.galleryWidth = +(this._galleryTrack?.parentElement?.offsetWidth || 0);
210
+ this.photoCount = this._galleryTrack?.children.length || 0;
211
+ }
212
+ initWheelAction(elementRef) {
213
+ fromEvent(elementRef.nativeElement, 'wheel')
214
+ .pipe(takeUntilDestroyed(this.destroyRef))
215
+ .subscribe((e) => {
216
+ if (!this.arrowsHidden) {
217
+ e.preventDefault();
218
+ }
219
+ const delta = e.deltaY;
220
+ if (delta > 0) {
221
+ this.stepNextSlider();
222
+ }
223
+ else if (delta < 0) {
224
+ this.stepPrevSlider();
225
+ }
226
+ });
227
+ }
228
+ initSliderContainer() {
229
+ if (!this.window) {
230
+ return;
231
+ }
232
+ this._sliderContainer = this.sliderContainer?.nativeElement;
233
+ const resize$ = fromEvent(this.window, 'resize').pipe(startWith([
234
+ this._sliderContainer?.offsetWidth,
235
+ +(this._galleryTrack?.parentElement?.offsetWidth || 0),
236
+ ]), switchMap(() => of([
237
+ +(this._sliderContainer?.offsetWidth || 0),
238
+ +(this._galleryTrack?.parentElement?.offsetWidth || 0),
239
+ ])));
240
+ resize$
241
+ .pipe(distinctUntilChanged(), debounceTime(100), takeUntilDestroyed(this.destroyRef))
242
+ .subscribe(([currentWidthPropertyPhotoSlider, galleryUloffsetWidth]) => {
243
+ this.galleryWidth = galleryUloffsetWidth;
244
+ const count = (currentWidthPropertyPhotoSlider - 2 * this.arrowWidth()) /
245
+ (this.cardWidth() + this.cardMargin());
246
+ const countCeil = Math.ceil(count);
247
+ this.arrowsHidden = countCeil > this.photoCount;
248
+ this.computedPositionSlider();
249
+ this.cdr.detectChanges();
250
+ });
251
+ }
252
+ initArrowPrevButtonActions() {
253
+ if (this.arrowPrevButton) {
254
+ this.initLongTouch(this.arrowPrevButton, EArrowAction.STEP_PREV);
255
+ this.initLongClick(this.arrowPrevButton, EArrowAction.STEP_PREV);
256
+ }
257
+ }
258
+ initArrowNextButtonActions() {
259
+ if (this.arrowNextButton) {
260
+ this.initLongTouch(this.arrowNextButton, EArrowAction.STEP_NEXT);
261
+ this.initLongClick(this.arrowNextButton, EArrowAction.STEP_NEXT);
262
+ }
263
+ }
264
+ initLongTouch(elementRef, typeArrowAction) {
265
+ const touchstart$ = fromEvent(elementRef.nativeElement, 'touchstart');
266
+ const touchend$ = fromEvent(elementRef.nativeElement, 'touchend');
267
+ const longTouch$ = touchstart$.pipe(switchMap((v) => {
268
+ return of(v).pipe(delay(this.longClickDelay()), takeUntil(touchend$));
269
+ }));
270
+ longTouch$
271
+ .pipe(switchMap(() => {
272
+ return interval(1000).pipe(takeUntil(touchend$));
273
+ }), takeUntilDestroyed(this.destroyRef))
274
+ .subscribe(() => {
275
+ switch (typeArrowAction) {
276
+ case EArrowAction.STEP_PREV: {
277
+ this.prevArrowLongPress = true;
278
+ this.stepPrevSlider();
279
+ break;
280
+ }
281
+ case EArrowAction.STEP_NEXT: {
282
+ this.nextArrowLongPress = true;
283
+ this.stepNextSlider();
284
+ break;
285
+ }
286
+ }
287
+ });
288
+ }
289
+ initLongClick(elementRef, typeArrowAction) {
290
+ const mouseUp$ = fromEvent(elementRef.nativeElement, 'mouseup');
291
+ const mouseDown$ = fromEvent(elementRef.nativeElement, 'mousedown');
292
+ const click$ = fromEvent(elementRef.nativeElement, 'click');
293
+ const longClick$ = mouseDown$.pipe(switchMap((v) => {
294
+ return of(v).pipe(delay(this.longClickDelay()), takeUntil(mouseUp$));
295
+ }));
296
+ click$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
297
+ switch (typeArrowAction) {
298
+ case EArrowAction.STEP_PREV: {
299
+ if (this.prevArrowLongPress) {
300
+ this.prevArrowLongPress = false;
301
+ return;
302
+ }
303
+ this.stepPrevSlider();
304
+ break;
305
+ }
306
+ case EArrowAction.STEP_NEXT: {
307
+ if (this.nextArrowLongPress) {
308
+ this.nextArrowLongPress = false;
309
+ return;
310
+ }
311
+ this.stepNextSlider();
312
+ break;
313
+ }
314
+ }
315
+ });
316
+ longClick$
317
+ .pipe(switchMap(() => {
318
+ return interval(1000).pipe(takeUntil(mouseUp$));
319
+ }), takeUntilDestroyed(this.destroyRef))
320
+ .subscribe(() => {
321
+ switch (typeArrowAction) {
322
+ case EArrowAction.STEP_PREV: {
323
+ this.prevArrowLongPress = true;
324
+ this.stepPrevSlider();
325
+ break;
326
+ }
327
+ case EArrowAction.STEP_NEXT: {
328
+ this.nextArrowLongPress = true;
329
+ this.stepNextSlider();
330
+ break;
331
+ }
332
+ }
333
+ });
334
+ }
335
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SimpleSliderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
336
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.23", type: SimpleSliderComponent, isStandalone: true, selector: "lib-simple-slider", inputs: { propertyPhotos: { classPropertyName: "propertyPhotos", publicName: "propertyPhotos", isSignal: true, isRequired: false, transformFunction: null }, selectedElementIndex: { classPropertyName: "selectedElementIndex", publicName: "selectedElementIndex", isSignal: true, isRequired: false, transformFunction: null }, cardWidth: { classPropertyName: "cardWidth", publicName: "cardWidth", isSignal: true, isRequired: false, transformFunction: null }, cardHeight: { classPropertyName: "cardHeight", publicName: "cardHeight", isSignal: true, isRequired: false, transformFunction: null }, cardMargin: { classPropertyName: "cardMargin", publicName: "cardMargin", isSignal: true, isRequired: false, transformFunction: null }, borderWidth: { classPropertyName: "borderWidth", publicName: "borderWidth", isSignal: true, isRequired: false, transformFunction: null }, cardPadding: { classPropertyName: "cardPadding", publicName: "cardPadding", isSignal: true, isRequired: false, transformFunction: null }, activeBorderColor: { classPropertyName: "activeBorderColor", publicName: "activeBorderColor", isSignal: true, isRequired: false, transformFunction: null }, defaultBorderColor: { classPropertyName: "defaultBorderColor", publicName: "defaultBorderColor", isSignal: true, isRequired: false, transformFunction: null }, inactiveIconColor: { classPropertyName: "inactiveIconColor", publicName: "inactiveIconColor", isSignal: true, isRequired: false, transformFunction: null }, longClickDelay: { classPropertyName: "longClickDelay", publicName: "longClickDelay", isSignal: true, isRequired: false, transformFunction: null }, arrowBackgroundColor: { classPropertyName: "arrowBackgroundColor", publicName: "arrowBackgroundColor", isSignal: true, isRequired: false, transformFunction: null }, arrowBorderColor: { classPropertyName: "arrowBorderColor", publicName: "arrowBorderColor", isSignal: true, isRequired: false, transformFunction: null }, arrowBorderWidth: { classPropertyName: "arrowBorderWidth", publicName: "arrowBorderWidth", isSignal: true, isRequired: false, transformFunction: null }, arrowColor: { classPropertyName: "arrowColor", publicName: "arrowColor", isSignal: true, isRequired: false, transformFunction: null }, touchDelta: { classPropertyName: "touchDelta", publicName: "touchDelta", isSignal: true, isRequired: false, transformFunction: null }, arrowWidth: { classPropertyName: "arrowWidth", publicName: "arrowWidth", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { changeModel: "changeModel" }, providers: [WINDOW_PROVIDERS], viewQueries: [{ propertyName: "sliderContainer", first: true, predicate: ["sliderContainer"], descendants: true, read: ElementRef }, { propertyName: "galleryTrack", first: true, predicate: ["galleryTrack"], descendants: true, read: ElementRef }, { propertyName: "arrowPrevButton", first: true, predicate: ["arrowPrevButton"], descendants: true, read: ElementRef }, { propertyName: "arrowNextButton", first: true, predicate: ["arrowNextButton"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"simple-slider\" #sliderContainer>\r\n <div class=\"simple-slider__arrow simple-slider__arrow--prev\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowPrevButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isPrevArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M20.547 21.453l-6.107-6.12 6.107-6.12-1.88-1.88-8 8 8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"simple-slider__gallery\">\r\n <ul class=\"simple-slider__track\" #galleryTrack (touchstart)=\"touchStartGallery($event)\" (touchmove)=\"touchMoveGallery($event)\">\r\n @for (photo of propertyPhotos(); let i = $index; track photo.url) {\r\n <li class=\"simple-slider__item\" [style.margin-right.px]=\"cardMargin()\">\r\n <simple-slider-photo\r\n [photoLink]=\"photo.url\"\r\n [photoAlt]=\"photo.alt\"\r\n [isDisabled]=\"photo.disabled || false\"\r\n [isActive]=\"i === selectedElementIndex()\"\r\n [cardWidth]=\"cardWidth()\"\r\n [cardHeight]=\"cardHeight()\"\r\n [borderWidth]=\"borderWidth()\"\r\n [cardPadding]=\"cardPadding()\"\r\n [activeBorderColor]=\"activeBorderColor()\"\r\n [defaultBorderColor]=\"defaultBorderColor()\"\r\n (changeModel)=\"changeModel.emit(i)\"\r\n ></simple-slider-photo>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <div class=\"simple-slider__arrow simple-slider__arrow--next\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowNextButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isNextArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M11.453 21.787l6.107-6.12-6.107-6.12 1.88-1.88 8 8-8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".simple-slider{display:flex;line-height:normal;-webkit-user-select:none;user-select:none}.simple-slider__arrow{touch-action:manipulation;min-width:36px}.simple-slider__arrow--hidden{display:none}.simple-slider__button{height:100%;width:100%;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.simple-slider__icon{width:24px;height:24px}.simple-slider__gallery{overflow:hidden;flex-grow:1}.simple-slider__track{display:flex;margin:0;padding:0;list-style:none;transition:margin-left .25s;font-size:0}.simple-slider__item{display:inline-block}\n"], dependencies: [{ kind: "component", type: SimpleSliderPhotoComponent, selector: "simple-slider-photo", inputs: ["photoLink", "photoAlt", "isActive", "isDisabled", "cardWidth", "cardHeight", "borderWidth", "cardPadding", "activeBorderColor", "defaultBorderColor"], outputs: ["changeModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
337
+ }
338
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.23", ngImport: i0, type: SimpleSliderComponent, decorators: [{
339
+ type: Component,
340
+ args: [{ selector: 'lib-simple-slider', imports: [SimpleSliderPhotoComponent], providers: [WINDOW_PROVIDERS], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"simple-slider\" #sliderContainer>\r\n <div class=\"simple-slider__arrow simple-slider__arrow--prev\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowPrevButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isPrevArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M20.547 21.453l-6.107-6.12 6.107-6.12-1.88-1.88-8 8 8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"simple-slider__gallery\">\r\n <ul class=\"simple-slider__track\" #galleryTrack (touchstart)=\"touchStartGallery($event)\" (touchmove)=\"touchMoveGallery($event)\">\r\n @for (photo of propertyPhotos(); let i = $index; track photo.url) {\r\n <li class=\"simple-slider__item\" [style.margin-right.px]=\"cardMargin()\">\r\n <simple-slider-photo\r\n [photoLink]=\"photo.url\"\r\n [photoAlt]=\"photo.alt\"\r\n [isDisabled]=\"photo.disabled || false\"\r\n [isActive]=\"i === selectedElementIndex()\"\r\n [cardWidth]=\"cardWidth()\"\r\n [cardHeight]=\"cardHeight()\"\r\n [borderWidth]=\"borderWidth()\"\r\n [cardPadding]=\"cardPadding()\"\r\n [activeBorderColor]=\"activeBorderColor()\"\r\n [defaultBorderColor]=\"defaultBorderColor()\"\r\n (changeModel)=\"changeModel.emit(i)\"\r\n ></simple-slider-photo>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <div class=\"simple-slider__arrow simple-slider__arrow--next\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowNextButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isNextArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M11.453 21.787l6.107-6.12-6.107-6.12 1.88-1.88 8 8-8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n", styles: [".simple-slider{display:flex;line-height:normal;-webkit-user-select:none;user-select:none}.simple-slider__arrow{touch-action:manipulation;min-width:36px}.simple-slider__arrow--hidden{display:none}.simple-slider__button{height:100%;width:100%;cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.simple-slider__icon{width:24px;height:24px}.simple-slider__gallery{overflow:hidden;flex-grow:1}.simple-slider__track{display:flex;margin:0;padding:0;list-style:none;transition:margin-left .25s;font-size:0}.simple-slider__item{display:inline-block}\n"] }]
341
+ }], ctorParameters: () => [], propDecorators: { propertyPhotos: [{ type: i0.Input, args: [{ isSignal: true, alias: "propertyPhotos", required: false }] }], selectedElementIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedElementIndex", required: false }] }], cardWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardWidth", required: false }] }], cardHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardHeight", required: false }] }], cardMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardMargin", required: false }] }], borderWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "borderWidth", required: false }] }], cardPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "cardPadding", required: false }] }], activeBorderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "activeBorderColor", required: false }] }], defaultBorderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultBorderColor", required: false }] }], inactiveIconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "inactiveIconColor", required: false }] }], longClickDelay: [{ type: i0.Input, args: [{ isSignal: true, alias: "longClickDelay", required: false }] }], arrowBackgroundColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowBackgroundColor", required: false }] }], arrowBorderColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowBorderColor", required: false }] }], arrowBorderWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowBorderWidth", required: false }] }], arrowColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowColor", required: false }] }], touchDelta: [{ type: i0.Input, args: [{ isSignal: true, alias: "touchDelta", required: false }] }], arrowWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowWidth", required: false }] }], changeModel: [{ type: i0.Output, args: ["changeModel"] }], sliderContainer: [{
342
+ type: ViewChild,
343
+ args: ['sliderContainer', { static: false, read: ElementRef }]
344
+ }], galleryTrack: [{
345
+ type: ViewChild,
346
+ args: ['galleryTrack', { static: false, read: ElementRef }]
347
+ }], arrowPrevButton: [{
348
+ type: ViewChild,
349
+ args: ['arrowPrevButton', { static: false, read: ElementRef }]
350
+ }], arrowNextButton: [{
351
+ type: ViewChild,
352
+ args: ['arrowNextButton', { static: false, read: ElementRef }]
353
+ }] } });
354
+
355
+ /*
356
+ * Public API Surface of simple-slider
357
+ */
358
+
359
+ /**
360
+ * Generated bundle index. Do not edit.
361
+ */
362
+
363
+ export { SimpleSliderComponent };
364
+ //# sourceMappingURL=simple-slider-angular.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-slider-angular.mjs","sources":["../../../projects/simple-slider/src/lib/providers/window.providers.ts","../../../projects/simple-slider/src/lib/enums/slider.enums.ts","../../../projects/simple-slider/src/lib/components/simple-slider-photo/simple-slider-photo.component.ts","../../../projects/simple-slider/src/lib/components/simple-slider-photo/simple-slider-photo.component.html","../../../projects/simple-slider/src/lib/simple-slider.component.ts","../../../projects/simple-slider/src/lib/simple-slider.component.html","../../../projects/simple-slider/src/public-api.ts","../../../projects/simple-slider/src/simple-slider-angular.ts"],"sourcesContent":["import { FactoryProvider, InjectionToken, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n\r\nexport const WINDOW = new InjectionToken<Window>('window');\r\n\r\n\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\r\nconst windowProvider: FactoryProvider = {\r\n provide: WINDOW,\r\n useFactory: (platformId: any) => {\r\n if (isPlatformBrowser(platformId)) {\r\n return window;\r\n }\r\n return {};\r\n },\r\n deps: [PLATFORM_ID],\r\n};\r\n\r\nexport const WINDOW_PROVIDERS = [windowProvider];\r\n","export enum ESliderAction {\n COMPUTE_POSITION = 'computePosition',\n STEP_NEXT = 'stepNext',\n STEP_PREV = 'stepPrev',\n TOUCH_MOVE = 'touchMove',\n}\n\nexport enum EArrowAction {\n STEP_NEXT = 'stepNext',\n STEP_PREV = 'stepPrev',\n}\n","import { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\r\nimport { NgOptimizedImage } from '@angular/common';\r\nimport { SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'simple-slider-photo',\r\n templateUrl: './simple-slider-photo.component.html',\r\n styleUrls: ['./simple-slider-photo.component.scss'],\r\n imports: [NgOptimizedImage],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleSliderPhotoComponent {\r\n photoLink = input<string | SafeResourceUrl>();\r\n photoAlt = input('');\r\n isActive = input(false);\r\n isDisabled = input(false);\r\n cardWidth = input(0);\r\n cardHeight = input(0);\r\n borderWidth = input(0);\r\n cardPadding = input(0);\r\n activeBorderColor = input('#1976d2');\r\n defaultBorderColor = input('#fff');\r\n\r\n changeModel = output<void>();\r\n\r\n get borderColor(): string {\r\n return this.isActive() ? this.activeBorderColor() : this.defaultBorderColor();\r\n }\r\n}\r\n","<div\r\n class=\"simple-slider-photo\"\r\n [class.simple-slider-photo--disabled]=\"isDisabled()\"\r\n [style.border-width.px]=\"borderWidth()\"\r\n [style.padding.px]=\"cardPadding()\"\r\n [style.border-color]=\"borderColor\"\r\n (click)=\"changeModel.emit()\"\r\n>\r\n @if (photoLink()) {\r\n <img\r\n class=\"simple-slider-photo__image\"\r\n [alt]=\"photoAlt()\"\r\n [ngSrc]=\"photoLink()!\"\r\n [width]=\"cardWidth() - 2*cardPadding() - 2*borderWidth()\"\r\n [height]=\"cardHeight() - 2*cardPadding() - 2*borderWidth()\"\r\n />\r\n }\r\n</div>\r\n","import {\r\n afterNextRender,\r\n AfterViewInit,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n DestroyRef,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n output,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { WINDOW, WINDOW_PROVIDERS } from './providers/window.providers';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport {\r\n debounceTime,\r\n fromEvent,\r\n startWith,\r\n switchMap,\r\n distinctUntilChanged,\r\n of,\r\n delay,\r\n takeUntil,\r\n interval,\r\n} from 'rxjs';\r\nimport { EArrowAction, ESliderAction } from './enums/slider.enums';\r\nimport { ISliderPhoto } from './interfaces/slider.interface';\r\nimport { SimpleSliderPhotoComponent } from './components/simple-slider-photo/simple-slider-photo.component';\r\n\r\n@Component({\r\n selector: 'lib-simple-slider',\r\n templateUrl: './simple-slider.component.html',\r\n styleUrls: ['./simple-slider.component.scss'],\r\n imports: [SimpleSliderPhotoComponent],\r\n providers: [WINDOW_PROVIDERS],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SimpleSliderComponent implements AfterViewInit {\r\n private readonly window = inject(WINDOW);\r\n\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n propertyPhotos = input<ISliderPhoto[]>([]);\r\n selectedElementIndex = input(0);\r\n cardWidth = input(60);\r\n cardHeight = input(90);\r\n cardMargin = input(10);\r\n borderWidth = input(1);\r\n cardPadding = input(2);\r\n activeBorderColor = input('#1976d2');\r\n defaultBorderColor = input('#fff');\r\n inactiveIconColor = input('#9e9e9e');\r\n longClickDelay = input(200);\r\n arrowBackgroundColor = input('transparent');\r\n arrowBorderColor = input('transparent');\r\n arrowBorderWidth = input(0);\r\n arrowColor = input('#333');\r\n touchDelta = input(20);\r\n arrowWidth = input(36);\r\n\r\n changeModel = output<number>();\r\n\r\n @ViewChild('sliderContainer', { static: false, read: ElementRef })\r\n sliderContainer?: ElementRef;\r\n @ViewChild('galleryTrack', { static: false, read: ElementRef })\r\n galleryTrack?: ElementRef;\r\n @ViewChild('arrowPrevButton', { static: false, read: ElementRef })\r\n arrowPrevButton?: ElementRef;\r\n @ViewChild('arrowNextButton', { static: false, read: ElementRef })\r\n arrowNextButton?: ElementRef;\r\n\r\n prevArrowLongPress = false;\r\n nextArrowLongPress = false;\r\n\r\n private _sliderContainer?: HTMLDivElement;\r\n private _galleryTrack?: HTMLDivElement;\r\n\r\n isNextArrowDisabled = false;\r\n isPrevArrowDisabled = false;\r\n\r\n photoCount = 0;\r\n galleryWidth = 0;\r\n arrowsHidden = false;\r\n\r\n touchStartX = 0;\r\n touchCurrentX = 0;\r\n\r\n constructor() {\r\n afterNextRender(() => {\r\n if (this.sliderContainer) {\r\n this.initSliderContainer();\r\n }\r\n\r\n if (this.arrowPrevButton) {\r\n this.initArrowPrevButtonActions();\r\n }\r\n\r\n if (this.arrowNextButton) {\r\n this.initArrowNextButtonActions();\r\n }\r\n });\r\n }\r\n\r\n private syncCardSliderCount = effect(() => {\r\n const photos = this.propertyPhotos();\r\n if (photos?.length) {\r\n this.photoCount = photos.length;\r\n }\r\n }, { allowSignalWrites: true });\r\n\r\n ngAfterViewInit() {\r\n if (this.galleryTrack) {\r\n this.initGalleryTrack();\r\n this.initWheelAction(this.galleryTrack);\r\n }\r\n }\r\n\r\n public stepPrevSlider(): void {\r\n this.actionSlider(ESliderAction.STEP_PREV);\r\n }\r\n\r\n public stepNextSlider(): void {\r\n this.actionSlider(ESliderAction.STEP_NEXT);\r\n }\r\n\r\n public computedPositionSlider(): void {\r\n this.actionSlider(ESliderAction.COMPUTE_POSITION);\r\n }\r\n\r\n private actionSlider(action: ESliderAction, touchDelta = 0): void {\r\n const countVisibleSlider = Math.floor(this.galleryWidth / (this.cardWidth() + this.cardMargin()));\r\n\r\n let currentMarginLeft = parseInt(\r\n (this._galleryTrack?.style.marginLeft as string).replace('px', ''),\r\n 10,\r\n );\r\n currentMarginLeft = isNaN(currentMarginLeft) ? 0 : currentMarginLeft;\r\n\r\n let computedPositionSlider = 0;\r\n const maxDelta = -(this.cardWidth() + this.cardMargin()) * this.photoCount + this.galleryWidth;\r\n let positionSlider = 0;\r\n\r\n switch (action) {\r\n case ESliderAction.STEP_NEXT: {\r\n computedPositionSlider = currentMarginLeft - (this.cardWidth() + this.cardMargin());\r\n positionSlider = Math.max(computedPositionSlider, maxDelta);\r\n\r\n if (positionSlider < maxDelta) {\r\n positionSlider = maxDelta;\r\n }\r\n\r\n if (countVisibleSlider >= this.photoCount) {\r\n positionSlider = 0;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case ESliderAction.STEP_PREV: {\r\n computedPositionSlider = currentMarginLeft + (this.cardWidth() + this.cardMargin());\r\n positionSlider = Math.min(computedPositionSlider, 0);\r\n\r\n if (positionSlider > 0) {\r\n positionSlider = 0;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case ESliderAction.COMPUTE_POSITION: {\r\n computedPositionSlider = -(this.cardWidth() + this.cardMargin()) * this.selectedElementIndex();\r\n positionSlider = Math.max(computedPositionSlider, maxDelta);\r\n\r\n if (positionSlider > 0) {\r\n positionSlider = 0;\r\n }\r\n\r\n break;\r\n }\r\n\r\n case ESliderAction.TOUCH_MOVE: {\r\n positionSlider = currentMarginLeft + touchDelta;\r\n\r\n if (positionSlider > 0) {\r\n positionSlider = 0;\r\n }\r\n\r\n if (positionSlider < maxDelta) {\r\n positionSlider = maxDelta;\r\n }\r\n\r\n if (countVisibleSlider >= this.photoCount) {\r\n positionSlider = 0;\r\n }\r\n\r\n break;\r\n }\r\n }\r\n\r\n if (this._galleryTrack) {\r\n this._galleryTrack.style.marginLeft = positionSlider + 'px';\r\n }\r\n\r\n this.isPrevArrowDisabled = positionSlider === 0;\r\n this.isNextArrowDisabled = maxDelta === positionSlider;\r\n\r\n this.cdr.detectChanges();\r\n }\r\n\r\n public touchStartGallery(evt: TouchEvent) {\r\n const countTouch = evt.touches.length;\r\n\r\n if (countTouch > 1) {\r\n return;\r\n }\r\n\r\n this.touchStartX = evt.touches[0].clientX;\r\n this.touchCurrentX = this.touchStartX;\r\n }\r\n\r\n public touchMoveGallery(evt: TouchEvent) {\r\n if (!this.arrowsHidden) {\r\n evt.preventDefault();\r\n }\r\n\r\n const countTouch = evt.touches.length;\r\n\r\n if (countTouch > 1) {\r\n return;\r\n }\r\n const curr = evt.touches[0].clientX;\r\n const touchDelta = curr - this.touchCurrentX;\r\n\r\n if (Math.abs(touchDelta) > this.touchDelta()) {\r\n this.actionSlider(ESliderAction.TOUCH_MOVE, touchDelta);\r\n this.touchCurrentX = curr;\r\n }\r\n }\r\n\r\n private initGalleryTrack() {\r\n this._galleryTrack = this.galleryTrack?.nativeElement;\r\n this.galleryWidth = +(this._galleryTrack?.parentElement?.offsetWidth || 0);\r\n this.photoCount = this._galleryTrack?.children.length || 0;\r\n }\r\n\r\n private initWheelAction(elementRef: ElementRef) {\r\n fromEvent<WheelEvent>(elementRef.nativeElement, 'wheel')\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(\r\n (e: WheelEvent) => {\r\n if (!this.arrowsHidden) {\r\n e.preventDefault();\r\n }\r\n const delta = e.deltaY;\r\n if (delta > 0) {\r\n this.stepNextSlider();\r\n } else if (delta < 0) {\r\n this.stepPrevSlider();\r\n }\r\n },\r\n );\r\n }\r\n\r\n private initSliderContainer() {\r\n if (!this.window) {\r\n return;\r\n }\r\n\r\n this._sliderContainer = this.sliderContainer?.nativeElement;\r\n\r\n const resize$ = fromEvent(this.window, 'resize').pipe(\r\n startWith([\r\n this._sliderContainer?.offsetWidth,\r\n +(this._galleryTrack?.parentElement?.offsetWidth || 0),\r\n ]),\r\n switchMap(() =>\r\n of([\r\n +(this._sliderContainer?.offsetWidth || 0),\r\n +(this._galleryTrack?.parentElement?.offsetWidth || 0),\r\n ]),\r\n ),\r\n );\r\n\r\n resize$\r\n .pipe(distinctUntilChanged(), debounceTime(100), takeUntilDestroyed(this.destroyRef))\r\n .subscribe(([currentWidthPropertyPhotoSlider, galleryUloffsetWidth]) => {\r\n this.galleryWidth = galleryUloffsetWidth;\r\n const count =\r\n (currentWidthPropertyPhotoSlider - 2 * this.arrowWidth()) /\r\n (this.cardWidth() + this.cardMargin());\r\n const countCeil = Math.ceil(count);\r\n\r\n this.arrowsHidden = countCeil > this.photoCount;\r\n this.computedPositionSlider();\r\n\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n\r\n private initArrowPrevButtonActions() {\r\n if (this.arrowPrevButton) {\r\n this.initLongTouch(this.arrowPrevButton, EArrowAction.STEP_PREV);\r\n this.initLongClick(this.arrowPrevButton, EArrowAction.STEP_PREV);\r\n }\r\n }\r\n\r\n private initArrowNextButtonActions() {\r\n if (this.arrowNextButton) {\r\n this.initLongTouch(this.arrowNextButton, EArrowAction.STEP_NEXT);\r\n this.initLongClick(this.arrowNextButton, EArrowAction.STEP_NEXT);\r\n }\r\n }\r\n\r\n private initLongTouch(elementRef: ElementRef, typeArrowAction: EArrowAction) {\r\n const touchstart$ = fromEvent(elementRef.nativeElement, 'touchstart');\r\n const touchend$ = fromEvent(elementRef.nativeElement, 'touchend');\r\n\r\n const longTouch$ = touchstart$.pipe(\r\n switchMap((v) => {\r\n return of(v).pipe(delay(this.longClickDelay()), takeUntil(touchend$));\r\n }),\r\n );\r\n\r\n longTouch$\r\n .pipe(\r\n switchMap(() => {\r\n return interval(1000).pipe(takeUntil(touchend$));\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe(() => {\r\n switch (typeArrowAction) {\r\n case EArrowAction.STEP_PREV: {\r\n this.prevArrowLongPress = true;\r\n this.stepPrevSlider();\r\n break;\r\n }\r\n case EArrowAction.STEP_NEXT: {\r\n this.nextArrowLongPress = true;\r\n this.stepNextSlider();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private initLongClick(elementRef: ElementRef, typeArrowAction: EArrowAction) {\r\n const mouseUp$ = fromEvent(elementRef.nativeElement, 'mouseup');\r\n const mouseDown$ = fromEvent(elementRef.nativeElement, 'mousedown');\r\n const click$ = fromEvent(elementRef.nativeElement, 'click');\r\n\r\n const longClick$ = mouseDown$.pipe(\r\n switchMap((v) => {\r\n return of(v).pipe(delay(this.longClickDelay()), takeUntil(mouseUp$));\r\n }),\r\n );\r\n\r\n click$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\r\n switch (typeArrowAction) {\r\n case EArrowAction.STEP_PREV: {\r\n if (this.prevArrowLongPress) {\r\n this.prevArrowLongPress = false;\r\n return;\r\n }\r\n this.stepPrevSlider();\r\n break;\r\n }\r\n case EArrowAction.STEP_NEXT: {\r\n if (this.nextArrowLongPress) {\r\n this.nextArrowLongPress = false;\r\n return;\r\n }\r\n this.stepNextSlider();\r\n break;\r\n }\r\n }\r\n });\r\n\r\n longClick$\r\n .pipe(\r\n switchMap(() => {\r\n return interval(1000).pipe(takeUntil(mouseUp$));\r\n }),\r\n takeUntilDestroyed(this.destroyRef),\r\n )\r\n .subscribe(() => {\r\n switch (typeArrowAction) {\r\n case EArrowAction.STEP_PREV: {\r\n this.prevArrowLongPress = true;\r\n this.stepPrevSlider();\r\n break;\r\n }\r\n case EArrowAction.STEP_NEXT: {\r\n this.nextArrowLongPress = true;\r\n this.stepNextSlider();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","<div class=\"simple-slider\" #sliderContainer>\r\n <div class=\"simple-slider__arrow simple-slider__arrow--prev\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowPrevButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isPrevArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M20.547 21.453l-6.107-6.12 6.107-6.12-1.88-1.88-8 8 8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n <div class=\"simple-slider__gallery\">\r\n <ul class=\"simple-slider__track\" #galleryTrack (touchstart)=\"touchStartGallery($event)\" (touchmove)=\"touchMoveGallery($event)\">\r\n @for (photo of propertyPhotos(); let i = $index; track photo.url) {\r\n <li class=\"simple-slider__item\" [style.margin-right.px]=\"cardMargin()\">\r\n <simple-slider-photo\r\n [photoLink]=\"photo.url\"\r\n [photoAlt]=\"photo.alt\"\r\n [isDisabled]=\"photo.disabled || false\"\r\n [isActive]=\"i === selectedElementIndex()\"\r\n [cardWidth]=\"cardWidth()\"\r\n [cardHeight]=\"cardHeight()\"\r\n [borderWidth]=\"borderWidth()\"\r\n [cardPadding]=\"cardPadding()\"\r\n [activeBorderColor]=\"activeBorderColor()\"\r\n [defaultBorderColor]=\"defaultBorderColor()\"\r\n (changeModel)=\"changeModel.emit(i)\"\r\n ></simple-slider-photo>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n\r\n <div class=\"simple-slider__arrow simple-slider__arrow--next\" [class.simple-slider__arrow--hidden]=\"arrowsHidden\">\r\n <button\r\n class=\"simple-slider__button\"\r\n type=\"button\"\r\n #arrowNextButton\r\n [style.background-color]=\"arrowBackgroundColor()\"\r\n [style.border-color]=\"arrowBorderColor()\"\r\n [style.border-width.px]=\"arrowBorderWidth()\"\r\n style=\"border-style: solid\"\r\n >\r\n <svg class=\"simple-slider__icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" [style.color]=\"isNextArrowDisabled ? inactiveIconColor() : arrowColor()\">\r\n <path fill=\"currentColor\" d=\"M11.453 21.787l6.107-6.12-6.107-6.12 1.88-1.88 8 8-8 8z\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n</div>\r\n","/*\n * Public API Surface of simple-slider\n */\n\nexport * from './lib/simple-slider.component';\nexport * from './lib/interfaces/slider.interface';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@severfam/simple-slider-angular",
3
+ "version": "0.1.0",
4
+ "description": "A lightweight, configurable photo slider/gallery component for Angular with touch support, arrow navigation, and full customization via signal-based inputs.",
5
+ "keywords": [
6
+ "angular",
7
+ "slider",
8
+ "gallery",
9
+ "photo-slider",
10
+ "image-carousel",
11
+ "carousel",
12
+ "component",
13
+ "ng",
14
+ "angular-component",
15
+ "touch-slider",
16
+ "responsive-slider"
17
+ ],
18
+ "license": "MIT",
19
+ "peerDependencies": {
20
+ "@angular/common": "^21.0.0",
21
+ "@angular/core": "^21.0.0",
22
+ "@angular/platform-browser": "^21.0.0"
23
+ },
24
+ "dependencies": {
25
+ "tslib": "^2.3.0"
26
+ },
27
+ "sideEffects": false,
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/sashaseverfam/simple-slider.git"
31
+ },
32
+ "homepage": "https://github.com/sashaseverfam/simple-slider#readme",
33
+ "bugs": {
34
+ "url": "https://github.com/sashaseverfam/simple-slider/issues"
35
+ },
36
+ "module": "fesm2022/severfam-simple-slider-angular.mjs",
37
+ "typings": "types/severfam-simple-slider-angular.d.ts",
38
+ "exports": {
39
+ "./package.json": {
40
+ "default": "./package.json"
41
+ },
42
+ ".": {
43
+ "types": "./types/severfam-simple-slider-angular.d.ts",
44
+ "default": "./fesm2022/severfam-simple-slider-angular.mjs"
45
+ }
46
+ },
47
+ "type": "module"
48
+ }
@@ -0,0 +1,70 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { AfterViewInit, ElementRef } from '@angular/core';
3
+ import { SafeResourceUrl } from '@angular/platform-browser';
4
+
5
+ interface ISliderPhoto {
6
+ url: string | SafeResourceUrl;
7
+ name: string;
8
+ alt: string;
9
+ disabled?: boolean;
10
+ }
11
+
12
+ declare class SimpleSliderComponent implements AfterViewInit {
13
+ private readonly window;
14
+ private readonly cdr;
15
+ private readonly destroyRef;
16
+ propertyPhotos: _angular_core.InputSignal<ISliderPhoto[]>;
17
+ selectedElementIndex: _angular_core.InputSignal<number>;
18
+ cardWidth: _angular_core.InputSignal<number>;
19
+ cardHeight: _angular_core.InputSignal<number>;
20
+ cardMargin: _angular_core.InputSignal<number>;
21
+ borderWidth: _angular_core.InputSignal<number>;
22
+ cardPadding: _angular_core.InputSignal<number>;
23
+ activeBorderColor: _angular_core.InputSignal<string>;
24
+ defaultBorderColor: _angular_core.InputSignal<string>;
25
+ inactiveIconColor: _angular_core.InputSignal<string>;
26
+ longClickDelay: _angular_core.InputSignal<number>;
27
+ arrowBackgroundColor: _angular_core.InputSignal<string>;
28
+ arrowBorderColor: _angular_core.InputSignal<string>;
29
+ arrowBorderWidth: _angular_core.InputSignal<number>;
30
+ arrowColor: _angular_core.InputSignal<string>;
31
+ touchDelta: _angular_core.InputSignal<number>;
32
+ arrowWidth: _angular_core.InputSignal<number>;
33
+ changeModel: _angular_core.OutputEmitterRef<number>;
34
+ sliderContainer?: ElementRef;
35
+ galleryTrack?: ElementRef;
36
+ arrowPrevButton?: ElementRef;
37
+ arrowNextButton?: ElementRef;
38
+ prevArrowLongPress: boolean;
39
+ nextArrowLongPress: boolean;
40
+ private _sliderContainer?;
41
+ private _galleryTrack?;
42
+ isNextArrowDisabled: boolean;
43
+ isPrevArrowDisabled: boolean;
44
+ photoCount: number;
45
+ galleryWidth: number;
46
+ arrowsHidden: boolean;
47
+ touchStartX: number;
48
+ touchCurrentX: number;
49
+ constructor();
50
+ private syncCardSliderCount;
51
+ ngAfterViewInit(): void;
52
+ stepPrevSlider(): void;
53
+ stepNextSlider(): void;
54
+ computedPositionSlider(): void;
55
+ private actionSlider;
56
+ touchStartGallery(evt: TouchEvent): void;
57
+ touchMoveGallery(evt: TouchEvent): void;
58
+ private initGalleryTrack;
59
+ private initWheelAction;
60
+ private initSliderContainer;
61
+ private initArrowPrevButtonActions;
62
+ private initArrowNextButtonActions;
63
+ private initLongTouch;
64
+ private initLongClick;
65
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SimpleSliderComponent, never>;
66
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<SimpleSliderComponent, "lib-simple-slider", never, { "propertyPhotos": { "alias": "propertyPhotos"; "required": false; "isSignal": true; }; "selectedElementIndex": { "alias": "selectedElementIndex"; "required": false; "isSignal": true; }; "cardWidth": { "alias": "cardWidth"; "required": false; "isSignal": true; }; "cardHeight": { "alias": "cardHeight"; "required": false; "isSignal": true; }; "cardMargin": { "alias": "cardMargin"; "required": false; "isSignal": true; }; "borderWidth": { "alias": "borderWidth"; "required": false; "isSignal": true; }; "cardPadding": { "alias": "cardPadding"; "required": false; "isSignal": true; }; "activeBorderColor": { "alias": "activeBorderColor"; "required": false; "isSignal": true; }; "defaultBorderColor": { "alias": "defaultBorderColor"; "required": false; "isSignal": true; }; "inactiveIconColor": { "alias": "inactiveIconColor"; "required": false; "isSignal": true; }; "longClickDelay": { "alias": "longClickDelay"; "required": false; "isSignal": true; }; "arrowBackgroundColor": { "alias": "arrowBackgroundColor"; "required": false; "isSignal": true; }; "arrowBorderColor": { "alias": "arrowBorderColor"; "required": false; "isSignal": true; }; "arrowBorderWidth": { "alias": "arrowBorderWidth"; "required": false; "isSignal": true; }; "arrowColor": { "alias": "arrowColor"; "required": false; "isSignal": true; }; "touchDelta": { "alias": "touchDelta"; "required": false; "isSignal": true; }; "arrowWidth": { "alias": "arrowWidth"; "required": false; "isSignal": true; }; }, { "changeModel": "changeModel"; }, never, never, true, never>;
67
+ }
68
+
69
+ export { SimpleSliderComponent };
70
+ export type { ISliderPhoto };