UNPKG

@coreui/angular

Version:

CoreUI Components Library for Angular

113 lines 14.8 kB
import { animate, animateChild, query, state, style, transition, trigger } from '@angular/animations'; import { Component, computed, HostBinding, HostListener, inject, input, numberAttribute, output, signal } from '@angular/core'; import { TabsService } from '../tabs.service'; import * as i0 from "@angular/core"; export class TabPanelComponent { constructor() { this.tabsService = inject(TabsService); /** * aria-labelledby attribute * @type string * @default undefined */ this.ariaLabelledBy = input(undefined, { alias: 'aria-labelledby' }); /** * Element id attribute * @type string * @default undefined */ this.id = input(); /** * Item key. * @type string | number * @required */ this.itemKey = input.required(); /** * tabindex attribute. * @type number * @default 0 */ this.tabindex = input(0, { transform: numberAttribute }); /** * Enable fade in transition. * @type boolean * @default true */ this.transition = input(true); /** * visible change output * @type OutputEmitterRef<VisibleChangeEvent> */ this.visibleChange = output(); this.show = signal(false); this.visible = computed(() => { const visible = this.tabsService.activeItemKey() === this.itemKey() && !this.tabsService.activeItem()?.disabled; this.visibleChange.emit({ itemKey: this.itemKey(), visible }); return visible; }); this.propId = computed(() => this.id() ?? `${this.tabsService.id()}-panel-${this.itemKey()}`); this.attrAriaLabelledBy = computed(() => this.ariaLabelledBy() ?? `${this.tabsService.id()}-tab-${this.itemKey()}`); this.hostClasses = computed(() => ({ 'tab-pane': true, active: this.show(), fade: this.transition(), show: this.show(), invisible: this.tabsService.activeItem()?.disabled })); } get animationDisabled() { return !this.transition(); } get animateType() { return this.visible() ? 'show' : 'hide'; } onAnimationDone($event) { this.show.set(this.visible()); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TabPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); } static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.12", 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 }, 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: { attributes: { "role": "tabpanel" }, listeners: { "@fadeInOut.done": "onAnimationDone($event)" }, properties: { "class": "hostClasses()", "tabindex": "visible() ? tabindex(): -1", "attr.aria-labelledby": "attrAriaLabelledBy()", "id": "propId()", "@.disabled": "this.animationDisabled", "@fadeInOut": "this.animateType" } }, exportAs: ["cTabPanel"], ngImport: i0, template: '<ng-content />', isInline: true, animations: [ trigger('fadeInOut', [ state('show', style({ opacity: 1 })), state('hide', style({ opacity: 0 })), state('void', style({ opacity: 0 })), transition('* => *', [query('@*', [animateChild()], { optional: true }), animate('150ms linear')]) ]) ] }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TabPanelComponent, decorators: [{ type: Component, args: [{ exportAs: 'cTabPanel', selector: 'c-tab-panel', standalone: true, template: '<ng-content />', host: { '[class]': 'hostClasses()', '[tabindex]': 'visible() ? tabindex(): -1', '[attr.aria-labelledby]': 'attrAriaLabelledBy()', '[id]': 'propId()', role: 'tabpanel' }, animations: [ trigger('fadeInOut', [ state('show', style({ opacity: 1 })), state('hide', style({ opacity: 0 })), state('void', style({ opacity: 0 })), transition('* => *', [query('@*', [animateChild()], { optional: true }), animate('150ms linear')]) ]) ] }] }], propDecorators: { animationDisabled: [{ type: HostBinding, args: ['@.disabled'] }], animateType: [{ type: HostBinding, args: ['@fadeInOut'] }], onAnimationDone: [{ type: HostListener, args: ['@fadeInOut.done', ['$event']] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy0yL3RhYi1wYW5lbC90YWItcGFuZWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFrQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEgsT0FBTyxFQUNMLFNBQVMsRUFDVCxRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUdMLGVBQWUsRUFDZixNQUFNLEVBRU4sTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUEwQjlDLE1BQU0sT0FBTyxpQkFBaUI7SUFyQjlCO1FBc0JXLGdCQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTNDOzs7O1dBSUc7UUFDTSxtQkFBYyxHQUFvQyxLQUFLLENBQXFCLFNBQVMsRUFBRTtZQUM5RixLQUFLLEVBQUUsaUJBQWlCO1NBQ3pCLENBQUMsQ0FBQztRQUVIOzs7O1dBSUc7UUFDTSxPQUFFLEdBQW9DLEtBQUssRUFBVSxDQUFDO1FBRS9EOzs7O1dBSUc7UUFDTSxZQUFPLEdBQWlDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVsRTs7OztXQUlHO1FBQ00sYUFBUSxHQUE4QyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7UUFFeEc7Ozs7V0FJRztRQUNNLGVBQVUsR0FBeUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXhEOzs7V0FHRztRQUNNLGtCQUFhLEdBQXlDLE1BQU0sRUFBc0Is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Qyx3QkFBd0IsRUFBRSxzQkFBc0I7d0JBQ2hELE1BQU0sRUFBRSxVQUFVO3dCQUNsQixJQUFJLEVBQUUsVUFBVTtxQkFDakI7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWLE9BQU8sQ0FBQyxXQUFXLEVBQUU7NEJBQ25CLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BDLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7NEJBQ3BDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO3lCQUNuRyxDQUFDO3FCQUNIO2lCQUNGOzhCQXNFSyxpQkFBaUI7c0JBRHBCLFdBQVc7dUJBQUMsWUFBWTtnQkFNckIsV0FBVztzQkFEZCxXQUFXO3VCQUFDLFlBQVk7Z0JBTXpCLGVBQWU7c0JBRGQsWUFBWTt1QkFBQyxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIGFuaW1hdGVDaGlsZCwgQW5pbWF0aW9uRXZlbnQsIHF1ZXJ5LCBzdGF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgY29tcHV0ZWQsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIGluamVjdCxcbiAgaW5wdXQsXG4gIElucHV0U2lnbmFsLFxuICBJbnB1dFNpZ25hbFdpdGhUcmFuc2Zvcm0sXG4gIG51bWJlckF0dHJpYnV0ZSxcbiAgb3V0cHV0LFxuICBPdXRwdXRFbWl0dGVyUmVmLFxuICBzaWduYWxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUYWJzU2VydmljZSB9IGZyb20gJy4uL3RhYnMuc2VydmljZSc7XG5cbnR5cGUgQW5pbWF0ZVR5cGUgPSAnaGlkZScgfCAnc2hvdyc7XG50eXBlIFZpc2libGVDaGFuZ2VFdmVudCA9IHsgaXRlbUtleTogc3RyaW5nIHwgbnVtYmVyOyB2aXNpYmxlOiBib29sZWFuIH07XG5cbkBDb21wb25lbnQoe1xuICBleHBvcnRBczogJ2NUYWJQYW5lbCcsXG4gIHNlbGVjdG9yOiAnYy10YWItcGFuZWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50IC8+JyxcbiAgaG9zdDoge1xuICAgICdbY2xhc3NdJzogJ2hvc3RDbGFzc2VzKCknLFxuICAgICdbdGFiaW5kZXhdJzogJ3Zpc2libGUoKSA/IHRhYmluZGV4KCk6IC0xJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdhdHRyQXJpYUxhYmVsbGVkQnkoKScsXG4gICAgJ1tpZF0nOiAncHJvcElkKCknLFxuICAgIHJvbGU6ICd0YWJwYW5lbCdcbiAgfSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ2ZhZGVJbk91dCcsIFtcbiAgICAgIHN0YXRlKCdzaG93Jywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcbiAgICAgIHN0YXRlKCdoaWRlJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcbiAgICAgIHN0YXRlKCd2b2lkJywgc3R5bGUoeyBvcGFjaXR5OiAwIH0pKSxcbiAgICAgIHRyYW5zaXRpb24oJyogPT4gKicsIFtxdWVyeSgnQConLCBbYW5pbWF0ZUNoaWxkKCldLCB7IG9wdGlvbmFsOiB0cnVlIH0pLCBhbmltYXRlKCcxNTBtcyBsaW5lYXInKV0pXG4gICAgXSlcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJQYW5lbENvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHRhYnNTZXJ2aWNlID0gaW5qZWN0KFRhYnNTZXJ2aWNlKTtcblxuICAvKipcbiAgICogYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZVxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBhcmlhTGFiZWxsZWRCeTogSW5wdXRTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IGlucHV0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkLCB7XG4gICAgYWxpYXM6ICdhcmlhLWxhYmVsbGVkYnknXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBFbGVtZW50IGlkIGF0dHJpYnV0ZVxuICAgKiBAdHlwZSBzdHJpbmdcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBpZDogSW5wdXRTaWduYWw8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IGlucHV0PHN0cmluZz4oKTtcblxuICAvKipcbiAgICogSXRlbSBrZXkuXG4gICAqIEB0eXBlIHN0cmluZyB8IG51bWJlclxuICAgKiBAcmVxdWlyZWRcbiAgICovXG4gIHJlYWRvbmx5IGl0ZW1LZXk6IElucHV0U2lnbmFsPHN0cmluZyB8IG51bWJlcj4gPSBpbnB1dC5yZXF1aXJlZCgpO1xuXG4gIC8qKlxuICAgKiB0YWJpbmRleCBhdHRyaWJ1dGUuXG4gICAqIEB0eXBlIG51bWJlclxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICByZWFkb25seSB0YWJpbmRleDogSW5wdXRTaWduYWxXaXRoVHJhbnNmb3JtPG51bWJlciwgdW5rbm93bj4gPSBpbnB1dCgwLCB7IHRyYW5zZm9ybTogbnVtYmVyQXR0cmlidXRlIH0pO1xuXG4gIC8qKlxuICAgKiBFbmFibGUgZmFkZSBpbiB0cmFuc2l0aW9uLlxuICAgKiBAdHlwZSBib29sZWFuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zaXRpb246IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQodHJ1ZSk7XG5cbiAgLyoqXG4gICAqIHZpc2libGUgY2hhbmdlIG91dHB1dFxuICAgKiBAdHlwZSBPdXRwdXRFbWl0dGVyUmVmPFZpc2libGVDaGFuZ2VFdmVudD5cbiAgICovXG4gIHJlYWRvbmx5IHZpc2libGVDaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8VmlzaWJsZUNoYW5nZUV2ZW50PiA9IG91dHB1dDxWaXNpYmxlQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgcmVhZG9ubHkgc2hvdyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgdmlzaWJsZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB2aXNpYmxlID0gdGhpcy50YWJzU2VydmljZS5hY3RpdmVJdGVtS2V5KCkgPT09IHRoaXMuaXRlbUtleSgpICYmICF0aGlzLnRhYnNTZXJ2aWNlLmFjdGl2ZUl0ZW0oKT8uZGlzYWJsZWQ7XG4gICAgdGhpcy52aXNpYmxlQ2hhbmdlLmVtaXQoeyBpdGVtS2V5OiB0aGlzLml0ZW1LZXkoKSwgdmlzaWJsZSB9KTtcbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcHJvcElkID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5pZCgpID8/IGAke3RoaXMudGFic1NlcnZpY2UuaWQoKX0tcGFuZWwtJHt0aGlzLml0ZW1LZXkoKX1gKTtcblxuICByZWFkb25seSBhdHRyQXJpYUxhYmVsbGVkQnkgPSBjb21wdXRlZChcbiAgICAoKSA9PiB0aGlzLmFyaWFMYWJlbGxlZEJ5KCkgPz8gYCR7dGhpcy50YWJzU2VydmljZS5pZCgpfS10YWItJHt0aGlzLml0ZW1LZXkoKX1gXG4gICk7XG5cbiAgcmVhZG9ubHkgaG9zdENsYXNzZXMgPSBjb21wdXRlZCgoKSA9PiAoe1xuICAgICd0YWItcGFuZSc6IHRydWUsXG4gICAgYWN0aXZlOiB0aGlzLnNob3coKSxcbiAgICBmYWRlOiB0aGlzLnRyYW5zaXRpb24oKSxcbiAgICBzaG93OiB0aGlzLnNob3coKSxcbiAgICBpbnZpc2libGU6IHRoaXMudGFic1NlcnZpY2UuYWN0aXZlSXRlbSgpPy5kaXNhYmxlZFxuICB9KSk7XG5cbiAgQEhvc3RCaW5kaW5nKCdALmRpc2FibGVkJylcbiAgZ2V0IGFuaW1hdGlvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy50cmFuc2l0aW9uKCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ0BmYWRlSW5PdXQnKVxuICBnZXQgYW5pbWF0ZVR5cGUoKTogQW5pbWF0ZVR5cGUge1xuICAgIHJldHVybiB0aGlzLnZpc2libGUoKSA/ICdzaG93JyA6ICdoaWRlJztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ0BmYWRlSW5PdXQuZG9uZScsIFsnJGV2ZW50J10pXG4gIG9uQW5pbWF0aW9uRG9uZSgkZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zaG93LnNldCh0aGlzLnZpc2libGUoKSk7XG4gIH1cbn1cbiJdfQ==