@ethlete/cdk 5.0.0-next.4 → 5.0.0-next.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/fesm2022/ethlete-cdk.mjs +134 -412
- package/fesm2022/ethlete-cdk.mjs.map +1 -1
- package/package.json +1 -1
- package/types/ethlete-cdk.d.ts +34 -84
package/fesm2022/ethlete-cdk.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, TemplateRef, ViewContainerRef, Directive, input, booleanAttribute, computed, isDevMode, model, contentChild, effect, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, ElementRef, Injector, Input, numberAttribute, DOCUMENT, Injectable, ChangeDetectorRef, signal, forwardRef, ViewChild, ContentChildren, assertInInjectionContext, createComponent, EnvironmentInjector, createEnvironmentInjector, runInInjectionContext, linkedSignal,
|
|
2
|
+
import { InjectionToken, inject, TemplateRef, ViewContainerRef, Directive, input, booleanAttribute, computed, isDevMode, model, contentChild, effect, untracked, ChangeDetectionStrategy, ViewEncapsulation, Component, contentChildren, ElementRef, Injector, Input, numberAttribute, DOCUMENT, Injectable, ChangeDetectorRef, signal, forwardRef, ViewChild, ContentChildren, assertInInjectionContext, createComponent, EnvironmentInjector, createEnvironmentInjector, runInInjectionContext, linkedSignal, DestroyRef, isSignal, viewChild, viewChildren, provideEnvironmentInitializer, ApplicationRef, output, ContentChild, ViewChildren, EventEmitter, Output, Optional, SkipSelf, IterableDiffers, ComponentFactoryResolver, NgZone, HostAttributeToken } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/cdk/portal';
|
|
4
4
|
import { CdkPortal, PortalModule, ComponentPortal, CdkPortalOutlet, TemplatePortal } from '@angular/cdk/portal';
|
|
5
5
|
import { DomSanitizer, Title } from '@angular/platform-browser';
|
|
6
6
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
7
7
|
import { toObservable, takeUntilDestroyed, toSignal, outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';
|
|
8
|
-
import { map, switchMap, combineLatest, pairwise, tap, BehaviorSubject, filter, Subject, Observable, of, takeUntil, startWith, debounceTime, withLatestFrom, take, merge, skipUntil, fromEvent, timer, distinctUntilChanged, from, finalize, skip, takeWhile, shareReplay, skipWhile, catchError, throwError, Subscription } from 'rxjs';
|
|
8
|
+
import { map, switchMap, combineLatest, pairwise, tap, BehaviorSubject, filter, Subject, Observable, of, takeUntil, startWith, debounceTime, withLatestFrom, take, merge, skipUntil, fromEvent, timer, distinctUntilChanged, EMPTY, from, finalize, skip, takeWhile, shareReplay, skipWhile, catchError, throwError, Subscription } from 'rxjs';
|
|
9
9
|
import { __decorate, __metadata } from 'tslib';
|
|
10
10
|
import { AsyncPipe, NgComponentOutlet, Location, NgTemplateOutlet, NgClass, DOCUMENT as DOCUMENT$1, NgStyle } from '@angular/common';
|
|
11
11
|
import * as i1$1 from '@ethlete/core';
|
|
12
|
-
import { createComponentId, injectRenderer, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, createDestroy, equal, signalHostClasses, signalAttributes, signalHostAttributes, switchQueryListChanges, controlValueSignal, fromNextFrame, elementCanScroll, AnimatedLifecycleDirective, forceReflow, nextFrame, createRootProvider, injectBreakpointObserver, THEME_PROVIDER, ProvideThemeDirective, BOUNDARY_ELEMENT_TOKEN, signalElementScrollState,
|
|
12
|
+
import { createComponentId, injectRenderer, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, createDestroy, equal, signalHostClasses, signalAttributes, signalHostAttributes, switchQueryListChanges, controlValueSignal, fromNextFrame, elementCanScroll, AnimatedLifecycleDirective, forceReflow, nextFrame, createRootProvider, injectBreakpointObserver, THEME_PROVIDER, ProvideThemeDirective, BOUNDARY_ELEMENT_TOKEN, ScrollObserverDirective, signalElementScrollState, ScrollObserverStartDirective, ScrollObserverEndDirective, provideBoundaryElement, applyHostListener, injectBoundaryElement, ANIMATED_LIFECYCLE_TOKEN, cloneFormGroup, getFormGroupValue, injectQueryParam, injectRoute, AnimatedIfDirective, injectObserveBreakpoint, syncSignal, createDocumentElementSignal, createStaticRootProvider, AnimatedOverlayDirective, setInputSignal, typedBreakpointTransform, boolBreakpointTransform, numberBreakpointTransform, signalElementDimensions, createCanAnimateSignal, useCursorDragScroll, signalElementChildren, signalElementIntersection, signalClasses, signalHostStyles, signalStyles, getScrollSnapTarget, getScrollContainerTarget, getScrollItemTarget, getElementScrollCoordinates, provideBreakpointInstance, injectTemplateRef, signalHostElementScrollState, signalHostElementDimensions, createProvider, previousSignalValue, signalHostElementIntersection, injectHostElement, createFlipAnimation, isObject, getObjectProperty, RuntimeError, KeyPressManager, scrollToElement, ClickOutsideDirective, clamp, injectFocusVisibleTracker, inferMimeType, applyHostListeners, TypedQueryList } from '@ethlete/core';
|
|
13
13
|
import * as i1$5 from '@angular/cdk/a11y';
|
|
14
14
|
import { FocusMonitor, FocusKeyManager, AriaDescriber, A11yModule } from '@angular/cdk/a11y';
|
|
15
15
|
import { AutofillMonitor } from '@angular/cdk/text-field';
|
|
@@ -6357,42 +6357,21 @@ class OverlayBodyComponent {
|
|
|
6357
6357
|
this.overlayRef = inject(OverlayRef, { optional: true });
|
|
6358
6358
|
this.elementRef = inject(ElementRef);
|
|
6359
6359
|
this.overlayManager = injectOverlayManager();
|
|
6360
|
+
this.scrollObserver = inject(ScrollObserverDirective);
|
|
6360
6361
|
this.dividers = input(false, ...(ngDevMode ? [{ debugName: "dividers" }] : []));
|
|
6361
|
-
this.firstElement = viewChild('firstElement', ...(ngDevMode ? [{ debugName: "firstElement" }] : []));
|
|
6362
|
-
this.lastElement = viewChild('lastElement', ...(ngDevMode ? [{ debugName: "lastElement" }] : []));
|
|
6363
6362
|
this.dividersEnabled = computed(() => this.dividers() === 'dynamic' || this.dividers() === 'static', ...(ngDevMode ? [{ debugName: "dividersEnabled" }] : []));
|
|
6364
6363
|
this.dynamicDividersEnabled = computed(() => this.dividers() === 'dynamic', ...(ngDevMode ? [{ debugName: "dynamicDividersEnabled" }] : []));
|
|
6365
6364
|
this.containerScrollState = signalElementScrollState(this.elementRef);
|
|
6366
|
-
this.firstElementIntersection = signalElementIntersection(this.firstElement, {
|
|
6367
|
-
root: this.elementRef,
|
|
6368
|
-
enabled: this.dynamicDividersEnabled,
|
|
6369
|
-
});
|
|
6370
|
-
this.firstElementVisibility = signal(null, ...(ngDevMode ? [{ debugName: "firstElementVisibility" }] : []));
|
|
6371
|
-
this.lastElementIntersection = signalElementIntersection(this.lastElement, {
|
|
6372
|
-
root: this.elementRef,
|
|
6373
|
-
enabled: this.dynamicDividersEnabled,
|
|
6374
|
-
});
|
|
6375
|
-
this.lastElementVisibility = signal(null, ...(ngDevMode ? [{ debugName: "lastElementVisibility" }] : []));
|
|
6376
6365
|
this.canScroll = computed(() => this.containerScrollState().canScroll, ...(ngDevMode ? [{ debugName: "canScroll" }] : []));
|
|
6377
6366
|
this.isAtStart = computed(() => {
|
|
6378
|
-
if (!this.canScroll())
|
|
6367
|
+
if (!this.canScroll())
|
|
6379
6368
|
return true;
|
|
6380
|
-
|
|
6381
|
-
const intersection = this.firstElementIntersection()[0];
|
|
6382
|
-
if (!intersection) {
|
|
6383
|
-
return this.firstElementVisibility()?.inline ?? true;
|
|
6384
|
-
}
|
|
6385
|
-
return intersection.isIntersecting;
|
|
6369
|
+
return this.scrollObserver.isAtStart();
|
|
6386
6370
|
}, ...(ngDevMode ? [{ debugName: "isAtStart" }] : []));
|
|
6387
6371
|
this.isAtEnd = computed(() => {
|
|
6388
|
-
if (!this.canScroll())
|
|
6372
|
+
if (!this.canScroll())
|
|
6389
6373
|
return true;
|
|
6390
|
-
|
|
6391
|
-
const intersection = this.lastElementIntersection()[0];
|
|
6392
|
-
if (!intersection) {
|
|
6393
|
-
return this.lastElementVisibility()?.inline ?? true;
|
|
6394
|
-
}
|
|
6395
|
-
return intersection.isIntersecting;
|
|
6374
|
+
return this.scrollObserver.isAtEnd();
|
|
6396
6375
|
}, ...(ngDevMode ? [{ debugName: "isAtEnd" }] : []));
|
|
6397
6376
|
this.enableDividerAnimations = signal(false, ...(ngDevMode ? [{ debugName: "enableDividerAnimations" }] : []));
|
|
6398
6377
|
this.hostClassBindings = signalHostClasses({
|
|
@@ -6403,24 +6382,8 @@ class OverlayBodyComponent {
|
|
|
6403
6382
|
'et-scrollable-body--is-at-start': computed(() => (this.dynamicDividersEnabled() ? this.isAtStart() : false)),
|
|
6404
6383
|
'et-scrollable-body--is-at-end': computed(() => (this.dynamicDividersEnabled() ? this.isAtEnd() : false)),
|
|
6405
6384
|
});
|
|
6406
|
-
effect(() =>
|
|
6407
|
-
|
|
6408
|
-
const firstElement = this.firstElement()?.nativeElement;
|
|
6409
|
-
const lastElement = this.lastElement()?.nativeElement;
|
|
6410
|
-
if (!scrollable || !firstElement || !lastElement) {
|
|
6411
|
-
return;
|
|
6412
|
-
}
|
|
6413
|
-
this.firstElementVisibility.set(isElementVisible({
|
|
6414
|
-
container: scrollable,
|
|
6415
|
-
element: firstElement,
|
|
6416
|
-
}));
|
|
6417
|
-
this.lastElementVisibility.set(isElementVisible({
|
|
6418
|
-
container: scrollable,
|
|
6419
|
-
element: lastElement,
|
|
6420
|
-
}));
|
|
6421
|
-
// We need to wait one frame before enabling animations to prevent a animation from playing during initial render.
|
|
6422
|
-
nextFrame(() => this.enableDividerAnimations.set(true));
|
|
6423
|
-
});
|
|
6385
|
+
effect(() => this.scrollObserver.enabled.set(this.dynamicDividersEnabled()));
|
|
6386
|
+
nextFrame(() => this.enableDividerAnimations.set(true));
|
|
6424
6387
|
}
|
|
6425
6388
|
ngOnInit() {
|
|
6426
6389
|
if (!this.overlayRef) {
|
|
@@ -6435,19 +6398,19 @@ class OverlayBodyComponent {
|
|
|
6435
6398
|
this.elementRef.nativeElement.scrollTo({ top: 0, behavior });
|
|
6436
6399
|
}
|
|
6437
6400
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: OverlayBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6438
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
6401
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.1", type: OverlayBodyComponent, isStandalone: true, selector: "[et-overlay-body], et-overlay-body", inputs: { dividers: { classPropertyName: "dividers", publicName: "dividers", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "et-overlay-body" }, providers: [
|
|
6439
6402
|
{
|
|
6440
6403
|
provide: OVERLAY_BODY_TOKEN,
|
|
6441
6404
|
useExisting: OverlayBodyComponent,
|
|
6442
6405
|
},
|
|
6443
6406
|
provideBoundaryElement(),
|
|
6444
|
-
],
|
|
6407
|
+
], hostDirectives: [{ directive: i1$1.ScrollObserverDirective }], ngImport: i0, template: `
|
|
6445
6408
|
<div class="et-overlay-body-container">
|
|
6446
|
-
<div
|
|
6409
|
+
<div class="et-overlay-body-start-element" etScrollObserverStart></div>
|
|
6447
6410
|
<ng-content />
|
|
6448
|
-
<div
|
|
6411
|
+
<div class="et-overlay-body-end-element" etScrollObserverEnd></div>
|
|
6449
6412
|
</div>
|
|
6450
|
-
`, isInline: true }); }
|
|
6413
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: ScrollObserverStartDirective, selector: "[etScrollObserverStart]" }, { kind: "directive", type: ScrollObserverEndDirective, selector: "[etScrollObserverEnd]" }] }); }
|
|
6451
6414
|
}
|
|
6452
6415
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: OverlayBodyComponent, decorators: [{
|
|
6453
6416
|
type: Component,
|
|
@@ -6455,11 +6418,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6455
6418
|
selector: '[et-overlay-body], et-overlay-body',
|
|
6456
6419
|
template: `
|
|
6457
6420
|
<div class="et-overlay-body-container">
|
|
6458
|
-
<div
|
|
6421
|
+
<div class="et-overlay-body-start-element" etScrollObserverStart></div>
|
|
6459
6422
|
<ng-content />
|
|
6460
|
-
<div
|
|
6423
|
+
<div class="et-overlay-body-end-element" etScrollObserverEnd></div>
|
|
6461
6424
|
</div>
|
|
6462
6425
|
`,
|
|
6426
|
+
imports: [ScrollObserverStartDirective, ScrollObserverEndDirective],
|
|
6427
|
+
hostDirectives: [ScrollObserverDirective],
|
|
6463
6428
|
providers: [
|
|
6464
6429
|
{
|
|
6465
6430
|
provide: OVERLAY_BODY_TOKEN,
|
|
@@ -6471,7 +6436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
6471
6436
|
class: 'et-overlay-body',
|
|
6472
6437
|
},
|
|
6473
6438
|
}]
|
|
6474
|
-
}], ctorParameters: () => [], propDecorators: { dividers: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividers", required: false }] }]
|
|
6439
|
+
}], ctorParameters: () => [], propDecorators: { dividers: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividers", required: false }] }] } });
|
|
6475
6440
|
|
|
6476
6441
|
class OverlayCloseDirective {
|
|
6477
6442
|
constructor() {
|
|
@@ -9026,71 +8991,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
9026
8991
|
}]
|
|
9027
8992
|
}], propDecorators: { repeatContentCount: [{ type: i0.Input, args: [{ isSignal: true, alias: "repeatContentCount", required: false }] }] } });
|
|
9028
8993
|
|
|
9029
|
-
// TODO: This needs to be redone, it's a mess...
|
|
9030
|
-
const getIntersectionInfo = (intersections) => {
|
|
9031
|
-
const reverseIntersections = [...intersections].reverse();
|
|
9032
|
-
const firstIntersecting = intersections.find((i) => i.intersectionRatio > 0);
|
|
9033
|
-
const lastIntersecting = reverseIntersections.find((i) => i.intersectionRatio > 0);
|
|
9034
|
-
const firstIntersectingIndex = intersections.findIndex((i) => i === firstIntersecting);
|
|
9035
|
-
const lastIntersectingIndex = intersections.findIndex((i) => i === lastIntersecting);
|
|
9036
|
-
if (!firstIntersecting || !lastIntersecting)
|
|
9037
|
-
return null;
|
|
9038
|
-
const greaterIntersecting = firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio ? firstIntersecting : lastIntersecting;
|
|
9039
|
-
const greaterIntersectingIndex = firstIntersecting.intersectionRatio > lastIntersecting.intersectionRatio
|
|
9040
|
-
? firstIntersectingIndex
|
|
9041
|
-
: lastIntersectingIndex;
|
|
9042
|
-
const hasFullIntersection = intersections.some((i) => i.intersectionRatio === 1);
|
|
9043
|
-
const hasMultipleFullIntersections = intersections.filter((i) => i.intersectionRatio === 1).length > 1;
|
|
9044
|
-
const firstFullIntersectionIndex = intersections.findIndex((i) => i.intersectionRatio === 1);
|
|
9045
|
-
const firstFullIntersection = intersections.find((i) => i.intersectionRatio === 1);
|
|
9046
|
-
const lastFullIntersection = reverseIntersections.find((i) => i.intersectionRatio === 1);
|
|
9047
|
-
const lastFullIntersectionIndex = intersections.findIndex((i) => i === lastFullIntersection);
|
|
9048
|
-
const firstNonIntersectingIndex = intersections.findIndex((i) => i.intersectionRatio === 0);
|
|
9049
|
-
const firstNonIntersection = intersections.find((i) => i.intersectionRatio === 0);
|
|
9050
|
-
const lastNonIntersection = reverseIntersections.find((i) => i.intersectionRatio === 0);
|
|
9051
|
-
const lastNonIntersectingIndex = intersections.findIndex((i) => i === lastNonIntersection);
|
|
9052
|
-
return {
|
|
9053
|
-
partial: {
|
|
9054
|
-
hasAny: !!firstIntersecting || !!lastIntersecting,
|
|
9055
|
-
hasMultiple: !!firstIntersecting || (!!lastIntersecting && firstIntersecting !== lastIntersecting),
|
|
9056
|
-
first: {
|
|
9057
|
-
intersection: firstIntersecting,
|
|
9058
|
-
index: firstIntersectingIndex,
|
|
9059
|
-
},
|
|
9060
|
-
last: {
|
|
9061
|
-
intersection: lastIntersecting,
|
|
9062
|
-
index: lastIntersectingIndex,
|
|
9063
|
-
},
|
|
9064
|
-
biggest: {
|
|
9065
|
-
intersection: greaterIntersecting,
|
|
9066
|
-
index: greaterIntersectingIndex,
|
|
9067
|
-
},
|
|
9068
|
-
},
|
|
9069
|
-
full: {
|
|
9070
|
-
hasAny: hasFullIntersection,
|
|
9071
|
-
hasMultiple: hasMultipleFullIntersections,
|
|
9072
|
-
first: {
|
|
9073
|
-
index: firstFullIntersectionIndex,
|
|
9074
|
-
intersection: firstFullIntersection,
|
|
9075
|
-
},
|
|
9076
|
-
last: {
|
|
9077
|
-
index: lastFullIntersectionIndex,
|
|
9078
|
-
intersection: lastFullIntersection,
|
|
9079
|
-
},
|
|
9080
|
-
},
|
|
9081
|
-
none: {
|
|
9082
|
-
first: {
|
|
9083
|
-
index: firstNonIntersectingIndex,
|
|
9084
|
-
intersection: firstNonIntersection,
|
|
9085
|
-
},
|
|
9086
|
-
last: {
|
|
9087
|
-
index: lastNonIntersectingIndex,
|
|
9088
|
-
intersection: lastNonIntersection,
|
|
9089
|
-
},
|
|
9090
|
-
},
|
|
9091
|
-
};
|
|
9092
|
-
};
|
|
9093
|
-
|
|
9094
8994
|
// Thresholds for the intersection observer.
|
|
9095
8995
|
const ELEMENT_INTERSECTION_THRESHOLD = [
|
|
9096
8996
|
// 5% steps
|
|
@@ -9105,56 +9005,47 @@ const ELEMENT_INTERSECTION_THRESHOLD = [
|
|
|
9105
9005
|
];
|
|
9106
9006
|
class ScrollableComponent {
|
|
9107
9007
|
constructor() {
|
|
9108
|
-
this.
|
|
9109
|
-
this._manualActiveNavigationIndex = signal(null, ...(ngDevMode ? [{ debugName: "_manualActiveNavigationIndex" }] : []));
|
|
9008
|
+
this.manualActiveNavigationIndex = signal(null, ...(ngDevMode ? [{ debugName: "manualActiveNavigationIndex" }] : []));
|
|
9110
9009
|
this.elementRef = inject(ElementRef);
|
|
9111
|
-
this.itemSize = input('auto', ...(ngDevMode ?
|
|
9112
|
-
this.direction = input('horizontal', ...(ngDevMode ?
|
|
9010
|
+
this.itemSize = input('auto', { ...(ngDevMode ? { debugName: "itemSize" } : {}), transform: typedBreakpointTransform() });
|
|
9011
|
+
this.direction = input('horizontal', { ...(ngDevMode ? { debugName: "direction" } : {}), transform: typedBreakpointTransform() });
|
|
9113
9012
|
this.scrollableRole = input(null, ...(ngDevMode ? [{ debugName: "scrollableRole" }] : []));
|
|
9114
9013
|
this.scrollableClass = input(null, ...(ngDevMode ? [{ debugName: "scrollableClass" }] : []));
|
|
9115
|
-
this.renderNavigation = input(false, { ...(ngDevMode ? { debugName: "renderNavigation" } : {}), transform:
|
|
9116
|
-
this.renderMasks = input(true, { ...(ngDevMode ? { debugName: "renderMasks" } : {}), transform:
|
|
9117
|
-
this.renderButtons = input(true, { ...(ngDevMode ? { debugName: "renderButtons" } : {}), transform:
|
|
9118
|
-
this.buttonPosition = input('inside', ...(ngDevMode ?
|
|
9119
|
-
this.renderScrollbars = input(false, { ...(ngDevMode ? { debugName: "renderScrollbars" } : {}), transform:
|
|
9120
|
-
this.stickyButtons = input(false, { ...(ngDevMode ? { debugName: "stickyButtons" } : {}), transform:
|
|
9121
|
-
this.cursorDragScroll = input(true, { ...(ngDevMode ? { debugName: "cursorDragScroll" } : {}), transform:
|
|
9122
|
-
this.disableActiveElementScrolling = input(false, { ...(ngDevMode ? { debugName: "disableActiveElementScrolling" } : {}), transform:
|
|
9123
|
-
this.scrollMode = input('container', ...(ngDevMode ?
|
|
9124
|
-
this.snap = input(false, { ...(ngDevMode ? { debugName: "snap" } : {}), transform:
|
|
9125
|
-
this.scrollMargin = input(0, { ...(ngDevMode ? { debugName: "scrollMargin" } : {}), transform:
|
|
9126
|
-
this.scrollOrigin = input('auto', ...(ngDevMode ?
|
|
9127
|
-
this.darkenNonIntersectingItems = input(false, { ...(ngDevMode ? { debugName: "darkenNonIntersectingItems" } : {}), transform:
|
|
9128
|
-
this.showLoadingTemplate = input(false, { ...(ngDevMode ? { debugName: "showLoadingTemplate" } : {}), transform:
|
|
9129
|
-
this.loadingTemplatePosition = input('end', ...(ngDevMode ?
|
|
9014
|
+
this.renderNavigation = input(false, { ...(ngDevMode ? { debugName: "renderNavigation" } : {}), transform: boolBreakpointTransform() });
|
|
9015
|
+
this.renderMasks = input(true, { ...(ngDevMode ? { debugName: "renderMasks" } : {}), transform: boolBreakpointTransform() });
|
|
9016
|
+
this.renderButtons = input(true, { ...(ngDevMode ? { debugName: "renderButtons" } : {}), transform: boolBreakpointTransform() });
|
|
9017
|
+
this.buttonPosition = input('inside', { ...(ngDevMode ? { debugName: "buttonPosition" } : {}), transform: typedBreakpointTransform() });
|
|
9018
|
+
this.renderScrollbars = input(false, { ...(ngDevMode ? { debugName: "renderScrollbars" } : {}), transform: boolBreakpointTransform() });
|
|
9019
|
+
this.stickyButtons = input(false, { ...(ngDevMode ? { debugName: "stickyButtons" } : {}), transform: boolBreakpointTransform() });
|
|
9020
|
+
this.cursorDragScroll = input(true, { ...(ngDevMode ? { debugName: "cursorDragScroll" } : {}), transform: boolBreakpointTransform() });
|
|
9021
|
+
this.disableActiveElementScrolling = input(false, { ...(ngDevMode ? { debugName: "disableActiveElementScrolling" } : {}), transform: boolBreakpointTransform() });
|
|
9022
|
+
this.scrollMode = input('container', { ...(ngDevMode ? { debugName: "scrollMode" } : {}), transform: typedBreakpointTransform() });
|
|
9023
|
+
this.snap = input(false, { ...(ngDevMode ? { debugName: "snap" } : {}), transform: boolBreakpointTransform() });
|
|
9024
|
+
this.scrollMargin = input(0, { ...(ngDevMode ? { debugName: "scrollMargin" } : {}), transform: numberBreakpointTransform() });
|
|
9025
|
+
this.scrollOrigin = input('auto', { ...(ngDevMode ? { debugName: "scrollOrigin" } : {}), transform: typedBreakpointTransform() });
|
|
9026
|
+
this.darkenNonIntersectingItems = input(false, { ...(ngDevMode ? { debugName: "darkenNonIntersectingItems" } : {}), transform: boolBreakpointTransform() });
|
|
9027
|
+
this.showLoadingTemplate = input(false, { ...(ngDevMode ? { debugName: "showLoadingTemplate" } : {}), transform: boolBreakpointTransform() });
|
|
9028
|
+
this.loadingTemplatePosition = input('end', { ...(ngDevMode ? { debugName: "loadingTemplatePosition" } : {}), transform: typedBreakpointTransform() });
|
|
9130
9029
|
this.scrollable = viewChild('scrollable', ...(ngDevMode ? [{ debugName: "scrollable" }] : []));
|
|
9131
|
-
this.
|
|
9132
|
-
this.lastElement = viewChild('lastElement', ...(ngDevMode ? [{ debugName: "lastElement" }] : []));
|
|
9030
|
+
this.scrollObserver = viewChild.required(ScrollObserverDirective);
|
|
9133
9031
|
this.activeElementList = contentChildren(SCROLLABLE_IS_ACTIVE_CHILD_TOKEN, { ...(ngDevMode ? { debugName: "activeElementList" } : {}), descendants: true });
|
|
9134
9032
|
this.navigationDotsContainer = viewChild('navigationDotsContainer', ...(ngDevMode ? [{ debugName: "navigationDotsContainer" }] : []));
|
|
9135
9033
|
this.firstNavigationDot = viewChild('navigationDot', ...(ngDevMode ? [{ debugName: "firstNavigationDot" }] : []));
|
|
9136
9034
|
this.loadingTemplate = contentChild(SCROLLABLE_LOADING_TEMPLATE_TOKEN, ...(ngDevMode ? [{ debugName: "loadingTemplate" }] : []));
|
|
9137
|
-
this.scrollableAttributeMutations = signalElementMutations(this.scrollable, {
|
|
9138
|
-
attributes: true,
|
|
9139
|
-
childList: true,
|
|
9140
|
-
subtree: true,
|
|
9141
|
-
});
|
|
9142
9035
|
this.scrollableDimensions = signalElementDimensions(this.scrollable);
|
|
9143
9036
|
this.navigationDotDimensions = signalElementDimensions(this.firstNavigationDot);
|
|
9144
|
-
this.isRendered = createIsRenderedSignal();
|
|
9145
9037
|
this.canAnimate = createCanAnimateSignal();
|
|
9146
9038
|
this.cursorDragScrollState = useCursorDragScroll(this.scrollable, {
|
|
9147
9039
|
enabled: this.cursorDragScroll,
|
|
9148
9040
|
allowedDirection: this.direction,
|
|
9149
9041
|
});
|
|
9150
|
-
this.isCursorDragging$ = toObservable(this.cursorDragScrollState.isDragging);
|
|
9151
9042
|
this.renderButtonsInside = computed(() => this.buttonPosition() === 'inside' && this.renderButtons(), ...(ngDevMode ? [{ debugName: "renderButtonsInside" }] : []));
|
|
9152
9043
|
this.renderButtonsInFooter = computed(() => this.buttonPosition() === 'footer' && this.renderButtons(), ...(ngDevMode ? [{ debugName: "renderButtonsInFooter" }] : []));
|
|
9153
9044
|
this.containerScrollState = signalElementScrollState(this.scrollable, {
|
|
9154
9045
|
initialScrollPosition: computed(() => {
|
|
9155
9046
|
const scrollable = this.scrollable()?.nativeElement;
|
|
9156
9047
|
const activeElementList = this.activeElementList();
|
|
9157
|
-
if (!scrollable || !activeElementList.length
|
|
9048
|
+
if (!scrollable || !activeElementList.length)
|
|
9158
9049
|
return null;
|
|
9159
9050
|
const firstActive = activeElementList.find((a) => a.isActiveChildEnabled());
|
|
9160
9051
|
if (firstActive && !this.disableActiveElementScrolling()) {
|
|
@@ -9163,44 +9054,26 @@ class ScrollableComponent {
|
|
|
9163
9054
|
return null;
|
|
9164
9055
|
}),
|
|
9165
9056
|
});
|
|
9166
|
-
this.firstElementIntersection = signalElementIntersection(this.firstElement, {
|
|
9167
|
-
root: this.scrollable,
|
|
9168
|
-
enabled: this.isRendered.state,
|
|
9169
|
-
});
|
|
9170
|
-
this.lastElementIntersection = signalElementIntersection(this.lastElement, {
|
|
9171
|
-
root: this.scrollable,
|
|
9172
|
-
enabled: this.isRendered.state,
|
|
9173
|
-
});
|
|
9174
9057
|
this.allScrollableChildren = signalElementChildren(this.scrollable);
|
|
9175
9058
|
this.scrollableChildren = computed(() => this.allScrollableChildren().filter((c) => !isScrollableChildIgnored(c)), ...(ngDevMode ? [{ debugName: "scrollableChildren" }] : []));
|
|
9176
9059
|
this.scrollableContentIntersections = signalElementIntersection(this.scrollableChildren, {
|
|
9177
9060
|
root: this.scrollable,
|
|
9178
9061
|
threshold: ELEMENT_INTERSECTION_THRESHOLD,
|
|
9179
|
-
enabled: this.isRendered.state,
|
|
9180
9062
|
});
|
|
9181
9063
|
this.scrollableContentIntersections$ = toObservable(this.scrollableContentIntersections);
|
|
9064
|
+
this.maxVisibleItemCount = toSignal(this.scrollableContentIntersections$.pipe(takeUntilDestroyed(), debounceTime(150), map((entries) => entries.filter((i) => i.intersectionRatio > 0).length)), { initialValue: 0 });
|
|
9182
9065
|
this.nonScrollableIntersections = computed(() => {
|
|
9183
9066
|
const allIntersections = this.scrollableContentIntersections();
|
|
9184
9067
|
return allIntersections.filter((i) => i.intersectionRatio !== 1).map((i) => i.target);
|
|
9185
9068
|
}, { ...(ngDevMode ? { debugName: "nonScrollableIntersections" } : {}), equal: (a, b) => a.length === b.length && a.every((v, i) => v === b[i]) });
|
|
9186
|
-
this.isAtStart = computed(() => {
|
|
9187
|
-
|
|
9188
|
-
if (!intersection)
|
|
9189
|
-
return false;
|
|
9190
|
-
return intersection.isIntersecting;
|
|
9191
|
-
}, ...(ngDevMode ? [{ debugName: "isAtStart" }] : []));
|
|
9192
|
-
this.isAtEnd = computed(() => {
|
|
9193
|
-
const intersection = this.lastElementIntersection()[0];
|
|
9194
|
-
if (!intersection)
|
|
9195
|
-
return false;
|
|
9196
|
-
return intersection.isIntersecting;
|
|
9197
|
-
}, ...(ngDevMode ? [{ debugName: "isAtEnd" }] : []));
|
|
9069
|
+
this.isAtStart = computed(() => this.scrollObserver().isAtStart(), ...(ngDevMode ? [{ debugName: "isAtStart" }] : []));
|
|
9070
|
+
this.isAtEnd = computed(() => this.scrollObserver().isAtEnd(), ...(ngDevMode ? [{ debugName: "isAtEnd" }] : []));
|
|
9198
9071
|
this.canScroll = computed(() => this.direction() === 'horizontal'
|
|
9199
9072
|
? this.containerScrollState().canScrollHorizontally
|
|
9200
9073
|
: this.containerScrollState().canScrollVertically, ...(ngDevMode ? [{ debugName: "canScroll" }] : []));
|
|
9201
9074
|
this.scrollableNavigation = computed(() => {
|
|
9202
9075
|
const allIntersections = this.scrollableContentIntersections();
|
|
9203
|
-
const manualActiveNavigationIndex = this.
|
|
9076
|
+
const manualActiveNavigationIndex = this.manualActiveNavigationIndex();
|
|
9204
9077
|
const isAtStart = this.isAtStart();
|
|
9205
9078
|
const isAtEnd = this.isAtEnd();
|
|
9206
9079
|
const firstIntersection = allIntersections[0];
|
|
@@ -9216,26 +9089,24 @@ class ScrollableComponent {
|
|
|
9216
9089
|
return curr;
|
|
9217
9090
|
}, allIntersections[0]);
|
|
9218
9091
|
if (!highestIntersection) {
|
|
9219
|
-
return [];
|
|
9092
|
+
return { items: [], activeIndex: -1 };
|
|
9220
9093
|
}
|
|
9221
9094
|
const activeIndex = manualActiveNavigationIndex !== null
|
|
9222
9095
|
? manualActiveNavigationIndex
|
|
9223
9096
|
: allIntersections.findIndex((i) => i === highestIntersection);
|
|
9224
|
-
|
|
9097
|
+
const items = allIntersections.map((i, index) => ({
|
|
9225
9098
|
isActive: manualActiveNavigationIndex !== null
|
|
9226
9099
|
? manualActiveNavigationIndex === index
|
|
9227
9100
|
: i === highestIntersection && highestIntersection.intersectionRatio > 0,
|
|
9228
9101
|
activeOffset: index === activeIndex ? 0 : Math.abs(index - activeIndex),
|
|
9229
9102
|
element: i.target,
|
|
9230
9103
|
}));
|
|
9231
|
-
|
|
9232
|
-
|
|
9233
|
-
|
|
9234
|
-
|
|
9235
|
-
|
|
9236
|
-
}, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
|
|
9104
|
+
return { items, activeIndex };
|
|
9105
|
+
}, { ...(ngDevMode ? { debugName: "scrollableNavigation" } : {}), equal: (a, b) => a.activeIndex === b.activeIndex &&
|
|
9106
|
+
a.items.length === b.items.length &&
|
|
9107
|
+
a.items.every((v, i) => v.isActive === b.items[i]?.isActive && v.activeOffset === b.items[i]?.activeOffset) });
|
|
9108
|
+
this.activeIndex = computed(() => this.scrollableNavigation().activeIndex, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
|
|
9237
9109
|
this.gapValue = computed(() => {
|
|
9238
|
-
this.scrollableAttributeMutations();
|
|
9239
9110
|
this.scrollableDimensions();
|
|
9240
9111
|
const scrollable = this.scrollable()?.nativeElement;
|
|
9241
9112
|
if (!scrollable)
|
|
@@ -9247,22 +9118,17 @@ class ScrollableComponent {
|
|
|
9247
9118
|
return '0px';
|
|
9248
9119
|
return gap;
|
|
9249
9120
|
}, ...(ngDevMode ? [{ debugName: "gapValue" }] : []));
|
|
9250
|
-
this.intersectionChange = outputFromObservable(this.scrollableContentIntersections
|
|
9121
|
+
this.intersectionChange = outputFromObservable(toObservable(this.scrollableContentIntersections).pipe(takeUntilDestroyed(), debounceTime(50), map((entries) => entries.map((i, index) => ({
|
|
9251
9122
|
index,
|
|
9252
9123
|
element: i.target,
|
|
9253
9124
|
intersectionRatio: i.intersectionRatio,
|
|
9254
9125
|
isIntersecting: i.isIntersecting,
|
|
9255
9126
|
})))));
|
|
9256
|
-
this.scrollStateChange = outputFromObservable(toObservable(computed(() => {
|
|
9257
|
-
|
|
9258
|
-
|
|
9259
|
-
|
|
9260
|
-
|
|
9261
|
-
canScroll,
|
|
9262
|
-
isAtEnd: !!isAtEnd,
|
|
9263
|
-
isAtStart: !!isAtStart,
|
|
9264
|
-
};
|
|
9265
|
-
})));
|
|
9127
|
+
this.scrollStateChange = outputFromObservable(toObservable(computed(() => ({
|
|
9128
|
+
canScroll: this.canScroll(),
|
|
9129
|
+
isAtEnd: this.isAtEnd(),
|
|
9130
|
+
isAtStart: this.isAtStart(),
|
|
9131
|
+
}))));
|
|
9266
9132
|
this.allChildElementClassBindings = signalClasses(this.scrollableChildren, {
|
|
9267
9133
|
'et-scrollable-item': signal(true),
|
|
9268
9134
|
});
|
|
@@ -9280,7 +9146,8 @@ class ScrollableComponent {
|
|
|
9280
9146
|
'et-scrollable--is-at-start': this.isAtStart,
|
|
9281
9147
|
'et-scrollable--is-at-end': this.isAtEnd,
|
|
9282
9148
|
'et-scrollable--can-animate': this.canAnimate.state,
|
|
9283
|
-
'et-scrollable--
|
|
9149
|
+
'et-scrollable--has-partial-items': computed(() => this.scrollableContentIntersections().some((i) => i.intersectionRatio > 0 && i.intersectionRatio < 1)),
|
|
9150
|
+
'et-scrollable--darken-non-intersecting-items': computed(() => this.darkenNonIntersectingItems() && this.maxVisibleItemCount() > 1),
|
|
9284
9151
|
});
|
|
9285
9152
|
this.hostStyleBindings = signalHostStyles({
|
|
9286
9153
|
'--item-count': computed(() => this.scrollableChildren().length),
|
|
@@ -9289,32 +9156,40 @@ class ScrollableComponent {
|
|
|
9289
9156
|
this.scrollableDotsContainerStyleBindings = signalStyles(this.navigationDotsContainer, {
|
|
9290
9157
|
// Responsible for centering the active dot in navigation bar by using 'translate'
|
|
9291
9158
|
transform: computed(() => {
|
|
9292
|
-
const activeIndex = this.
|
|
9293
|
-
const childCount = this.
|
|
9159
|
+
const activeIndex = this.scrollableNavigation().activeIndex;
|
|
9160
|
+
const childCount = this.scrollableNavigation().items.length;
|
|
9294
9161
|
const offset = this.getNavigationDotsContainerTranslate(childCount, activeIndex);
|
|
9295
9162
|
const dir = this.direction() === 'horizontal' ? 'X' : 'Y';
|
|
9296
9163
|
return `translate${dir}(${offset})`;
|
|
9297
9164
|
}),
|
|
9298
9165
|
});
|
|
9299
|
-
|
|
9300
|
-
|
|
9301
|
-
|
|
9302
|
-
|
|
9303
|
-
|
|
9304
|
-
|
|
9305
|
-
|
|
9306
|
-
|
|
9307
|
-
|
|
9308
|
-
|
|
9309
|
-
|
|
9310
|
-
|
|
9311
|
-
|
|
9312
|
-
|
|
9313
|
-
|
|
9314
|
-
|
|
9315
|
-
|
|
9166
|
+
const isDragging$ = toObservable(this.cursorDragScrollState.isDragging);
|
|
9167
|
+
const scrollable$ = toObservable(this.scrollable);
|
|
9168
|
+
toObservable(this.snap)
|
|
9169
|
+
.pipe(takeUntilDestroyed(), switchMap((enabled) => {
|
|
9170
|
+
if (!enabled)
|
|
9171
|
+
return EMPTY;
|
|
9172
|
+
return combineLatest([this.scrollableContentIntersections$, isDragging$]).pipe(filter(([, isDragging]) => !isDragging), map(([intersections]) => intersections), debounceTime(150), tap((allIntersections) => {
|
|
9173
|
+
const scrollElement = this.scrollable()?.nativeElement;
|
|
9174
|
+
if (!scrollElement)
|
|
9175
|
+
return;
|
|
9176
|
+
const visibleItems = allIntersections
|
|
9177
|
+
.filter((i) => i.intersectionRatio > 0)
|
|
9178
|
+
.map((i) => i.target);
|
|
9179
|
+
const target = getScrollSnapTarget(visibleItems, scrollElement, this.direction(), this.scrollOrigin(), this.scrollMargin());
|
|
9180
|
+
if (target) {
|
|
9181
|
+
this.scrollToElement({ element: target.element, origin: target.origin, ignoreForcedOrigin: true });
|
|
9182
|
+
}
|
|
9183
|
+
}));
|
|
9184
|
+
}))
|
|
9185
|
+
.subscribe();
|
|
9186
|
+
toObservable(this.manualActiveNavigationIndex)
|
|
9187
|
+
.pipe(takeUntilDestroyed(), filter((i) => i !== null), switchMap(() => scrollable$.pipe(switchMap((ref) => {
|
|
9188
|
+
if (!ref)
|
|
9189
|
+
return EMPTY;
|
|
9190
|
+
return fromEvent(ref.nativeElement, 'scroll');
|
|
9191
|
+
}))), debounceTime(50), tap(() => this.manualActiveNavigationIndex.set(null)))
|
|
9316
9192
|
.subscribe();
|
|
9317
|
-
this.isRendered.bind();
|
|
9318
9193
|
}
|
|
9319
9194
|
getNavigationDotsContainerTranslate(navigationDotCount, activeIndex) {
|
|
9320
9195
|
if (navigationDotCount <= 5) {
|
|
@@ -9337,30 +9212,16 @@ class ScrollableComponent {
|
|
|
9337
9212
|
if (!scrollElement) {
|
|
9338
9213
|
return;
|
|
9339
9214
|
}
|
|
9340
|
-
const parent = this.elementRef.nativeElement;
|
|
9341
9215
|
const isSnappingEnabled = this.snap();
|
|
9342
9216
|
if (isSnappingEnabled) {
|
|
9343
|
-
|
|
9344
|
-
|
|
9345
|
-
|
|
9346
|
-
const relevantIntersection = direction === 'start' ? intersections?.partial.first : intersections?.partial.last;
|
|
9347
|
-
if (!relevantIntersection)
|
|
9348
|
-
return;
|
|
9349
|
-
const nextIndex = relevantIntersection.intersection.intersectionRatio !== 1
|
|
9350
|
-
? relevantIntersection.index
|
|
9351
|
-
: direction === 'start'
|
|
9352
|
-
? relevantIntersection.index - 1
|
|
9353
|
-
: relevantIntersection.index + 1;
|
|
9354
|
-
const element = allIntersections[nextIndex]?.target ||
|
|
9355
|
-
relevantIntersection.intersection.target;
|
|
9356
|
-
this.scrollToElement({
|
|
9357
|
-
element: element,
|
|
9358
|
-
origin: direction === 'end' ? 'start' : 'end',
|
|
9359
|
-
});
|
|
9217
|
+
const target = getScrollContainerTarget(this.scrollableContentIntersections(), direction);
|
|
9218
|
+
if (target)
|
|
9219
|
+
this.scrollToElement(target);
|
|
9360
9220
|
}
|
|
9361
9221
|
else {
|
|
9362
9222
|
// Just scroll one size of the scrollable container.
|
|
9363
|
-
const
|
|
9223
|
+
const dimensions = this.scrollableDimensions().client;
|
|
9224
|
+
const scrollableSize = this.direction() === 'horizontal' ? (dimensions?.width ?? 0) : (dimensions?.height ?? 0);
|
|
9364
9225
|
const currentScroll = this.direction() === 'horizontal' ? scrollElement.scrollLeft : scrollElement.scrollTop;
|
|
9365
9226
|
scrollElement.scrollTo({
|
|
9366
9227
|
[this.direction() === 'horizontal' ? 'left' : 'top']: currentScroll + (direction === 'start' ? -scrollableSize : scrollableSize),
|
|
@@ -9377,101 +9238,13 @@ class ScrollableComponent {
|
|
|
9377
9238
|
}
|
|
9378
9239
|
return;
|
|
9379
9240
|
}
|
|
9380
|
-
|
|
9381
|
-
if (!intersections || !scrollElement)
|
|
9241
|
+
if (!scrollElement)
|
|
9382
9242
|
return;
|
|
9383
|
-
|
|
9384
|
-
|
|
9385
|
-
// This applies to the other direction as well.
|
|
9386
|
-
const isFirstAndLastIntersectionEqual = intersections.partial.first.intersection === intersections.partial.last.intersection;
|
|
9387
|
-
const scrollableRect = scrollElement.getBoundingClientRect();
|
|
9388
|
-
if (isFirstAndLastIntersectionEqual) {
|
|
9389
|
-
const intersection = intersections.partial.first.intersection.target.getBoundingClientRect();
|
|
9390
|
-
const isStartOfElementVisible = this.direction() === 'horizontal'
|
|
9391
|
-
? Math.round(intersection.left) >= Math.round(scrollableRect.left)
|
|
9392
|
-
: Math.round(intersection.top) >= Math.round(scrollableRect.top);
|
|
9393
|
-
const isEndOfElementVisible = this.direction() === 'horizontal'
|
|
9394
|
-
? Math.round(intersection.right) <= Math.round(scrollableRect.right)
|
|
9395
|
-
: Math.round(intersection.bottom) <= Math.round(scrollableRect.bottom);
|
|
9396
|
-
if (!isStartOfElementVisible || !isEndOfElementVisible) {
|
|
9397
|
-
if (direction === 'start') {
|
|
9398
|
-
if (isStartOfElementVisible) {
|
|
9399
|
-
// to the end of the previous element
|
|
9400
|
-
const previousIndex = intersections.partial.first.index - 1;
|
|
9401
|
-
const elementToScrollTo = allIntersections[previousIndex]?.target;
|
|
9402
|
-
if (!elementToScrollTo)
|
|
9403
|
-
return;
|
|
9404
|
-
this.scrollToElement({
|
|
9405
|
-
element: elementToScrollTo,
|
|
9406
|
-
origin: 'end',
|
|
9407
|
-
});
|
|
9408
|
-
this._manualActiveNavigationIndex.set(previousIndex);
|
|
9409
|
-
}
|
|
9410
|
-
else {
|
|
9411
|
-
// to the start of the current element
|
|
9412
|
-
this.scrollToElement({
|
|
9413
|
-
element: intersections.partial.first.intersection.target,
|
|
9414
|
-
origin: 'start',
|
|
9415
|
-
});
|
|
9416
|
-
this._manualActiveNavigationIndex.set(intersections.partial.first.index);
|
|
9417
|
-
}
|
|
9418
|
-
}
|
|
9419
|
-
else {
|
|
9420
|
-
if (isEndOfElementVisible) {
|
|
9421
|
-
// to the start of the next element
|
|
9422
|
-
const nextIndex = intersections.partial.last.index + 1;
|
|
9423
|
-
const elementToScrollTo = allIntersections[nextIndex]?.target;
|
|
9424
|
-
if (!elementToScrollTo)
|
|
9425
|
-
return;
|
|
9426
|
-
this.scrollToElement({
|
|
9427
|
-
element: elementToScrollTo,
|
|
9428
|
-
origin: 'start',
|
|
9429
|
-
});
|
|
9430
|
-
this._manualActiveNavigationIndex.set(nextIndex);
|
|
9431
|
-
}
|
|
9432
|
-
else {
|
|
9433
|
-
// to the end of the current element
|
|
9434
|
-
this.scrollToElement({
|
|
9435
|
-
element: intersections.partial.last.intersection.target,
|
|
9436
|
-
origin: 'end',
|
|
9437
|
-
});
|
|
9438
|
-
this._manualActiveNavigationIndex.set(intersections.partial.last.index);
|
|
9439
|
-
}
|
|
9440
|
-
}
|
|
9441
|
-
return;
|
|
9442
|
-
}
|
|
9443
|
-
}
|
|
9444
|
-
else if (this.scrollOrigin() === 'center') {
|
|
9445
|
-
// If the scroll origin is forced to be center we should always snap to the center of the next partial intersection in the scroll direction.
|
|
9446
|
-
const nextPartialIntersection = direction === 'start' ? intersections.partial.first : intersections.partial.last;
|
|
9447
|
-
const nextIndex = nextPartialIntersection.index;
|
|
9448
|
-
this.scrollToElement({
|
|
9449
|
-
element: nextPartialIntersection.intersection.target,
|
|
9450
|
-
origin: 'center',
|
|
9451
|
-
});
|
|
9452
|
-
this._manualActiveNavigationIndex.set(nextIndex);
|
|
9243
|
+
const target = getScrollItemTarget(allIntersections, scrollElement, direction, this.scrollOrigin(), this.direction());
|
|
9244
|
+
if (!target)
|
|
9453
9245
|
return;
|
|
9454
|
-
|
|
9455
|
-
|
|
9456
|
-
let elementToScrollTo = data.intersection.target;
|
|
9457
|
-
let nextIndex = data.index;
|
|
9458
|
-
if (Math.round(data.intersection.intersectionRatio) === 1) {
|
|
9459
|
-
if (direction === 'start' && data.index === 0) {
|
|
9460
|
-
return;
|
|
9461
|
-
}
|
|
9462
|
-
if (direction === 'end' && data.index === allIntersections.length - 1) {
|
|
9463
|
-
return;
|
|
9464
|
-
}
|
|
9465
|
-
nextIndex = direction === 'start' ? data.index - 1 : data.index + 1;
|
|
9466
|
-
elementToScrollTo = allIntersections[nextIndex]?.target;
|
|
9467
|
-
if (!elementToScrollTo)
|
|
9468
|
-
return;
|
|
9469
|
-
}
|
|
9470
|
-
this.scrollToElement({
|
|
9471
|
-
element: elementToScrollTo,
|
|
9472
|
-
origin: direction,
|
|
9473
|
-
});
|
|
9474
|
-
this._manualActiveNavigationIndex.set(nextIndex);
|
|
9246
|
+
this.scrollToElement(target);
|
|
9247
|
+
this.manualActiveNavigationIndex.set(target.index);
|
|
9475
9248
|
}
|
|
9476
9249
|
getElementScrollCoordinates(options) {
|
|
9477
9250
|
const scrollElement = this.scrollable()?.nativeElement;
|
|
@@ -9502,7 +9275,7 @@ class ScrollableComponent {
|
|
|
9502
9275
|
}
|
|
9503
9276
|
scrollToElementViaNavigation(elementIndex) {
|
|
9504
9277
|
const element = this.scrollableChildren()[elementIndex];
|
|
9505
|
-
this.
|
|
9278
|
+
this.manualActiveNavigationIndex.set(elementIndex);
|
|
9506
9279
|
this.scrollToElement({
|
|
9507
9280
|
element,
|
|
9508
9281
|
});
|
|
@@ -9523,92 +9296,23 @@ class ScrollableComponent {
|
|
|
9523
9296
|
this.scrollOneItemSize('end');
|
|
9524
9297
|
}
|
|
9525
9298
|
}
|
|
9526
|
-
_enableSnapping() {
|
|
9527
|
-
combineLatest([this.scrollableContentIntersections$, this.isCursorDragging$])
|
|
9528
|
-
.pipe(filter(([, isDragging]) => !isDragging), map(([intersections]) => intersections), debounceTime(150), tap((allIntersections) => {
|
|
9529
|
-
const scrollElement = this.scrollable()?.nativeElement;
|
|
9530
|
-
if (!scrollElement)
|
|
9531
|
-
return;
|
|
9532
|
-
const intersections = getIntersectionInfo(allIntersections);
|
|
9533
|
-
if (!intersections)
|
|
9534
|
-
return;
|
|
9535
|
-
const isFirstAndLastIntersectionEqual = intersections.partial.first.intersection === intersections.partial.last.intersection;
|
|
9536
|
-
const scrollableRect = scrollElement.getBoundingClientRect();
|
|
9537
|
-
if (this.scrollOrigin() === 'center' && intersections.full.hasMultiple) {
|
|
9538
|
-
// If there is more than one fully visible element we should not snap at all.
|
|
9539
|
-
return;
|
|
9540
|
-
}
|
|
9541
|
-
else if (this.scrollOrigin() === 'center' && intersections.full.first.intersection) {
|
|
9542
|
-
// If there is already a fully visible element we should snap it to the center.
|
|
9543
|
-
this.scrollToElement({
|
|
9544
|
-
element: intersections.full.first.intersection.target,
|
|
9545
|
-
origin: 'center',
|
|
9546
|
-
});
|
|
9547
|
-
return;
|
|
9548
|
-
}
|
|
9549
|
-
else if (isFirstAndLastIntersectionEqual) {
|
|
9550
|
-
const intersection = intersections.partial.first.intersection.target.getBoundingClientRect();
|
|
9551
|
-
const isStartOfElementVisible = this.direction() === 'horizontal'
|
|
9552
|
-
? intersection.left >= scrollableRect.left
|
|
9553
|
-
: intersection.top >= scrollableRect.top;
|
|
9554
|
-
const isEndOfElementVisible = this.direction() === 'horizontal'
|
|
9555
|
-
? intersection.right <= scrollableRect.right
|
|
9556
|
-
: intersection.bottom <= scrollableRect.bottom;
|
|
9557
|
-
// Don't snap if neither the start nor the end of the current element is visible.
|
|
9558
|
-
// Otherwise this would result in parts of the element being inaccessible.
|
|
9559
|
-
if (!isStartOfElementVisible && !isEndOfElementVisible)
|
|
9560
|
-
return;
|
|
9561
|
-
// If the start of the element is visible we should snap to the start.
|
|
9562
|
-
if (isStartOfElementVisible) {
|
|
9563
|
-
this.scrollToElement({
|
|
9564
|
-
element: intersections.partial.first.intersection.target,
|
|
9565
|
-
origin: 'start',
|
|
9566
|
-
});
|
|
9567
|
-
return;
|
|
9568
|
-
}
|
|
9569
|
-
// If the end of the element is visible we should snap to the end.
|
|
9570
|
-
if (isEndOfElementVisible) {
|
|
9571
|
-
this.scrollToElement({
|
|
9572
|
-
element: intersections.partial.last.intersection.target,
|
|
9573
|
-
origin: 'end',
|
|
9574
|
-
});
|
|
9575
|
-
return;
|
|
9576
|
-
}
|
|
9577
|
-
}
|
|
9578
|
-
else if ((this.direction() === 'horizontal' &&
|
|
9579
|
-
intersections.partial.biggest.intersection.boundingClientRect.width > scrollableRect.width) ||
|
|
9580
|
-
(this.direction() === 'vertical' &&
|
|
9581
|
-
intersections.partial.biggest.intersection.boundingClientRect.height > scrollableRect.height)) {
|
|
9582
|
-
// If the current element is bigger than the scrollable container we should snap to the start of the current element if the scroll direction is forward
|
|
9583
|
-
// and to the end of the current element if the scroll direction is backwards.
|
|
9584
|
-
const origin = intersections.partial.biggest.index === intersections.partial.first.index ? 'end' : 'start';
|
|
9585
|
-
this.scrollToElement({
|
|
9586
|
-
element: intersections.partial.biggest.intersection.target,
|
|
9587
|
-
origin,
|
|
9588
|
-
ignoreForcedOrigin: true,
|
|
9589
|
-
});
|
|
9590
|
-
}
|
|
9591
|
-
else {
|
|
9592
|
-
// No special case. Just snap to the biggest intersection.
|
|
9593
|
-
this.scrollToElement({
|
|
9594
|
-
element: intersections.partial.biggest.intersection.target,
|
|
9595
|
-
});
|
|
9596
|
-
}
|
|
9597
|
-
}), takeUntil(this._disableSnapping$))
|
|
9598
|
-
.subscribe();
|
|
9599
|
-
}
|
|
9600
|
-
_disableSnapping() {
|
|
9601
|
-
this._disableSnapping$.next();
|
|
9602
|
-
}
|
|
9603
9299
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollableComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
9604
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ScrollableComponent, isStandalone: true, selector: "et-scrollable", inputs: { itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, scrollableRole: { classPropertyName: "scrollableRole", publicName: "scrollableRole", isSignal: true, isRequired: false, transformFunction: null }, scrollableClass: { classPropertyName: "scrollableClass", publicName: "scrollableClass", isSignal: true, isRequired: false, transformFunction: null }, renderNavigation: { classPropertyName: "renderNavigation", publicName: "renderNavigation", isSignal: true, isRequired: false, transformFunction: null }, renderMasks: { classPropertyName: "renderMasks", publicName: "renderMasks", isSignal: true, isRequired: false, transformFunction: null }, renderButtons: { classPropertyName: "renderButtons", publicName: "renderButtons", isSignal: true, isRequired: false, transformFunction: null }, buttonPosition: { classPropertyName: "buttonPosition", publicName: "buttonPosition", isSignal: true, isRequired: false, transformFunction: null }, renderScrollbars: { classPropertyName: "renderScrollbars", publicName: "renderScrollbars", isSignal: true, isRequired: false, transformFunction: null }, stickyButtons: { classPropertyName: "stickyButtons", publicName: "stickyButtons", isSignal: true, isRequired: false, transformFunction: null }, cursorDragScroll: { classPropertyName: "cursorDragScroll", publicName: "cursorDragScroll", isSignal: true, isRequired: false, transformFunction: null }, disableActiveElementScrolling: { classPropertyName: "disableActiveElementScrolling", publicName: "disableActiveElementScrolling", isSignal: true, isRequired: false, transformFunction: null }, scrollMode: { classPropertyName: "scrollMode", publicName: "scrollMode", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: "snap", publicName: "snap", isSignal: true, isRequired: false, transformFunction: null }, scrollMargin: { classPropertyName: "scrollMargin", publicName: "scrollMargin", isSignal: true, isRequired: false, transformFunction: null }, scrollOrigin: { classPropertyName: "scrollOrigin", publicName: "scrollOrigin", isSignal: true, isRequired: false, transformFunction: null }, darkenNonIntersectingItems: { classPropertyName: "darkenNonIntersectingItems", publicName: "darkenNonIntersectingItems", isSignal: true, isRequired: false, transformFunction: null }, showLoadingTemplate: { classPropertyName: "showLoadingTemplate", publicName: "showLoadingTemplate", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplatePosition: { classPropertyName: "loadingTemplatePosition", publicName: "loadingTemplatePosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersectionChange: "intersectionChange", scrollStateChange: "scrollStateChange" }, host: { classAttribute: "et-scrollable" }, providers: [provideIcons(CHEVRON_ICON)], queries: [{ propertyName: "activeElementList", predicate: SCROLLABLE_IS_ACTIVE_CHILD_TOKEN, descendants: true, isSignal: true }, { propertyName: "loadingTemplate", first: true, predicate: SCROLLABLE_LOADING_TEMPLATE_TOKEN, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, isSignal: true }, { propertyName: "firstElement", first: true, predicate: ["firstElement"], descendants: true, isSignal: true }, { propertyName: "lastElement", first: true, predicate: ["lastElement"], descendants: true, isSignal: true }, { propertyName: "navigationDotsContainer", first: true, predicate: ["navigationDotsContainer"], descendants: true, isSignal: true }, { propertyName: "firstNavigationDot", first: true, predicate: ["navigationDot"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"et-scrollable-wrapper\">\n <div\n #scrollable\n [attr.role]=\"scrollableRole() ?? undefined\"\n [ngClass]=\"scrollableClass()\"\n class=\"et-scrollable-container\"\n >\n <div #firstElement class=\"et-scroll-observer-first-element\" etScrollableIgnoreChild></div>\n @if (loadingTemplatePosition() === 'start' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n <ng-content />\n @if (loadingTemplatePosition() === 'end' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <div #lastElement class=\"et-scroll-observer-last-element\" etScrollableIgnoreChild></div>\n </div>\n\n @if (renderMasks()) {\n <div class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n </div>\n }\n\n @if (renderButtonsInside()) {\n <div class=\"et-scrollable-buttons\">\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n </div>\n }\n</div>\n\n@if ((renderButtonsInFooter() || (renderNavigation() && scrollableNavigation().length > 1)) && canScroll()) {\n <div\n [ngClass]=\"{\n 'et-scrollable-footer--with-navigation': renderNavigation(),\n 'et-scrollable-footer--with-buttons': renderButtonsInFooter(),\n }\"\n class=\"et-scrollable-footer\"\n aria-hidden=\"true\"\n >\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n }\n\n @if (renderNavigation()) {\n <div class=\"et-scrollable-progress-bar\">\n <div #navigationDotsContainer class=\"et-scrollable-dots-container\">\n @for (item of scrollableNavigation(); track i; let i = $index) {\n <button\n #navigationDot\n [class.et-scrollable-navigation-item--active]=\"item.isActive\"\n [class.et-scrollable-navigation-item--close]=\"\n scrollableNavigation()[i + 1]?.isActive || scrollableNavigation()[i - 1]?.isActive\n \"\n [class.et-scrollable-navigation-item--far]=\"\n !scrollableNavigation()[i + 1]?.isActive && !scrollableNavigation()[i - 1]?.isActive && !item.isActive\n \"\n [attr.active-offset]=\"item.activeOffset\"\n (click)=\"scrollToElementViaNavigation(i)\"\n class=\"et-scrollable-navigation-item\"\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n }\n </div>\n </div>\n }\n\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n }\n </div>\n}\n\n<ng-template #forwardButtonTpl>\n <button\n [disabled]=\"isAtStart()\"\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #backwardButtonTpl>\n <button\n [disabled]=\"isAtEnd()\"\n (click)=\"scrollToEndDirection()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #loadingTpl>\n @if (loadingTemplate(); as tpl) {\n @for (\n _ of tpl.repeat();\n track index;\n let index = $index;\n let even = $even;\n let odd = $odd;\n let first = $first;\n let last = $last\n ) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { index, even, odd, first, last }\" />\n }\n }\n</ng-template>\n", styles: [":where(.et-scrollable){--mask: #121212 0, transparent 100%;--mask-size: 25px;--darken-non-intersecting-items-amount: .75;--_auto-size: min-content;display:block}.et-scrollable .et-scrollable-wrapper{display:grid;position:relative;block-size:100%;inline-size:100%}.et-scrollable[item-size=same]{--_auto-size: 1fr}.et-scrollable[item-size=half]{--_auto-size: calc((100% - var(--item-gap)) / 2)}.et-scrollable[item-size=third]{--_auto-size: calc((100% - (var(--item-gap) * 2)) / 3)}.et-scrollable[item-size=quarter]{--_auto-size: calc((100% - (var(--item-gap) * 3)) / 4)}.et-scrollable[item-size=full]{--_auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container,.et-scrollable:not([render-scrollbars]) .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar,.et-scrollable:not([render-scrollbars]) .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable .et-scrollable-button .et-icon--et-chevron{display:block}.et-scrollable[direction=horizontal] .et-scrollable-container,.et-scrollable:not([direction]) .et-scrollable-container{grid-auto-flow:column;grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-child(2){grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-last-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-last-child(2){grid-column:var(--item-count)/var(--item-count);grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button,.et-scrollable:not([direction]) .et-scrollable-mask,.et-scrollable:not([direction]) .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:translate(-10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--start .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:translate(10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--end .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(90deg)}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{block-size:100%;inline-size:1px}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element{margin-inline-start:3px;grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{margin-inline-end:3px;grid-column:var(--item-count)/var(--item-count);grid-row:1/1;justify-self:end}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-flow:row;grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-child(2){grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-last-child(2){grid-row:var(--item-count)/var(--item-count);grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:translateY(-10px)}.et-scrollable[direction=vertical] .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:translateY(10px)}.et-scrollable[direction=vertical] .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(180deg)}.et-scrollable[direction=vertical] .et-scroll-observer-first-element,.et-scrollable[direction=vertical] .et-scroll-observer-last-element{inline-size:100%;block-size:1px}.et-scrollable[direction=vertical] .et-scroll-observer-first-element{margin-block-start:3px;grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scroll-observer-last-element{margin-block-end:3px;grid-row:var(--item-count)/var(--item-count);grid-column:1/1;align-self:end}.et-scrollable[direction=vertical]:has(.et-scrollable-footer){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);gap:10px}.et-scrollable[direction=vertical] .et-scrollable-footer{flex-direction:column;margin-block-start:0}.et-scrollable[direction=vertical] .et-scrollable-progress-bar{flex-direction:column;max-block-size:100px}.et-scrollable[direction=vertical] .et-scrollable-dots-container{flex-direction:column}.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{opacity:1;transform:translate(0)}.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{opacity:1;transform:translate(0)}.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scroll-observer-first-element,.et-scrollable .et-scroll-observer-last-element{pointer-events:none}.et-scrollable .et-scrollable-container{display:grid;position:relative;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0}.et-scrollable.et-scrollable--can-animate .et-scrollable-dots-container{transition:transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate .et-scrollable-navigation-item:after{transition:background-color .2s linear,transform .2s linear}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-mask{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-button{transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--darken-non-intersecting-items .et-scrollable-item{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--darken-non-intersecting-items .et-scrollable-item--not-intersecting{opacity:var(--darken-non-intersecting-items-amount)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-icon--et-chevron{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}.et-scrollable .et-scrollable-footer{display:flex;justify-content:center;align-items:center;gap:10px;margin-block-start:10px}.et-scrollable .et-scrollable-footer.et-scrollable-footer--with-buttons .et-scrollable-button{transform:none}.et-scrollable .et-scrollable-footer .et-scrollable-button{width:30px;height:30px}.et-scrollable .et-scrollable-navigation-item{display:flex;justify-content:center;align-items:center;border:none;padding:0;inline-size:20px;block-size:20px;border-radius:50%;cursor:pointer;background-color:transparent}.et-scrollable .et-scrollable-navigation-item.et-scrollable-navigation-item--active:after{background-color:#c6c6c6}.et-scrollable .et-scrollable-navigation-item:after{content:\"\";display:block;inline-size:50%;block-size:50%;border-radius:50%;background-color:#4b4b4b;transform:scale(0)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"0\"]:after{transform:scale(1)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"1\"]:after{transform:scale(.75)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"2\"]:after{transform:scale(.6)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"3\"]:after{transform:scale(.5)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"4\"]:after{transform:scale(.4)}.et-scrollable .et-scrollable-progress-bar{overflow:hidden;max-inline-size:100px;display:flex;align-items:center}.et-scrollable .et-scrollable-progress-bar .et-scrollable-dots-container{display:flex;flex-wrap:nowrap}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollableIgnoreChildDirective, selector: "[etScrollableIgnoreChild]", inputs: ["etScrollableIgnoreChild"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "allowHardcodedColor"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9300
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.1", type: ScrollableComponent, isStandalone: true, selector: "et-scrollable", inputs: { itemSize: { classPropertyName: "itemSize", publicName: "itemSize", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, scrollableRole: { classPropertyName: "scrollableRole", publicName: "scrollableRole", isSignal: true, isRequired: false, transformFunction: null }, scrollableClass: { classPropertyName: "scrollableClass", publicName: "scrollableClass", isSignal: true, isRequired: false, transformFunction: null }, renderNavigation: { classPropertyName: "renderNavigation", publicName: "renderNavigation", isSignal: true, isRequired: false, transformFunction: null }, renderMasks: { classPropertyName: "renderMasks", publicName: "renderMasks", isSignal: true, isRequired: false, transformFunction: null }, renderButtons: { classPropertyName: "renderButtons", publicName: "renderButtons", isSignal: true, isRequired: false, transformFunction: null }, buttonPosition: { classPropertyName: "buttonPosition", publicName: "buttonPosition", isSignal: true, isRequired: false, transformFunction: null }, renderScrollbars: { classPropertyName: "renderScrollbars", publicName: "renderScrollbars", isSignal: true, isRequired: false, transformFunction: null }, stickyButtons: { classPropertyName: "stickyButtons", publicName: "stickyButtons", isSignal: true, isRequired: false, transformFunction: null }, cursorDragScroll: { classPropertyName: "cursorDragScroll", publicName: "cursorDragScroll", isSignal: true, isRequired: false, transformFunction: null }, disableActiveElementScrolling: { classPropertyName: "disableActiveElementScrolling", publicName: "disableActiveElementScrolling", isSignal: true, isRequired: false, transformFunction: null }, scrollMode: { classPropertyName: "scrollMode", publicName: "scrollMode", isSignal: true, isRequired: false, transformFunction: null }, snap: { classPropertyName: "snap", publicName: "snap", isSignal: true, isRequired: false, transformFunction: null }, scrollMargin: { classPropertyName: "scrollMargin", publicName: "scrollMargin", isSignal: true, isRequired: false, transformFunction: null }, scrollOrigin: { classPropertyName: "scrollOrigin", publicName: "scrollOrigin", isSignal: true, isRequired: false, transformFunction: null }, darkenNonIntersectingItems: { classPropertyName: "darkenNonIntersectingItems", publicName: "darkenNonIntersectingItems", isSignal: true, isRequired: false, transformFunction: null }, showLoadingTemplate: { classPropertyName: "showLoadingTemplate", publicName: "showLoadingTemplate", isSignal: true, isRequired: false, transformFunction: null }, loadingTemplatePosition: { classPropertyName: "loadingTemplatePosition", publicName: "loadingTemplatePosition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersectionChange: "intersectionChange", scrollStateChange: "scrollStateChange" }, host: { classAttribute: "et-scrollable" }, providers: [provideIcons(CHEVRON_ICON), provideBreakpointInstance(ScrollableComponent)], queries: [{ propertyName: "activeElementList", predicate: SCROLLABLE_IS_ACTIVE_CHILD_TOKEN, descendants: true, isSignal: true }, { propertyName: "loadingTemplate", first: true, predicate: SCROLLABLE_LOADING_TEMPLATE_TOKEN, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "scrollable", first: true, predicate: ["scrollable"], descendants: true, isSignal: true }, { propertyName: "scrollObserver", first: true, predicate: ScrollObserverDirective, descendants: true, isSignal: true }, { propertyName: "navigationDotsContainer", first: true, predicate: ["navigationDotsContainer"], descendants: true, isSignal: true }, { propertyName: "firstNavigationDot", first: true, predicate: ["navigationDot"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"et-scrollable-wrapper\">\n <div\n #scrollable\n [attr.role]=\"scrollableRole() ?? undefined\"\n [ngClass]=\"scrollableClass()\"\n class=\"et-scrollable-container\"\n etScrollObserver\n >\n <div #firstElement class=\"et-scroll-observer-first-element\" etScrollObserverStart etScrollableIgnoreChild></div>\n @if (loadingTemplatePosition() === 'start' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n <ng-content />\n @if (loadingTemplatePosition() === 'end' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <div #lastElement class=\"et-scroll-observer-last-element\" etScrollObserverEnd etScrollableIgnoreChild></div>\n </div>\n\n @if (renderMasks()) {\n <div class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n </div>\n }\n\n @if (renderButtonsInside()) {\n <div class=\"et-scrollable-buttons\">\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n </div>\n }\n</div>\n\n@if ((renderButtonsInFooter() || (renderNavigation() && scrollableNavigation().items.length > 1)) && canScroll()) {\n <div\n [ngClass]=\"{\n 'et-scrollable-footer--with-navigation': renderNavigation(),\n 'et-scrollable-footer--with-buttons': renderButtonsInFooter(),\n }\"\n class=\"et-scrollable-footer\"\n aria-hidden=\"true\"\n >\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n }\n\n @if (renderNavigation()) {\n <div class=\"et-scrollable-progress-bar\">\n <div #navigationDotsContainer class=\"et-scrollable-dots-container\">\n @for (item of scrollableNavigation().items; track i; let i = $index) {\n <button\n #navigationDot\n [class.et-scrollable-navigation-item--active]=\"item.isActive\"\n [class.et-scrollable-navigation-item--close]=\"\n scrollableNavigation().items[i + 1]?.isActive || scrollableNavigation().items[i - 1]?.isActive\n \"\n [class.et-scrollable-navigation-item--far]=\"\n !scrollableNavigation().items[i + 1]?.isActive &&\n !scrollableNavigation().items[i - 1]?.isActive &&\n !item.isActive\n \"\n [attr.active-offset]=\"item.activeOffset\"\n (click)=\"scrollToElementViaNavigation(i)\"\n class=\"et-scrollable-navigation-item\"\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n }\n </div>\n </div>\n }\n\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n }\n </div>\n}\n\n<ng-template #forwardButtonTpl>\n <button\n [disabled]=\"isAtStart()\"\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #backwardButtonTpl>\n <button\n [disabled]=\"isAtEnd()\"\n (click)=\"scrollToEndDirection()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #loadingTpl>\n @if (loadingTemplate(); as tpl) {\n @for (\n _ of tpl.repeat();\n track index;\n let index = $index;\n let even = $even;\n let odd = $odd;\n let first = $first;\n let last = $last\n ) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { index, even, odd, first, last }\" />\n }\n }\n</ng-template>\n", styles: [":where(.et-scrollable){--mask: #121212 0, transparent 100%;--mask-size: 25px;--darken-non-intersecting-items-amount: .75;--_auto-size: min-content;display:block;position:relative}.et-scrollable .et-scrollable-wrapper{display:grid;position:relative;block-size:100%;inline-size:100%}.et-scrollable[item-size=same]{--_auto-size: 1fr}.et-scrollable[item-size=half]{--_auto-size: calc((100% - var(--item-gap)) / 2)}.et-scrollable[item-size=third]{--_auto-size: calc((100% - (var(--item-gap) * 2)) / 3)}.et-scrollable[item-size=quarter]{--_auto-size: calc((100% - (var(--item-gap) * 3)) / 4)}.et-scrollable[item-size=full]{--_auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container,.et-scrollable:not([render-scrollbars]) .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar,.et-scrollable:not([render-scrollbars]) .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable .et-scrollable-button .et-icon--et-chevron{display:block}.et-scrollable[direction=horizontal] .et-scrollable-container,.et-scrollable:not([direction]) .et-scrollable-container{grid-auto-flow:column;grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-child(2){grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-last-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-last-child(2){grid-column:var(--item-count)/var(--item-count);grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button,.et-scrollable:not([direction]) .et-scrollable-mask,.et-scrollable:not([direction]) .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:translate(-10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--start .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:translate(10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--end .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(90deg)}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{block-size:100%;inline-size:1px}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element{margin-inline-start:3px;grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{margin-inline-end:3px;grid-column:var(--item-count)/var(--item-count);grid-row:1/1;justify-self:end}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-flow:row;grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-child(2){grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-last-child(2){grid-row:var(--item-count)/var(--item-count);grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:translateY(-10px)}.et-scrollable[direction=vertical] .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:translateY(10px)}.et-scrollable[direction=vertical] .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(180deg)}.et-scrollable[direction=vertical] .et-scroll-observer-first-element,.et-scrollable[direction=vertical] .et-scroll-observer-last-element{inline-size:100%;block-size:1px}.et-scrollable[direction=vertical] .et-scroll-observer-first-element{margin-block-start:3px;grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scroll-observer-last-element{margin-block-end:3px;grid-row:var(--item-count)/var(--item-count);grid-column:1/1;align-self:end}.et-scrollable[direction=vertical]:has(.et-scrollable-footer){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);gap:10px}.et-scrollable[direction=vertical] .et-scrollable-footer{flex-direction:column;margin-block-start:0}.et-scrollable[direction=vertical] .et-scrollable-progress-bar{flex-direction:column;max-block-size:100px}.et-scrollable[direction=vertical] .et-scrollable-dots-container{flex-direction:column}.et-scrollable.et-scrollable--can-scroll:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{opacity:1;transform:translate(0);pointer-events:all}.et-scrollable.et-scrollable--can-scroll.et-scrollable--has-partial-items:not(.et-scrollable--is-at-start) .et-scrollable-masks .et-scrollable-mask--start{opacity:1;transform:translate(0)}.et-scrollable.et-scrollable--can-scroll:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{opacity:1;transform:translate(0);pointer-events:all}.et-scrollable.et-scrollable--can-scroll.et-scrollable--has-partial-items:not(.et-scrollable--is-at-end) .et-scrollable-masks .et-scrollable-mask--end{opacity:1;transform:translate(0)}.et-scrollable .et-scroll-observer-first-element,.et-scrollable .et-scroll-observer-last-element{pointer-events:none}.et-scrollable .et-scrollable-container{display:grid;position:relative;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0}.et-scrollable.et-scrollable--can-animate .et-scrollable-dots-container{transition:transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate .et-scrollable-navigation-item:after{transition:background-color .2s linear,transform .2s linear}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-mask{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-button{transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--darken-non-intersecting-items .et-scrollable-item{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--darken-non-intersecting-items .et-scrollable-item--not-intersecting{opacity:var(--darken-non-intersecting-items-amount)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-icon--et-chevron{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}.et-scrollable .et-scrollable-footer{display:flex;justify-content:center;align-items:center;gap:10px;margin-block-start:10px}.et-scrollable .et-scrollable-footer.et-scrollable-footer--with-buttons .et-scrollable-button{transform:none}.et-scrollable .et-scrollable-footer .et-scrollable-button{width:30px;height:30px}.et-scrollable .et-scrollable-navigation-item{display:flex;justify-content:center;align-items:center;border:none;padding:0;inline-size:20px;block-size:20px;border-radius:50%;cursor:pointer;background-color:transparent}.et-scrollable .et-scrollable-navigation-item.et-scrollable-navigation-item--active:after{background-color:#c6c6c6}.et-scrollable .et-scrollable-navigation-item:after{content:\"\";display:block;inline-size:50%;block-size:50%;border-radius:50%;background-color:#4b4b4b;transform:scale(0)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"0\"]:after{transform:scale(1)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"1\"]:after{transform:scale(.75)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"2\"]:after{transform:scale(.6)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"3\"]:after{transform:scale(.5)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"4\"]:after{transform:scale(.4)}.et-scrollable .et-scrollable-progress-bar{overflow:hidden;max-inline-size:100px;display:flex;align-items:center}.et-scrollable .et-scrollable-progress-bar .et-scrollable-dots-container{display:flex;flex-wrap:nowrap}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ScrollableIgnoreChildDirective, selector: "[etScrollableIgnoreChild]", inputs: ["etScrollableIgnoreChild"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[etIcon]", inputs: ["etIcon", "allowHardcodedColor"] }, { kind: "directive", type: ScrollObserverDirective, selector: "[etScrollObserver]", inputs: ["enabled"], outputs: ["enabledChange"], exportAs: ["etScrollObserver"] }, { kind: "directive", type: ScrollObserverStartDirective, selector: "[etScrollObserverStart]" }, { kind: "directive", type: ScrollObserverEndDirective, selector: "[etScrollObserverEnd]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9605
9301
|
}
|
|
9606
9302
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: ScrollableComponent, decorators: [{
|
|
9607
9303
|
type: Component,
|
|
9608
|
-
args: [{ selector: 'et-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
9304
|
+
args: [{ selector: 'et-scrollable', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
|
|
9305
|
+
NgClass,
|
|
9306
|
+
ScrollableIgnoreChildDirective,
|
|
9307
|
+
NgTemplateOutlet,
|
|
9308
|
+
IconDirective,
|
|
9309
|
+
ScrollObserverDirective,
|
|
9310
|
+
ScrollObserverStartDirective,
|
|
9311
|
+
ScrollObserverEndDirective,
|
|
9312
|
+
], host: {
|
|
9609
9313
|
class: 'et-scrollable',
|
|
9610
|
-
}, providers: [provideIcons(CHEVRON_ICON)], template: "<div class=\"et-scrollable-wrapper\">\n <div\n #scrollable\n [attr.role]=\"scrollableRole() ?? undefined\"\n [ngClass]=\"scrollableClass()\"\n class=\"et-scrollable-container\"\n >\n <div #firstElement class=\"et-scroll-observer-first-element\" etScrollableIgnoreChild></div>\n @if (loadingTemplatePosition() === 'start' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n <ng-content />\n @if (loadingTemplatePosition() === 'end' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <div #lastElement class=\"et-scroll-observer-last-element\" etScrollableIgnoreChild></div>\n </div>\n\n @if (renderMasks()) {\n <div class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n </div>\n }\n\n @if (renderButtonsInside()) {\n <div class=\"et-scrollable-buttons\">\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n </div>\n }\n</div>\n\n@if ((renderButtonsInFooter() || (renderNavigation() && scrollableNavigation().length > 1)) && canScroll()) {\n <div\n [ngClass]=\"{\n 'et-scrollable-footer--with-navigation': renderNavigation(),\n 'et-scrollable-footer--with-buttons': renderButtonsInFooter(),\n }\"\n class=\"et-scrollable-footer\"\n aria-hidden=\"true\"\n >\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n }\n\n @if (renderNavigation()) {\n <div class=\"et-scrollable-progress-bar\">\n <div #navigationDotsContainer class=\"et-scrollable-dots-container\">\n @for (item of scrollableNavigation(); track i; let i = $index) {\n <button\n #navigationDot\n [class.et-scrollable-navigation-item--active]=\"item.isActive\"\n [class.et-scrollable-navigation-item--close]=\"\n scrollableNavigation()[i + 1]?.isActive || scrollableNavigation()[i - 1]?.isActive\n \"\n [class.et-scrollable-navigation-item--far]=\"\n !scrollableNavigation()[i + 1]?.isActive && !scrollableNavigation()[i - 1]?.isActive && !item.isActive\n \"\n [attr.active-offset]=\"item.activeOffset\"\n (click)=\"scrollToElementViaNavigation(i)\"\n class=\"et-scrollable-navigation-item\"\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n }\n </div>\n </div>\n }\n\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n }\n </div>\n}\n\n<ng-template #forwardButtonTpl>\n <button\n [disabled]=\"isAtStart()\"\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #backwardButtonTpl>\n <button\n [disabled]=\"isAtEnd()\"\n (click)=\"scrollToEndDirection()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #loadingTpl>\n @if (loadingTemplate(); as tpl) {\n @for (\n _ of tpl.repeat();\n track index;\n let index = $index;\n let even = $even;\n let odd = $odd;\n let first = $first;\n let last = $last\n ) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { index, even, odd, first, last }\" />\n }\n }\n</ng-template>\n", styles: [":where(.et-scrollable){--mask: #121212 0, transparent 100%;--mask-size: 25px;--darken-non-intersecting-items-amount: .75;--_auto-size: min-content;display:block}.et-scrollable .et-scrollable-wrapper{display:grid;position:relative;block-size:100%;inline-size:100%}.et-scrollable[item-size=same]{--_auto-size: 1fr}.et-scrollable[item-size=half]{--_auto-size: calc((100% - var(--item-gap)) / 2)}.et-scrollable[item-size=third]{--_auto-size: calc((100% - (var(--item-gap) * 2)) / 3)}.et-scrollable[item-size=quarter]{--_auto-size: calc((100% - (var(--item-gap) * 3)) / 4)}.et-scrollable[item-size=full]{--_auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container,.et-scrollable:not([render-scrollbars]) .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar,.et-scrollable:not([render-scrollbars]) .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable .et-scrollable-button .et-icon--et-chevron{display:block}.et-scrollable[direction=horizontal] .et-scrollable-container,.et-scrollable:not([direction]) .et-scrollable-container{grid-auto-flow:column;grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-child(2){grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-last-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-last-child(2){grid-column:var(--item-count)/var(--item-count);grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button,.et-scrollable:not([direction]) .et-scrollable-mask,.et-scrollable:not([direction]) .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:translate(-10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--start .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:translate(10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--end .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(90deg)}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{block-size:100%;inline-size:1px}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element{margin-inline-start:3px;grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{margin-inline-end:3px;grid-column:var(--item-count)/var(--item-count);grid-row:1/1;justify-self:end}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-flow:row;grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-child(2){grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-last-child(2){grid-row:var(--item-count)/var(--item-count);grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:translateY(-10px)}.et-scrollable[direction=vertical] .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:translateY(10px)}.et-scrollable[direction=vertical] .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(180deg)}.et-scrollable[direction=vertical] .et-scroll-observer-first-element,.et-scrollable[direction=vertical] .et-scroll-observer-last-element{inline-size:100%;block-size:1px}.et-scrollable[direction=vertical] .et-scroll-observer-first-element{margin-block-start:3px;grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scroll-observer-last-element{margin-block-end:3px;grid-row:var(--item-count)/var(--item-count);grid-column:1/1;align-self:end}.et-scrollable[direction=vertical]:has(.et-scrollable-footer){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);gap:10px}.et-scrollable[direction=vertical] .et-scrollable-footer{flex-direction:column;margin-block-start:0}.et-scrollable[direction=vertical] .et-scrollable-progress-bar{flex-direction:column;max-block-size:100px}.et-scrollable[direction=vertical] .et-scrollable-dots-container{flex-direction:column}.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-masks .et-scrollable-mask--start,.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{opacity:1;transform:translate(0)}.et-scrollable:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{pointer-events:all}.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-masks .et-scrollable-mask--end,.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{opacity:1;transform:translate(0)}.et-scrollable:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{pointer-events:all}.et-scrollable .et-scroll-observer-first-element,.et-scrollable .et-scroll-observer-last-element{pointer-events:none}.et-scrollable .et-scrollable-container{display:grid;position:relative;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0}.et-scrollable.et-scrollable--can-animate .et-scrollable-dots-container{transition:transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate .et-scrollable-navigation-item:after{transition:background-color .2s linear,transform .2s linear}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-mask{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-button{transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--darken-non-intersecting-items .et-scrollable-item{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--darken-non-intersecting-items .et-scrollable-item--not-intersecting{opacity:var(--darken-non-intersecting-items-amount)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-icon--et-chevron{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}.et-scrollable .et-scrollable-footer{display:flex;justify-content:center;align-items:center;gap:10px;margin-block-start:10px}.et-scrollable .et-scrollable-footer.et-scrollable-footer--with-buttons .et-scrollable-button{transform:none}.et-scrollable .et-scrollable-footer .et-scrollable-button{width:30px;height:30px}.et-scrollable .et-scrollable-navigation-item{display:flex;justify-content:center;align-items:center;border:none;padding:0;inline-size:20px;block-size:20px;border-radius:50%;cursor:pointer;background-color:transparent}.et-scrollable .et-scrollable-navigation-item.et-scrollable-navigation-item--active:after{background-color:#c6c6c6}.et-scrollable .et-scrollable-navigation-item:after{content:\"\";display:block;inline-size:50%;block-size:50%;border-radius:50%;background-color:#4b4b4b;transform:scale(0)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"0\"]:after{transform:scale(1)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"1\"]:after{transform:scale(.75)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"2\"]:after{transform:scale(.6)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"3\"]:after{transform:scale(.5)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"4\"]:after{transform:scale(.4)}.et-scrollable .et-scrollable-progress-bar{overflow:hidden;max-inline-size:100px;display:flex;align-items:center}.et-scrollable .et-scrollable-progress-bar .et-scrollable-dots-container{display:flex;flex-wrap:nowrap}\n"] }]
|
|
9611
|
-
}], ctorParameters: () => [], propDecorators: { itemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemSize", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], scrollableRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollableRole", required: false }] }], scrollableClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollableClass", required: false }] }], renderNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderNavigation", required: false }] }], renderMasks: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderMasks", required: false }] }], renderButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderButtons", required: false }] }], buttonPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonPosition", required: false }] }], renderScrollbars: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderScrollbars", required: false }] }], stickyButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyButtons", required: false }] }], cursorDragScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "cursorDragScroll", required: false }] }], disableActiveElementScrolling: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableActiveElementScrolling", required: false }] }], scrollMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollMode", required: false }] }], snap: [{ type: i0.Input, args: [{ isSignal: true, alias: "snap", required: false }] }], scrollMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollMargin", required: false }] }], scrollOrigin: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollOrigin", required: false }] }], darkenNonIntersectingItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "darkenNonIntersectingItems", required: false }] }], showLoadingTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLoadingTemplate", required: false }] }], loadingTemplatePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingTemplatePosition", required: false }] }], scrollable: [{ type: i0.ViewChild, args: ['scrollable', { isSignal: true }] }],
|
|
9314
|
+
}, providers: [provideIcons(CHEVRON_ICON), provideBreakpointInstance(ScrollableComponent)], template: "<div class=\"et-scrollable-wrapper\">\n <div\n #scrollable\n [attr.role]=\"scrollableRole() ?? undefined\"\n [ngClass]=\"scrollableClass()\"\n class=\"et-scrollable-container\"\n etScrollObserver\n >\n <div #firstElement class=\"et-scroll-observer-first-element\" etScrollObserverStart etScrollableIgnoreChild></div>\n @if (loadingTemplatePosition() === 'start' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n <ng-content />\n @if (loadingTemplatePosition() === 'end' && showLoadingTemplate()) {\n <ng-container *ngTemplateOutlet=\"loadingTpl\" />\n }\n\n <div #lastElement class=\"et-scroll-observer-last-element\" etScrollObserverEnd etScrollableIgnoreChild></div>\n </div>\n\n @if (renderMasks()) {\n <div class=\"et-scrollable-masks\">\n <div class=\"et-scrollable-mask et-scrollable-mask--start\"></div>\n <div class=\"et-scrollable-mask et-scrollable-mask--end\"></div>\n </div>\n }\n\n @if (renderButtonsInside()) {\n <div class=\"et-scrollable-buttons\">\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n </div>\n }\n</div>\n\n@if ((renderButtonsInFooter() || (renderNavigation() && scrollableNavigation().items.length > 1)) && canScroll()) {\n <div\n [ngClass]=\"{\n 'et-scrollable-footer--with-navigation': renderNavigation(),\n 'et-scrollable-footer--with-buttons': renderButtonsInFooter(),\n }\"\n class=\"et-scrollable-footer\"\n aria-hidden=\"true\"\n >\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"forwardButtonTpl\" />\n }\n\n @if (renderNavigation()) {\n <div class=\"et-scrollable-progress-bar\">\n <div #navigationDotsContainer class=\"et-scrollable-dots-container\">\n @for (item of scrollableNavigation().items; track i; let i = $index) {\n <button\n #navigationDot\n [class.et-scrollable-navigation-item--active]=\"item.isActive\"\n [class.et-scrollable-navigation-item--close]=\"\n scrollableNavigation().items[i + 1]?.isActive || scrollableNavigation().items[i - 1]?.isActive\n \"\n [class.et-scrollable-navigation-item--far]=\"\n !scrollableNavigation().items[i + 1]?.isActive &&\n !scrollableNavigation().items[i - 1]?.isActive &&\n !item.isActive\n \"\n [attr.active-offset]=\"item.activeOffset\"\n (click)=\"scrollToElementViaNavigation(i)\"\n class=\"et-scrollable-navigation-item\"\n type=\"button\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n ></button>\n }\n </div>\n </div>\n }\n\n @if (renderButtonsInFooter()) {\n <ng-container *ngTemplateOutlet=\"backwardButtonTpl\" />\n }\n </div>\n}\n\n<ng-template #forwardButtonTpl>\n <button\n [disabled]=\"isAtStart()\"\n (click)=\"scrollToStartDirection()\"\n class=\"et-scrollable-button et-scrollable-button--start\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #backwardButtonTpl>\n <button\n [disabled]=\"isAtEnd()\"\n (click)=\"scrollToEndDirection()\"\n class=\"et-scrollable-button et-scrollable-button--end\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n >\n <i etIcon=\"et-chevron\"></i>\n </button>\n</ng-template>\n\n<ng-template #loadingTpl>\n @if (loadingTemplate(); as tpl) {\n @for (\n _ of tpl.repeat();\n track index;\n let index = $index;\n let even = $even;\n let odd = $odd;\n let first = $first;\n let last = $last\n ) {\n <ng-container *ngTemplateOutlet=\"tpl.templateRef; context: { index, even, odd, first, last }\" />\n }\n }\n</ng-template>\n", styles: [":where(.et-scrollable){--mask: #121212 0, transparent 100%;--mask-size: 25px;--darken-non-intersecting-items-amount: .75;--_auto-size: min-content;display:block;position:relative}.et-scrollable .et-scrollable-wrapper{display:grid;position:relative;block-size:100%;inline-size:100%}.et-scrollable[item-size=same]{--_auto-size: 1fr}.et-scrollable[item-size=half]{--_auto-size: calc((100% - var(--item-gap)) / 2)}.et-scrollable[item-size=third]{--_auto-size: calc((100% - (var(--item-gap) * 2)) / 3)}.et-scrollable[item-size=quarter]{--_auto-size: calc((100% - (var(--item-gap) * 3)) / 4)}.et-scrollable[item-size=full]{--_auto-size: 100%}.et-scrollable[render-scrollbars=false] .et-scrollable-container,.et-scrollable:not([render-scrollbars]) .et-scrollable-container{scrollbar-width:none}.et-scrollable[render-scrollbars=false] .et-scrollable-container::-webkit-scrollbar,.et-scrollable:not([render-scrollbars]) .et-scrollable-container::-webkit-scrollbar{display:none}.et-scrollable .et-scrollable-button .et-icon--et-chevron{display:block}.et-scrollable[direction=horizontal] .et-scrollable-container,.et-scrollable:not([direction]) .et-scrollable-container{grid-auto-flow:column;grid-auto-columns:var(--_auto-size);overflow-x:auto;overflow-y:hidden}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-child(2){grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-container>:nth-last-child(2),.et-scrollable:not([direction]) .et-scrollable-container>:nth-last-child(2){grid-column:var(--item-count)/var(--item-count);grid-row:1/1}.et-scrollable[direction=horizontal] .et-scrollable-mask,.et-scrollable[direction=horizontal] .et-scrollable-button,.et-scrollable:not([direction]) .et-scrollable-mask,.et-scrollable:not([direction]) .et-scrollable-button{inline-size:var(--mask-size);block-size:100%}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:0;inset-inline:0 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:0;inset-inline:calc(100% - 40px) 0}.et-scrollable[direction=horizontal] .et-scrollable-mask--start,.et-scrollable:not([direction]) .et-scrollable-mask--start{background:linear-gradient(to right,var(--mask))}.et-scrollable[direction=horizontal] .et-scrollable-mask--end,.et-scrollable:not([direction]) .et-scrollable-mask--end{background:linear-gradient(to left,var(--mask));inset-inline:calc(100% - var(--mask-size)) 100%}.et-scrollable[direction=horizontal] .et-scrollable-button--start,.et-scrollable:not([direction]) .et-scrollable-button--start{inset-block-start:calc(50% - 20px);transform:translate(-10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--start .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(-90deg)}.et-scrollable[direction=horizontal] .et-scrollable-button--end,.et-scrollable:not([direction]) .et-scrollable-button--end{inset-block-start:calc(50% - 20px);transform:translate(10px)}.et-scrollable[direction=horizontal] .et-scrollable-button--end .et-icon--et-chevron,.et-scrollable:not([direction]) .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(90deg)}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{block-size:100%;inline-size:1px}.et-scrollable[direction=horizontal] .et-scroll-observer-first-element,.et-scrollable:not([direction]) .et-scroll-observer-first-element{margin-inline-start:3px;grid-column:1/1;grid-row:1/1}.et-scrollable[direction=horizontal] .et-scroll-observer-last-element,.et-scrollable:not([direction]) .et-scroll-observer-last-element{margin-inline-end:3px;grid-column:var(--item-count)/var(--item-count);grid-row:1/1;justify-self:end}.et-scrollable[direction=vertical] .et-scrollable-container{grid-auto-flow:row;grid-auto-rows:var(--_auto-size);overflow-x:hidden;overflow-y:auto}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-child(2){grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-container>:nth-last-child(2){grid-row:var(--item-count)/var(--item-count);grid-column:1/1}.et-scrollable[direction=vertical] .et-scrollable-mask,.et-scrollable[direction=vertical] .et-scrollable-button{block-size:var(--mask-size);inline-size:100%}.et-scrollable[direction=vertical] .et-scrollable-mask--start,.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-block-start:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--end,.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-block-end:0;inset-inline-start:0}.et-scrollable[direction=vertical] .et-scrollable-mask--start{background:linear-gradient(to bottom,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-mask--end{background:linear-gradient(to top,var(--mask))}.et-scrollable[direction=vertical] .et-scrollable-button--start{inset-inline-start:calc(50% - 20px);transform:translateY(-10px)}.et-scrollable[direction=vertical] .et-scrollable-button--start .et-icon--et-chevron{transform:rotate(0)}.et-scrollable[direction=vertical] .et-scrollable-button--end{inset-inline-start:calc(50% - 20px);transform:translateY(10px)}.et-scrollable[direction=vertical] .et-scrollable-button--end .et-icon--et-chevron{transform:rotate(180deg)}.et-scrollable[direction=vertical] .et-scroll-observer-first-element,.et-scrollable[direction=vertical] .et-scroll-observer-last-element{inline-size:100%;block-size:1px}.et-scrollable[direction=vertical] .et-scroll-observer-first-element{margin-block-start:3px;grid-row:1/1;grid-column:1/1}.et-scrollable[direction=vertical] .et-scroll-observer-last-element{margin-block-end:3px;grid-row:var(--item-count)/var(--item-count);grid-column:1/1;align-self:end}.et-scrollable[direction=vertical]:has(.et-scrollable-footer){display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr);gap:10px}.et-scrollable[direction=vertical] .et-scrollable-footer{flex-direction:column;margin-block-start:0}.et-scrollable[direction=vertical] .et-scrollable-progress-bar{flex-direction:column;max-block-size:100px}.et-scrollable[direction=vertical] .et-scrollable-dots-container{flex-direction:column}.et-scrollable.et-scrollable--can-scroll:not(.et-scrollable--is-at-start) .et-scrollable-buttons .et-scrollable-button--start{opacity:1;transform:translate(0);pointer-events:all}.et-scrollable.et-scrollable--can-scroll.et-scrollable--has-partial-items:not(.et-scrollable--is-at-start) .et-scrollable-masks .et-scrollable-mask--start{opacity:1;transform:translate(0)}.et-scrollable.et-scrollable--can-scroll:not(.et-scrollable--is-at-end) .et-scrollable-buttons .et-scrollable-button--end{opacity:1;transform:translate(0);pointer-events:all}.et-scrollable.et-scrollable--can-scroll.et-scrollable--has-partial-items:not(.et-scrollable--is-at-end) .et-scrollable-masks .et-scrollable-mask--end{opacity:1;transform:translate(0)}.et-scrollable .et-scroll-observer-first-element,.et-scrollable .et-scroll-observer-last-element{pointer-events:none}.et-scrollable .et-scrollable-container{display:grid;position:relative;grid-row:1/1;grid-column:1/1}.et-scrollable .et-scrollable-masks,.et-scrollable .et-scrollable-buttons{grid-row:1/1;grid-column:1/1;pointer-events:none}.et-scrollable .et-scrollable-masks .et-scrollable-mask,.et-scrollable .et-scrollable-masks .et-scrollable-button,.et-scrollable .et-scrollable-buttons .et-scrollable-mask,.et-scrollable .et-scrollable-buttons .et-scrollable-button{position:absolute;opacity:0}.et-scrollable.et-scrollable--can-animate .et-scrollable-dots-container{transition:transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate .et-scrollable-navigation-item:after{transition:background-color .2s linear,transform .2s linear}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-mask{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--can-scroll .et-scrollable-button{transition:opacity .3s var(--ease-5),transform .3s var(--ease-5)}.et-scrollable.et-scrollable--can-animate.et-scrollable--darken-non-intersecting-items .et-scrollable-item{transition:opacity .3s var(--ease-5)}.et-scrollable.et-scrollable--darken-non-intersecting-items .et-scrollable-item--not-intersecting{opacity:var(--darken-non-intersecting-items-amount)}.et-scrollable .et-scrollable-buttons .et-scrollable-button{background:transparent;border:none;padding:12px;inline-size:40px;block-size:40px;border-radius:4px;cursor:pointer}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-icon--et-chevron{pointer-events:none}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--start{inset-inline:0 0}.et-scrollable .et-scrollable-buttons .et-scrollable-button .et-scrollable-button--end{inset-inline:calc(100% - 40px) 0}.et-scrollable[sticky-buttons=true]{--_sticky-margin: 10%}.et-scrollable[sticky-buttons=true] .et-scrollable-button{position:sticky}.et-scrollable[sticky-buttons=true][direction=horizontal] .et-scrollable-buttons{margin-block:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons{margin-inline:var(--_sticky-margin)}.et-scrollable[sticky-buttons=true][direction=vertical] .et-scrollable-buttons .et-scrollable-button--end{inset-block-start:100%}.et-scrollable .et-scrollable-footer{display:flex;justify-content:center;align-items:center;gap:10px;margin-block-start:10px}.et-scrollable .et-scrollable-footer.et-scrollable-footer--with-buttons .et-scrollable-button{transform:none}.et-scrollable .et-scrollable-footer .et-scrollable-button{width:30px;height:30px}.et-scrollable .et-scrollable-navigation-item{display:flex;justify-content:center;align-items:center;border:none;padding:0;inline-size:20px;block-size:20px;border-radius:50%;cursor:pointer;background-color:transparent}.et-scrollable .et-scrollable-navigation-item.et-scrollable-navigation-item--active:after{background-color:#c6c6c6}.et-scrollable .et-scrollable-navigation-item:after{content:\"\";display:block;inline-size:50%;block-size:50%;border-radius:50%;background-color:#4b4b4b;transform:scale(0)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"0\"]:after{transform:scale(1)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"1\"]:after{transform:scale(.75)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"2\"]:after{transform:scale(.6)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"3\"]:after{transform:scale(.5)}.et-scrollable .et-scrollable-navigation-item[active-offset=\"4\"]:after{transform:scale(.4)}.et-scrollable .et-scrollable-progress-bar{overflow:hidden;max-inline-size:100px;display:flex;align-items:center}.et-scrollable .et-scrollable-progress-bar .et-scrollable-dots-container{display:flex;flex-wrap:nowrap}\n"] }]
|
|
9315
|
+
}], ctorParameters: () => [], propDecorators: { itemSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemSize", required: false }] }], direction: [{ type: i0.Input, args: [{ isSignal: true, alias: "direction", required: false }] }], scrollableRole: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollableRole", required: false }] }], scrollableClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollableClass", required: false }] }], renderNavigation: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderNavigation", required: false }] }], renderMasks: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderMasks", required: false }] }], renderButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderButtons", required: false }] }], buttonPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "buttonPosition", required: false }] }], renderScrollbars: [{ type: i0.Input, args: [{ isSignal: true, alias: "renderScrollbars", required: false }] }], stickyButtons: [{ type: i0.Input, args: [{ isSignal: true, alias: "stickyButtons", required: false }] }], cursorDragScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "cursorDragScroll", required: false }] }], disableActiveElementScrolling: [{ type: i0.Input, args: [{ isSignal: true, alias: "disableActiveElementScrolling", required: false }] }], scrollMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollMode", required: false }] }], snap: [{ type: i0.Input, args: [{ isSignal: true, alias: "snap", required: false }] }], scrollMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollMargin", required: false }] }], scrollOrigin: [{ type: i0.Input, args: [{ isSignal: true, alias: "scrollOrigin", required: false }] }], darkenNonIntersectingItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "darkenNonIntersectingItems", required: false }] }], showLoadingTemplate: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLoadingTemplate", required: false }] }], loadingTemplatePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingTemplatePosition", required: false }] }], scrollable: [{ type: i0.ViewChild, args: ['scrollable', { isSignal: true }] }], scrollObserver: [{ type: i0.ViewChild, args: [i0.forwardRef(() => ScrollObserverDirective), { isSignal: true }] }], activeElementList: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SCROLLABLE_IS_ACTIVE_CHILD_TOKEN), { ...{ descendants: true }, isSignal: true }] }], navigationDotsContainer: [{ type: i0.ViewChild, args: ['navigationDotsContainer', { isSignal: true }] }], firstNavigationDot: [{ type: i0.ViewChild, args: ['navigationDot', { isSignal: true }] }], loadingTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SCROLLABLE_LOADING_TEMPLATE_TOKEN), { isSignal: true }] }], intersectionChange: [{ type: i0.Output, args: ["intersectionChange"] }], scrollStateChange: [{ type: i0.Output, args: ["scrollStateChange"] }] } });
|
|
9612
9316
|
|
|
9613
9317
|
const [provideFocusRegistry, injectFocusRegistry] = createRootProvider(() => {
|
|
9614
9318
|
const registry = signal({}, ...(ngDevMode ? [{ debugName: "registry" }] : []));
|
|
@@ -10776,6 +10480,7 @@ class CarouselDirective {
|
|
|
10776
10480
|
this.autoPlayTime = input(5000, { ...(ngDevMode ? { debugName: "autoPlayTime" } : {}), transform: numberAttribute });
|
|
10777
10481
|
this.pauseAutoPlayOnHover = input(true, { ...(ngDevMode ? { debugName: "pauseAutoPlayOnHover" } : {}), transform: booleanAttribute });
|
|
10778
10482
|
this.pauseAutoPlayOnFocus = input(true, { ...(ngDevMode ? { debugName: "pauseAutoPlayOnFocus" } : {}), transform: booleanAttribute });
|
|
10483
|
+
this.pauseAutoPlayOnHidden = input(true, { ...(ngDevMode ? { debugName: "pauseAutoPlayOnHidden" } : {}), transform: booleanAttribute });
|
|
10779
10484
|
this.transitionType = input('mask-slide', ...(ngDevMode ? [{ debugName: "transitionType" }] : []));
|
|
10780
10485
|
this.transitionDuration = input(450, { ...(ngDevMode ? { debugName: "transitionDuration" } : {}), transform: numberAttribute });
|
|
10781
10486
|
this.activeIndex = signal(0, ...(ngDevMode ? [{ debugName: "activeIndex" }] : []));
|
|
@@ -10785,6 +10490,8 @@ class CarouselDirective {
|
|
|
10785
10490
|
this.isAutoPlayPaused = signal(false, ...(ngDevMode ? [{ debugName: "isAutoPlayPaused" }] : []));
|
|
10786
10491
|
this.isAutoPlayPausedByInternalHover = signal(false, ...(ngDevMode ? [{ debugName: "isAutoPlayPausedByInternalHover" }] : []));
|
|
10787
10492
|
this.isAutoPlayPausedByInternalFocus = signal(false, ...(ngDevMode ? [{ debugName: "isAutoPlayPausedByInternalFocus" }] : []));
|
|
10493
|
+
this.isAutoPlayPausedByInternalVisibility = signal(false, ...(ngDevMode ? [{ debugName: "isAutoPlayPausedByInternalVisibility" }] : []));
|
|
10494
|
+
this.hostElementIntersection = signalHostElementIntersection();
|
|
10788
10495
|
this.isNavigationLocked = toSignal(toObservable(this.activeIndex).pipe(switchMap(() => merge(of(true), timer(this.transitionDuration()).pipe(map(() => false))))), {
|
|
10789
10496
|
initialValue: false,
|
|
10790
10497
|
});
|
|
@@ -10815,8 +10522,12 @@ class CarouselDirective {
|
|
|
10815
10522
|
toObservable(this.isAutoPlayPaused, { injector: this.injector }),
|
|
10816
10523
|
toObservable(this.isAutoPlayPausedByInternalHover, { injector: this.injector }),
|
|
10817
10524
|
toObservable(this.isAutoPlayPausedByInternalFocus, { injector: this.injector }),
|
|
10818
|
-
|
|
10819
|
-
|
|
10525
|
+
toObservable(this.isAutoPlayPausedByInternalVisibility, { injector: this.injector }),
|
|
10526
|
+
]).pipe(switchMap(([isPaused, internalIsPausedDueToHover, internalIsPausedDueToFocus, internalIsPausedDueToVisibility]) => {
|
|
10527
|
+
if (isPaused ||
|
|
10528
|
+
internalIsPausedDueToHover ||
|
|
10529
|
+
internalIsPausedDueToFocus ||
|
|
10530
|
+
internalIsPausedDueToVisibility)
|
|
10820
10531
|
return of(elapsed / duration);
|
|
10821
10532
|
return timer(0, 100).pipe(tap(() => (elapsed += 100)), map(() => elapsed / duration), takeWhile((progress) => progress < 1, true));
|
|
10822
10533
|
}));
|
|
@@ -10826,6 +10537,16 @@ class CarouselDirective {
|
|
|
10826
10537
|
return false;
|
|
10827
10538
|
return this.activeItemAutoPlayProgress() === 1;
|
|
10828
10539
|
}, ...(ngDevMode ? [{ debugName: "shouldPlayNextItem" }] : []));
|
|
10540
|
+
effect(() => {
|
|
10541
|
+
const entries = this.hostElementIntersection();
|
|
10542
|
+
if (!this.pauseAutoPlayOnHidden()) {
|
|
10543
|
+
this.isAutoPlayPausedByInternalVisibility.set(false);
|
|
10544
|
+
return;
|
|
10545
|
+
}
|
|
10546
|
+
if (entries.length === 0)
|
|
10547
|
+
return;
|
|
10548
|
+
this.isAutoPlayPausedByInternalVisibility.set(!(entries[0]?.isVisible ?? true));
|
|
10549
|
+
});
|
|
10829
10550
|
combineLatest([toObservable(this.activeItemAutoPlayProgress), toObservable(this.autoPlay)])
|
|
10830
10551
|
.pipe(filter(([progress, autoPlay]) => progress === 1 && autoPlay), tap(() => this.next()), takeUntilDestroyed())
|
|
10831
10552
|
.subscribe();
|
|
@@ -10891,7 +10612,7 @@ class CarouselDirective {
|
|
|
10891
10612
|
this.isAutoPlayPaused.set(false);
|
|
10892
10613
|
}
|
|
10893
10614
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CarouselDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
10894
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.1", type: CarouselDirective, isStandalone: true, inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, autoPlay: { classPropertyName: "autoPlay", publicName: "autoPlay", isSignal: true, isRequired: false, transformFunction: null }, autoPlayTime: { classPropertyName: "autoPlayTime", publicName: "autoPlayTime", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnHover: { classPropertyName: "pauseAutoPlayOnHover", publicName: "pauseAutoPlayOnHover", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnFocus: { classPropertyName: "pauseAutoPlayOnFocus", publicName: "pauseAutoPlayOnFocus", isSignal: true, isRequired: false, transformFunction: null }, transitionType: { classPropertyName: "transitionType", publicName: "transitionType", isSignal: true, isRequired: false, transformFunction: null }, transitionDuration: { classPropertyName: "transitionDuration", publicName: "transitionDuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
10615
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.1", type: CarouselDirective, isStandalone: true, inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, autoPlay: { classPropertyName: "autoPlay", publicName: "autoPlay", isSignal: true, isRequired: false, transformFunction: null }, autoPlayTime: { classPropertyName: "autoPlayTime", publicName: "autoPlayTime", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnHover: { classPropertyName: "pauseAutoPlayOnHover", publicName: "pauseAutoPlayOnHover", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnFocus: { classPropertyName: "pauseAutoPlayOnFocus", publicName: "pauseAutoPlayOnFocus", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnHidden: { classPropertyName: "pauseAutoPlayOnHidden", publicName: "pauseAutoPlayOnHidden", isSignal: true, isRequired: false, transformFunction: null }, transitionType: { classPropertyName: "transitionType", publicName: "transitionType", isSignal: true, isRequired: false, transformFunction: null }, transitionDuration: { classPropertyName: "transitionDuration", publicName: "transitionDuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
10895
10616
|
{
|
|
10896
10617
|
provide: CAROUSEL_TOKEN,
|
|
10897
10618
|
useExisting: CarouselDirective,
|
|
@@ -10908,7 +10629,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
10908
10629
|
},
|
|
10909
10630
|
],
|
|
10910
10631
|
}]
|
|
10911
|
-
}], ctorParameters: () => [], propDecorators: { loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], autoPlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoPlay", required: false }] }], autoPlayTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoPlayTime", required: false }] }], pauseAutoPlayOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseAutoPlayOnHover", required: false }] }], pauseAutoPlayOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseAutoPlayOnFocus", required: false }] }], transitionType: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionType", required: false }] }], transitionDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionDuration", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CAROUSEL_ITEM_TOKEN), { isSignal: true }] }] } });
|
|
10632
|
+
}], ctorParameters: () => [], propDecorators: { loop: [{ type: i0.Input, args: [{ isSignal: true, alias: "loop", required: false }] }], autoPlay: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoPlay", required: false }] }], autoPlayTime: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoPlayTime", required: false }] }], pauseAutoPlayOnHover: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseAutoPlayOnHover", required: false }] }], pauseAutoPlayOnFocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseAutoPlayOnFocus", required: false }] }], pauseAutoPlayOnHidden: [{ type: i0.Input, args: [{ isSignal: true, alias: "pauseAutoPlayOnHidden", required: false }] }], transitionType: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionType", required: false }] }], transitionDuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "transitionDuration", required: false }] }], items: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CAROUSEL_ITEM_TOKEN), { isSignal: true }] }] } });
|
|
10912
10633
|
|
|
10913
10634
|
class CarouselComponent {
|
|
10914
10635
|
constructor() {
|
|
@@ -10917,7 +10638,7 @@ class CarouselComponent {
|
|
|
10917
10638
|
syncSignal(this.carouselItemsWrapper, this.carousel.carouselItemsWrapper, { skipSyncRead: true });
|
|
10918
10639
|
}
|
|
10919
10640
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.1", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10920
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: CarouselComponent, isStandalone: true, selector: "et-carousel", host: { classAttribute: "et-carousel-host" }, viewQueries: [{ propertyName: "carouselItemsWrapper", first: true, predicate: ["carouselItemsWrapper"], descendants: true, isSignal: true }], hostDirectives: [{ directive: CarouselDirective, inputs: ["loop", "loop", "autoPlay", "autoPlay", "autoPlayTime", "autoPlayTime", "pauseAutoPlayOnHover", "pauseAutoPlayOnHover", "pauseAutoPlayOnFocus", "pauseAutoPlayOnFocus", "transitionType", "transitionType", "transitionDuration", "transitionDuration"] }], ngImport: i0, template: `
|
|
10641
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.1", type: CarouselComponent, isStandalone: true, selector: "et-carousel", host: { classAttribute: "et-carousel-host" }, viewQueries: [{ propertyName: "carouselItemsWrapper", first: true, predicate: ["carouselItemsWrapper"], descendants: true, isSignal: true }], hostDirectives: [{ directive: CarouselDirective, inputs: ["loop", "loop", "autoPlay", "autoPlay", "autoPlayTime", "autoPlayTime", "pauseAutoPlayOnHover", "pauseAutoPlayOnHover", "pauseAutoPlayOnFocus", "pauseAutoPlayOnFocus", "pauseAutoPlayOnHidden", "pauseAutoPlayOnHidden", "transitionType", "transitionType", "transitionDuration", "transitionDuration"] }], ngImport: i0, template: `
|
|
10921
10642
|
<div class="et-carousel">
|
|
10922
10643
|
<div #carouselItemsWrapper class="et-carousel-items">
|
|
10923
10644
|
<ng-content select="et-carousel-item, [etCarouselItem]" />
|
|
@@ -10948,6 +10669,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
|
|
|
10948
10669
|
'autoPlayTime',
|
|
10949
10670
|
'pauseAutoPlayOnHover',
|
|
10950
10671
|
'pauseAutoPlayOnFocus',
|
|
10672
|
+
'pauseAutoPlayOnHidden',
|
|
10951
10673
|
'transitionType',
|
|
10952
10674
|
'transitionDuration',
|
|
10953
10675
|
],
|
|
@@ -19690,5 +19412,5 @@ const injectRouterNavigationState = () => {
|
|
|
19690
19412
|
* Generated bundle index. Do not edit.
|
|
19691
19413
|
*/
|
|
19692
19414
|
|
|
19693
|
-
export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, index as BracketNew, BracketRoundDirective, BracketRoundHeaderComponent, BreadcrumbComponent, BreadcrumbImports, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbTemplateDirective, ButtonComponent, ButtonDirective, ButtonImports, CAROUSEL_ITEM_NAV_TOKEN, CAROUSEL_ITEM_TOKEN, CAROUSEL_NEXT_BUTTON_TOKEN, CAROUSEL_PREVIOUS_BUTTON_TOKEN, CAROUSEL_TOGGLE_AUTO_PLAY_BUTTON_TOKEN, CAROUSEL_TOKEN, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, CHEVRON_ICON, COLOR_INPUT_TOKEN, COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, COMBOBOX_BODY_TOKEN, COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG, COMBOBOX_OPTION_TEMPLATE_TOKEN, COMBOBOX_OPTION_TOKEN, COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, COMBOBOX_TOKEN, CarouselComponent, CarouselDirective, CarouselImports, CarouselItemComponent, CarouselItemDirective, CarouselItemNavComponent, CarouselItemNavDirective, CarouselNextButtonDirective, CarouselPreviousButtonDirective, CarouselToggleAutoPlayButtonDirective, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ColorInputComponent, ColorInputDirective, ColumnDefDirective, ComboboxBodyComponent, ComboboxBodyEmptyTemplateDirective, ComboboxBodyErrorTemplateDirective, ComboboxBodyLoadingTemplateDirective, ComboboxBodyMoreItemsHintTemplateDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, ComboboxOptionComponent, ComboboxOptionTemplateDirective, ComboboxSelectedOptionTemplateDirective, DATE_INPUT_FORMAT_TOKEN, DATE_INPUT_TOKEN, DATE_TIME_INPUT_FORMAT_TOKEN, DATE_TIME_INPUT_TOKEN, DEFAULT_DATE_INPUT_FORMAT, DEFAULT_DATE_TIME_INPUT_FORMAT, DEFAULT_TIME_INPUT_FORMAT, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DateInputComponent, DateInputDirective, DateTimeInputComponent, DateTimeInputDirective, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DynamicFormFieldDirective, DynamicFormGroupDirective, EMAIL_INPUT_TOKEN, ET_OVERLAY_CONFIG_CLASS_KEYS, EXPOSE_INPUT_VARS_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, ExposeInputVarsDirective, FILTER_OVERLAY_CONFIG, FLOATING_UI_PLACEMENTS, FilterOverlayService, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, IMAGE_CONFIG_TOKEN, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconDirective, IconImports, IfInputEmptyDirective, IfInputFilledDirective, IfSupportsShowPickerDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MENU, MENU_CHECKBOX_GROUP_TOKEN, MENU_CONTAINER, MENU_GROUP_TITLE_TOKEN, MENU_GROUP_TOKEN, MENU_ITEM_TOKEN, MENU_RADIO_GROUP_TOKEN, MENU_SEARCH_TEMPLATE_TOKEN, MENU_TEMPLATE, MENU_TRIGGER_TOKEN, MasonryComponent, MasonryImports, MasonryItemComponent, MenuCheckboxGroupDirective, MenuCheckboxItemComponent, MenuComponent, MenuContainerComponent, MenuGroupDirective, MenuGroupTitleDirective, MenuImports, MenuItemDirective, MenuRadioGroupDirective, MenuRadioItemComponent, MenuSearchTemplateDirective, MenuTriggerDirective, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NewBracketComponent, NewBracketDefaultMatchComponent, NewBracketDefaultRoundHeaderComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CLOSE_BLOCKER_TOKEN, OVERLAY_CONFIG, OVERLAY_DATA, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseBlockerDirective, OverlayCloseDirective, OverlayContainerComponent, OverlayFooterDirective, OverlayHandlerLinkDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayImports, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRef, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlayRouterService, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlayTitleDirective, OverlayWithRoutingImports, OverlayWithSidebarImports, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationHeadService, PaginationImports, PaginationLinkDirective, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, ProgressSpinnerComponent, QUERY_ERROR_TOKEN, QueryButtonComponent, QueryButtonDirective, QueryErrorComponent, QueryErrorDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RICH_FILTER_BUTTON_SLOT_TOKEN, RICH_FILTER_BUTTON_TOKEN, RICH_FILTER_CONTENT_TOKEN, RICH_FILTER_TOP_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RichFilterButtonDirective, RichFilterButtonSlotDirective, RichFilterContentDirective, RichFilterHostComponent, RichFilterImports, RichFilterTopDirective, RowComponent, RowDefDirective, SCROLLABLE_IGNORE_CHILD_ATTRIBUTE, SCROLLABLE_IGNORE_CHILD_TOKEN, SCROLLABLE_IS_ACTIVE_CHILD_ATTRIBUTE, SCROLLABLE_IS_ACTIVE_CHILD_TOKEN, SCROLLABLE_LOADING_TEMPLATE_TOKEN, SCROLLABLE_PLACEHOLDER_ITEM_TEMPLATE_TOKEN, SCROLLABLE_PLACEHOLDER_OVERLAY_TEMPLATE_TOKEN, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECTION_LIST_FIELD, SELECTION_LIST_OPTION, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SHOW_PICKER_TRIGGER_TOKEN, SIDEBAR_OVERLAY_CONFIG, SLIDER_THUMB_CONTENT_TEMPLATE_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableIgnoreChildDirective, ScrollableImports, ScrollableIsActiveChildDirective, ScrollableLoadingTemplateDirective, ScrollablePlaceholderComponent, ScrollablePlaceholderItemTemplateDirective, ScrollablePlaceholderOverlayTemplateDirective, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SelectionListFieldComponent, SelectionListFieldDirective, SelectionListImports, SelectionListOptionComponent, SelectionListOptionDirective, ShowPickerTriggerDirective, SidebarOverlayService, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SliderThumbContentTemplateDirective, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEL_INPUT_TOKEN, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TIMES_ICON, TIME_INPUT_FORMAT_TOKEN, TIME_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TelInputComponent, TelInputDirective, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, TimeInputComponent, TimeInputDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, abortFullscreenAnimation, accordionAnimations, anchoredDialogOverlayStrategy, bottomSheetOverlayStrategy, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, createBracketConfig, createComboboxConfig, createFormChangesTracker, createNavigationDismissChecker, createOverlayDismissChecker, createOverlayHandler, createOverlayHandlerWithQueryParamLifecycle, createToggletipConfig, createTooltipConfig, defaultSubmitButtonConfigFn, dialogOverlayStrategy, enableDragToDismiss, exactMatchOptions, extractFirstImageUrl, findNextRelevantHtmlElement, fullScreenDialogOverlayStrategy, getClosestOverlay, getIntersectionInfo, getOriginCoordinatesAndDimensions, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBreadcrumbManager, injectDialogStrategy, injectDialogStrategyDefaults, injectFocusRegistry, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectOverlayManager, injectOverlayScrollBlocker, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectRouterNavigationState, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isEmptyArray, isHtmlElement, isObjectArray, isPointerEvent, isPrimitiveArray, isScrollableChildActive, isScrollableChildIgnored, isTouchEvent$2 as isTouchEvent, isUpperBracketMatch, leftSheetOverlayStrategy, mergeOverlayBreakpointConfigs, normalizePictureSizes, normalizePictureSource, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBreadcrumbManager, provideComboboxConfig, provideDateFormat, provideDateTimeFormat, provideDialogStrategy, provideDialogStrategyDefaults, provideFilterOverlayConfig, provideFocusRegistry, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideIcons, provideImageConfig, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideOverlay, provideOverlayManager, provideOverlayRouterConfig, provideOverlayScrollBlocker, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSidebarOverlayConfig, provideSort, provideTimeFormat, provideToggletipConfig, provideTooltipConfig, provideTopSheetStrategy, provideTopSheetStrategyDefaults, provideValidatorErrorsService, rightSheetOverlayStrategy, signalVisibilityChangeClasses, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, subsetMatchOptions, tabAnimations, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy };
|
|
19415
|
+
export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, index as BracketNew, BracketRoundDirective, BracketRoundHeaderComponent, BreadcrumbComponent, BreadcrumbImports, BreadcrumbItemDirective, BreadcrumbItemTemplateDirective, BreadcrumbOutletComponent, BreadcrumbTemplateDirective, ButtonComponent, ButtonDirective, ButtonImports, CAROUSEL_ITEM_NAV_TOKEN, CAROUSEL_ITEM_TOKEN, CAROUSEL_NEXT_BUTTON_TOKEN, CAROUSEL_PREVIOUS_BUTTON_TOKEN, CAROUSEL_TOGGLE_AUTO_PLAY_BUTTON_TOKEN, CAROUSEL_TOKEN, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, CHEVRON_ICON, COLOR_INPUT_TOKEN, COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, COMBOBOX_BODY_TOKEN, COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG, COMBOBOX_OPTION_TEMPLATE_TOKEN, COMBOBOX_OPTION_TOKEN, COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, COMBOBOX_TOKEN, CarouselComponent, CarouselDirective, CarouselImports, CarouselItemComponent, CarouselItemDirective, CarouselItemNavComponent, CarouselItemNavDirective, CarouselNextButtonDirective, CarouselPreviousButtonDirective, CarouselToggleAutoPlayButtonDirective, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ColorInputComponent, ColorInputDirective, ColumnDefDirective, ComboboxBodyComponent, ComboboxBodyEmptyTemplateDirective, ComboboxBodyErrorTemplateDirective, ComboboxBodyLoadingTemplateDirective, ComboboxBodyMoreItemsHintTemplateDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, ComboboxOptionComponent, ComboboxOptionTemplateDirective, ComboboxSelectedOptionTemplateDirective, DATE_INPUT_FORMAT_TOKEN, DATE_INPUT_TOKEN, DATE_TIME_INPUT_FORMAT_TOKEN, DATE_TIME_INPUT_TOKEN, DEFAULT_DATE_INPUT_FORMAT, DEFAULT_DATE_TIME_INPUT_FORMAT, DEFAULT_TIME_INPUT_FORMAT, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DateInputComponent, DateInputDirective, DateTimeInputComponent, DateTimeInputDirective, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DynamicFormFieldDirective, DynamicFormGroupDirective, EMAIL_INPUT_TOKEN, ET_OVERLAY_CONFIG_CLASS_KEYS, EXPOSE_INPUT_VARS_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, ExposeInputVarsDirective, FILTER_OVERLAY_CONFIG, FLOATING_UI_PLACEMENTS, FilterOverlayService, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, ICONS_TOKEN, ICON_DIRECTIVE_TOKEN, IMAGE_CONFIG_TOKEN, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconDirective, IconImports, IfInputEmptyDirective, IfInputFilledDirective, IfSupportsShowPickerDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MENU, MENU_CHECKBOX_GROUP_TOKEN, MENU_CONTAINER, MENU_GROUP_TITLE_TOKEN, MENU_GROUP_TOKEN, MENU_ITEM_TOKEN, MENU_RADIO_GROUP_TOKEN, MENU_SEARCH_TEMPLATE_TOKEN, MENU_TEMPLATE, MENU_TRIGGER_TOKEN, MasonryComponent, MasonryImports, MasonryItemComponent, MenuCheckboxGroupDirective, MenuCheckboxItemComponent, MenuComponent, MenuContainerComponent, MenuGroupDirective, MenuGroupTitleDirective, MenuImports, MenuItemDirective, MenuRadioGroupDirective, MenuRadioItemComponent, MenuSearchTemplateDirective, MenuTriggerDirective, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NewBracketComponent, NewBracketDefaultMatchComponent, NewBracketDefaultRoundHeaderComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, OVERLAY_BACK_OR_CLOSE_TOKEN, OVERLAY_BODY_TOKEN, OVERLAY_CLOSE_BLOCKER_TOKEN, OVERLAY_CONFIG, OVERLAY_DATA, OVERLAY_FOOTER_TOKEN, OVERLAY_HEADER_TEMPLATE_TOKEN, OVERLAY_HEADER_TOKEN, OVERLAY_MAIN_TOKEN, OVERLAY_QUERY_PARAM_INPUT_NAME, OVERLAY_ROUTER_CONFIG_TOKEN, OVERLAY_ROUTER_LINK_TOKEN, OVERLAY_ROUTER_OUTLET_DISABLED_TEMPLATE_TOKEN, OVERLAY_ROUTER_OUTLET_TOKEN, OVERLAY_SHARED_ROUTE_TEMPLATE_TOKEN, OverlayBackOrCloseDirective, OverlayBodyComponent, OverlayCloseBlockerDirective, OverlayCloseDirective, OverlayContainerComponent, OverlayFooterDirective, OverlayHandlerLinkDirective, OverlayHeaderDirective, OverlayHeaderTemplateDirective, OverlayImports, OverlayMainDirective, OverlayOriginCloneComponent, OverlayRef, OverlayRouteHeaderTemplateOutletComponent, OverlayRouterLinkDirective, OverlayRouterOutletComponent, OverlayRouterOutletDisabledTemplateDirective, OverlayRouterService, OverlaySharedRouteTemplateDirective, OverlaySharedRouteTemplateOutletComponent, OverlaySidebarComponent, OverlaySidebarPageComponent, OverlayTitleDirective, OverlayWithRoutingImports, OverlayWithSidebarImports, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationHeadService, PaginationImports, PaginationLinkDirective, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, ProgressSpinnerComponent, QUERY_ERROR_TOKEN, QueryButtonComponent, QueryButtonDirective, QueryErrorComponent, QueryErrorDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RICH_FILTER_BUTTON_SLOT_TOKEN, RICH_FILTER_BUTTON_TOKEN, RICH_FILTER_CONTENT_TOKEN, RICH_FILTER_TOP_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RichFilterButtonDirective, RichFilterButtonSlotDirective, RichFilterContentDirective, RichFilterHostComponent, RichFilterImports, RichFilterTopDirective, RowComponent, RowDefDirective, SCROLLABLE_IGNORE_CHILD_ATTRIBUTE, SCROLLABLE_IGNORE_CHILD_TOKEN, SCROLLABLE_IS_ACTIVE_CHILD_ATTRIBUTE, SCROLLABLE_IS_ACTIVE_CHILD_TOKEN, SCROLLABLE_LOADING_TEMPLATE_TOKEN, SCROLLABLE_PLACEHOLDER_ITEM_TEMPLATE_TOKEN, SCROLLABLE_PLACEHOLDER_OVERLAY_TEMPLATE_TOKEN, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECTION_LIST_FIELD, SELECTION_LIST_OPTION, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SHOW_PICKER_TRIGGER_TOKEN, SIDEBAR_OVERLAY_CONFIG, SLIDER_THUMB_CONTENT_TEMPLATE_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableIgnoreChildDirective, ScrollableImports, ScrollableIsActiveChildDirective, ScrollableLoadingTemplateDirective, ScrollablePlaceholderComponent, ScrollablePlaceholderItemTemplateDirective, ScrollablePlaceholderOverlayTemplateDirective, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SelectionListFieldComponent, SelectionListFieldDirective, SelectionListImports, SelectionListOptionComponent, SelectionListOptionDirective, ShowPickerTriggerDirective, SidebarOverlayService, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SliderThumbContentTemplateDirective, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEL_INPUT_TOKEN, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TIMES_ICON, TIME_INPUT_FORMAT_TOKEN, TIME_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TelInputComponent, TelInputDirective, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, TimeInputComponent, TimeInputDirective, ToggletipCloseDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, abortFullscreenAnimation, accordionAnimations, anchoredDialogOverlayStrategy, bottomSheetOverlayStrategy, cleanupFullscreenAnimation, cleanupFullscreenAnimationStyles, createBracketConfig, createComboboxConfig, createFormChangesTracker, createNavigationDismissChecker, createOverlayDismissChecker, createOverlayHandler, createOverlayHandlerWithQueryParamLifecycle, createToggletipConfig, createTooltipConfig, defaultSubmitButtonConfigFn, dialogOverlayStrategy, enableDragToDismiss, exactMatchOptions, extractFirstImageUrl, findNextRelevantHtmlElement, fullScreenDialogOverlayStrategy, getClosestOverlay, getOriginCoordinatesAndDimensions, injectAnchoredDialogStrategy, injectAnchoredDialogStrategyDefaults, injectBottomSheetStrategy, injectBottomSheetStrategyDefaults, injectBreadcrumbManager, injectDialogStrategy, injectDialogStrategyDefaults, injectFocusRegistry, injectFullscreenDialogStrategy, injectFullscreenDialogStrategyDefaults, injectLeftSheetStrategy, injectLeftSheetStrategyDefaults, injectOverlayManager, injectOverlayScrollBlocker, injectRightSheetStrategy, injectRightSheetStrategyDefaults, injectRouterNavigationState, injectTopSheetStrategy, injectTopSheetStrategyDefaults, isEmptyArray, isHtmlElement, isObjectArray, isPointerEvent, isPrimitiveArray, isScrollableChildActive, isScrollableChildIgnored, isTouchEvent$2 as isTouchEvent, isUpperBracketMatch, leftSheetOverlayStrategy, mergeOverlayBreakpointConfigs, normalizePictureSizes, normalizePictureSource, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideAnchoredDialogStrategy, provideAnchoredDialogStrategyDefaults, provideBottomSheetStrategy, provideBottomSheetStrategyDefaults, provideBracketConfig, provideBreadcrumbManager, provideComboboxConfig, provideDateFormat, provideDateTimeFormat, provideDialogStrategy, provideDialogStrategyDefaults, provideFilterOverlayConfig, provideFocusRegistry, provideFullscreenDialogStrategy, provideFullscreenDialogStrategyDefaults, provideIcons, provideImageConfig, provideLeftSheetStrategy, provideLeftSheetStrategyDefaults, provideOverlay, provideOverlayManager, provideOverlayRouterConfig, provideOverlayScrollBlocker, provideRightSheetStrategy, provideRightSheetStrategyDefaults, provideSidebarOverlayConfig, provideSort, provideTimeFormat, provideToggletipConfig, provideTooltipConfig, provideTopSheetStrategy, provideTopSheetStrategyDefaults, provideValidatorErrorsService, rightSheetOverlayStrategy, signalVisibilityChangeClasses, startFullscreenEnterAnimation, startFullscreenLeaveAnimation, subsetMatchOptions, tabAnimations, topSheetOverlayStrategy, transformingBottomSheetToDialogOverlayStrategy, transformingFullScreenDialogToDialogOverlayStrategy, transformingFullScreenDialogToRightSheetOverlayStrategy };
|
|
19694
19416
|
//# sourceMappingURL=ethlete-cdk.mjs.map
|