UNPKG

@alyle/ui

Version:

Minimal Design, a set of components for Angular

1 lines 32.2 kB
{"version":3,"file":"alyle-ui-carousel.mjs","sources":["../../../lib/carousel/carousel.ts","../../../lib/carousel/carousel.html","../../../lib/carousel/carousel.module.ts","../../../lib/carousel/alyle-ui-carousel.ts"],"sourcesContent":["import {\n Component,\n Directive,\n QueryList,\n ContentChildren,\n Input,\n AfterViewInit,\n OnDestroy,\n ElementRef,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n forwardRef,\n OnInit,\n Renderer2,\n ViewChild,\n inject\n} from '@angular/core';\nimport {\n LyTheme2,\n ThemeVariables,\n DirAlias,\n ThemeRef,\n st2c,\n keyframesUniqueId,\n StyleCollection,\n LyClasses,\n StyleTemplate,\n shadowBuilder,\n StyleRenderer,\n Style,\n SelectorsFn } from '@alyle/ui';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Platform } from '@angular/cdk/platform';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { color } from '@alyle/ui/color';\n\n/** Default interval in ms */\nconst DEFAULT_INTERVAL = 7000;\nconst DEFAULT_AUTOPLAY = true;\nconst DEFAULT_HAS_PROGRESS_BAR = false;\nconst STYLE_PRIORITY = -2;\n\nexport interface LyCarouselTheme {\n /** Styles for Carousel Component */\n root?: StyleCollection<((classes: LyClasses<typeof STYLES>) => StyleTemplate)>\n | ((classes: LyClasses<typeof STYLES>) => StyleTemplate);\n}\n\nexport interface LyCarouselVariables {\n carousel?: LyCarouselTheme;\n}\n\nexport const STYLES = (theme: ThemeVariables & LyCarouselVariables, ref: ThemeRef) => {\n const dir = theme.getDirection(DirAlias.before);\n const right = dir === 'right' ? 180 : 0;\n const left = dir === 'left' ? 180 : 0;\n const carousel = ref.selectorsOf(STYLES);\n const barAnimation = keyframesUniqueId.next();\n const { after, before } = theme;\n const arrow = `url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='48' viewBox='0 -960 960 960' width='48'%3E%3Cpath style='fill:currentColor' d='M315.5-117 285-146.5 620.5-481 285-815.5l30.5-29.5 364 364-364 364Z'/%3E%3C/svg%3E\")`;\n return {\n $priority: STYLE_PRIORITY,\n $global: (_className: string) => `@keyframes ${barAnimation}{0%{transform:translateX(0%);}100%{transform:translateX(${dir === 'left' ? '-' : ''}100%);}}`,\n root: ( ) => (_className: string) => `${_className}{display:block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;position:relative;}${_className} ${carousel.actions}.right{${after}:0;transform:rotate(${right}deg);}${_className} ${carousel.actions}.left{${before}:0;transform:rotate(${left}deg);}${_className} svg{display:block;fill:currentColor;}${st2c((\n (theme.carousel\n && theme.carousel.root\n && (theme.carousel.root instanceof StyleCollection\n ? theme.carousel.root.setTransformer(fn => fn(carousel))\n : theme.carousel.root(carousel))\n )), `${_className}`)}`,\n actions: (_className: string) => `${_className}{position:absolute;top:0;bottom:0;height:100%;width:16%;cursor:pointer;color:${color(0xffffff, 0.87)};will-change:transform;}`,\n actionIcon: (_className: string) => `${_className}::after{position:absolute;content:'';top:0;left:0;right:0;bottom:0;margin:auto;background-color:currentColor;mask-image:${arrow};-webkit-mask-image:${arrow};mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat;mask-position:50%;-webkit-mask-position:50%;mask-size:100% 100%;-webkit-mask-size:100% 100%;height:100%;width:48px;}`,\n slideContainer: (_className: string) => `${_className}{overflow:hidden;display:block;width:100%;height:100%;position:relative;touch-action:pan-y !important;}`,\n slide: (_className: string) => `${_className}{display:flex;width:100%;height:100%;will-change:transform;}${_className} > ly-carousel-item{width:100%;flex-shrink:0;position:relative;background-size:cover;background-position:center;background-repeat:no-repeat;}`,\n slideContent: (_className: string) => `${_className}{display:flex;}`,\n slideAnim: (_className: string) => `${_className} > div{transition:transform 750ms cubic-bezier(.1,1,0.5,1);}`,\n slideNoEvent: (_className: string) => `${_className}>div{touch-action:initial !important;-webkit-user-drag:initial !important;}`,\n indicators: () => (_className: string) => `${_className}{padding:0;position:absolute;bottom:0;left:0;right:0;margin:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;height:48px;}`,\n indicator: () => (_className: string) => `${_className}{display:inline-block;border-radius:50%;cursor:pointer;position:relative;padding:.5em;outline:none;}`,\n indicatorIcon: () => (_className: string) => `${_className}{transition:300ms cubic-bezier(0.65,0.05,0.36,1);width:1em;height:1em;transform:scale(.5);border-radius:50%;will-change:transform;display:block;opacity:.65;box-shadow:${shadowBuilder(8, color(0xffffff, 0.87))};background:${color(0xffffff, 0.87)};}`,\n indicatorActive: () => (_className: string) => `${_className} ${carousel.indicatorIcon}{transform:scale(1);opacity:1;}`,\n barContainer: (_className: string) => `${_className}{background:${theme.background.primary.default.alpha(.25)};height:4px;position:absolute;bottom:0;width:100%;}`,\n bar: (_className: string) => `${_className}{height:4px;position:absolute;bottom:0;width:100%;animation-name:${barAnimation};animation-timing-function:linear;animation-iteration-count:infinite;background:${theme.text.primary};}`\n };\n};\n\n/** @docs-private */\nexport enum CarouselMode {\n /** full */\n default,\n inline\n}\n\n@Component({\n selector: 'ly-carousel',\n templateUrl: './carousel.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n '(mouseenter)': '_onMouseEnter()',\n '(mouseleave)': '_onMouseLeave()'\n },\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyCarousel implements OnInit, AfterViewInit, OnDestroy {\n /** @docs-private */\n readonly classes = this.sRenderer.renderSheet(STYLES, true);\n private _intervalFn: number | null = null;\n @ViewChild('slideContainer') slideContainer: ElementRef;\n @ViewChild('_slide') _slide: ElementRef;\n @ViewChild('_progressBar') _progressBar: ElementRef<HTMLDivElement>;\n @ContentChildren(forwardRef(() => LyCarouselItem)) lyItems: QueryList<LyCarouselItem>;\n /** @docs-private */\n @Input() mode: CarouselMode = CarouselMode.default;\n @Input() selectedIndex = 0;\n @Style<boolean>(\n (_val, _media) => (_theme: ThemeVariables, selectors: SelectorsFn) => {\n const $$ = selectors(STYLES);\n return (_className: string) => `${_className} ${$$.actionIcon},${_className} ${$$.indicatorIcon}{filter:invert(0.9);}`\n },\n ) darkIconActived = false;\n @Input()\n set darkIcon(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n if (newVal !== this._darkIcon) {\n this._darkIcon = newVal;\n }\n }\n get darkIcon(): boolean { // TODO: Change name from darkIcon to darkIcon\n return this._darkIcon;\n }\n private _darkIcon;\n _selectedElement: HTMLElement;\n private _touch: boolean;\n private _autoplay: boolean;\n private _hasProgressBar: boolean;\n private _interval = DEFAULT_INTERVAL;\n private _slideClass: string;\n\n /** Emits whenever the component is destroyed. */\n private readonly _destroy = new Subject<void>();\n\n /** @internal */\n get _isIntervalFn() {\n return !!this._intervalFn;\n }\n\n /**\n * It will pause the slide change when the mouse cursor passes\n * through the carousel.\n */\n @Input()\n get pauseOnHover() {\n return this._pauseOnHover;\n }\n set pauseOnHover(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._pauseOnHover = newVal;\n }\n private _pauseOnHover: boolean;\n\n @Input()\n set touch(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._touch = newVal;\n if (newVal) {\n this._renderer.removeClass(this._el.nativeElement, this.classes.slideNoEvent);\n } else {\n this._renderer.addClass(this._el.nativeElement, this.classes.slideNoEvent);\n }\n }\n get touch() {\n return this._touch;\n }\n\n @Input()\n set autoplay(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._autoplay = newVal;\n if (newVal) {\n this._resetInterval();\n } else {\n this.stop();\n }\n }\n get autoplay() {\n return this._autoplay;\n }\n\n @Input()\n set hasProgressBar(val: BooleanInput) {\n const newVal = coerceBooleanProperty(val);\n this._hasProgressBar = newVal;\n }\n get hasProgressBar() {\n return this._hasProgressBar;\n }\n\n @Input()\n set interval(val: number) {\n this._interval = val;\n this._resetInterval();\n }\n get interval() {\n return this._interval;\n }\n\n @Input()\n set hasNavigationArrows(val: BooleanInput) {\n this._hasNavigationArrows = coerceBooleanProperty(val);\n }\n get hasNavigationArrows() {\n return this._hasNavigationArrows;\n }\n private _hasNavigationArrows: boolean = true;\n\n @Input()\n set hasNavigationIndicators(val: BooleanInput) {\n this._hasNavigationIndicators = coerceBooleanProperty(val);\n }\n get hasNavigationIndicators() {\n return this._hasNavigationIndicators;\n }\n private _hasNavigationIndicators: boolean = true;\n\n constructor(\n private _el: ElementRef,\n private _cd: ChangeDetectorRef,\n private _theme: LyTheme2,\n private _renderer: Renderer2,\n readonly sRenderer: StyleRenderer,\n private _platform: Platform\n ) { }\n\n ngOnInit() {\n if (!this.touch) {\n this.touch = false;\n }\n if (this.autoplay == null) {\n this.autoplay = DEFAULT_AUTOPLAY;\n }\n if (this.hasProgressBar == null) {\n this.hasProgressBar = DEFAULT_HAS_PROGRESS_BAR;\n }\n }\n\n ngAfterViewInit() {\n this._renderer.addClass(this.slideContainer.nativeElement, this.classes.slideContainer);\n if (this._platform.isBrowser) {\n this._renderer.addClass(this.slideContainer.nativeElement, this.classes.slideAnim);\n }\n\n this.lyItems.changes.pipe(takeUntil(this._destroy)).subscribe(() => this._markForCheck());\n this._select(this.selectedIndex);\n }\n\n ngOnDestroy() {\n this._destroy.next();\n this._destroy.complete();\n if (this._platform.isBrowser) {\n this.stop();\n }\n }\n\n _onMouseEnter() {\n if (this.pauseOnHover) {\n this.stop();\n }\n }\n\n _onMouseLeave() {\n if (this.pauseOnHover) {\n this._resetInterval();\n }\n }\n\n /** @docs-private */\n _onDragStart() {\n this.stop();\n this._renderer.removeClass(this.slideContainer.nativeElement, this.classes.slideAnim);\n this._selectedElement = this.lyItems.find((_item, index) => index === this.selectedIndex)!._nativeElement;\n }\n\n _onDrag(e) {\n const rect = this._selectedElement.getBoundingClientRect();\n if (Math.abs(e.deltaX) < rect.width) {\n this._onPan(e.deltaX);\n } else {\n this._onPan(rect.width * Math.sign(e.deltaX));\n }\n }\n\n _onDragEnd(e) {\n const rect = this._selectedElement.getBoundingClientRect();\n const dir = this._theme.variables.getDirection(DirAlias.before);\n this._renderer.addClass(this.slideContainer.nativeElement, this.classes.slideAnim);\n this._select(this.selectedIndex);\n\n if (Math.abs(e.deltaX) > rect.width / 2) {\n if (0 > e.deltaX) {\n this.next();\n } else if (0 < e.deltaX) {\n this.prev();\n }\n } else if (e.additionalEvent) {\n const eventName = e.additionalEvent;\n if (Math.abs(e.velocity) >= 0.25) {\n if (eventName === 'slideleft') {\n if (dir === 'left') {\n this.next();\n } else {\n this.prev();\n }\n } else if (eventName === 'slideright') {\n if (dir === 'right') {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n }\n this._renderer.removeStyle(this._slide.nativeElement, 'transform');\n }\n\n _onDragCancel() {\n this._renderer.addClass(this.slideContainer.nativeElement, this.classes.slideAnim);\n this._select(this.selectedIndex);\n this._resetInterval();\n }\n\n _select(val: number, notResetInterval?: boolean) {\n this.selectedIndex = val;\n if (this.mode === CarouselMode.default) {\n this._slideClass = this._theme.addStyle(\n `lyCarousel.select:${val.toString(32)}`,\n (theme: ThemeVariables) => {\n const sign = theme.getDirection(DirAlias.before) === 'left' ? -1 : 1;\n return {\n transform: `translateX(${100 * val * sign}%)`\n };\n },\n this._slide.nativeElement,\n this._slideClass,\n STYLE_PRIORITY\n );\n }\n const darkIcon = this.lyItems.toArray()[val].darkIcon;\n this.darkIconActived = darkIcon ?? this.darkIcon;\n if (!notResetInterval) {\n if (this.autoplay && !this.pauseOnHover) {\n this._resetInterval();\n }\n }\n }\n\n prev() {\n const len = this.lyItems.length - 1;\n const prev = this.selectedIndex - 1;\n this._select(prev < 0 ? len : prev);\n }\n\n next(notResetInterval?: boolean) {\n const len = this.lyItems.length - 1;\n const next = this.selectedIndex + 1;\n this._select(next > len ? 0 : next, notResetInterval);\n }\n\n stop() {\n if (this._intervalFn !== null) {\n clearInterval(this._intervalFn);\n this._intervalFn = null;\n }\n }\n\n private _resetInterval() {\n if (this._platform.isBrowser) {\n this.stop();\n this._restartProgressBarAnimation();\n this._markForCheck();\n this._intervalFn = setInterval(() => {\n this.next(true);\n this._restartProgressBarAnimation();\n this._markForCheck();\n }, this.interval) as any;\n }\n }\n\n private _restartProgressBarAnimation() {\n if (this.hasProgressBar && this._progressBar) {\n\n const el = this._progressBar.nativeElement;\n\n // Hack for restart animation\n el.style.animationName = 'øfakeName';\n window.getComputedStyle(el).getPropertyValue('opacity');\n el.style.animationName = '';\n\n }\n }\n\n private _onPan(x) {\n const sign = this._theme.variables.getDirection(DirAlias.before) === 'left' ? -1 : 1;\n this._renderer.setStyle(this._slide.nativeElement, 'transform', `translateX(calc(${sign * 100 * this.selectedIndex }% + ${x}px))`);\n }\n\n private _markForCheck() {\n this._cd.markForCheck();\n }\n\n}\n\n@Directive({\n selector: 'ly-carousel-item',\n providers: [\n StyleRenderer\n ],\n standalone: false\n})\nexport class LyCarouselItem {\n private _className: string;\n readonly sRenderer = inject(StyleRenderer);\n @Input()\n set darkIcon(val: boolean | null) {\n if (val == null) {\n this._darkIcon = null;\n } else {\n this._darkIcon = coerceBooleanProperty(val);\n }\n }\n get darkIcon() {\n return this._darkIcon;\n }\n private _darkIcon: boolean | null = null;\n @Input()\n set srcImg(value: string) {\n this._className = this._theme.addStyle(\n `ly-carousel-img:${value}`, (\n `background-image: url('${value}')`\n ),\n this._nativeElement,\n this._className, STYLE_PRIORITY\n );\n }\n\n _nativeElement: HTMLElement;\n\n constructor(\n private _theme: LyTheme2,\n _el: ElementRef,\n ) {\n this._nativeElement = _el.nativeElement;\n }\n\n}\n","<div\n(slidestart)=\"touch && _onDragStart()\"\n(slideleft)=\"touch && _onDrag($event)\"\n(slideright)=\"touch && _onDrag($event)\"\n(slidecancel)=\"touch && _onDragCancel()\"\n(slideend)=\"touch && _onDragEnd($event)\"\n#slideContainer\n>\n <div #_slide [className]=\"classes.slide\">\n <ng-content></ng-content>\n </div>\n <ol [className]=\"classes.indicators\" *ngIf=\"lyItems.length !== 1 && hasNavigationIndicators\">\n <li\n *ngFor=\"let item of lyItems; index as i\"\n [ngClass]=\"[classes.indicator, selectedIndex == i ? classes.indicatorActive : '']\"\n (click)=\"_select(i)\"\n >\n <span\n [class]=\"classes.indicatorIcon\"\n ></span>\n </li>\n </ol>\n <div *ngIf=\"hasNavigationArrows\" [class]=\"[classes.actions, classes.actionIcon, 'left']\" (click)=\"prev()\">\n </div>\n <div *ngIf=\"hasNavigationArrows\" [class]=\"[classes.actions, classes.actionIcon, 'right']\" (click)=\"next()\">\n </div>\n <div\n [className]=\"classes.barContainer\"\n *ngIf=\"hasProgressBar && _isIntervalFn && interval && autoplay\"\n >\n <div\n [className]=\"classes.bar\"\n #_progressBar\n [style.animation-duration]=\"interval + 'ms'\"\n ></div>\n </div>\n</div>","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LyCarouselItem, LyCarousel } from './carousel';\nimport { LyCommonModule } from '@alyle/ui';\n\n@NgModule({\n imports: [CommonModule, LyCommonModule],\n exports: [LyCarouselItem, LyCarousel, LyCommonModule],\n declarations: [LyCarouselItem, LyCarousel]\n})\nexport class LyCarouselModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}