@coreui/angular-pro 5.7.13 → 5.7.14
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.
|
@@ -14,8 +14,8 @@ import { DomPortal, CdkPortalOutlet } from '@angular/cdk/portal';
|
|
|
14
14
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
15
15
|
import * as i1$1 from '@angular/router';
|
|
16
16
|
import { RouterModule, Router, ActivatedRoute, NavigationEnd, RouterLink } from '@angular/router';
|
|
17
|
-
import { animation, group, query, animate, style, trigger, state, transition, useAnimation, animateChild } from '@angular/animations';
|
|
18
17
|
import { BreakpointObserver } from '@angular/cdk/layout';
|
|
18
|
+
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
19
19
|
import { IconDirective } from '@coreui/icons-angular';
|
|
20
20
|
|
|
21
21
|
var BreakpointInfix;
|
|
@@ -8233,15 +8233,8 @@ class CarouselService {
|
|
|
8233
8233
|
setIndex(index) {
|
|
8234
8234
|
this.#carouselIndex.next(index);
|
|
8235
8235
|
}
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
}
|
|
8239
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselService, decorators: [{
|
|
8240
|
-
type: Injectable
|
|
8241
|
-
}] });
|
|
8242
|
-
|
|
8243
|
-
class CarouselState {
|
|
8244
|
-
#carouselService = inject(CarouselService);
|
|
8236
|
+
animating = signal(false, /* @ts-ignore */
|
|
8237
|
+
...(ngDevMode ? [{ debugName: "animating" }] : /* istanbul ignore next */ []));
|
|
8245
8238
|
#state = {
|
|
8246
8239
|
activeItemIndex: -1,
|
|
8247
8240
|
animate: true,
|
|
@@ -8260,7 +8253,7 @@ class CarouselState {
|
|
|
8260
8253
|
if (prevState.activeItemIndex !== nextState.activeItemIndex) {
|
|
8261
8254
|
const activeItemIndex = this.state.activeItemIndex || 0;
|
|
8262
8255
|
const itemInterval = (this.state.items && this.state.items[activeItemIndex]?.interval()) || -1;
|
|
8263
|
-
this
|
|
8256
|
+
this.setIndex({
|
|
8264
8257
|
active: nextState.activeItemIndex,
|
|
8265
8258
|
interval: itemInterval,
|
|
8266
8259
|
lastItemIndex: (nextState.items?.length ?? 0) - 1
|
|
@@ -8282,7 +8275,7 @@ class CarouselState {
|
|
|
8282
8275
|
}
|
|
8283
8276
|
}
|
|
8284
8277
|
setNextIndex(nextIndex) {
|
|
8285
|
-
this
|
|
8278
|
+
this.setIndex(nextIndex);
|
|
8286
8279
|
}
|
|
8287
8280
|
direction(direction = 'next') {
|
|
8288
8281
|
this.state = { direction };
|
|
@@ -8311,10 +8304,10 @@ class CarouselState {
|
|
|
8311
8304
|
interval: 0
|
|
8312
8305
|
};
|
|
8313
8306
|
}
|
|
8314
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type:
|
|
8315
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type:
|
|
8307
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8308
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselService });
|
|
8316
8309
|
}
|
|
8317
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type:
|
|
8310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselService, decorators: [{
|
|
8318
8311
|
type: Injectable
|
|
8319
8312
|
}] });
|
|
8320
8313
|
|
|
@@ -8323,9 +8316,9 @@ class CarouselConfig {
|
|
|
8323
8316
|
activeIndex = 0;
|
|
8324
8317
|
/* Animate transition of slides */
|
|
8325
8318
|
animate = true;
|
|
8326
|
-
/* Default direction of auto
|
|
8319
|
+
/* Default direction of auto-changing of slides */
|
|
8327
8320
|
direction = 'next';
|
|
8328
|
-
/* Default interval of auto
|
|
8321
|
+
/* Default interval of auto-changing of slides */
|
|
8329
8322
|
interval;
|
|
8330
8323
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselConfig, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
8331
8324
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselConfig, providedIn: 'root' });
|
|
@@ -8339,7 +8332,6 @@ class CarouselComponent {
|
|
|
8339
8332
|
config = inject(CarouselConfig);
|
|
8340
8333
|
#hostElement = inject(ElementRef);
|
|
8341
8334
|
#carouselService = inject(CarouselService);
|
|
8342
|
-
#carouselState = inject(CarouselState);
|
|
8343
8335
|
#intersectionService = inject(IntersectionService);
|
|
8344
8336
|
#listenersService = inject(ListenersService);
|
|
8345
8337
|
constructor() {
|
|
@@ -8347,7 +8339,7 @@ class CarouselComponent {
|
|
|
8347
8339
|
}
|
|
8348
8340
|
loadConfig() {
|
|
8349
8341
|
this.activeIndex.update((activeIndex) => this.config?.activeIndex ?? activeIndex);
|
|
8350
|
-
this.animate.update((animate) => this.config?.animate ?? animate);
|
|
8342
|
+
this.animate.update((animate) => (animate === false ? animate : (this.config?.animate ?? animate)));
|
|
8351
8343
|
this.direction.update((direction) => this.config?.direction ?? direction);
|
|
8352
8344
|
this.interval.update((interval) => this.config?.interval ?? interval);
|
|
8353
8345
|
}
|
|
@@ -8363,8 +8355,8 @@ class CarouselComponent {
|
|
|
8363
8355
|
* @return boolean
|
|
8364
8356
|
*/
|
|
8365
8357
|
animateInput = input(true, { ...(ngDevMode ? { debugName: "animateInput" } : /* istanbul ignore next */ {}), alias: 'animate' });
|
|
8366
|
-
animate = linkedSignal(
|
|
8367
|
-
|
|
8358
|
+
animate = linkedSignal(this.animateInput, /* @ts-ignore */
|
|
8359
|
+
...(ngDevMode ? [{ debugName: "animate" }] : /* istanbul ignore next */ []));
|
|
8368
8360
|
/**
|
|
8369
8361
|
* Carousel direction. [docs]
|
|
8370
8362
|
* @return {'next' | 'prev'}
|
|
@@ -8382,7 +8374,7 @@ class CarouselComponent {
|
|
|
8382
8374
|
computation: (value) => value });
|
|
8383
8375
|
#intervalEffect = effect(() => {
|
|
8384
8376
|
const interval = this.interval();
|
|
8385
|
-
this.#
|
|
8377
|
+
this.#carouselService.state = { interval: interval };
|
|
8386
8378
|
interval ? this.setTimer() : this.resetTimer();
|
|
8387
8379
|
}, /* @ts-ignore */
|
|
8388
8380
|
...(ngDevMode ? [{ debugName: "#intervalEffect" }] : /* istanbul ignore next */ []));
|
|
@@ -8400,7 +8392,7 @@ class CarouselComponent {
|
|
|
8400
8392
|
touch = input(true, /* @ts-ignore */
|
|
8401
8393
|
...(ngDevMode ? [{ debugName: "touch" }] : /* istanbul ignore next */ []));
|
|
8402
8394
|
/**
|
|
8403
|
-
* Set type of the transition.
|
|
8395
|
+
* Set the type of the transition.
|
|
8404
8396
|
* @return {'slide' | 'crossfade'}
|
|
8405
8397
|
* @default 'slide'
|
|
8406
8398
|
*/
|
|
@@ -8423,16 +8415,18 @@ class CarouselComponent {
|
|
|
8423
8415
|
swipeSubscription;
|
|
8424
8416
|
#destroyRef = inject(DestroyRef);
|
|
8425
8417
|
ngOnInit() {
|
|
8426
|
-
this.
|
|
8418
|
+
this.carouselServiceSubscribe();
|
|
8427
8419
|
}
|
|
8428
8420
|
ngOnDestroy() {
|
|
8429
8421
|
this.resetTimer();
|
|
8430
8422
|
this.clearListeners();
|
|
8431
8423
|
this.swipeSubscribe(false);
|
|
8424
|
+
// Ensure IntersectionObserver is cleaned up
|
|
8425
|
+
this.#intersectionService?.unobserve(this.#hostElement);
|
|
8432
8426
|
}
|
|
8433
8427
|
ngAfterContentInit() {
|
|
8434
8428
|
this.intersectionServiceSubscribe();
|
|
8435
|
-
this.#
|
|
8429
|
+
this.#carouselService.state = {
|
|
8436
8430
|
activeItemIndex: this.activeIndex(),
|
|
8437
8431
|
animate: this.animate(),
|
|
8438
8432
|
interval: this.interval(),
|
|
@@ -8470,8 +8464,8 @@ class CarouselComponent {
|
|
|
8470
8464
|
this.resetTimer();
|
|
8471
8465
|
if (interval > 0) {
|
|
8472
8466
|
this.timerId = setTimeout(() => {
|
|
8473
|
-
const nextIndex = this.#
|
|
8474
|
-
this.#
|
|
8467
|
+
const nextIndex = this.#carouselService.direction(direction);
|
|
8468
|
+
this.#carouselService.state = { activeItemIndex: nextIndex };
|
|
8475
8469
|
}, interval);
|
|
8476
8470
|
}
|
|
8477
8471
|
}
|
|
@@ -8479,7 +8473,7 @@ class CarouselComponent {
|
|
|
8479
8473
|
clearTimeout(this.timerId);
|
|
8480
8474
|
this.timerId = undefined;
|
|
8481
8475
|
}
|
|
8482
|
-
|
|
8476
|
+
carouselServiceSubscribe() {
|
|
8483
8477
|
this.#carouselService.carouselIndex$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((nextItem) => {
|
|
8484
8478
|
if ('active' in nextItem && typeof nextItem.active === 'number') {
|
|
8485
8479
|
this.itemChange?.emit(nextItem.active);
|
|
@@ -8496,7 +8490,7 @@ class CarouselComponent {
|
|
|
8496
8490
|
this.#intersectionService.createIntersectionObserver(this.#hostElement);
|
|
8497
8491
|
this.#intersectionService.intersecting$
|
|
8498
8492
|
.pipe(filter((next) => next.hostElement === this.#hostElement), finalize(() => {
|
|
8499
|
-
this.#intersectionService
|
|
8493
|
+
this.#intersectionService?.unobserve(this.#hostElement);
|
|
8500
8494
|
}), takeUntilDestroyed(this.#destroyRef))
|
|
8501
8495
|
.subscribe((next) => {
|
|
8502
8496
|
this.visible = next.isIntersecting;
|
|
@@ -8514,10 +8508,13 @@ class CarouselComponent {
|
|
|
8514
8508
|
.subscribe(([touchstart, [touchend, touchmove]]) => {
|
|
8515
8509
|
touchstart.stopPropagation();
|
|
8516
8510
|
touchmove.stopPropagation();
|
|
8511
|
+
if (this.#carouselService.animating()) {
|
|
8512
|
+
return;
|
|
8513
|
+
}
|
|
8517
8514
|
const distanceX = touchstart.touches[0]?.clientX - touchmove.touches[0]?.clientX || 0;
|
|
8518
8515
|
if (Math.abs(distanceX) > 0.3 * carouselElement.clientWidth && touchstart.timeStamp <= touchmove.timeStamp) {
|
|
8519
|
-
const nextIndex = this.#
|
|
8520
|
-
this.#
|
|
8516
|
+
const nextIndex = this.#carouselService.direction(distanceX > 0 ? 'next' : 'prev');
|
|
8517
|
+
this.#carouselService.state = { activeItemIndex: nextIndex };
|
|
8521
8518
|
}
|
|
8522
8519
|
});
|
|
8523
8520
|
}
|
|
@@ -8526,11 +8523,11 @@ class CarouselComponent {
|
|
|
8526
8523
|
}
|
|
8527
8524
|
}
|
|
8528
8525
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8529
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: CarouselComponent, isStandalone: true, selector: "c-carousel", inputs: { activeIndexInput: { classPropertyName: "activeIndexInput", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null }, animateInput: { classPropertyName: "animateInput", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, directionInput: { classPropertyName: "directionInput", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, intervalInput: { classPropertyName: "intervalInput", publicName: "interval", isSignal: true, isRequired: false, transformFunction: null }, pause: { classPropertyName: "pause", publicName: "pause", isSignal: true, isRequired: false, transformFunction: null }, touch: { classPropertyName: "touch", publicName: "touch", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemChange: "itemChange" }, host: { properties: { "class.carousel-fade": "transition() === \"crossfade\" && animate()" }, classAttribute: "carousel slide" }, providers: [CarouselService,
|
|
8526
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: CarouselComponent, isStandalone: true, selector: "c-carousel", inputs: { activeIndexInput: { classPropertyName: "activeIndexInput", publicName: "activeIndex", isSignal: true, isRequired: false, transformFunction: null }, animateInput: { classPropertyName: "animateInput", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, directionInput: { classPropertyName: "directionInput", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, intervalInput: { classPropertyName: "intervalInput", publicName: "interval", isSignal: true, isRequired: false, transformFunction: null }, pause: { classPropertyName: "pause", publicName: "pause", isSignal: true, isRequired: false, transformFunction: null }, touch: { classPropertyName: "touch", publicName: "touch", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null }, wrap: { classPropertyName: "wrap", publicName: "wrap", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemChange: "itemChange" }, host: { properties: { "class.carousel-fade": "transition() === \"crossfade\" && animate()" }, classAttribute: "carousel slide" }, providers: [CarouselService, ListenersService], exportAs: ["cCarousel"], hostDirectives: [{ directive: ThemeDirective, inputs: ["dark", "dark"] }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] });
|
|
8530
8527
|
}
|
|
8531
8528
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
8532
8529
|
type: Component,
|
|
8533
|
-
args: [{ selector: 'c-carousel', template: '<ng-content />', providers: [CarouselService,
|
|
8530
|
+
args: [{ selector: 'c-carousel', template: '<ng-content />', providers: [CarouselService, ListenersService], hostDirectives: [{ directive: ThemeDirective, inputs: ['dark'] }], exportAs: 'cCarousel', host: {
|
|
8534
8531
|
class: 'carousel slide',
|
|
8535
8532
|
'[class.carousel-fade]': 'transition() === "crossfade" && animate()'
|
|
8536
8533
|
}, styles: [":host{display:block}\n"] }]
|
|
@@ -8548,7 +8545,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
8548
8545
|
}] });
|
|
8549
8546
|
|
|
8550
8547
|
class CarouselControlComponent {
|
|
8551
|
-
#
|
|
8548
|
+
#carouselService = inject(CarouselService);
|
|
8552
8549
|
/**
|
|
8553
8550
|
* Carousel control caption. [docs]
|
|
8554
8551
|
* @return string
|
|
@@ -8590,11 +8587,14 @@ class CarouselControlComponent {
|
|
|
8590
8587
|
}
|
|
8591
8588
|
}
|
|
8592
8589
|
onClick($event) {
|
|
8590
|
+
if (this.#carouselService.animating()) {
|
|
8591
|
+
return;
|
|
8592
|
+
}
|
|
8593
8593
|
this.#play();
|
|
8594
8594
|
}
|
|
8595
8595
|
#play(direction = this.direction()) {
|
|
8596
|
-
const nextIndex = this.#
|
|
8597
|
-
this.#
|
|
8596
|
+
const nextIndex = this.#carouselService.direction(direction);
|
|
8597
|
+
this.#carouselService.state = { activeItemIndex: nextIndex };
|
|
8598
8598
|
}
|
|
8599
8599
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8600
8600
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: CarouselControlComponent, isStandalone: true, selector: "c-carousel-control", inputs: { captionInput: { classPropertyName: "captionInput", publicName: "caption", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "onClick($event)" }, properties: { "attr.role": "role()", "class": "hostClasses()" } }, exportAs: ["cCarouselControl"], ngImport: i0, template: "<ng-content>\n <span [attr.aria-hidden]=\"true\" [class]=\"carouselControlIconClass()\"></span>\n <span class=\"visually-hidden\">{{ caption() }}</span>\n</ng-content>\n" });
|
|
@@ -8612,7 +8612,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
8612
8612
|
class CarouselIndicatorsComponent {
|
|
8613
8613
|
#destroyRef = inject(DestroyRef);
|
|
8614
8614
|
#carouselService = inject(CarouselService);
|
|
8615
|
-
#carouselState = inject(CarouselState);
|
|
8616
8615
|
items = [];
|
|
8617
8616
|
active = signal(0, /* @ts-ignore */
|
|
8618
8617
|
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
@@ -8626,16 +8625,19 @@ class CarouselIndicatorsComponent {
|
|
|
8626
8625
|
...(ngDevMode ? [{ debugName: "templates" }] : /* istanbul ignore next */ []));
|
|
8627
8626
|
ngOnInit() {
|
|
8628
8627
|
this.#carouselService.carouselIndex$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((nextIndex) => {
|
|
8629
|
-
this.items = this.#
|
|
8628
|
+
this.items = this.#carouselService?.state?.items?.map((item) => item.index) ?? [];
|
|
8630
8629
|
if ('active' in nextIndex) {
|
|
8631
8630
|
this.active.set(nextIndex.active ?? 0);
|
|
8632
8631
|
}
|
|
8633
8632
|
});
|
|
8634
8633
|
}
|
|
8635
8634
|
onClick(index) {
|
|
8635
|
+
if (this.#carouselService.animating()) {
|
|
8636
|
+
return;
|
|
8637
|
+
}
|
|
8636
8638
|
if (index !== this.active()) {
|
|
8637
8639
|
const direction = index < this.active() ? 'prev' : 'next';
|
|
8638
|
-
this.#
|
|
8640
|
+
this.#carouselService.state = { direction, activeItemIndex: index };
|
|
8639
8641
|
}
|
|
8640
8642
|
}
|
|
8641
8643
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselIndicatorsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
@@ -8647,19 +8649,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
8647
8649
|
}], propDecorators: { contentTemplates: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => TemplateIdDirective), { ...{ descendants: true }, isSignal: true }] }] } });
|
|
8648
8650
|
|
|
8649
8651
|
class CarouselItemComponent {
|
|
8652
|
+
#elementRef = inject((ElementRef));
|
|
8650
8653
|
#destroyRef = inject(DestroyRef);
|
|
8651
8654
|
#carouselService = inject(CarouselService);
|
|
8655
|
+
#timeoutId;
|
|
8656
|
+
#rafId;
|
|
8652
8657
|
index;
|
|
8653
8658
|
/**
|
|
8654
8659
|
* @ignore
|
|
8655
8660
|
*/
|
|
8656
8661
|
activeInput = input(false, { ...(ngDevMode ? { debugName: "activeInput" } : /* istanbul ignore next */ {}), transform: booleanAttribute, alias: 'active' });
|
|
8657
|
-
active = linkedSignal(
|
|
8658
|
-
|
|
8659
|
-
return value;
|
|
8660
|
-
} });
|
|
8662
|
+
active = linkedSignal(this.activeInput, /* @ts-ignore */
|
|
8663
|
+
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
8661
8664
|
/**
|
|
8662
|
-
* Time delay before cycling to next item. If -1, uses carousel interval value.
|
|
8665
|
+
* Time delay before cycling to the next item. If -1, uses carousel interval value.
|
|
8663
8666
|
* @return number
|
|
8664
8667
|
* @default -1
|
|
8665
8668
|
*/
|
|
@@ -8673,102 +8676,119 @@ class CarouselItemComponent {
|
|
|
8673
8676
|
role = input('group', /* @ts-ignore */
|
|
8674
8677
|
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
8675
8678
|
constructor() {
|
|
8679
|
+
this.#elementRef.nativeElement.style.transition = '1ms';
|
|
8680
|
+
}
|
|
8681
|
+
ngOnInit() {
|
|
8682
|
+
console.log('OnInit', this.#carouselService.state.animate);
|
|
8676
8683
|
this.#carouselService.carouselIndex$.pipe(takeUntilDestroyed(this.#destroyRef)).subscribe((nextIndex) => {
|
|
8677
8684
|
if ('active' in nextIndex) {
|
|
8685
|
+
console.log('#carouselService', this.#carouselService.state.animate, this.#elementRef.nativeElement.style.transition);
|
|
8686
|
+
if (this.#carouselService.state.animate && this.#elementRef.nativeElement.style.transition !== '') {
|
|
8687
|
+
this.#timeoutId = setTimeout(() => {
|
|
8688
|
+
this.#elementRef.nativeElement.style.transition = '';
|
|
8689
|
+
this.#timeoutId = undefined;
|
|
8690
|
+
}, 500);
|
|
8691
|
+
}
|
|
8692
|
+
this.prevActive.set(this.active());
|
|
8678
8693
|
this.active.set(nextIndex.active === this.index);
|
|
8679
8694
|
}
|
|
8680
8695
|
});
|
|
8696
|
+
// Clean up timeout on destroy
|
|
8697
|
+
this.#destroyRef.onDestroy(() => {
|
|
8698
|
+
if (this.#timeoutId !== undefined) {
|
|
8699
|
+
clearTimeout(this.#timeoutId);
|
|
8700
|
+
}
|
|
8701
|
+
if (this.#rafId !== undefined) {
|
|
8702
|
+
cancelAnimationFrame(this.#rafId);
|
|
8703
|
+
}
|
|
8704
|
+
});
|
|
8681
8705
|
}
|
|
8706
|
+
hostClasses = computed(() => {
|
|
8707
|
+
const order = this.orderClassName();
|
|
8708
|
+
const direction = this.directionClassName();
|
|
8709
|
+
return {
|
|
8710
|
+
active: this.activeClass(),
|
|
8711
|
+
[`${order}`]: !!order,
|
|
8712
|
+
[`${direction}`]: !!direction,
|
|
8713
|
+
'd-none': !this.activeClass() && !order && !direction
|
|
8714
|
+
};
|
|
8715
|
+
}, /* @ts-ignore */
|
|
8716
|
+
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
8717
|
+
prevActive = signal(false, /* @ts-ignore */
|
|
8718
|
+
...(ngDevMode ? [{ debugName: "prevActive" }] : /* istanbul ignore next */ []));
|
|
8719
|
+
activeClass = signal(false, /* @ts-ignore */
|
|
8720
|
+
...(ngDevMode ? [{ debugName: "activeClass" }] : /* istanbul ignore next */ []));
|
|
8721
|
+
orderClassName = signal('', /* @ts-ignore */
|
|
8722
|
+
...(ngDevMode ? [{ debugName: "orderClassName" }] : /* istanbul ignore next */ []));
|
|
8723
|
+
directionClassName = signal('', /* @ts-ignore */
|
|
8724
|
+
...(ngDevMode ? [{ debugName: "directionClassName" }] : /* istanbul ignore next */ []));
|
|
8725
|
+
#activeEffect = effect((OnCleanup) => {
|
|
8726
|
+
const active = this.active();
|
|
8727
|
+
const prevActive = untracked(this.prevActive);
|
|
8728
|
+
const direction = this.#carouselService.state?.direction;
|
|
8729
|
+
this.activeClass.set(prevActive);
|
|
8730
|
+
if (active) {
|
|
8731
|
+
this.orderClassName.set(`carousel-item-${direction}`);
|
|
8732
|
+
}
|
|
8733
|
+
if (prevActive || active) {
|
|
8734
|
+
if (this.#rafId) {
|
|
8735
|
+
cancelAnimationFrame(this.#rafId);
|
|
8736
|
+
}
|
|
8737
|
+
this.#rafId = requestAnimationFrame(() => {
|
|
8738
|
+
// reflow is necessary to proper transition
|
|
8739
|
+
void this.#elementRef.nativeElement.offsetHeight;
|
|
8740
|
+
this.directionClassName.set(`carousel-item-${direction === 'next' ? 'start' : 'end'}`);
|
|
8741
|
+
this.#rafId = undefined;
|
|
8742
|
+
});
|
|
8743
|
+
}
|
|
8744
|
+
const handleTransitionStart = () => {
|
|
8745
|
+
if (active) {
|
|
8746
|
+
this.#carouselService.animating.set(true);
|
|
8747
|
+
}
|
|
8748
|
+
};
|
|
8749
|
+
const handleTransitionEnd = () => {
|
|
8750
|
+
if (active) {
|
|
8751
|
+
this.#carouselService.animating.set(false);
|
|
8752
|
+
}
|
|
8753
|
+
this.directionClassName.set('');
|
|
8754
|
+
this.orderClassName.set('');
|
|
8755
|
+
this.activeClass.set(active);
|
|
8756
|
+
};
|
|
8757
|
+
this.#elementRef.nativeElement.addEventListener('transitionstart', handleTransitionStart);
|
|
8758
|
+
this.#elementRef.nativeElement.addEventListener('transitionend', handleTransitionEnd);
|
|
8759
|
+
OnCleanup(() => {
|
|
8760
|
+
this.#elementRef.nativeElement.removeEventListener('transitionstart', handleTransitionStart);
|
|
8761
|
+
this.#elementRef.nativeElement.removeEventListener('transitionend', handleTransitionEnd);
|
|
8762
|
+
});
|
|
8763
|
+
}, /* @ts-ignore */
|
|
8764
|
+
...(ngDevMode ? [{ debugName: "#activeEffect" }] : /* istanbul ignore next */ []));
|
|
8682
8765
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8683
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
8766
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: CarouselItemComponent, isStandalone: true, selector: "c-carousel-item", inputs: { activeInput: { classPropertyName: "activeInput", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, interval: { classPropertyName: "interval", publicName: "interval", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "hostClasses()", "attr.role": "role()" }, classAttribute: "carousel-item" }, exportAs: ["cCarouselItem"], ngImport: i0, template: `
|
|
8767
|
+
<!-- @if (this.activeClass() || (this.orderClassName() && this.directionClassName())) {-->
|
|
8768
|
+
<ng-content />
|
|
8769
|
+
<!-- }-->
|
|
8770
|
+
`, isInline: true });
|
|
8684
8771
|
}
|
|
8685
8772
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselItemComponent, decorators: [{
|
|
8686
8773
|
type: Component,
|
|
8687
|
-
args: [{
|
|
8774
|
+
args: [{
|
|
8775
|
+
selector: 'c-carousel-item',
|
|
8776
|
+
template: `
|
|
8777
|
+
<!-- @if (this.activeClass() || (this.orderClassName() && this.directionClassName())) {-->
|
|
8778
|
+
<ng-content />
|
|
8779
|
+
<!-- }-->
|
|
8780
|
+
`,
|
|
8781
|
+
exportAs: 'cCarouselItem',
|
|
8782
|
+
host: {
|
|
8688
8783
|
class: 'carousel-item',
|
|
8689
|
-
'[class
|
|
8784
|
+
'[class]': 'hostClasses()',
|
|
8690
8785
|
'[attr.role]': 'role()'
|
|
8691
|
-
}
|
|
8786
|
+
}
|
|
8787
|
+
}]
|
|
8692
8788
|
}], ctorParameters: () => [], propDecorators: { activeInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], interval: [{ type: i0.Input, args: [{ isSignal: true, alias: "interval", required: false }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }] } });
|
|
8693
8789
|
|
|
8694
|
-
function toSlideLeft(fromState, toState) {
|
|
8695
|
-
return toState.left === true && toState.type === 'slide';
|
|
8696
|
-
}
|
|
8697
|
-
function toSlideRight(fromState, toState) {
|
|
8698
|
-
return toState.left === false && toState.type === 'slide';
|
|
8699
|
-
}
|
|
8700
|
-
function toFadeLeft(fromState, toState) {
|
|
8701
|
-
return toState.left === true && toState.type !== 'slide';
|
|
8702
|
-
}
|
|
8703
|
-
function toFadeRight(fromState, toState) {
|
|
8704
|
-
return toState.left === false && toState.type !== 'slide';
|
|
8705
|
-
}
|
|
8706
|
-
const slideAnimationLeft = animation(group([
|
|
8707
|
-
query(':leave', [
|
|
8708
|
-
animate('0.6s ease-in-out', style({
|
|
8709
|
-
transform: 'translateX(-100%)'
|
|
8710
|
-
}))
|
|
8711
|
-
], { optional: true }),
|
|
8712
|
-
query(':enter', [
|
|
8713
|
-
style({
|
|
8714
|
-
transform: 'translateX(100%)'
|
|
8715
|
-
}),
|
|
8716
|
-
animate('0.6s ease-in-out', style('*'))
|
|
8717
|
-
], { optional: true })
|
|
8718
|
-
]));
|
|
8719
|
-
const slideAnimationRight = animation(group([
|
|
8720
|
-
query(':enter', [
|
|
8721
|
-
style({
|
|
8722
|
-
transform: 'translateX(-100%)'
|
|
8723
|
-
}),
|
|
8724
|
-
animate('0.6s ease-in-out', style('*'))
|
|
8725
|
-
], { optional: true }),
|
|
8726
|
-
query(':leave', [
|
|
8727
|
-
animate('0.6s ease-in-out', style({
|
|
8728
|
-
transform: 'translateX(100%)'
|
|
8729
|
-
}))
|
|
8730
|
-
], { optional: true })
|
|
8731
|
-
]));
|
|
8732
|
-
const fadeAnimationLeft = animation(group([
|
|
8733
|
-
query(':leave', [
|
|
8734
|
-
animate('0.9s ease-in-out', style({
|
|
8735
|
-
zIndex: 0,
|
|
8736
|
-
opacity: 0
|
|
8737
|
-
}))
|
|
8738
|
-
], { optional: true }),
|
|
8739
|
-
query(':enter', [
|
|
8740
|
-
style({
|
|
8741
|
-
zIndex: 1,
|
|
8742
|
-
opacity: 1
|
|
8743
|
-
}),
|
|
8744
|
-
animate('0.6s ease-in-out', style('*'))
|
|
8745
|
-
], { optional: true })
|
|
8746
|
-
]));
|
|
8747
|
-
const fadeAnimationRight = animation(group([
|
|
8748
|
-
query(':enter', [
|
|
8749
|
-
style({
|
|
8750
|
-
zIndex: 1,
|
|
8751
|
-
opacity: 1
|
|
8752
|
-
}),
|
|
8753
|
-
animate('0.6s ease-in-out', style('*'))
|
|
8754
|
-
], { optional: true }),
|
|
8755
|
-
query(':leave', [
|
|
8756
|
-
animate('0.9s ease-in-out', style({
|
|
8757
|
-
zIndex: 0,
|
|
8758
|
-
opacity: 0
|
|
8759
|
-
}))
|
|
8760
|
-
], { optional: true })
|
|
8761
|
-
]));
|
|
8762
|
-
const carouselPlay = trigger('carouselPlay', [
|
|
8763
|
-
state('*', style({ transform: 'translateX(0)', display: 'block', opacity: 1 })),
|
|
8764
|
-
transition(toFadeLeft, useAnimation(fadeAnimationLeft)),
|
|
8765
|
-
transition(toFadeRight, useAnimation(fadeAnimationRight)),
|
|
8766
|
-
transition(toSlideLeft, useAnimation(slideAnimationLeft)),
|
|
8767
|
-
transition(toSlideRight, useAnimation(slideAnimationRight))
|
|
8768
|
-
]);
|
|
8769
|
-
|
|
8770
8790
|
class CarouselInnerComponent {
|
|
8771
|
-
#
|
|
8791
|
+
#carouselService = inject(CarouselService);
|
|
8772
8792
|
activeIndex = signal(undefined, /* @ts-ignore */
|
|
8773
8793
|
...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
|
|
8774
8794
|
animate = signal(true, /* @ts-ignore */
|
|
@@ -8796,7 +8816,7 @@ class CarouselInnerComponent {
|
|
|
8796
8816
|
}
|
|
8797
8817
|
ngAfterContentChecked() {
|
|
8798
8818
|
this.setItems();
|
|
8799
|
-
const state = this.#
|
|
8819
|
+
const state = this.#carouselService?.state;
|
|
8800
8820
|
const nextIndex = state?.activeItemIndex;
|
|
8801
8821
|
const nextDirection = state?.direction;
|
|
8802
8822
|
if (this.activeIndex() !== nextIndex) {
|
|
@@ -8811,18 +8831,16 @@ class CarouselInnerComponent {
|
|
|
8811
8831
|
const contentItems = this.contentItems();
|
|
8812
8832
|
if (this.#prevContentItems() !== contentItems) {
|
|
8813
8833
|
this.#prevContentItems.set([...contentItems]);
|
|
8814
|
-
this.#
|
|
8834
|
+
this.#carouselService.setItems(contentItems);
|
|
8815
8835
|
}
|
|
8816
8836
|
}
|
|
8817
8837
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselInnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8818
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.0", type: CarouselInnerComponent, isStandalone: true, selector: "c-carousel-inner", host: { properties: { "
|
|
8838
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.0", type: CarouselInnerComponent, isStandalone: true, selector: "c-carousel-inner", host: { properties: { "attr.aria-live": "ariaLive()" }, classAttribute: "carousel-inner" }, queries: [{ propertyName: "contentItems", predicate: CarouselItemComponent, isSignal: true }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":host{display:block}\n"] });
|
|
8819
8839
|
}
|
|
8820
8840
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselInnerComponent, decorators: [{
|
|
8821
8841
|
type: Component,
|
|
8822
|
-
args: [{ selector: 'c-carousel-inner',
|
|
8842
|
+
args: [{ selector: 'c-carousel-inner', template: '<ng-content />', host: {
|
|
8823
8843
|
class: 'carousel-inner',
|
|
8824
|
-
'[@carouselPlay]': 'slideType()',
|
|
8825
|
-
'[@.disabled]': '!animate()',
|
|
8826
8844
|
'[attr.aria-live]': 'ariaLive()'
|
|
8827
8845
|
}, styles: [":host{display:block}\n"] }]
|
|
8828
8846
|
}], propDecorators: { contentItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => CarouselItemComponent), { isSignal: true }] }] } });
|
|
@@ -8843,7 +8861,7 @@ class CarouselModule {
|
|
|
8843
8861
|
CarouselIndicatorsComponent,
|
|
8844
8862
|
CarouselInnerComponent,
|
|
8845
8863
|
CarouselItemComponent] });
|
|
8846
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselModule, providers: [CarouselService,
|
|
8864
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselModule, providers: [CarouselService, CarouselConfig] });
|
|
8847
8865
|
}
|
|
8848
8866
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: CarouselModule, decorators: [{
|
|
8849
8867
|
type: NgModule,
|
|
@@ -8856,7 +8874,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
8856
8874
|
CarouselInnerComponent,
|
|
8857
8875
|
CarouselItemComponent
|
|
8858
8876
|
],
|
|
8859
|
-
providers: [CarouselService,
|
|
8877
|
+
providers: [CarouselService, CarouselConfig],
|
|
8860
8878
|
exports: [
|
|
8861
8879
|
CarouselComponent,
|
|
8862
8880
|
CarouselCaptionComponent,
|
|
@@ -20213,85 +20231,116 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
20213
20231
|
}]
|
|
20214
20232
|
}] });
|
|
20215
20233
|
|
|
20234
|
+
const getTransitionDurationFromElement = (element) => {
|
|
20235
|
+
if (!element) {
|
|
20236
|
+
return 0;
|
|
20237
|
+
}
|
|
20238
|
+
// Get transition-duration of the element
|
|
20239
|
+
let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
|
|
20240
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
20241
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay);
|
|
20242
|
+
// Return 0 if element or transition duration is not found
|
|
20243
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
20244
|
+
return 0;
|
|
20245
|
+
}
|
|
20246
|
+
// If multiple durations are defined, take the first
|
|
20247
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
20248
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
20249
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * 1000;
|
|
20250
|
+
};
|
|
20251
|
+
|
|
20216
20252
|
class TabPanelComponent {
|
|
20217
|
-
tabsService = inject(TabsService);
|
|
20253
|
+
#tabsService = inject(TabsService);
|
|
20254
|
+
#elementRef = inject(ElementRef);
|
|
20218
20255
|
/**
|
|
20219
20256
|
* aria-labelledby attribute
|
|
20220
|
-
* @
|
|
20257
|
+
* @return string
|
|
20221
20258
|
* @default undefined
|
|
20222
20259
|
*/
|
|
20223
20260
|
ariaLabelledBy = input(undefined, { ...(ngDevMode ? { debugName: "ariaLabelledBy" } : /* istanbul ignore next */ {}), alias: 'aria-labelledby' });
|
|
20224
20261
|
/**
|
|
20225
20262
|
* Element id attribute
|
|
20226
|
-
* @
|
|
20263
|
+
* @return string
|
|
20227
20264
|
* @default undefined
|
|
20228
20265
|
*/
|
|
20229
20266
|
id = input(/* @ts-ignore */
|
|
20230
20267
|
...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
|
|
20231
20268
|
/**
|
|
20232
20269
|
* Item key.
|
|
20233
|
-
* @
|
|
20270
|
+
* @return string | number
|
|
20234
20271
|
* @required
|
|
20235
20272
|
*/
|
|
20236
20273
|
itemKey = input.required(/* @ts-ignore */
|
|
20237
20274
|
...(ngDevMode ? [{ debugName: "itemKey" }] : /* istanbul ignore next */ []));
|
|
20238
20275
|
/**
|
|
20239
20276
|
* Element role.
|
|
20240
|
-
* @
|
|
20277
|
+
* @return string
|
|
20241
20278
|
* @default 'tabpanel'
|
|
20242
20279
|
*/
|
|
20243
20280
|
role = input('tabpanel', /* @ts-ignore */
|
|
20244
20281
|
...(ngDevMode ? [{ debugName: "role" }] : /* istanbul ignore next */ []));
|
|
20245
20282
|
/**
|
|
20246
20283
|
* tabindex attribute.
|
|
20247
|
-
* @
|
|
20284
|
+
* @return number
|
|
20248
20285
|
* @default 0
|
|
20249
20286
|
*/
|
|
20250
20287
|
tabindex = input(0, { ...(ngDevMode ? { debugName: "tabindex" } : /* istanbul ignore next */ {}), transform: numberAttribute });
|
|
20251
20288
|
/**
|
|
20252
20289
|
* Enable fade in transition.
|
|
20253
|
-
* @
|
|
20290
|
+
* @return boolean
|
|
20254
20291
|
* @default true
|
|
20255
20292
|
*/
|
|
20256
20293
|
transition = input(true, /* @ts-ignore */
|
|
20257
20294
|
...(ngDevMode ? [{ debugName: "transition" }] : /* istanbul ignore next */ []));
|
|
20258
20295
|
/**
|
|
20259
20296
|
* visible change output
|
|
20260
|
-
* @
|
|
20297
|
+
* @return VisibleChangeEvent
|
|
20261
20298
|
*/
|
|
20262
20299
|
visibleChange = output();
|
|
20263
20300
|
show = signal(false, /* @ts-ignore */
|
|
20264
20301
|
...(ngDevMode ? [{ debugName: "show" }] : /* istanbul ignore next */ []));
|
|
20265
20302
|
visible = computed(() => {
|
|
20266
|
-
const visible = this
|
|
20303
|
+
const visible = this.#tabsService.activeItemKey() === this.itemKey() && !this.#tabsService.activeItem()?.disabled;
|
|
20267
20304
|
this.visibleChange?.emit({ itemKey: this.itemKey(), visible });
|
|
20268
20305
|
return visible;
|
|
20269
20306
|
}, /* @ts-ignore */
|
|
20270
20307
|
...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
|
|
20271
|
-
|
|
20308
|
+
#transitionDuration = 0;
|
|
20309
|
+
#visibleEffect = effect(() => {
|
|
20310
|
+
const isVisible = this.visible();
|
|
20311
|
+
const hasTransition = this.transition();
|
|
20312
|
+
if (!hasTransition) {
|
|
20313
|
+
this.show.set(isVisible);
|
|
20314
|
+
}
|
|
20315
|
+
else {
|
|
20316
|
+
requestAnimationFrame(() => {
|
|
20317
|
+
if (this.#transitionDuration === 0) {
|
|
20318
|
+
this.#transitionDuration = getTransitionDurationFromElement(this.#elementRef.nativeElement);
|
|
20319
|
+
}
|
|
20320
|
+
setTimeout(() => this.show.set(isVisible), this.#transitionDuration || 0);
|
|
20321
|
+
});
|
|
20322
|
+
}
|
|
20323
|
+
}, /* @ts-ignore */
|
|
20324
|
+
...(ngDevMode ? [{ debugName: "#visibleEffect" }] : /* istanbul ignore next */ []));
|
|
20325
|
+
propId = computed(() => this.id() ?? `${this.#tabsService.id()}-panel-${this.itemKey()}`, /* @ts-ignore */
|
|
20272
20326
|
...(ngDevMode ? [{ debugName: "propId" }] : /* istanbul ignore next */ []));
|
|
20273
|
-
attrAriaLabelledBy = computed(() => this.ariaLabelledBy() ?? `${this
|
|
20327
|
+
attrAriaLabelledBy = computed(() => this.ariaLabelledBy() ?? `${this.#tabsService.id()}-tab-${this.itemKey()}`, /* @ts-ignore */
|
|
20274
20328
|
...(ngDevMode ? [{ debugName: "attrAriaLabelledBy" }] : /* istanbul ignore next */ []));
|
|
20275
20329
|
hostClasses = computed(() => ({
|
|
20276
20330
|
'tab-pane': true,
|
|
20277
|
-
active: this.
|
|
20331
|
+
active: this.visible(),
|
|
20278
20332
|
fade: this.transition(),
|
|
20279
20333
|
show: this.show(),
|
|
20280
|
-
invisible: this
|
|
20334
|
+
invisible: this.#tabsService.activeItem()?.disabled
|
|
20281
20335
|
}), /* @ts-ignore */
|
|
20282
20336
|
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
20283
|
-
|
|
20284
|
-
|
|
20337
|
+
onTransitionEnd($event) {
|
|
20338
|
+
if ($event.propertyName === 'opacity' && $event.target === this.#elementRef.nativeElement) {
|
|
20339
|
+
this.show.set(this.visible());
|
|
20340
|
+
}
|
|
20285
20341
|
}
|
|
20286
20342
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
20287
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TabPanelComponent, isStandalone: true, selector: "c-tab-panel", inputs: { ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "
|
|
20288
|
-
trigger('fadeInOut', [
|
|
20289
|
-
state('show', style({ opacity: 1 })),
|
|
20290
|
-
state('hide', style({ opacity: 0 })),
|
|
20291
|
-
state('void', style({ opacity: 1 })),
|
|
20292
|
-
transition('* => *', [query('@*', [animateChild()], { optional: true }), animate('150ms linear')])
|
|
20293
|
-
])
|
|
20294
|
-
] });
|
|
20343
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.0", type: TabPanelComponent, isStandalone: true, selector: "c-tab-panel", inputs: { ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, itemKey: { classPropertyName: "itemKey", publicName: "itemKey", isSignal: true, isRequired: true, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, tabindex: { classPropertyName: "tabindex", publicName: "tabindex", isSignal: true, isRequired: false, transformFunction: null }, transition: { classPropertyName: "transition", publicName: "transition", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibleChange: "visibleChange" }, host: { listeners: { "transitionend": "onTransitionEnd($event)" }, properties: { "class": "hostClasses()", "tabindex": "visible() ? tabindex() : -1", "attr.aria-labelledby": "attrAriaLabelledBy()", "id": "propId()", "attr.role": "role()" } }, exportAs: ["cTabPanel"], ngImport: i0, template: '<ng-content />', isInline: true });
|
|
20295
20344
|
}
|
|
20296
20345
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImport: i0, type: TabPanelComponent, decorators: [{
|
|
20297
20346
|
type: Component,
|
|
@@ -20305,18 +20354,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.0", ngImpor
|
|
|
20305
20354
|
'[attr.aria-labelledby]': 'attrAriaLabelledBy()',
|
|
20306
20355
|
'[id]': 'propId()',
|
|
20307
20356
|
'[attr.role]': 'role()',
|
|
20308
|
-
'
|
|
20309
|
-
|
|
20310
|
-
'(@fadeInOut.done)': 'onAnimationDone($event)'
|
|
20311
|
-
},
|
|
20312
|
-
animations: [
|
|
20313
|
-
trigger('fadeInOut', [
|
|
20314
|
-
state('show', style({ opacity: 1 })),
|
|
20315
|
-
state('hide', style({ opacity: 0 })),
|
|
20316
|
-
state('void', style({ opacity: 1 })),
|
|
20317
|
-
transition('* => *', [query('@*', [animateChild()], { optional: true }), animate('150ms linear')])
|
|
20318
|
-
])
|
|
20319
|
-
]
|
|
20357
|
+
'(transitionend)': 'onTransitionEnd($event)'
|
|
20358
|
+
}
|
|
20320
20359
|
}]
|
|
20321
20360
|
}], propDecorators: { ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], itemKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemKey", required: true }] }], role: [{ type: i0.Input, args: [{ isSignal: true, alias: "role", required: false }] }], tabindex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabindex", required: false }] }], transition: [{ type: i0.Input, args: [{ isSignal: true, alias: "transition", required: false }] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }] } });
|
|
20322
20361
|
|