cax-design-system 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/avatargroup/avatargroup.d.ts +1 -7
- package/avatargroup/avatargroup.module.d.ts +9 -0
- package/avatargroup/public_api.d.ts +1 -0
- package/badge/badge.directive.d.ts +4 -2
- package/button/button.d.ts +2 -1
- package/editor/editor.d.ts +1 -8
- package/editor/editor.module.d.ts +9 -0
- package/editor/public_api.d.ts +1 -0
- package/esm2022/avatar/avatar.mjs +3 -3
- package/esm2022/avatargroup/avatargroup.mjs +5 -27
- package/esm2022/avatargroup/avatargroup.module.mjs +19 -0
- package/esm2022/avatargroup/public_api.mjs +2 -1
- package/esm2022/badge/badge.directive.mjs +20 -8
- package/esm2022/badge/badge.mjs +4 -4
- package/esm2022/button/button.mjs +5 -4
- package/esm2022/checkbox/checkbox.mjs +3 -3
- package/esm2022/dropdown/dropdown.mjs +4 -6
- package/esm2022/editor/editor.mjs +9 -120
- package/esm2022/editor/editor.module.mjs +19 -0
- package/esm2022/editor/public_api.mjs +2 -1
- package/esm2022/inputmask/inputmask.mjs +42 -108
- package/esm2022/inputmask/inputmask.module.mjs +22 -0
- package/esm2022/inputmask/public_api.mjs +2 -1
- package/esm2022/inputtext/inputtext.component.mjs +14 -8
- package/esm2022/inputtext/inputtext.directive.mjs +3 -4
- package/esm2022/messages/messages.mjs +5 -5
- package/esm2022/overlaypanel/overlaypanel.mjs +3 -3
- package/esm2022/paginator/paginator.mjs +21 -8
- package/esm2022/progressbar/progressbar.mjs +2 -2
- package/esm2022/progressspinner/progressspinner.mjs +12 -12
- package/esm2022/selectbutton/selectbutton.mjs +2 -2
- package/esm2022/sidebar/sidebar.mjs +3 -3
- package/esm2022/splitbutton/splitbutton.mjs +8 -3
- package/esm2022/splitbutton/splitbutton.module.mjs +5 -4
- package/esm2022/steps/public_api.mjs +2 -1
- package/esm2022/steps/steps.mjs +5 -143
- package/esm2022/steps/steps.module.mjs +20 -0
- package/esm2022/table/table.mjs +3 -3
- package/esm2022/tabview/tabview.mjs +28 -3
- package/esm2022/timeline/public_api.mjs +2 -1
- package/esm2022/timeline/timeline.mjs +6 -90
- package/esm2022/timeline/timeline.module.mjs +19 -0
- package/esm2022/togglebutton/togglebutton.mjs +2 -2
- package/esm2022/toggleswitch/toggleswitch.mjs +7 -4
- package/fesm2022/cax-design-system-avatar.mjs +2 -2
- package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
- package/fesm2022/cax-design-system-avatargroup.mjs +9 -15
- package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
- package/fesm2022/cax-design-system-badge.mjs +22 -10
- package/fesm2022/cax-design-system-badge.mjs.map +1 -1
- package/fesm2022/cax-design-system-button.mjs +5 -4
- package/fesm2022/cax-design-system-button.mjs.map +1 -1
- package/fesm2022/cax-design-system-checkbox.mjs +2 -2
- package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
- package/fesm2022/cax-design-system-dropdown.mjs +3 -5
- package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
- package/fesm2022/cax-design-system-editor.mjs +9 -106
- package/fesm2022/cax-design-system-editor.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputmask.mjs +40 -89
- package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
- package/fesm2022/cax-design-system-inputtext.mjs +15 -10
- package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
- package/fesm2022/cax-design-system-messages.mjs +4 -4
- package/fesm2022/cax-design-system-messages.mjs.map +1 -1
- package/fesm2022/cax-design-system-overlaypanel.mjs +2 -2
- package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
- package/fesm2022/cax-design-system-paginator.mjs +20 -7
- package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
- package/fesm2022/cax-design-system-progressbar.mjs +2 -2
- package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
- package/fesm2022/cax-design-system-progressspinner.mjs +11 -11
- package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
- package/fesm2022/cax-design-system-selectbutton.mjs +2 -2
- package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-sidebar.mjs +2 -2
- package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
- package/fesm2022/cax-design-system-splitbutton.mjs +11 -5
- package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-steps.mjs +7 -128
- package/fesm2022/cax-design-system-steps.mjs.map +1 -1
- package/fesm2022/cax-design-system-table.mjs +2 -2
- package/fesm2022/cax-design-system-table.mjs.map +1 -1
- package/fesm2022/cax-design-system-tabview.mjs +27 -2
- package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
- package/fesm2022/cax-design-system-timeline.mjs +6 -75
- package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
- package/fesm2022/cax-design-system-togglebutton.mjs +2 -2
- package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
- package/fesm2022/cax-design-system-toggleswitch.mjs +6 -3
- package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
- package/inputmask/inputmask.d.ts +12 -12
- package/inputmask/inputmask.module.d.ts +12 -0
- package/inputmask/public_api.d.ts +1 -0
- package/inputtext/inputtext.component.d.ts +6 -3
- package/messages/messages.d.ts +1 -1
- package/package.json +215 -215
- package/paginator/paginator.d.ts +4 -1
- package/progressspinner/progressspinner.d.ts +1 -1
- package/resources/cax.min.scss +1 -1
- package/resources/cax.scss +7686 -6588
- package/resources/components/avatar/avatar.scss +2 -2
- package/resources/components/avatargroup/{avatargroup.css → avatargroup.scss} +2 -2
- package/resources/components/badge/badge.scss +33 -0
- package/resources/components/button/button.scss +44 -11
- package/resources/components/dropdown/dropdown.scss +2 -18
- package/resources/components/editor/editor.scss +4 -0
- package/resources/components/inputmask/{inputmask.css → inputmask.scss} +2 -2
- package/resources/components/inputtext/inputtext.scss +21 -23
- package/resources/components/messages/messages.scss +1 -1
- package/resources/components/overlaypanel/overlaypanel.scss +4 -1
- package/resources/components/paginator/paginator.scss +4 -0
- package/resources/components/progressbar/progressbar.scss +0 -15
- package/resources/components/progressspinner/progressspinner.scss +9 -9
- package/resources/components/sidebar/sidebar.scss +1 -1
- package/resources/components/splitbutton/splitbutton.scss +6 -3
- package/resources/components/steps/{steps.css → steps.scss} +10 -9
- package/resources/components/table/table.scss +41 -1
- package/resources/components/tabview/tabview.scss +12 -8
- package/resources/components/timeline/timeline.scss +134 -0
- package/resources/components/toggleswitch/toggleswitch.scss +6 -0
- package/splitbutton/splitbutton.d.ts +1 -0
- package/splitbutton/splitbutton.module.d.ts +2 -1
- package/steps/public_api.d.ts +1 -0
- package/steps/steps.d.ts +1 -9
- package/steps/steps.module.d.ts +10 -0
- package/timeline/public_api.d.ts +1 -0
- package/timeline/timeline.d.ts +1 -8
- package/timeline/timeline.module.d.ts +9 -0
- package/toggleswitch/toggleswitch.d.ts +2 -1
- package/resources/components/editor/editor.css +0 -4
- package/resources/components/timeline/timeline.css +0 -114
|
@@ -462,6 +462,9 @@ class TabView {
|
|
|
462
462
|
// Navigate to the next tab
|
|
463
463
|
arrowRight() {
|
|
464
464
|
let nextIndex = +this.activeTabIndex + 1;
|
|
465
|
+
while (nextIndex < this.tabs.length && this.tabs[nextIndex].disabled) {
|
|
466
|
+
nextIndex++; // Skip disabled tabs
|
|
467
|
+
}
|
|
465
468
|
if (nextIndex < this.tabs.length) {
|
|
466
469
|
this.updateActiveTab(nextIndex);
|
|
467
470
|
}
|
|
@@ -469,6 +472,9 @@ class TabView {
|
|
|
469
472
|
// Navigate to the previous tab
|
|
470
473
|
arrowLeft() {
|
|
471
474
|
let prevIndex = +this.activeTabIndex - 1;
|
|
475
|
+
while (prevIndex >= 0 && this.tabs[prevIndex].disabled) {
|
|
476
|
+
prevIndex--; // Skip disabled tabs
|
|
477
|
+
}
|
|
472
478
|
// Update active tab only if prevIndex is valid
|
|
473
479
|
if (prevIndex >= 0) {
|
|
474
480
|
this.updateActiveTab(prevIndex);
|
|
@@ -496,6 +502,7 @@ class TabView {
|
|
|
496
502
|
}
|
|
497
503
|
initTabs() {
|
|
498
504
|
this.tabs = this.tabPanels.toArray();
|
|
505
|
+
let pinnedWidth = 0;
|
|
499
506
|
const pinnedTabs = this.pinnedIndexes
|
|
500
507
|
.filter((index) => index >= 0 && index < this.tabs.length)
|
|
501
508
|
.map((index) => {
|
|
@@ -509,6 +516,24 @@ class TabView {
|
|
|
509
516
|
tab.pinned = false; // Ensure non-pinned tabs are not marked as pinned
|
|
510
517
|
return tab;
|
|
511
518
|
});
|
|
519
|
+
this.tabs.forEach((tab, index) => {
|
|
520
|
+
if (this.pinnedIndexes.includes(index)) {
|
|
521
|
+
tab.pinned = true;
|
|
522
|
+
tab.closable = false; // Ensure pinned tabs are not closable
|
|
523
|
+
if (tab.icon && !tab.header) {
|
|
524
|
+
tab.headerStyle = { '--pinned-left': `${pinnedWidth}px` };
|
|
525
|
+
pinnedWidth += 56;
|
|
526
|
+
}
|
|
527
|
+
else {
|
|
528
|
+
tab.headerStyle = { '--pinned-left': `${pinnedWidth}px` }; // Set dynamic left position
|
|
529
|
+
pinnedWidth += 56;
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
else {
|
|
533
|
+
tab.pinned = false;
|
|
534
|
+
// Keep closable property unchanged for non-pinned tabs
|
|
535
|
+
}
|
|
536
|
+
});
|
|
512
537
|
this.tabs = [...pinnedTabs, ...nonPinnedTabs];
|
|
513
538
|
let selectedTab = this.findSelectedTab();
|
|
514
539
|
if (!selectedTab && this.tabs.length) {
|
|
@@ -791,13 +816,13 @@ class TabView {
|
|
|
791
816
|
content.scrollLeft = pos >= lastPos ? lastPos : pos;
|
|
792
817
|
}
|
|
793
818
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabView, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
|
|
794
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: TabView, selector: "cax-tabView", inputs: { fullMode: "fullMode", style: "style", styleClass: "styleClass", controlClose: ["controlClose", "controlClose", booleanAttribute], scrollable: ["scrollable", "scrollable", booleanAttribute], activeIndex: "activeIndex", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: ["autoHideButtons", "autoHideButtons", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], mode: "mode", pinnedIndexes: "pinnedIndexes" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "tabPanels", predicate: TabPanel }, { propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "elementToObserve", first: true, predicate: ["elementToObserve"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"pi pi-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"pi pi-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@layer cax{.cax-tabview-nav-container{position:relative}.cax-tabview-scrollable .cax-tabview-nav-container{overflow:hidden;white-space:nowrap}.cax-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.cax-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-tabview-nav li.full-mode{display:flex;justify-content:center;align-items:center;flex:1!important}.cax-tabview-nav li.full-mode cax-tabview .cax-tabview-nav li .cax-tabview-nav-link{border:none}.cax-tabview-nav li.half-mode{flex:none!important}.cax-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-tabview-ink-bar{display:none;z-index:1}.cax-tabview-nav-link:focus{z-index:1}.cax-tabview-title{line-height:1;white-space:nowrap}.cax-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-tabview-nav-prev{left:0}.cax-tabview-nav-next{right:0}.cax-tabview-nav-content::-webkit-scrollbar{display:none}.cax-tabview-close{z-index:1}.cax-segment-tabview-container{flex-direction:row;height:48px}.cax-segment-tabview-header{display:flex;align-items:center}.cax-segment-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-segment-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-segment-tabview-nav-link{z-index:1}.cax-left-arrow,.cax-right-arrow{position:sticky;top:0;z-index:100;background:transparent;border:none;cursor:pointer;font-size:1.25rem}.cax-arrow-buttons{display:flex;align-items:center;gap:5px}.cax-left-arrow,.cax-right-arrow{position:sticky;left:0;z-index:100;transition:transform .2s ease}.cax-left-arrow{left:0;padding-left:16px;margin-right:16px}.cax-right-arrow{right:0;padding-right:16px}.cax-dynamic-icon{margin-top:-5px;margin-right:10px;font-size:1.25rem;cursor:pointer}.cax-segment-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-segment-tabview-nav li.pinned{position:sticky;left:0;z-index:10}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.Tooltip, selector: "[caxTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "caxTooltip", "tooltipDisabled", "tooltipOptions", "linkUrl", "linkText"] }, { kind: "directive", type: i3.Ripple, selector: "[caxRipple]" }, { kind: "component", type: i4.TimesIcon, selector: "TimesIcon" }, { kind: "component", type: i5.ChevronLeftIcon, selector: "ChevronLeftIcon" }, { kind: "component", type: i6.ChevronRightIcon, selector: "ChevronRightIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
819
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.9", type: TabView, selector: "cax-tabView", inputs: { fullMode: "fullMode", style: "style", styleClass: "styleClass", controlClose: ["controlClose", "controlClose", booleanAttribute], scrollable: ["scrollable", "scrollable", booleanAttribute], activeIndex: "activeIndex", selectOnFocus: ["selectOnFocus", "selectOnFocus", booleanAttribute], nextButtonAriaLabel: "nextButtonAriaLabel", prevButtonAriaLabel: "prevButtonAriaLabel", autoHideButtons: ["autoHideButtons", "autoHideButtons", booleanAttribute], tabindex: ["tabindex", "tabindex", numberAttribute], mode: "mode", pinnedIndexes: "pinnedIndexes" }, outputs: { onChange: "onChange", onClose: "onClose", activeIndexChange: "activeIndexChange" }, host: { classAttribute: "cax-element" }, queries: [{ propertyName: "tabPanels", predicate: TabPanel }, { propertyName: "templates", predicate: CaxTemplate }], viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true }, { propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }, { propertyName: "prevBtn", first: true, predicate: ["prevBtn"], descendants: true }, { propertyName: "nextBtn", first: true, predicate: ["nextBtn"], descendants: true }, { propertyName: "inkbar", first: true, predicate: ["inkbar"], descendants: true }, { propertyName: "elementToObserve", first: true, predicate: ["elementToObserve"], descendants: true }], ngImport: i0, template: "<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"cax cax-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"cax cax-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@layer cax{.cax-tabview-nav-container{position:relative}.cax-tabview-scrollable .cax-tabview-nav-container{overflow:hidden;white-space:nowrap}.cax-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.cax-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-tabview-nav li.full-mode{min-height:60px;display:flex;justify-content:center;align-items:center;flex:1!important}.cax-tabview-nav li.full-mode cax-tabview .cax-tabview-nav li .cax-tabview-nav-link{border:none}.cax-tabview-nav li.half-mode{min-height:60px;display:flex;justify-content:center;align-items:center;flex:none!important}.cax-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-tabview-ink-bar{display:none;z-index:1}.cax-tabview-nav-link:focus{z-index:1}.cax-tabview-title{line-height:1;white-space:nowrap}.cax-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-tabview-nav-prev{left:0}.cax-tabview-nav-next{right:0}.cax-tabview-nav-content::-webkit-scrollbar{display:none}.cax-tabview-close{z-index:1}.cax-segment-tabview-container{flex-direction:row;height:48px}.cax-segment-tabview-header{display:flex;align-items:center;height:48px}.cax-segment-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-segment-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-segment-tabview-nav-link{z-index:1}.cax-left-arrow,.cax-right-arrow{position:sticky;top:0;z-index:100;background:transparent;border:none;cursor:pointer;font-size:1.25rem}.cax-arrow-buttons{display:flex;align-items:center;gap:16px}.cax-left-arrow,.cax-right-arrow{position:sticky;left:0;z-index:100;transition:transform .2s ease}.cax-left-arrow{left:0;padding-left:var(--space-200)}.cax-right-arrow{right:0;padding-right:var(--space-200)}.cax-dynamic-icon{font-size:1.25rem;cursor:pointer}.cax-segment-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-segment-tabview-nav li.pinned{position:sticky;left:var(--pinned-left, 0);z-index:10;background-color:var(--white-100)}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.Tooltip, selector: "[caxTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "caxTooltip", "tooltipDisabled", "tooltipOptions", "linkUrl", "linkText"] }, { kind: "directive", type: i3.Ripple, selector: "[caxRipple]" }, { kind: "component", type: i4.TimesIcon, selector: "TimesIcon" }, { kind: "component", type: i5.ChevronLeftIcon, selector: "ChevronLeftIcon" }, { kind: "component", type: i6.ChevronRightIcon, selector: "ChevronRightIcon" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
795
820
|
}
|
|
796
821
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabView, decorators: [{
|
|
797
822
|
type: Component,
|
|
798
823
|
args: [{ selector: 'cax-tabView', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
799
824
|
class: 'cax-element'
|
|
800
|
-
}, template: "<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"pi pi-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"pi pi-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@layer cax{.cax-tabview-nav-container{position:relative}.cax-tabview-scrollable .cax-tabview-nav-container{overflow:hidden;white-space:nowrap}.cax-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.cax-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-tabview-nav li.full-mode{display:flex;justify-content:center;align-items:center;flex:1!important}.cax-tabview-nav li.full-mode cax-tabview .cax-tabview-nav li .cax-tabview-nav-link{border:none}.cax-tabview-nav li.half-mode{flex:none!important}.cax-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-tabview-ink-bar{display:none;z-index:1}.cax-tabview-nav-link:focus{z-index:1}.cax-tabview-title{line-height:1;white-space:nowrap}.cax-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-tabview-nav-prev{left:0}.cax-tabview-nav-next{right:0}.cax-tabview-nav-content::-webkit-scrollbar{display:none}.cax-tabview-close{z-index:1}.cax-segment-tabview-container{flex-direction:row;height:48px}.cax-segment-tabview-header{display:flex;align-items:center}.cax-segment-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-segment-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-segment-tabview-nav-link{z-index:1}.cax-left-arrow,.cax-right-arrow{position:sticky;top:0;z-index:100;background:transparent;border:none;cursor:pointer;font-size:1.25rem}.cax-arrow-buttons{display:flex;align-items:center;gap:5px}.cax-left-arrow,.cax-right-arrow{position:sticky;left:0;z-index:100;transition:transform .2s ease}.cax-left-arrow{left:0;padding-left:16px;margin-right:16px}.cax-right-arrow{right:0;padding-right:16px}.cax-dynamic-icon{margin-top:-5px;margin-right:10px;font-size:1.25rem;cursor:pointer}.cax-segment-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-segment-tabview-nav li.pinned{position:sticky;left:0;z-index:10}}\n"] }]
|
|
825
|
+
}, template: "<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"cax cax-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"cax cax-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n", styles: ["@layer cax{.cax-tabview-nav-container{position:relative}.cax-tabview-scrollable .cax-tabview-nav-container{overflow:hidden;white-space:nowrap}.cax-tabview-nav-content{overflow-x:auto;overflow-y:hidden;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior:contain auto}.cax-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-tabview-nav li.full-mode{min-height:60px;display:flex;justify-content:center;align-items:center;flex:1!important}.cax-tabview-nav li.full-mode cax-tabview .cax-tabview-nav li .cax-tabview-nav-link{border:none}.cax-tabview-nav li.half-mode{min-height:60px;display:flex;justify-content:center;align-items:center;flex:none!important}.cax-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-tabview-ink-bar{display:none;z-index:1}.cax-tabview-nav-link:focus{z-index:1}.cax-tabview-title{line-height:1;white-space:nowrap}.cax-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-tabview-nav-prev{left:0}.cax-tabview-nav-next{right:0}.cax-tabview-nav-content::-webkit-scrollbar{display:none}.cax-tabview-close{z-index:1}.cax-segment-tabview-container{flex-direction:row;height:48px}.cax-segment-tabview-header{display:flex;align-items:center;height:48px}.cax-segment-tabview-nav{display:inline-flex;min-width:100%;margin:0;padding:0;list-style-type:none;flex:1 1 auto}.cax-segment-tabview-nav-link{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;position:relative;text-decoration:none;overflow:hidden}.cax-segment-tabview-nav-link{z-index:1}.cax-left-arrow,.cax-right-arrow{position:sticky;top:0;z-index:100;background:transparent;border:none;cursor:pointer;font-size:1.25rem}.cax-arrow-buttons{display:flex;align-items:center;gap:16px}.cax-left-arrow,.cax-right-arrow{position:sticky;left:0;z-index:100;transition:transform .2s ease}.cax-left-arrow{left:0;padding-left:var(--space-200)}.cax-right-arrow{right:0;padding-right:var(--space-200)}.cax-dynamic-icon{font-size:1.25rem;cursor:pointer}.cax-segment-tabview-nav-btn{position:absolute;top:0;z-index:2;height:100%;display:flex;align-items:center;justify-content:center}.cax-segment-tabview-nav li.pinned{position:sticky;left:var(--pinned-left, 0);z-index:10;background-color:var(--white-100)}}\n"] }]
|
|
801
826
|
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
802
827
|
type: Inject,
|
|
803
828
|
args: [PLATFORM_ID]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cax-design-system-tabview.mjs","sources":["../../src/app/components/tabview/tabview.ts","../../src/app/components/tabview/tabpanel.html","../../src/app/components/tabview/tabview.html","../../src/app/components/tabview/tabview.module.ts","../../src/app/components/tabview/cax-design-system-tabview.ts"],"sourcesContent":["import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute,\n signal\n} from '@angular/core';\nimport { BlockableUI, CaxTemplate } from 'cax-design-system/api';\nimport { DomHandler } from 'cax-design-system/dom';\nimport { Subscription } from 'rxjs';\nimport { TabViewChangeEvent, TabViewCloseEvent } from './tabview.interface';\nimport { UniqueComponentId } from 'cax-design-system/utils';\nimport { Nullable } from 'cax-design-system/ts-helpers';\n\n/**\n * TabPanel is a helper component for TabView component.\n * @group Components\n */\n@Component({\n selector: 'cax-tabPanel',\n templateUrl: `./tabpanel.html`,\n host: {\n class: 'cax-element'\n }\n})\nexport class TabPanel implements AfterContentInit, OnDestroy {\n /**\n * Defines if tab can be removed.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) closable: boolean | undefined = false;\n /**\n * Inline style of the tab header.\n * @group Props\n */\n @Input() get headerStyle(): { [klass: string]: any } | null | undefined {\n return this._headerStyle;\n }\n set headerStyle(headerStyle: { [klass: string]: any } | null | undefined) {\n this._headerStyle = headerStyle;\n this.tabView.cd.markForCheck();\n }\n /**\n * Style class of the tab header.\n * @group Props\n */\n @Input() get headerStyleClass(): string | undefined {\n return this._headerStyleClass;\n }\n set headerStyleClass(headerStyleClass: string | undefined) {\n this._headerStyleClass = headerStyleClass;\n this.tabView.cd.markForCheck();\n }\n /**\n * Whether a lazy loaded panel should avoid getting loaded again on reselection.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) cache: boolean | undefined = true;\n /**\n * Advisory information to display in a tooltip on hover.\n * @group Props\n */\n @Input() tooltip: string | undefined;\n /**\n * Position of the tooltip.\n * @group Props\n */\n @Input() tooltipPosition: 'top' | 'bottom' | 'left' | 'right' | undefined = 'top';\n /**\n * Type of CSS position.\n * @group Props\n */\n @Input() tooltipPositionStyle: string | undefined = 'absolute';\n /**\n * Style class of the tooltip.\n * @group Props\n */\n @Input() tooltipStyleClass: string | undefined;\n /**\n * Defines if tab is active.\n * @defaultValue false\n * @group Props\n */\n @Input() get selected(): boolean {\n return !!this._selected;\n }\n set selected(val: boolean) {\n this._selected = val;\n\n if (!this.loaded) {\n this.cd.detectChanges();\n }\n\n if (val) this.loaded = true;\n }\n /**\n * When true, tab cannot be activated.\n * @defaultValue false\n * @group Props\n */\n @Input() get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.tabView.cd.markForCheck();\n }\n @Input() get pinned(): boolean {\n return !!this._pinned;\n }\n set pinned(pinned: boolean) {\n this._pinned = pinned;\n this.tabView.cd.markForCheck();\n }\n /**\n * Title of the tabPanel.\n * @group Props\n */\n @Input() get header(): string {\n return this._header;\n }\n set header(header: string) {\n this._header = header;\n\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.tabView.updateInkBar();\n this.tabView.cd.markForCheck();\n });\n }\n @Input() get icon(): string {\n return this._icon;\n }\n\n set icon(icon: string) {\n this._icon = icon;\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.tabView.updateInkBar();\n this.tabView.cd.markForCheck();\n });\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `lefticon` template instead.\n */\n @Input() get leftIcon(): string {\n return this._leftIcon;\n }\n set leftIcon(leftIcon: string) {\n this._leftIcon = leftIcon;\n this.tabView.cd.markForCheck();\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `righticon` template instead.\n */\n @Input() get rightIcon(): string | undefined {\n return this._rightIcon;\n }\n set rightIcon(rightIcon: string | undefined) {\n this._rightIcon = rightIcon;\n this.tabView.cd.markForCheck();\n }\n\n @ContentChildren(CaxTemplate) templates: QueryList<CaxTemplate> | undefined;\n\n closed: boolean = false;\n\n view: EmbeddedViewRef<any> | null = null;\n\n _headerStyle: { [klass: string]: any } | null | undefined;\n\n _headerStyleClass: string | undefined;\n\n _selected: boolean | undefined;\n\n _disabled: boolean | undefined;\n _pinned: boolean | undefined;\n\n _header!: string;\n\n _icon!: string;\n\n _leftIcon!: string;\n\n _rightIcon: string | undefined = undefined;\n\n loaded: boolean = false;\n\n public id: string | undefined;\n\n contentTemplate: TemplateRef<any> | undefined;\n\n headerTemplate: TemplateRef<any> | undefined;\n\n headerIcon: TemplateRef<any> | undefined;\n\n leftIconTemplate: TemplateRef<any> | undefined;\n\n rightIconTemplate: TemplateRef<any> | undefined;\n\n closeIconTemplate: TemplateRef<any> | undefined;\n\n tabView: TabView;\n\n constructor(\n @Inject(forwardRef(() => TabView)) tabView: TabView,\n public el: ElementRef,\n public viewContainer: ViewContainerRef,\n public cd: ChangeDetectorRef\n ) {\n this.tabView = tabView as TabView;\n this.id = UniqueComponentId();\n }\n\n ngAfterContentInit() {\n (this.templates as QueryList<CaxTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'icon':\n this.headerIcon = item.template;\n break;\n\n case 'content':\n this.contentTemplate = item.template;\n break;\n\n case 'righticon':\n this.rightIconTemplate = item.template;\n break;\n\n case 'lefticon':\n this.leftIconTemplate = item.template;\n break;\n\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n\n ngOnDestroy() {\n this.view = null;\n }\n}\n/**\n * TabView is a container component to group content with tabs.\n * @group Components\n */\n@Component({\n selector: 'cax-tabView',\n templateUrl: `./tabview.html`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tabview.scss'],\n host: {\n class: 'cax-element'\n }\n})\nexport class TabView implements AfterContentInit, AfterViewChecked, OnDestroy, BlockableUI {\n @Input() fullMode: boolean = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * Whether tab close is controlled at onClose event or not.\n * @defaultValue false\n * @group Props\n */\n @Input({ transform: booleanAttribute }) controlClose: boolean | undefined;\n /**\n * When enabled displays buttons at each side of the tab headers to scroll the tab list.\n * @defaultValue false\n * @group Props\n */\n @Input({ transform: booleanAttribute }) scrollable: boolean | undefined;\n /**\n * Index of the active tab to change selected tab programmatically.\n * @group Props\n */\n @Input() get activeIndex(): number {\n return this._activeIndex;\n }\n set activeIndex(val: number) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n\n if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n (this.findSelectedTab() as TabPanel).selected = false;\n this.activeTabIndex = this._activeIndex;\n this.tabs[this._activeIndex].selected = true;\n this.tabChanged = true;\n\n this.updateScrollBar(val);\n }\n }\n /**\n * When enabled, the focused tab is activated.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) selectOnFocus: boolean = false;\n /**\n * Used to define a string aria label attribute the forward navigation button.\n * @group Props\n */\n @Input() nextButtonAriaLabel: string | undefined;\n /**\n * Used to define a string aria label attribute the backward navigation button.\n * @group Props\n */\n @Input() prevButtonAriaLabel: string | undefined;\n /**\n * When activated, navigation buttons will automatically hide or show based on the available space within the container.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autoHideButtons: boolean = true;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number = 0;\n /**\n * Callback to invoke on tab change.\n * @param {TabViewChangeEvent} event - Custom tab change event\n * @group Emits\n */\n @Output() onChange: EventEmitter<TabViewChangeEvent> = new EventEmitter<TabViewChangeEvent>();\n /**\n * Callback to invoke on tab close.\n * @param {TabViewCloseEvent} event - Custom tab close event\n * @group Emits\n */\n @Output() onClose: EventEmitter<TabViewCloseEvent> = new EventEmitter<TabViewCloseEvent>();\n /**\n * Callback to invoke on the active tab change.\n * @param {number} index - New active index\n * @group Emits\n */\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n @ViewChild('content') content?: ElementRef<HTMLDivElement>;\n\n @ViewChild('navbar') navbar?: ElementRef<HTMLUListElement>;\n\n @ViewChild('prevBtn') prevBtn?: ElementRef;\n\n @ViewChild('nextBtn') nextBtn?: ElementRef;\n\n @ViewChild('inkbar') inkbar?: ElementRef;\n\n @ContentChildren(TabPanel) tabPanels: QueryList<TabPanel> | undefined;\n\n @ContentChildren(CaxTemplate) templates: QueryList<CaxTemplate> | undefined;\n\n @Input() mode: 'line' | 'segment';\n @Input() pinnedIndexes: number[] = [];\n initialized: boolean | undefined;\n\n tabs!: TabPanel[];\n\n _activeIndex!: number;\n activeTabIndex = 0; // Keeps track of the active tab\n\n preventActiveIndexPropagation!: boolean;\n\n tabChanged: boolean | undefined;\n\n backwardIsDisabled: boolean = true;\n\n forwardIsDisabled: boolean = false;\n\n private tabChangesSubscription!: Subscription;\n\n nextIconTemplate: TemplateRef<any> | undefined;\n\n previousIconTemplate: TemplateRef<any> | undefined;\n\n resizeObserver: Nullable<ResizeObserver>;\n\n container: HTMLDivElement | undefined;\n\n list: HTMLUListElement | undefined;\n\n buttonVisible: boolean;\n\n @ViewChild('elementToObserve') elementToObserve: ElementRef;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public cd: ChangeDetectorRef,\n private renderer: Renderer2\n ) {}\n\n ngAfterContentInit() {\n this.initTabs();\n\n this.tabChangesSubscription = (this.tabPanels as QueryList<TabPanel>).changes.subscribe((_) => {\n this.initTabs();\n this.refreshButtonState();\n this.callResizeObserver();\n });\n\n (this.templates as QueryList<CaxTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'previousicon':\n this.previousIconTemplate = item.template;\n break;\n\n case 'nexticon':\n this.nextIconTemplate = item.template;\n break;\n }\n });\n }\n\n callResizeObserver() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.autoHideButtons) {\n this.bindResizeObserver();\n }\n }\n }\n\n ngAfterViewInit() {\n this.callResizeObserver();\n this.checkScrollableTabs();\n if (isPlatformBrowser(this.platformId)) {\n window.addEventListener('resize', this.handleResize);\n }\n }\n handleResize = () => {\n this.updateInkBar();\n };\n\n bindResizeObserver() {\n this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"navcontent\"]');\n this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"nav\"]');\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n this.buttonVisible = true;\n } else {\n this.buttonVisible = false;\n }\n this.updateButtonState();\n this.cd.detectChanges();\n });\n this.resizeObserver.observe(this.container);\n }\n\n unbindResizeObserver() {\n this.resizeObserver.unobserve(this.elementToObserve.nativeElement);\n this.resizeObserver = null;\n }\n\n ngAfterViewChecked() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.fullMode) this.updateInkBar();\n if (this.tabChanged) {\n this.updateInkBar();\n this.tabChanged = false;\n }\n }\n }\n\n // Navigate to the next tab\n arrowRight() {\n let nextIndex = +this.activeTabIndex + 1;\n\n if (nextIndex < this.tabs.length) {\n this.updateActiveTab(nextIndex);\n }\n }\n\n // Navigate to the previous tab\n arrowLeft() {\n let prevIndex = +this.activeTabIndex - 1;\n // Update active tab only if prevIndex is valid\n if (prevIndex >= 0) {\n this.updateActiveTab(prevIndex);\n }\n }\n\n // Update active tab\n updateActiveTab(index: number) {\n this.tabs[this.activeTabIndex].selected = false;\n this.activeTabIndex = index;\n this.tabs[this.activeTabIndex].selected = true;\n }\n\n ngOnDestroy(): void {\n if (this.tabChangesSubscription) {\n this.tabChangesSubscription.unsubscribe();\n }\n\n if (this.resizeObserver) {\n this.unbindResizeObserver();\n }\n }\n\n getTabHeaderActionId(tabId) {\n return `${tabId}_header_action`;\n }\n\n getTabContentId(tabId) {\n return `${tabId}_content`;\n }\n\n initTabs(): void {\n this.tabs = (this.tabPanels as QueryList<TabPanel>).toArray();\n const pinnedTabs = this.pinnedIndexes\n .filter((index) => index >= 0 && index < this.tabs.length)\n .map((index) => {\n const tab = this.tabs[index];\n tab.pinned = true; // Mark these tabs as pinned\n return tab;\n });\n\n const nonPinnedTabs = this.tabs\n .filter((_, index) => !this.pinnedIndexes.includes(index))\n .map((tab) => {\n tab.pinned = false; // Ensure non-pinned tabs are not marked as pinned\n return tab;\n });\n\n this.tabs = [...pinnedTabs, ...nonPinnedTabs];\n let selectedTab: TabPanel = this.findSelectedTab() as TabPanel;\n if (!selectedTab && this.tabs.length) {\n if (this.activeIndex != null && this.tabs.length > this.activeIndex) {\n this.activeTabIndex = this.activeIndex;\n this.tabs[this.activeIndex].selected = true;\n } else {\n this.activeTabIndex = 0;\n this.tabs[0].selected = true;\n }\n\n this.tabChanged = true;\n }\n\n this.cd.markForCheck();\n }\n\n onTabKeyDown(event: KeyboardEvent, tab: TabPanel): void {\n switch (event.code) {\n case 'ArrowLeft':\n this.onTabArrowLeftKey(event);\n break;\n\n case 'ArrowRight':\n this.onTabArrowRightKey(event);\n break;\n\n case 'Home':\n this.onTabHomeKey(event);\n break;\n\n case 'End':\n this.onTabEndKey(event);\n break;\n\n case 'PageDown':\n this.onTabEndKey(event);\n break;\n\n case 'PageUp':\n this.onTabHomeKey(event);\n break;\n\n case 'Enter':\n case 'Space':\n this.open(event, tab);\n break;\n\n default:\n break;\n }\n }\n\n onTabArrowLeftKey(event: KeyboardEvent) {\n const prevHeaderAction = this.findPrevHeaderAction((<HTMLElement>event.target).parentElement);\n const index = DomHandler.getAttribute(prevHeaderAction, 'data-pc-index');\n\n prevHeaderAction ? this.changeFocusedTab(event, prevHeaderAction, index) : this.onTabEndKey(event);\n event.preventDefault();\n }\n\n onTabArrowRightKey(event: KeyboardEvent) {\n const nextHeaderAction = this.findNextHeaderAction((<HTMLElement>event.target).parentElement);\n const index = DomHandler.getAttribute(nextHeaderAction, 'data-pc-index');\n\n nextHeaderAction ? this.changeFocusedTab(event, nextHeaderAction, index) : this.onTabHomeKey(event);\n event.preventDefault();\n }\n\n onTabHomeKey(event: KeyboardEvent) {\n const firstHeaderAction = this.findFirstHeaderAction();\n const index = DomHandler.getAttribute(firstHeaderAction, 'data-pc-index');\n\n this.changeFocusedTab(event, firstHeaderAction, index);\n event.preventDefault();\n }\n\n onTabEndKey(event: KeyboardEvent) {\n const lastHeaderAction = this.findLastHeaderAction();\n const index = DomHandler.getAttribute(lastHeaderAction, 'data-pc-index');\n\n this.changeFocusedTab(event, lastHeaderAction, index);\n event.preventDefault();\n }\n\n changeFocusedTab(event: KeyboardEvent, element: any, index: number) {\n if (element) {\n DomHandler.focus(element);\n element.scrollIntoView({ block: 'nearest' });\n\n if (this.selectOnFocus) {\n const tab = this.tabs[index];\n this.open(event, tab);\n }\n }\n }\n\n findNextHeaderAction(tabElement: any, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.nextElementSibling;\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-cax-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findNextHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n\n findPrevHeaderAction(tabElement: any, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.previousElementSibling;\n\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-cax-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findPrevHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n\n findFirstHeaderAction() {\n const firstEl = this.navbar.nativeElement.firstElementChild;\n return this.findNextHeaderAction(firstEl, true);\n }\n\n findLastHeaderAction() {\n const lastEl = this.navbar.nativeElement.lastElementChild;\n const lastHeaderAction = DomHandler.getAttribute(lastEl, 'data-pc-section') === 'inkbar' ? lastEl.previousElementSibling : lastEl;\n return this.findPrevHeaderAction(lastHeaderAction, true);\n }\n\n open(event: Event, tab: TabPanel) {\n if (tab.disabled) {\n if (event) {\n event.preventDefault();\n }\n return;\n }\n\n if (!tab.selected) {\n let selectedTab: TabPanel = this.findSelectedTab() as TabPanel;\n if (selectedTab) {\n selectedTab.selected = false;\n }\n\n this.tabChanged = true;\n tab.selected = true;\n let selectedTabIndex = this.findTabIndex(tab);\n if (selectedTabIndex !== this.activeTabIndex) {\n this.updateActiveTab(selectedTabIndex);\n }\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(selectedTabIndex);\n this.onChange.emit({ originalEvent: event, index: selectedTabIndex });\n\n this.updateScrollBar(selectedTabIndex);\n }\n\n if (event) {\n event.preventDefault();\n }\n }\n\n close(event: Event, tab: TabPanel) {\n if (this.controlClose) {\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab),\n close: () => {\n this.closeTab(tab);\n }\n });\n } else {\n this.closeTab(tab);\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab)\n });\n }\n }\n\n closeTab(tab: TabPanel) {\n if (tab.disabled) {\n return;\n }\n if (tab.selected) {\n this.tabChanged = true;\n tab.selected = false;\n for (let i = 0; i < this.tabs.length; i++) {\n let tabPanel = this.tabs[i];\n if (!tabPanel.closed && !tab.disabled) {\n tabPanel.selected = true;\n break;\n }\n }\n }\n\n tab.closed = true;\n setTimeout(() => {\n this.updateInkBar();\n });\n }\n\n findSelectedTab(): TabPanel | null {\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].selected) {\n return this.tabs[i];\n }\n }\n return null;\n }\n\n findTabIndex(tab: TabPanel) {\n let index = -1;\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i] == tab) {\n index = i;\n break;\n }\n }\n return index;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n updateInkBar() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.navbar) {\n const tabHeader: HTMLElement | null = DomHandler.findSingle(this.navbar.nativeElement, 'li.cax-highlight');\n\n if (!tabHeader) {\n return;\n }\n if (this.inkbar) {\n if (this.fullMode) {\n const inkbarElement = (this.inkbar as ElementRef).nativeElement;\n // Recalculate the width and position relative to the navbar\n const tabWidth = DomHandler.getWidth(tabHeader);\n const tabOffsetLeft = DomHandler.getOffset(tabHeader).left;\n const navbarOffsetLeft = DomHandler.getOffset(this.navbar.nativeElement).left;\n\n // Dynamically set the width and position\n inkbarElement.style.width = `${tabWidth}px`;\n inkbarElement.style.left = `${tabOffsetLeft - navbarOffsetLeft}px`;\n } else {\n (this.inkbar as ElementRef).nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n (this.inkbar as ElementRef).nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n }\n }\n }\n }\n }\n\n updateScrollBar(index: number) {\n let tabHeader = (this.navbar as ElementRef).nativeElement.children[index];\n\n if (tabHeader) {\n tabHeader.scrollIntoView({ block: 'nearest' });\n }\n }\n\n updateButtonState() {\n const content = (this.content as ElementRef).nativeElement;\n const { scrollLeft, scrollWidth } = content;\n const width = DomHandler.getWidth(content);\n\n this.backwardIsDisabled = scrollLeft === 0;\n this.forwardIsDisabled = Math.round(scrollLeft) === scrollWidth - width;\n }\n\n refreshButtonState() {\n this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"navcontent\"]');\n this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"nav\"]');\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n this.buttonVisible = true;\n } else {\n this.buttonVisible = false;\n }\n this.updateButtonState();\n this.cd.markForCheck();\n }\n }\n\n onScroll(event: Event) {\n this.scrollable && this.updateButtonState();\n const scrollLeft = (event.target as HTMLElement).scrollLeft;\n\n // Adjust the margin or transform of the fixed elements\n const offset = Math.min(scrollLeft, 50); // Limit the offset to a maximum value (e.g., 50px)\n\n // Adjust the styles for fixed elements\n const pinnedElements = document.querySelectorAll('.cax-left-arrow, .cax-right-arrow, .cax-tabview-nav-content, .cax-line, .cax-segment') as NodeListOf<HTMLElement>;\n pinnedElements.forEach((element) => {\n element.style.transform = `translateX(${offset}px)`;\n });\n this.checkScrollableTabs(); // Check and update padding\n event.preventDefault();\n }\n\n checkScrollableTabs() {\n if (!this.content) return;\n\n const tabContainer = this.content.nativeElement;\n if (tabContainer.scrollWidth > tabContainer.clientWidth) {\n tabContainer.classList.add('scrollable-tabs');\n } else {\n tabContainer.classList.remove('scrollable-tabs');\n }\n }\n\n getVisibleButtonWidths() {\n return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);\n }\n\n navBackward() {\n const content = (this.content as ElementRef).nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n\n navForward() {\n const content = (this.content as ElementRef).nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n}\n","<div *ngIf=\"!closed\" class=\"cax-tabview-panel\" role=\"tabpanel\" [hidden]=\"!selected\" [attr.id]=\"tabView.getTabContentId(id)\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"tabView.getTabHeaderActionId(id)\" [attr.data-pc-name]=\"'tabpanel'\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </ng-container>\r\n</div>\r\n","<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"pi pi-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"pi pi-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from 'cax-design-system/api';\nimport { ChevronLeftIcon } from 'cax-design-system/icons/chevronleft';\nimport { ChevronRightIcon } from 'cax-design-system/icons/chevronright';\nimport { TimesIcon } from 'cax-design-system/icons/times';\nimport { RippleModule } from 'cax-design-system/ripple';\nimport { TooltipModule } from 'cax-design-system/tooltip';\nimport { TabPanel, TabView } from './tabview';\n\n@NgModule({\n imports: [CommonModule, SharedModule, TooltipModule, RippleModule, TimesIcon, ChevronLeftIcon, ChevronRightIcon],\n exports: [TabView, TabPanel, SharedModule],\n declarations: [TabView, TabPanel]\n})\nexport class TabViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cax-design-system-tabview.mjs","sources":["../../src/app/components/tabview/tabview.ts","../../src/app/components/tabview/tabpanel.html","../../src/app/components/tabview/tabview.html","../../src/app/components/tabview/tabview.module.ts","../../src/app/components/tabview/cax-design-system-tabview.ts"],"sourcesContent":["import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n ViewEncapsulation,\n booleanAttribute,\n forwardRef,\n numberAttribute,\n signal\n} from '@angular/core';\nimport { BlockableUI, CaxTemplate } from 'cax-design-system/api';\nimport { DomHandler } from 'cax-design-system/dom';\nimport { Subscription } from 'rxjs';\nimport { TabViewChangeEvent, TabViewCloseEvent } from './tabview.interface';\nimport { UniqueComponentId } from 'cax-design-system/utils';\nimport { Nullable } from 'cax-design-system/ts-helpers';\n\n/**\n * TabPanel is a helper component for TabView component.\n * @group Components\n */\n@Component({\n selector: 'cax-tabPanel',\n templateUrl: `./tabpanel.html`,\n host: {\n class: 'cax-element'\n }\n})\nexport class TabPanel implements AfterContentInit, OnDestroy {\n /**\n * Defines if tab can be removed.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) closable: boolean | undefined = false;\n /**\n * Inline style of the tab header.\n * @group Props\n */\n @Input() get headerStyle(): { [klass: string]: any } | null | undefined {\n return this._headerStyle;\n }\n set headerStyle(headerStyle: { [klass: string]: any } | null | undefined) {\n this._headerStyle = headerStyle;\n this.tabView.cd.markForCheck();\n }\n /**\n * Style class of the tab header.\n * @group Props\n */\n @Input() get headerStyleClass(): string | undefined {\n return this._headerStyleClass;\n }\n set headerStyleClass(headerStyleClass: string | undefined) {\n this._headerStyleClass = headerStyleClass;\n this.tabView.cd.markForCheck();\n }\n /**\n * Whether a lazy loaded panel should avoid getting loaded again on reselection.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) cache: boolean | undefined = true;\n /**\n * Advisory information to display in a tooltip on hover.\n * @group Props\n */\n @Input() tooltip: string | undefined;\n /**\n * Position of the tooltip.\n * @group Props\n */\n @Input() tooltipPosition: 'top' | 'bottom' | 'left' | 'right' | undefined = 'top';\n /**\n * Type of CSS position.\n * @group Props\n */\n @Input() tooltipPositionStyle: string | undefined = 'absolute';\n /**\n * Style class of the tooltip.\n * @group Props\n */\n @Input() tooltipStyleClass: string | undefined;\n /**\n * Defines if tab is active.\n * @defaultValue false\n * @group Props\n */\n @Input() get selected(): boolean {\n return !!this._selected;\n }\n set selected(val: boolean) {\n this._selected = val;\n\n if (!this.loaded) {\n this.cd.detectChanges();\n }\n\n if (val) this.loaded = true;\n }\n /**\n * When true, tab cannot be activated.\n * @defaultValue false\n * @group Props\n */\n @Input() get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(disabled: boolean) {\n this._disabled = disabled;\n this.tabView.cd.markForCheck();\n }\n @Input() get pinned(): boolean {\n return !!this._pinned;\n }\n set pinned(pinned: boolean) {\n this._pinned = pinned;\n this.tabView.cd.markForCheck();\n }\n /**\n * Title of the tabPanel.\n * @group Props\n */\n @Input() get header(): string {\n return this._header;\n }\n set header(header: string) {\n this._header = header;\n\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.tabView.updateInkBar();\n this.tabView.cd.markForCheck();\n });\n }\n @Input() get icon(): string {\n return this._icon;\n }\n\n set icon(icon: string) {\n this._icon = icon;\n // We have to wait for the rendering and then retrieve the actual size element from the DOM.\n // in future `Promise.resolve` can be changed to `queueMicrotask` (if ie11 support will be dropped)\n Promise.resolve().then(() => {\n this.tabView.updateInkBar();\n this.tabView.cd.markForCheck();\n });\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `lefticon` template instead.\n */\n @Input() get leftIcon(): string {\n return this._leftIcon;\n }\n set leftIcon(leftIcon: string) {\n this._leftIcon = leftIcon;\n this.tabView.cd.markForCheck();\n }\n /**\n * Left icon of the tabPanel.\n * @group Props\n * @deprecated since v15.4.2, use `righticon` template instead.\n */\n @Input() get rightIcon(): string | undefined {\n return this._rightIcon;\n }\n set rightIcon(rightIcon: string | undefined) {\n this._rightIcon = rightIcon;\n this.tabView.cd.markForCheck();\n }\n\n @ContentChildren(CaxTemplate) templates: QueryList<CaxTemplate> | undefined;\n\n closed: boolean = false;\n\n view: EmbeddedViewRef<any> | null = null;\n\n _headerStyle: { [klass: string]: any } | null | undefined;\n\n _headerStyleClass: string | undefined;\n\n _selected: boolean | undefined;\n\n _disabled: boolean | undefined;\n _pinned: boolean | undefined;\n\n _header!: string;\n\n _icon!: string;\n\n _leftIcon!: string;\n\n _rightIcon: string | undefined = undefined;\n\n loaded: boolean = false;\n\n public id: string | undefined;\n\n contentTemplate: TemplateRef<any> | undefined;\n\n headerTemplate: TemplateRef<any> | undefined;\n\n headerIcon: TemplateRef<any> | undefined;\n\n leftIconTemplate: TemplateRef<any> | undefined;\n\n rightIconTemplate: TemplateRef<any> | undefined;\n\n closeIconTemplate: TemplateRef<any> | undefined;\n\n tabView: TabView;\n\n constructor(\n @Inject(forwardRef(() => TabView)) tabView: TabView,\n public el: ElementRef,\n public viewContainer: ViewContainerRef,\n public cd: ChangeDetectorRef\n ) {\n this.tabView = tabView as TabView;\n this.id = UniqueComponentId();\n }\n\n ngAfterContentInit() {\n (this.templates as QueryList<CaxTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'icon':\n this.headerIcon = item.template;\n break;\n\n case 'content':\n this.contentTemplate = item.template;\n break;\n\n case 'righticon':\n this.rightIconTemplate = item.template;\n break;\n\n case 'lefticon':\n this.leftIconTemplate = item.template;\n break;\n\n case 'closeicon':\n this.closeIconTemplate = item.template;\n break;\n\n default:\n this.contentTemplate = item.template;\n break;\n }\n });\n }\n\n ngOnDestroy() {\n this.view = null;\n }\n}\n/**\n * TabView is a container component to group content with tabs.\n * @group Components\n */\n@Component({\n selector: 'cax-tabView',\n templateUrl: `./tabview.html`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styleUrls: ['./tabview.scss'],\n host: {\n class: 'cax-element'\n }\n})\nexport class TabView implements AfterContentInit, AfterViewChecked, OnDestroy, BlockableUI {\n @Input() fullMode: boolean = false;\n /**\n * Inline style of the component.\n * @group Props\n */\n @Input() style: { [klass: string]: any } | null | undefined;\n /**\n * Style class of the component.\n * @group Props\n */\n @Input() styleClass: string | undefined;\n /**\n * Whether tab close is controlled at onClose event or not.\n * @defaultValue false\n * @group Props\n */\n @Input({ transform: booleanAttribute }) controlClose: boolean | undefined;\n /**\n * When enabled displays buttons at each side of the tab headers to scroll the tab list.\n * @defaultValue false\n * @group Props\n */\n @Input({ transform: booleanAttribute }) scrollable: boolean | undefined;\n /**\n * Index of the active tab to change selected tab programmatically.\n * @group Props\n */\n @Input() get activeIndex(): number {\n return this._activeIndex;\n }\n set activeIndex(val: number) {\n this._activeIndex = val;\n if (this.preventActiveIndexPropagation) {\n this.preventActiveIndexPropagation = false;\n return;\n }\n\n if (this.tabs && this.tabs.length && this._activeIndex != null && this.tabs.length > this._activeIndex) {\n (this.findSelectedTab() as TabPanel).selected = false;\n this.activeTabIndex = this._activeIndex;\n this.tabs[this._activeIndex].selected = true;\n this.tabChanged = true;\n\n this.updateScrollBar(val);\n }\n }\n /**\n * When enabled, the focused tab is activated.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) selectOnFocus: boolean = false;\n /**\n * Used to define a string aria label attribute the forward navigation button.\n * @group Props\n */\n @Input() nextButtonAriaLabel: string | undefined;\n /**\n * Used to define a string aria label attribute the backward navigation button.\n * @group Props\n */\n @Input() prevButtonAriaLabel: string | undefined;\n /**\n * When activated, navigation buttons will automatically hide or show based on the available space within the container.\n * @group Props\n */\n @Input({ transform: booleanAttribute }) autoHideButtons: boolean = true;\n /**\n * Index of the element in tabbing order.\n * @group Props\n */\n @Input({ transform: numberAttribute }) tabindex: number = 0;\n /**\n * Callback to invoke on tab change.\n * @param {TabViewChangeEvent} event - Custom tab change event\n * @group Emits\n */\n @Output() onChange: EventEmitter<TabViewChangeEvent> = new EventEmitter<TabViewChangeEvent>();\n /**\n * Callback to invoke on tab close.\n * @param {TabViewCloseEvent} event - Custom tab close event\n * @group Emits\n */\n @Output() onClose: EventEmitter<TabViewCloseEvent> = new EventEmitter<TabViewCloseEvent>();\n /**\n * Callback to invoke on the active tab change.\n * @param {number} index - New active index\n * @group Emits\n */\n @Output() activeIndexChange: EventEmitter<number> = new EventEmitter<number>();\n\n @ViewChild('content') content?: ElementRef<HTMLDivElement>;\n\n @ViewChild('navbar') navbar?: ElementRef<HTMLUListElement>;\n\n @ViewChild('prevBtn') prevBtn?: ElementRef;\n\n @ViewChild('nextBtn') nextBtn?: ElementRef;\n\n @ViewChild('inkbar') inkbar?: ElementRef;\n\n @ContentChildren(TabPanel) tabPanels: QueryList<TabPanel> | undefined;\n\n @ContentChildren(CaxTemplate) templates: QueryList<CaxTemplate> | undefined;\n\n @Input() mode: 'line' | 'segment';\n @Input() pinnedIndexes: number[] = [];\n initialized: boolean | undefined;\n\n tabs!: TabPanel[];\n\n _activeIndex!: number;\n activeTabIndex = 0; // Keeps track of the active tab\n\n preventActiveIndexPropagation!: boolean;\n\n tabChanged: boolean | undefined;\n\n backwardIsDisabled: boolean = true;\n\n forwardIsDisabled: boolean = false;\n\n private tabChangesSubscription!: Subscription;\n\n nextIconTemplate: TemplateRef<any> | undefined;\n\n previousIconTemplate: TemplateRef<any> | undefined;\n\n resizeObserver: Nullable<ResizeObserver>;\n\n container: HTMLDivElement | undefined;\n\n list: HTMLUListElement | undefined;\n\n buttonVisible: boolean;\n\n @ViewChild('elementToObserve') elementToObserve: ElementRef;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public el: ElementRef,\n public cd: ChangeDetectorRef,\n private renderer: Renderer2\n ) {}\n\n ngAfterContentInit() {\n this.initTabs();\n\n this.tabChangesSubscription = (this.tabPanels as QueryList<TabPanel>).changes.subscribe((_) => {\n this.initTabs();\n this.refreshButtonState();\n this.callResizeObserver();\n });\n\n (this.templates as QueryList<CaxTemplate>).forEach((item) => {\n switch (item.getType()) {\n case 'previousicon':\n this.previousIconTemplate = item.template;\n break;\n\n case 'nexticon':\n this.nextIconTemplate = item.template;\n break;\n }\n });\n }\n\n callResizeObserver() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.autoHideButtons) {\n this.bindResizeObserver();\n }\n }\n }\n\n ngAfterViewInit() {\n this.callResizeObserver();\n this.checkScrollableTabs();\n if (isPlatformBrowser(this.platformId)) {\n window.addEventListener('resize', this.handleResize);\n }\n }\n handleResize = () => {\n this.updateInkBar();\n };\n\n bindResizeObserver() {\n this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"navcontent\"]');\n this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"nav\"]');\n\n this.resizeObserver = new ResizeObserver(() => {\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n this.buttonVisible = true;\n } else {\n this.buttonVisible = false;\n }\n this.updateButtonState();\n this.cd.detectChanges();\n });\n this.resizeObserver.observe(this.container);\n }\n\n unbindResizeObserver() {\n this.resizeObserver.unobserve(this.elementToObserve.nativeElement);\n this.resizeObserver = null;\n }\n\n ngAfterViewChecked() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.fullMode) this.updateInkBar();\n if (this.tabChanged) {\n this.updateInkBar();\n this.tabChanged = false;\n }\n }\n }\n\n // Navigate to the next tab\n arrowRight() {\n let nextIndex = +this.activeTabIndex + 1;\n while (nextIndex < this.tabs.length && this.tabs[nextIndex].disabled) {\n nextIndex++; // Skip disabled tabs\n }\n if (nextIndex < this.tabs.length) {\n this.updateActiveTab(nextIndex);\n }\n }\n\n // Navigate to the previous tab\n arrowLeft() {\n let prevIndex = +this.activeTabIndex - 1;\n while (prevIndex >= 0 && this.tabs[prevIndex].disabled) {\n prevIndex--; // Skip disabled tabs\n }\n // Update active tab only if prevIndex is valid\n if (prevIndex >= 0) {\n this.updateActiveTab(prevIndex);\n }\n }\n\n // Update active tab\n updateActiveTab(index: number) {\n this.tabs[this.activeTabIndex].selected = false;\n this.activeTabIndex = index;\n this.tabs[this.activeTabIndex].selected = true;\n }\n\n ngOnDestroy(): void {\n if (this.tabChangesSubscription) {\n this.tabChangesSubscription.unsubscribe();\n }\n\n if (this.resizeObserver) {\n this.unbindResizeObserver();\n }\n }\n\n getTabHeaderActionId(tabId) {\n return `${tabId}_header_action`;\n }\n\n getTabContentId(tabId) {\n return `${tabId}_content`;\n }\n\n initTabs(): void {\n this.tabs = (this.tabPanels as QueryList<TabPanel>).toArray();\n let pinnedWidth = 0;\n const pinnedTabs = this.pinnedIndexes\n .filter((index) => index >= 0 && index < this.tabs.length)\n .map((index) => {\n const tab = this.tabs[index];\n tab.pinned = true; // Mark these tabs as pinned\n return tab;\n });\n\n const nonPinnedTabs = this.tabs\n .filter((_, index) => !this.pinnedIndexes.includes(index))\n .map((tab) => {\n tab.pinned = false; // Ensure non-pinned tabs are not marked as pinned\n return tab;\n });\n this.tabs.forEach((tab, index) => {\n if (this.pinnedIndexes.includes(index)) {\n tab.pinned = true;\n tab.closable = false; // Ensure pinned tabs are not closable\n if (tab.icon && !tab.header) {\n tab.headerStyle = { '--pinned-left': `${pinnedWidth}px` };\n pinnedWidth += 56;\n } else {\n tab.headerStyle = { '--pinned-left': `${pinnedWidth}px` }; // Set dynamic left position\n pinnedWidth += 56;\n }\n } else {\n tab.pinned = false;\n // Keep closable property unchanged for non-pinned tabs\n }\n });\n this.tabs = [...pinnedTabs, ...nonPinnedTabs];\n let selectedTab: TabPanel = this.findSelectedTab() as TabPanel;\n if (!selectedTab && this.tabs.length) {\n if (this.activeIndex != null && this.tabs.length > this.activeIndex) {\n this.activeTabIndex = this.activeIndex;\n this.tabs[this.activeIndex].selected = true;\n } else {\n this.activeTabIndex = 0;\n this.tabs[0].selected = true;\n }\n\n this.tabChanged = true;\n }\n\n this.cd.markForCheck();\n }\n\n onTabKeyDown(event: KeyboardEvent, tab: TabPanel): void {\n switch (event.code) {\n case 'ArrowLeft':\n this.onTabArrowLeftKey(event);\n break;\n\n case 'ArrowRight':\n this.onTabArrowRightKey(event);\n break;\n\n case 'Home':\n this.onTabHomeKey(event);\n break;\n\n case 'End':\n this.onTabEndKey(event);\n break;\n\n case 'PageDown':\n this.onTabEndKey(event);\n break;\n\n case 'PageUp':\n this.onTabHomeKey(event);\n break;\n\n case 'Enter':\n case 'Space':\n this.open(event, tab);\n break;\n\n default:\n break;\n }\n }\n\n onTabArrowLeftKey(event: KeyboardEvent) {\n const prevHeaderAction = this.findPrevHeaderAction((<HTMLElement>event.target).parentElement);\n const index = DomHandler.getAttribute(prevHeaderAction, 'data-pc-index');\n\n prevHeaderAction ? this.changeFocusedTab(event, prevHeaderAction, index) : this.onTabEndKey(event);\n event.preventDefault();\n }\n\n onTabArrowRightKey(event: KeyboardEvent) {\n const nextHeaderAction = this.findNextHeaderAction((<HTMLElement>event.target).parentElement);\n const index = DomHandler.getAttribute(nextHeaderAction, 'data-pc-index');\n\n nextHeaderAction ? this.changeFocusedTab(event, nextHeaderAction, index) : this.onTabHomeKey(event);\n event.preventDefault();\n }\n\n onTabHomeKey(event: KeyboardEvent) {\n const firstHeaderAction = this.findFirstHeaderAction();\n const index = DomHandler.getAttribute(firstHeaderAction, 'data-pc-index');\n\n this.changeFocusedTab(event, firstHeaderAction, index);\n event.preventDefault();\n }\n\n onTabEndKey(event: KeyboardEvent) {\n const lastHeaderAction = this.findLastHeaderAction();\n const index = DomHandler.getAttribute(lastHeaderAction, 'data-pc-index');\n\n this.changeFocusedTab(event, lastHeaderAction, index);\n event.preventDefault();\n }\n\n changeFocusedTab(event: KeyboardEvent, element: any, index: number) {\n if (element) {\n DomHandler.focus(element);\n element.scrollIntoView({ block: 'nearest' });\n\n if (this.selectOnFocus) {\n const tab = this.tabs[index];\n this.open(event, tab);\n }\n }\n }\n\n findNextHeaderAction(tabElement: any, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.nextElementSibling;\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-cax-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findNextHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n\n findPrevHeaderAction(tabElement: any, selfCheck = false) {\n const headerElement = selfCheck ? tabElement : tabElement.previousElementSibling;\n\n return headerElement\n ? DomHandler.getAttribute(headerElement, 'data-cax-disabled') || DomHandler.getAttribute(headerElement, 'data-pc-section') === 'inkbar'\n ? this.findPrevHeaderAction(headerElement)\n : DomHandler.findSingle(headerElement, '[data-pc-section=\"headeraction\"]')\n : null;\n }\n\n findFirstHeaderAction() {\n const firstEl = this.navbar.nativeElement.firstElementChild;\n return this.findNextHeaderAction(firstEl, true);\n }\n\n findLastHeaderAction() {\n const lastEl = this.navbar.nativeElement.lastElementChild;\n const lastHeaderAction = DomHandler.getAttribute(lastEl, 'data-pc-section') === 'inkbar' ? lastEl.previousElementSibling : lastEl;\n return this.findPrevHeaderAction(lastHeaderAction, true);\n }\n\n open(event: Event, tab: TabPanel) {\n if (tab.disabled) {\n if (event) {\n event.preventDefault();\n }\n return;\n }\n\n if (!tab.selected) {\n let selectedTab: TabPanel = this.findSelectedTab() as TabPanel;\n if (selectedTab) {\n selectedTab.selected = false;\n }\n\n this.tabChanged = true;\n tab.selected = true;\n let selectedTabIndex = this.findTabIndex(tab);\n if (selectedTabIndex !== this.activeTabIndex) {\n this.updateActiveTab(selectedTabIndex);\n }\n this.preventActiveIndexPropagation = true;\n this.activeIndexChange.emit(selectedTabIndex);\n this.onChange.emit({ originalEvent: event, index: selectedTabIndex });\n\n this.updateScrollBar(selectedTabIndex);\n }\n\n if (event) {\n event.preventDefault();\n }\n }\n\n close(event: Event, tab: TabPanel) {\n if (this.controlClose) {\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab),\n close: () => {\n this.closeTab(tab);\n }\n });\n } else {\n this.closeTab(tab);\n this.onClose.emit({\n originalEvent: event,\n index: this.findTabIndex(tab)\n });\n }\n }\n\n closeTab(tab: TabPanel) {\n if (tab.disabled) {\n return;\n }\n if (tab.selected) {\n this.tabChanged = true;\n tab.selected = false;\n for (let i = 0; i < this.tabs.length; i++) {\n let tabPanel = this.tabs[i];\n if (!tabPanel.closed && !tab.disabled) {\n tabPanel.selected = true;\n break;\n }\n }\n }\n\n tab.closed = true;\n setTimeout(() => {\n this.updateInkBar();\n });\n }\n\n findSelectedTab(): TabPanel | null {\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i].selected) {\n return this.tabs[i];\n }\n }\n return null;\n }\n\n findTabIndex(tab: TabPanel) {\n let index = -1;\n for (let i = 0; i < this.tabs.length; i++) {\n if (this.tabs[i] == tab) {\n index = i;\n break;\n }\n }\n return index;\n }\n\n getBlockableElement(): HTMLElement {\n return this.el.nativeElement.children[0];\n }\n\n updateInkBar() {\n if (isPlatformBrowser(this.platformId)) {\n if (this.navbar) {\n const tabHeader: HTMLElement | null = DomHandler.findSingle(this.navbar.nativeElement, 'li.cax-highlight');\n\n if (!tabHeader) {\n return;\n }\n if (this.inkbar) {\n if (this.fullMode) {\n const inkbarElement = (this.inkbar as ElementRef).nativeElement;\n // Recalculate the width and position relative to the navbar\n const tabWidth = DomHandler.getWidth(tabHeader);\n const tabOffsetLeft = DomHandler.getOffset(tabHeader).left;\n const navbarOffsetLeft = DomHandler.getOffset(this.navbar.nativeElement).left;\n\n // Dynamically set the width and position\n inkbarElement.style.width = `${tabWidth}px`;\n inkbarElement.style.left = `${tabOffsetLeft - navbarOffsetLeft}px`;\n } else {\n (this.inkbar as ElementRef).nativeElement.style.width = DomHandler.getWidth(tabHeader) + 'px';\n (this.inkbar as ElementRef).nativeElement.style.left = DomHandler.getOffset(tabHeader).left - DomHandler.getOffset(this.navbar.nativeElement).left + 'px';\n }\n }\n }\n }\n }\n\n updateScrollBar(index: number) {\n let tabHeader = (this.navbar as ElementRef).nativeElement.children[index];\n\n if (tabHeader) {\n tabHeader.scrollIntoView({ block: 'nearest' });\n }\n }\n\n updateButtonState() {\n const content = (this.content as ElementRef).nativeElement;\n const { scrollLeft, scrollWidth } = content;\n const width = DomHandler.getWidth(content);\n\n this.backwardIsDisabled = scrollLeft === 0;\n this.forwardIsDisabled = Math.round(scrollLeft) === scrollWidth - width;\n }\n\n refreshButtonState() {\n this.container = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"navcontent\"]');\n this.list = DomHandler.findSingle(this.el.nativeElement, '[data-pc-section=\"nav\"]');\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n if (this.list.offsetWidth >= this.container.offsetWidth) {\n this.buttonVisible = true;\n } else {\n this.buttonVisible = false;\n }\n this.updateButtonState();\n this.cd.markForCheck();\n }\n }\n\n onScroll(event: Event) {\n this.scrollable && this.updateButtonState();\n const scrollLeft = (event.target as HTMLElement).scrollLeft;\n\n // Adjust the margin or transform of the fixed elements\n const offset = Math.min(scrollLeft, 50); // Limit the offset to a maximum value (e.g., 50px)\n\n // Adjust the styles for fixed elements\n const pinnedElements = document.querySelectorAll('.cax-left-arrow, .cax-right-arrow, .cax-tabview-nav-content, .cax-line, .cax-segment') as NodeListOf<HTMLElement>;\n pinnedElements.forEach((element) => {\n element.style.transform = `translateX(${offset}px)`;\n });\n this.checkScrollableTabs(); // Check and update padding\n event.preventDefault();\n }\n\n checkScrollableTabs() {\n if (!this.content) return;\n\n const tabContainer = this.content.nativeElement;\n if (tabContainer.scrollWidth > tabContainer.clientWidth) {\n tabContainer.classList.add('scrollable-tabs');\n } else {\n tabContainer.classList.remove('scrollable-tabs');\n }\n }\n\n getVisibleButtonWidths() {\n return [this.prevBtn?.nativeElement, this.nextBtn?.nativeElement].reduce((acc, el) => (el ? acc + DomHandler.getWidth(el) : acc), 0);\n }\n\n navBackward() {\n const content = (this.content as ElementRef).nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft - width;\n content.scrollLeft = pos <= 0 ? 0 : pos;\n }\n\n navForward() {\n const content = (this.content as ElementRef).nativeElement;\n const width = DomHandler.getWidth(content) - this.getVisibleButtonWidths();\n const pos = content.scrollLeft + width;\n const lastPos = content.scrollWidth - width;\n\n content.scrollLeft = pos >= lastPos ? lastPos : pos;\n }\n}\n","<div *ngIf=\"!closed\" class=\"cax-tabview-panel\" role=\"tabpanel\" [hidden]=\"!selected\" [attr.id]=\"tabView.getTabContentId(id)\" [attr.aria-hidden]=\"!selected\" [attr.aria-labelledby]=\"tabView.getTabHeaderActionId(id)\" [attr.data-pc-name]=\"'tabpanel'\">\r\n <ng-content></ng-content>\r\n <ng-container *ngIf=\"contentTemplate && (cache ? loaded : selected)\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n </ng-container>\r\n</div>\r\n","<div [ngClass]=\"{ 'cax-tabview cax-component': true, 'cax-tabview-scrollable': scrollable }\" [ngStyle]=\"style\" [class]=\"styleClass\" [attr.data-pc-name]=\"'tabview'\">\r\n <div #elementToObserve class=\"cax-tabview-nav-container\" *ngIf=\"mode == 'line'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li role=\"presentation\" [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled }\" [attr.data-cax-disabled]=\"tab.disabled\" [ngStyle]=\"tab.headerStyle\" [class]=\"tab.headerStyleClass\"\r\n [class.full-mode]=\"fullMode\" [class.half-mode]=\"!fullMode\" *ngIf=\"!tab.closed\">\r\n <a\r\n role=\"tab\"\r\n class=\"cax-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n <li #inkbar class=\"cax-tabview-ink-bar\" role=\"presentation\" aria-hidden=\"true\" [attr.data-pc-section]=\"'inkbar'\"></li>\r\n </ul>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div #elementToObserve class=\"cax-tabview-nav-container cax-segment-tabview-container\" *ngIf=\"mode == 'segment'\">\r\n <button\r\n *ngIf=\"scrollable && !backwardIsDisabled && autoHideButtons\"\r\n #prevBtn\r\n class=\"cax-tabview-nav-prev cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navBackward()\"\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"prevButtonAriaLabel\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronLeftIcon *ngIf=\"!previousIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"previousIconTemplate\"></ng-template>\r\n </button>\r\n <div class=\"cax-segment-tabview-header\">\r\n <span class=\"cax-arrow-buttons\">\r\n <button #prevBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"prevButtonAriaLabel\" class=\"cax cax-arrow-left cax-left-arrow\" (click)=\"arrowLeft()\" type=\"button\" [disabled]=\"activeTabIndex === 0\"></button>\r\n <button #nextBtn [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"nextButtonAriaLabel\" class=\"cax cax-arrow-right cax-right-arrow\" [disabled]=\"activeTabIndex === tabs.length - 1\" (click)=\"arrowRight()\" type=\"button\"></button>\r\n </span>\r\n <div #content class=\"cax-tabview-nav-content\" (scroll)=\"onScroll($event)\" [attr.data-pc-section]=\"'navcontent'\">\r\n <ul #navbar class=\"cax-segment-tabview-nav\" role=\"tablist\" [attr.data-pc-section]=\"'nav'\">\r\n <ng-template ngFor let-tab [ngForOf]=\"tabs\" let-i=\"index\">\r\n <li\r\n role=\"presentation\"\r\n [ngClass]=\"{ 'cax-highlight': tab.selected, 'cax-disabled': tab.disabled, 'pinned': tab.pinned }\"\r\n [attr.data-cax-disabled]=\"tab.disabled\"\r\n [ngStyle]=\"tab.headerStyle\"\r\n [class]=\"tab.headerStyleClass\"\r\n *ngIf=\"!tab.closed\"\r\n >\r\n <a\r\n role=\"tab\"\r\n class=\"cax-segment-tabview-nav-link\"\r\n [caxTooltip]=\"tab.tooltip\"\r\n [tooltipPosition]=\"tab.tooltipPosition\"\r\n [positionStyle]=\"tab.tooltipPositionStyle\"\r\n [tooltipStyleClass]=\"tab.tooltipStyleClass\"\r\n [attr.id]=\"getTabHeaderActionId(tab.id)\"\r\n [attr.aria-controls]=\"getTabContentId(tab.id)\"\r\n [attr.aria-selected]=\"tab.selected\"\r\n [attr.tabindex]=\"tab.disabled || !tab.selected ? '-1' : tabindex\"\r\n [attr.aria-disabled]=\"tab.disabled\"\r\n [attr.data-pc-index]=\"i\"\r\n [attr.data-pc-section]=\"'headeraction'\"\r\n (click)=\"open($event, tab)\"\r\n (keydown)=\"onTabKeyDown($event, tab)\"\r\n caxRipple\r\n >\r\n <ng-container *ngIf=\"!tab.headerTemplate\">\r\n <span class=\"cax-tabview-left-icon\" [ngClass]=\"tab.leftIcon\" *ngIf=\"tab.leftIcon && !tab.leftIconTemplate\"></span>\r\n <span *ngIf=\"tab.leftIconTemplate\" class=\"cax-tabview-left-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.leftIconTemplate\"></ng-template>\r\n </span>\r\n <span *ngIf=\"tab.icon\" class=\"cax-dynamic-icon\" [class]=\"tab.icon\"></span>\r\n <span *ngIf=\"tab.header\" class=\"cax-tabview-title\">{{ tab.header }}</span>\r\n <span class=\"cax-tabview-right-icon\" [ngClass]=\"tab.rightIcon\" *ngIf=\"tab.rightIcon && !tab.rightIconTemplate\"></span>\r\n <span *ngIf=\"tab.rightIconTemplate\" class=\"cax-tabview-right-icon\">\r\n <ng-template *ngTemplateOutlet=\"tab.rightIconTemplate\"></ng-template>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n <ng-container *ngIf=\"tab.closable\">\r\n <TimesIcon *ngIf=\"!tab.closeIconTemplate\" [styleClass]=\"'cax-tabview-close'\" (click)=\"close($event, tab)\" />\r\n <span class=\"tab.closeIconTemplate\" *ngIf=\"tab.closeIconTemplate\"></span>\r\n <ng-template *ngTemplateOutlet=\"tab.closeIconTemplate\"></ng-template>\r\n </ng-container>\r\n </a>\r\n </li>\r\n </ng-template>\r\n </ul>\r\n </div>\r\n </div>\r\n <button\r\n *ngIf=\"scrollable && !forwardIsDisabled && buttonVisible\"\r\n #nextBtn\r\n [attr.tabindex]=\"tabindex\"\r\n [attr.aria-label]=\"nextButtonAriaLabel\"\r\n class=\"cax-tabview-nav-next cax-segment-tabview-nav-btn cax-link\"\r\n (click)=\"navForward()\"\r\n type=\"button\"\r\n caxRipple\r\n >\r\n <ChevronRightIcon *ngIf=\"!nextIconTemplate\" [attr.aria-hidden]=\"true\" />\r\n <ng-template *ngTemplateOutlet=\"nextIconTemplate\"></ng-template>\r\n </button>\r\n </div>\r\n <div class=\"cax-tabview-panels\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SharedModule } from 'cax-design-system/api';\nimport { ChevronLeftIcon } from 'cax-design-system/icons/chevronleft';\nimport { ChevronRightIcon } from 'cax-design-system/icons/chevronright';\nimport { TimesIcon } from 'cax-design-system/icons/times';\nimport { RippleModule } from 'cax-design-system/ripple';\nimport { TooltipModule } from 'cax-design-system/tooltip';\nimport { TabPanel, TabView } from './tabview';\n\n@NgModule({\n imports: [CommonModule, SharedModule, TooltipModule, RippleModule, TimesIcon, ChevronLeftIcon, ChevronRightIcon],\n exports: [TabView, TabPanel, SharedModule],\n declarations: [TabView, TabPanel]\n})\nexport class TabViewModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
|