@skyux/tabs 5.5.0-beta.0 → 5.6.1
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/bundles/skyux-tabs.umd.js +511 -511
- package/documentation.json +111 -111
- package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js +2 -2
- package/esm2015/lib/modules/sectioned-form/sectioned-form-section.component.js.map +1 -1
- package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js +3 -3
- package/esm2015/lib/modules/sectioned-form/sectioned-form.component.js.map +1 -1
- package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js +4 -4
- package/esm2015/lib/modules/sectioned-form/sectioned-form.module.js.map +1 -1
- package/esm2015/lib/modules/shared/sky-tabs-resources.module.js +1 -1
- package/esm2015/lib/modules/shared/sky-tabs-resources.module.js.map +1 -1
- package/esm2015/lib/modules/tabs/tab.component.js.map +1 -1
- package/esm2015/lib/modules/tabs/tabs.module.js.map +1 -1
- package/esm2015/lib/modules/tabs/tabset-nav-button.component.js +4 -4
- package/esm2015/lib/modules/tabs/tabset-nav-button.component.js.map +1 -1
- package/esm2015/lib/modules/tabs/tabset-permalink.service.js +1 -1
- package/esm2015/lib/modules/tabs/tabset-permalink.service.js.map +1 -1
- package/esm2015/lib/modules/tabs/tabset.component.js +1 -1
- package/esm2015/lib/modules/tabs/tabset.component.js.map +1 -1
- package/esm2015/lib/modules/tabs/tabset.service.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tab-media-query.service.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tab.component.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset-adapter.service.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset-group.component.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js +3 -3
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.component.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js +4 -4
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.module.js.map +1 -1
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js +5 -5
- package/esm2015/lib/modules/vertical-tabset/vertical-tabset.service.js.map +1 -1
- package/esm2015/testing/tabs/tabset-fixture.js.map +1 -1
- package/fesm2015/skyux-tabs-testing.js.map +1 -1
- package/fesm2015/skyux-tabs.js +473 -473
- package/fesm2015/skyux-tabs.js.map +1 -1
- package/lib/modules/sectioned-form/sectioned-form-section.component.d.ts +2 -2
- package/lib/modules/sectioned-form/sectioned-form.component.d.ts +1 -1
- package/lib/modules/tabs/tabset.component.d.ts +2 -2
- package/lib/modules/vertical-tabset/vertical-tab.component.d.ts +1 -1
- package/lib/modules/vertical-tabset/vertical-tabset.component.d.ts +1 -1
- package/package.json +19 -16
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Component, Input, ViewChild,
|
|
1
|
+
import { ChangeDetectorRef, Component, Input, ViewChild, } from '@angular/core';
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil } from 'rxjs/operators';
|
|
4
|
+
import { SkyVerticalTabsetService } from '../vertical-tabset/vertical-tabset.service';
|
|
4
5
|
import { SkyVerticalTabComponent } from './../vertical-tabset/vertical-tab.component';
|
|
5
6
|
import { SkySectionedFormService } from './sectioned-form.service';
|
|
6
|
-
import { SkyVerticalTabsetService } from '../vertical-tabset/vertical-tabset.service';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
import * as i1 from "./sectioned-form.service";
|
|
9
9
|
import * as i2 from "../vertical-tabset/vertical-tabset.service";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectioned-form-section.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,KAAK,
|
|
1
|
+
{"version":3,"file":"sectioned-form-section.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form-section.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,EAGL,SAAS,GACV,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,4CAA4C,CAAC;AAEtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;;;;;;AAEnE,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf;;GAEG;AAOH,MAAM,OAAO,gCAAgC;IAiC3C,YACU,oBAA6C,EAC7C,aAAuC,EACvC,SAA4B;QAF5B,yBAAoB,GAApB,oBAAoB,CAAyB;QAC7C,kBAAa,GAAb,aAAa,CAA0B;QACvC,cAAS,GAAT,SAAS,CAAmB;QAnC/B,iBAAY,GAAG,0BAA0B,EAAE,MAAM,EAAE,CAAC;QACpD,qBAAgB,GAAG,8BAA8B,EAAE,MAAM,EAAE,CAAC;QAgBnE;;;WAGG;QAEI,WAAM,GAAG,KAAK,CAAC;QAQd,mBAAc,GAAG,IAAI,OAAO,EAAE,CAAC;IAMpC,CAAC;IAEG,QAAQ;QACb,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAE/B,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,MAAe,EAAE,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,CAAC,cAAc;aACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,QAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,oBAAoB,CAAC,aAAa;aACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aACpC,SAAS,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC;IACpE,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;;8HA1DU,gCAAgC;kHAAhC,gCAAgC,+HAHhC,CAAC,uBAAuB,CAAC,+DA+BzB,uBAAuB,gDCxDpC,qUAaA;4FDea,gCAAgC;kBAN5C,SAAS;mBAAC;oBACT,QAAQ,EAAE,4BAA4B;oBACtC,WAAW,EAAE,yCAAyC;oBACtD,SAAS,EAAE,CAAC,uBAAuB,CAAC;oBACpC,SAAS,EAAE,CAAC,yCAAyC,CAAC;iBACvD;qLAUQ,OAAO;sBADb,KAAK;gBAQC,SAAS;sBADf,KAAK;gBAQC,MAAM;sBADZ,KAAK;gBAOC,GAAG;sBADT,SAAS;uBAAC,uBAAuB","sourcesContent":["import {\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { SkyVerticalTabsetService } from '../vertical-tabset/vertical-tabset.service';\n\nimport { SkyVerticalTabComponent } from './../vertical-tabset/vertical-tab.component';\nimport { SkySectionedFormService } from './sectioned-form.service';\n\nlet nextId = 0;\n\n/**\n * Creates an individual form to display as a section within the sectioned form.\n */\n@Component({\n selector: 'sky-sectioned-form-section',\n templateUrl: './sectioned-form-section.component.html',\n providers: [SkySectionedFormService],\n styleUrls: ['./sectioned-form-section.component.scss'],\n})\nexport class SkySectionedFormSectionComponent implements OnInit, OnDestroy {\n public sectionTabId = `sky-sectioned-form-tab-${++nextId}`;\n public sectionContentId = `sky-sectioned-form-section-${++nextId}`;\n\n /**\n * Specifies the section header.\n * @required\n */\n @Input()\n public heading: string;\n\n /**\n * Indicates the number of items within the section and displays a\n * counter alongside the section header.\n */\n @Input()\n public itemCount: number;\n\n /**\n * Indicates whether the section is active when the form loads.\n * @default false\n */\n @Input()\n public active = false;\n\n public fieldRequired: boolean;\n public fieldInvalid: boolean;\n\n @ViewChild(SkyVerticalTabComponent)\n public tab: SkyVerticalTabComponent;\n\n private _ngUnsubscribe = new Subject();\n\n constructor(\n private sectionedFormService: SkySectionedFormService,\n private tabsetService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.changeRef.detectChanges();\n\n this.tabsetService.switchingMobile.subscribe((mobile: boolean) => {\n this.changeRef.detectChanges();\n });\n\n this.sectionedFormService.requiredChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((required: boolean) => (this.fieldRequired = required));\n\n this.sectionedFormService.invalidChange\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((invalid: boolean) => (this.fieldInvalid = invalid));\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n}\n","<sky-vertical-tab\n [active]=\"active\"\n [errorIndicator]=\"fieldInvalid\"\n [ngClass]=\"{\n 'sky-tab-field-required': fieldRequired\n }\"\n [showTabRightArrow]=\"true\"\n [tabHeaderCount]=\"itemCount\"\n [tabHeading]=\"heading\"\n [tabId]=\"sectionTabId\"\n>\n <ng-content></ng-content>\n</sky-vertical-tab>\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, Output, ViewChild, } from '@angular/core';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
|
-
import {
|
|
5
|
+
import { HIDDEN_STATE, SkyVerticalTabsetService, VISIBLE_STATE, } from './../vertical-tabset/vertical-tabset.service';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "./../vertical-tabset/vertical-tabset.service";
|
|
8
8
|
import * as i2 from "@angular/common";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectioned-form.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.html"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"sectioned-form.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport {\n HIDDEN_STATE,\n SkyVerticalTabsetService,\n VISIBLE_STATE,\n} from './../vertical-tabset/vertical-tabset.service';\n\n/**\n * Creates a container for the sectioned forms.\n */\n@Component({\n selector: 'sky-sectioned-form',\n templateUrl: './sectioned-form.component.html',\n styleUrls: ['./sectioned-form.component.scss'],\n providers: [SkyVerticalTabsetService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [\n trigger('tabEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(-100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n trigger('contentEnter', [\n transition(`${HIDDEN_STATE} => ${VISIBLE_STATE}`, [\n style({ transform: 'translate(100%)' }),\n animate('150ms ease-in'),\n ]),\n ]),\n ],\n})\nexport class SkySectionedFormComponent\n implements OnInit, OnDestroy, AfterViewChecked\n{\n /**\n * Indicates whether the sectioned form loads section content during initialization so that it\n * displays content without moving around elements in the content container.\n * @default false\n */\n @Input()\n public maintainSectionContent = false;\n\n /**\n * Fires when the active tab changes and emits the index of the active\n * section. The index is based on the section's position when the form loads.\n */\n @Output()\n public indexChanged: EventEmitter<number> = new EventEmitter();\n\n public get ariaRole(): string {\n return this.isMobile ? undefined : 'tablist';\n }\n\n @ViewChild('skySectionSideContent')\n public content: ElementRef;\n\n private isMobile = false;\n private _ngUnsubscribe = new Subject();\n\n constructor(\n public tabService: SkyVerticalTabsetService,\n private changeRef: ChangeDetectorRef\n ) {}\n\n public ngOnInit() {\n this.tabService.maintainTabContent = this.maintainSectionContent;\n\n this.tabService.indexChanged\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((index) => {\n this.indexChanged.emit(index);\n this.changeRef.markForCheck();\n });\n\n this.tabService.switchingMobile\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((mobile: boolean) => {\n this.isMobile = mobile;\n this.changeRef.markForCheck();\n });\n\n if (this.tabService.isMobile()) {\n this.isMobile = true;\n this.tabService.animationContentVisibleState = VISIBLE_STATE;\n this.changeRef.markForCheck();\n }\n }\n\n public ngAfterViewChecked() {\n this.tabService.content = this.content;\n this.tabService.updateContent();\n }\n\n public ngOnDestroy() {\n this._ngUnsubscribe.next();\n this._ngUnsubscribe.complete();\n }\n\n public tabsVisible() {\n this.changeRef.markForCheck();\n return this.tabService.tabsVisible();\n }\n\n public showTabs() {\n this.tabService.showTabs();\n this.changeRef.markForCheck();\n }\n}\n","<div\n aria-orientation=\"vertical\"\n class=\"sky-sectioned-form\"\n [attr.role]=\"ariaRole\"\n (window:resize)=\"tabService.updateContent()\"\n>\n <div\n *ngIf=\"maintainSectionContent || tabsVisible()\"\n class=\"sky-sectioned-form-tabs\"\n [ngClass]=\"{ 'sky-sectioned-form-tabs-hidden': !tabsVisible() }\"\n [@tabEnter]=\"tabService.animationTabsVisibleState\"\n >\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"maintainSectionContent || tabService.contentVisible()\"\n class=\"sky-sectioned-form-content\"\n [ngClass]=\"{\n 'sky-sectioned-form-content-hidden': !tabService.contentVisible()\n }\"\n [@contentEnter]=\"tabService.animationContentVisibleState\"\n #skySectionSideContent\n ></div>\n</div>\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
1
|
import { CommonModule } from '@angular/common';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { SkyCheckboxModule } from '@skyux/forms';
|
|
5
4
|
import { SkyThemeModule } from '@skyux/theme';
|
|
6
5
|
import { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';
|
|
7
|
-
import {
|
|
6
|
+
import { SkySectionedFormSectionComponent } from './sectioned-form-section.component';
|
|
7
|
+
import { SkySectionedFormComponent } from './sectioned-form.component';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
export class SkySectionedFormModule {
|
|
10
10
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectioned-form.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sectioned-form.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/sectioned-form/sectioned-form.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;;AAYvE,MAAM,OAAO,sBAAsB;;oHAAtB,sBAAsB;qHAAtB,sBAAsB,iBATlB,yBAAyB,EAAE,gCAAgC,aAExE,YAAY;QACZ,iBAAiB;QACjB,cAAc;QACd,uBAAuB,aAEf,yBAAyB,EAAE,gCAAgC;qHAE1D,sBAAsB,YARxB;YACP,YAAY;YACZ,iBAAiB;YACjB,cAAc;YACd,uBAAuB;SACxB;4FAGU,sBAAsB;kBAVlC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;oBAC3E,OAAO,EAAE;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,cAAc;wBACd,uBAAuB;qBACxB;oBACD,OAAO,EAAE,CAAC,yBAAyB,EAAE,gCAAgC,CAAC;iBACvE","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyVerticalTabsetModule } from '../vertical-tabset/vertical-tabset.module';\n\nimport { SkySectionedFormSectionComponent } from './sectioned-form-section.component';\nimport { SkySectionedFormComponent } from './sectioned-form.component';\n\n@NgModule({\n declarations: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n imports: [\n CommonModule,\n SkyCheckboxModule,\n SkyThemeModule,\n SkyVerticalTabsetModule,\n ],\n exports: [SkySectionedFormComponent, SkySectionedFormSectionComponent],\n})\nexport class SkySectionedFormModule {}\n"]}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* To update this file, simply rerun the command.
|
|
6
6
|
*/
|
|
7
7
|
import { NgModule } from '@angular/core';
|
|
8
|
-
import {
|
|
8
|
+
import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
const RESOURCES = {
|
|
11
11
|
'EN-US': {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sky-tabs-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/shared/sky-tabs-resources.module.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"sky-tabs-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/shared/sky-tabs-resources.module.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,2BAA2B,EAE3B,aAAa,EAGb,qBAAqB,GACtB,MAAM,aAAa,CAAC;;AAErB,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE;QACP,aAAa,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;QACrC,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE;QAC7C,yBAAyB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;QAC9C,6BAA6B,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACtD,cAAc,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;QACvC,kCAAkC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;KAC5D;CACF,CAAC;AAEF,MAAM,OAAO,wBAAwB;IAC5B,SAAS,CAAC,UAA4B,EAAE,IAAY;QACzD,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;GAEG;AAWH,MAAM,OAAO,sBAAsB;;oHAAtB,sBAAsB;qHAAtB,sBAAsB,YATvB,aAAa;qHASZ,sBAAsB,aARtB;QACT;YACE,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,wBAAwB;YAClC,KAAK,EAAE,IAAI;SACZ;KACF,YAPS,aAAa;4FASZ,sBAAsB;kBAVlC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,2BAA2B;4BACpC,QAAQ,EAAE,wBAAwB;4BAClC,KAAK,EAAE,IAAI;yBACZ;qBACF;iBACF","sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/sky-tabs' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': {\n skyux_tab_add: { message: 'Add tab' },\n skyux_tab_close: { message: 'Close {0} tab' },\n skyux_tabs_navigator_next: { message: 'Next' },\n skyux_tabs_navigator_previous: { message: 'Previous' },\n skyux_tab_open: { message: 'Open tab' },\n skyux_vertical_tabs_show_tabs_text: { message: 'Tab list' },\n },\n};\n\nexport class SkyTabsResourcesProvider implements SkyLibResourcesProvider {\n public getString(localeInfo: SkyAppLocaleInfo, name: string): string {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyTabsResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyTabsResourcesModule {}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.html"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,SAAS,EACT,YAAY,EACZ,KAAK,EAGL,MAAM,GAEP,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAc,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tab.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tab.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChanges,\n} from '@angular/core';\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetService } from './tabset.service';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-tab',\n templateUrl: './tab.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyTabComponent implements OnChanges, OnDestroy {\n /**\n * Indicates whether the tab is active when the tabset loads. After initialization, the `active`\n * property on the tabset component should be used to set the active tab.\n * @default false\n */\n @Input()\n public set active(value: boolean) {\n if (value !== undefined && value !== this._active) {\n this._active = value;\n this._activeChange.next();\n }\n }\n\n public get active(): boolean {\n return this._active || false;\n }\n\n public get activeChange(): Observable<void> {\n return this._activeChange.asObservable();\n }\n\n /**\n * Indicates whether to disable the tab.\n * @default false\n */\n @Input()\n public disabled: boolean;\n\n /**\n * Specifies a custom query parameter value for the tab.\n * This works in conjunction with the tabset's `permalinkId` to distinguish\n * the tab's unique state in the URL by generating a query parameter that is\n * written as `?<queryParam>-active-tab=<sanitized-tab-heading`.\n * By default, the query parameter's value is parsed automatically from the tab's heading text.\n */\n @Input()\n public set permalinkValue(value: string) {\n this._permalinkValue = this.permalinkService.urlify(value);\n }\n\n public get permalinkValue(): string {\n return (\n this._permalinkValue || this.permalinkService.urlify(this.tabHeading)\n );\n }\n\n /**\n * Displays a counter beside the tab header.\n */\n @Input()\n public tabHeaderCount: string | undefined;\n\n /**\n * Specifies the tab header.\n * When using tabs as the main navigation on a page,\n * use [the Angular `Title` service](https://angular.io/docs/ts/latest/cookbook/set-document-title.html)\n * and [the SKY UX `title` configuration property](https://developer.blackbaud.com/skyux/learn/reference/configuration#app)\n * to reflect the tab header in the page title.\n * @required\n */\n @Input()\n public tabHeading: string;\n\n /**\n * Specifies a unique identifier for the tab.\n * If not defined, the identifier is set to the position of the tab on load, starting with `0`.\n */\n @Input()\n public set tabIndex(value: SkyTabIndex) {\n if (\n value !== this._tabIndex &&\n value !== undefined &&\n this._tabIndex !== undefined\n ) {\n this.tabsetService.updateTabIndex(this._tabIndex, value);\n this._tabIndexChange.next(value);\n }\n\n this._tabIndex = value;\n }\n\n public get tabIndex(): SkyTabIndex {\n return this._tabIndex;\n }\n\n /**\n * Fires when users click the button to close the tab.\n * The close button is added to the tab when you specify a listener for this event.\n */\n @Output()\n public close = new EventEmitter<void>(); // eslint-disable-line @angular-eslint/no-output-native\n\n public get closeable(): boolean {\n return this.close.observers.length > 0;\n }\n\n /**\n * Alerts the tabset component when this component has changes that need to be reflected in the UI.\n */\n public get stateChange(): Observable<void> {\n return this._stateChange.asObservable();\n }\n\n public get tabIndexChange(): Observable<SkyTabIndex> {\n return this._tabIndexChange.asObservable();\n }\n\n public showContent = false;\n\n public tabButtonId: string;\n\n public tabPanelId: string;\n\n private _active: boolean;\n\n private _activeChange = new BehaviorSubject<void>(undefined);\n\n private _permalinkValue: string;\n\n private _stateChange = new BehaviorSubject<void>(undefined);\n\n private _tabIndex: SkyTabIndex;\n\n private _tabIndexChange = new BehaviorSubject<SkyTabIndex>(undefined);\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {\n const id = nextId++;\n this.tabPanelId = `sky-tab-${id}`;\n this.tabButtonId = `${this.tabPanelId}-nav-btn`;\n }\n\n public ngOnChanges(changes: SimpleChanges): void {\n if (\n (changes.disabled && !changes.disabled.firstChange) ||\n (changes.tabHeading && !changes.tabHeading.firstChange) ||\n (changes.tabHeaderCount && !changes.tabHeaderCount.firstChange) ||\n (changes.permalinkValue && !changes.permalinkValue.firstChange)\n ) {\n this._stateChange.next();\n }\n }\n\n public ngOnDestroy(): void {\n this._stateChange.complete();\n this.tabsetService.unregisterTab(this.tabIndex);\n }\n\n public init(): void {\n this._tabIndex = this.tabsetService.registerTab(this.tabIndex);\n }\n\n public activate(): void {\n this._active = true;\n this.showContent = true;\n this.changeDetector.markForCheck();\n }\n\n public deactivate(): void {\n this._active = false;\n this.showContent = false;\n this.changeDetector.markForCheck();\n }\n}\n","<div\n class=\"sky-tab\"\n role=\"tabpanel\"\n [attr.aria-labelledby]=\"tabButtonId\"\n [hidden]=\"!showContent\"\n [id]=\"tabPanelId\"\n>\n <ng-content></ng-content>\n</div>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabs.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tabs.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabs.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;;AAoBxD,MAAM,OAAO,aAAa;;2GAAb,aAAa;4GAAb,aAAa,iBAhBtB,qBAAqB;QACrB,eAAe;QACf,kBAAkB;QAClB,2BAA2B,aAG3B,YAAY;QACZ,YAAY;QACZ,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,sBAAsB;QACtB,cAAc,aAEN,eAAe,EAAE,kBAAkB,EAAE,2BAA2B;4GAE/D,aAAa,YAXf;YACP,YAAY;YACZ,YAAY;YACZ,iBAAiB;YACjB,aAAa;YACb,aAAa;YACb,sBAAsB;YACtB,cAAc;SACf;4FAGU,aAAa;kBAlBzB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,qBAAqB;wBACrB,eAAe;wBACf,kBAAkB;wBAClB,2BAA2B;qBAC5B;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,YAAY;wBACZ,iBAAiB;wBACjB,aAAa;wBACb,aAAa;wBACb,sBAAsB;wBACtB,cAAc;qBACf;oBACD,OAAO,EAAE,CAAC,eAAe,EAAE,kBAAkB,EAAE,2BAA2B,CAAC;iBAC5E","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { SkyI18nModule } from '@skyux/i18n';\nimport { SkyIconModule } from '@skyux/indicators';\nimport { SkyDropdownModule } from '@skyux/popovers';\nimport { SkyThemeModule } from '@skyux/theme';\n\nimport { SkyTabsResourcesModule } from '../shared/sky-tabs-resources.module';\n\nimport { SkyTabButtonComponent } from './tab-button.component';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetNavButtonComponent } from './tabset-nav-button.component';\nimport { SkyTabsetComponent } from './tabset.component';\n\n@NgModule({\n declarations: [\n SkyTabButtonComponent,\n SkyTabComponent,\n SkyTabsetComponent,\n SkyTabsetNavButtonComponent,\n ],\n imports: [\n CommonModule,\n RouterModule,\n SkyDropdownModule,\n SkyI18nModule,\n SkyIconModule,\n SkyTabsResourcesModule,\n SkyThemeModule,\n ],\n exports: [SkyTabComponent, SkyTabsetComponent, SkyTabsetNavButtonComponent],\n})\nexport class SkyTabsModule {}\n"]}
|
|
@@ -55,17 +55,17 @@ export class SkyTabsetNavButtonComponent {
|
|
|
55
55
|
return selectedTab;
|
|
56
56
|
}
|
|
57
57
|
get nextTab() {
|
|
58
|
-
|
|
58
|
+
const selectedTab = this.selectedTab;
|
|
59
59
|
if (selectedTab) {
|
|
60
|
-
|
|
60
|
+
const tabs = this.tabset.tabs.toArray();
|
|
61
61
|
return tabs[tabs.indexOf(selectedTab) + 1];
|
|
62
62
|
}
|
|
63
63
|
return undefined;
|
|
64
64
|
}
|
|
65
65
|
get previousTab() {
|
|
66
|
-
|
|
66
|
+
const selectedTab = this.selectedTab;
|
|
67
67
|
if (selectedTab) {
|
|
68
|
-
|
|
68
|
+
const tabs = this.tabset.tabs.toArray();
|
|
69
69
|
return tabs[tabs.indexOf(selectedTab) - 1];
|
|
70
70
|
}
|
|
71
71
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabset-nav-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.html"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EACjB,SAAS,EACT,KAAK,GACN,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"tabset-nav-button.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-nav-button.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n Input,\n} from '@angular/core';\nimport { SkyLibResourcesService } from '@skyux/i18n';\n\nimport { forkJoin } from 'rxjs';\nimport { take } from 'rxjs/operators';\n\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetComponent } from './tabset.component';\n\nconst buttonTypeNext = 'next';\n\nconst buttonTypePrevious = 'previous';\n\n/**\n * @internal\n */\n@Component({\n selector: 'sky-tabset-nav-button',\n templateUrl: './tabset-nav-button.component.html',\n})\nexport class SkyTabsetNavButtonComponent implements AfterViewInit {\n @Input()\n public tabset: SkyTabsetComponent;\n\n @Input()\n public buttonType: string;\n\n @Input()\n public set buttonText(value: string) {\n this._buttonText = value;\n }\n\n public get buttonText(): string {\n if (this._buttonText) {\n return this._buttonText;\n }\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n return this.previousButtonText;\n case buttonTypeNext:\n return this.nextButtonText;\n /* istanbul ignore next */\n default:\n return '';\n }\n }\n\n public get disabled(): boolean {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n return !tabToSelect || tabToSelect.disabled;\n }\n\n private get selectedTab(): SkyTabComponent {\n let selectedTab: SkyTabComponent;\n\n if (this.tabset && this.tabset.tabs) {\n selectedTab = this.tabset.tabs.find(\n (tab) => tab.tabIndex === this.tabset.lastActiveTabIndex\n );\n }\n\n return selectedTab;\n }\n\n private get nextTab(): SkyTabComponent {\n const selectedTab = this.selectedTab;\n\n if (selectedTab) {\n const tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) + 1];\n }\n\n return undefined;\n }\n\n private get previousTab(): SkyTabComponent {\n const selectedTab = this.selectedTab;\n\n if (selectedTab) {\n const tabs = this.tabset.tabs.toArray();\n return tabs[tabs.indexOf(selectedTab) - 1];\n }\n\n return undefined;\n }\n\n private _buttonText: string;\n private previousButtonText: string;\n private nextButtonText: string;\n\n constructor(\n private resourceService: SkyLibResourcesService,\n private changeDetector: ChangeDetectorRef\n ) {}\n\n public ngAfterViewInit() {\n forkJoin([\n this.resourceService.getString('skyux_tabs_navigator_previous'),\n this.resourceService.getString('skyux_tabs_navigator_next'),\n ])\n .pipe(take(1))\n .subscribe((resources) => {\n this.previousButtonText = resources[0];\n this.nextButtonText = resources[1];\n this.changeDetector.detectChanges();\n });\n }\n\n public buttonClick() {\n let tabToSelect: SkyTabComponent;\n\n switch (this.buttonType) {\n case buttonTypePrevious:\n tabToSelect = this.previousTab;\n break;\n case buttonTypeNext:\n tabToSelect = this.nextTab;\n break;\n /* istanbul ignore next */\n default:\n break;\n }\n\n /* istanbul ignore else */\n if (tabToSelect && !tabToSelect.disabled) {\n this.tabset.active = tabToSelect.tabIndex;\n }\n }\n}\n","<button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"buttonClick()\"\n>\n {{ buttonText }}\n</button>\n"]}
|
|
@@ -94,7 +94,7 @@ export class SkyTabsetPermalinkService {
|
|
|
94
94
|
const sanitized = value
|
|
95
95
|
.toLowerCase()
|
|
96
96
|
// Remove special characters.
|
|
97
|
-
.replace(/[
|
|
97
|
+
.replace(/[_~`@!#$%^&*()[\]{};:'/\\<>,.?=+|"]/g, '')
|
|
98
98
|
// Replace space characters with a dash.
|
|
99
99
|
.replace(/\s/g, '-')
|
|
100
100
|
// Remove any double-dashes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabset-permalink.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"tabset-permalink.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset-permalink.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Location } from '@angular/common';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { Observable, Subject, SubscriptionLike } from 'rxjs';\n\n/**\n * @internal\n */\ninterface PermalinkParams {\n [_: string]: string;\n}\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetPermalinkService implements OnDestroy {\n public get popStateChange(): Observable<void> {\n return this._popStateChange.asObservable();\n }\n\n private _popStateChange = new Subject<void>();\n\n private subscription: SubscriptionLike;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private location: Location,\n private router: Router\n ) {}\n\n public ngOnDestroy(): void {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n public init(): void {\n this.subscription = this.location.subscribe(() => {\n this._popStateChange.next();\n });\n }\n\n /**\n * Returns the value of a URL query param.\n */\n public getParam(name: string): string {\n return this.getParams()[name];\n }\n\n /**\n * Sets the value of a URL query param.\n */\n public setParam(name: string, value: string | null): void {\n const params = this.getParams();\n\n if (value === null) {\n delete params[name];\n } else {\n params[name] = value;\n }\n\n // Update the URL without triggering a navigation state change.\n // See: https://stackoverflow.com/a/46486677\n const url = this.router\n .createUrlTree(['.'], {\n relativeTo: this.activatedRoute,\n queryParams: params,\n queryParamsHandling: 'merge',\n })\n .toString();\n\n // Abort redirect if the current URL is equal to the new URL.\n if (this.location.isCurrentPathEqualTo(url)) {\n return;\n }\n\n this.location.go(url);\n }\n\n /**\n * Removes the provided query param from the URL.\n */\n public clearParam(name: string): void {\n /*tslint:disable-next-line:no-null-keyword*/\n this.setParam(name, null);\n }\n\n /**\n * Returns a relative URL that includes the provided query parameter. The value is inteded to be\n * used by an HTML anchor element.\n */\n public getParamHref(name: string, value: string): string | null {\n if (!name) {\n /*tslint:disable-next-line:no-null-keyword*/\n return null;\n }\n\n const params = this.getParams();\n params[name] = value;\n\n const baseUrl = this.location.path().split('?')[0];\n const paramString = Object.keys(params)\n .map((k) => `${k}=${params[k]}`)\n .join('&');\n\n return this.location.prepareExternalUrl(`${baseUrl}?${paramString}`);\n }\n\n /**\n * Converts the provided string into a value that can be safely used in a URL.\n */\n public urlify(value: string): string {\n if (!value) {\n return '';\n }\n\n const sanitized = value\n .toLowerCase()\n\n // Remove special characters.\n .replace(/[_~`@!#$%^&*()[\\]{};:'/\\\\<>,.?=+|\"]/g, '')\n\n // Replace space characters with a dash.\n .replace(/\\s/g, '-')\n\n // Remove any double-dashes.\n .replace(/--/g, '-');\n\n return sanitized;\n }\n\n /**\n * Returns all query params that exist in the current URL.\n */\n private getParams(): PermalinkParams {\n const params: PermalinkParams = {};\n\n const path = this.location.path();\n if (path.indexOf('?') === -1) {\n return params;\n }\n\n const existingParamPairs = path.split('?')[1].split('&');\n existingParamPairs.forEach((pair) => {\n const fragments = pair.split('=');\n params[fragments[0]] = decodeURIComponent(fragments[1]);\n });\n\n return params;\n }\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ContentChildren, ElementRef, EventEmitter, Input, Output, QueryList, ViewEncapsulation, } from '@angular/core';
|
|
2
|
-
import { combineLatest, race
|
|
2
|
+
import { Subject, combineLatest, race } from 'rxjs';
|
|
3
3
|
import { distinctUntilChanged, takeUntil } from 'rxjs/operators';
|
|
4
4
|
import { SkyTabComponent } from './tab.component';
|
|
5
5
|
import { SkyTabsetAdapterService } from './tabset-adapter.service';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabset.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { combineLatest, race, Subject } from 'rxjs';\n\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIndex } from './tab-index';\n\nimport { SkyTabsetStyle } from './tabset-style';\n\nimport { SkyTabComponent } from './tab.component';\n\nimport { SkyTabsetAdapterService } from './tabset-adapter.service';\n\nimport { SkyTabsetButtonsDisplayMode } from './tabset-buttons-display-mode';\n\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\n\nimport { SkyTabsetService } from './tabset.service';\n\nimport { SkyTabsetTabIndexesChange } from './tabset-tab-indexes-change';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default \"tabs\"\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((tab) => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find((tab) =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe))\n .subscribe((activeIndex) => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map((tab) => tab.activeChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map((tab) => tab.tabIndexChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(\n this.tabsetService.currentActiveTabIndex,\n true\n );\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map((tab) => tab.stateChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(\n this.tabsetService.currentActiveTabIndex,\n true\n );\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach((tab) => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false,\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map((tab) => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex,\n })),\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((isOverflowing) => {\n this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find((tab) => tab.permalinkValue === paramValue)\n ?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs\n .toArray()\n .reverse()\n .find((tab) => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map((tab) => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: tab.disabled\n ? null\n : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex,\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach((button) => {\n button.active = this.tabsetService.tabIndexesEqual(\n button.tabIndex,\n activeIndex\n );\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n // Activate/deactivate tab components.\n this.tabs.forEach((tab) => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find((b) => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find((tab) => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(\n this.permalinkId,\n activeTabComponent.permalinkValue\n );\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n"]}
|
|
1
|
+
{"version":3,"file":"tabset.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.ts","../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { Subject, combineLatest, race } from 'rxjs';\nimport { distinctUntilChanged, takeUntil } from 'rxjs/operators';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabComponent } from './tab.component';\nimport { SkyTabsetAdapterService } from './tabset-adapter.service';\nimport { SkyTabsetButtonsDisplayMode } from './tabset-buttons-display-mode';\nimport { SkyTabsetPermalinkService } from './tabset-permalink.service';\nimport { SkyTabsetStyle } from './tabset-style';\nimport { SkyTabsetTabIndexesChange } from './tabset-tab-indexes-change';\nimport { SkyTabsetService } from './tabset.service';\n\n/**\n * @internal\n */\ninterface TabButtonViewModel {\n active: boolean;\n ariaControls: string;\n buttonHref: string;\n buttonId: string;\n buttonText: string;\n buttonTextCount: string;\n closeable: boolean;\n disabled: boolean;\n tabIndex: SkyTabIndex;\n}\n\n@Component({\n selector: 'sky-tabset',\n styleUrls: ['./tabset.component.scss'],\n templateUrl: './tabset.component.html',\n providers: [\n SkyTabsetAdapterService,\n SkyTabsetPermalinkService,\n SkyTabsetService,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class SkyTabsetComponent implements AfterViewInit, OnDestroy {\n /**\n * Activates a tab by its `tabIndex` property.\n */\n @Input()\n public set active(value: SkyTabIndex) {\n if (\n value === undefined ||\n this.tabsetService.tabIndexesEqual(value, this._active)\n ) {\n return;\n }\n\n this._active = value;\n\n if (this.tabs) {\n this.tabsetService.setActiveTabIndex(value);\n } else {\n // On init, wait for children tabs to render before broadcasting the active tab index.\n setTimeout(() => {\n if (this.tabsetService.isValidTabIndex(value)) {\n // On init, yield to the permalink ID, if it exists.\n if (this.getActiveTabIndexByPermalinkId() === undefined) {\n this.tabsetService.setActiveTabIndex(value);\n }\n } else {\n // Activate the first tab if the new tab index is invalid.\n this._active = this.tabsetService.activateFirstTab();\n }\n });\n }\n }\n\n public get active(): SkyTabIndex {\n return this._active;\n }\n\n /**\n * Specifies an ARIA label for the tabset. This sets the tabset's `aria-label` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset includes a visible label, use `ariaLabelledBy` instead.\n */\n @Input()\n public ariaLabel: string;\n\n /**\n * Specifies the HTML element ID (without the leading `#`) of the element that labels\n * the tabset. This sets the tabset's `aria-labelledby` attribute\n * [to support accessibility](https://developer.blackbaud.com/skyux/learn/accessibility).\n * If the tabset does not include a visible label, use `ariaLabel` instead.\n */\n @Input()\n public ariaLabelledBy: string;\n\n /**\n * Distinguishes a tabset's unique state in the URL by generating a query parameter\n * that is written as `?<queryParam>-active-tab=<sanitized-tab-heading>`.\n * The query parameter's value is parsed automatically from the selected tab's heading text,\n * but you can supply a custom query parameter value for each tab with its `permalinkValue`.\n */\n @Input()\n public set permalinkId(value: string) {\n if (!value) {\n return;\n }\n\n const sanitized = this.permalinkService.urlify(value);\n this._permalinkId = `${sanitized}-active-tab`;\n }\n\n public get permalinkId(): string {\n return this._permalinkId || '';\n }\n\n /**\n * Specifies the behavior for a series of tabs.\n * @deprecated The property was designed to create wizards by setting tabStyle=\"wizard\" on tabsets in modals,\n * but this wizard implementation was replaced by the\n * [progress indicator component](https://developer.blackbaud.com/skyux/components/progress-indicator).\n * @default \"tabs\"\n */\n @Input()\n public set tabStyle(value: SkyTabsetStyle) {\n /*istanbul ignore else*/\n if (value && value.toLowerCase() === 'wizard') {\n console.warn(\n 'The tabset wizard is deprecated. Please implement the new approach using ' +\n 'progress indicator as documented here: https://developer.blackbaud.com/skyux/components/wizard.'\n );\n }\n\n this._tabStyle = value;\n }\n\n public get tabStyle(): SkyTabsetStyle {\n return this._tabStyle || 'tabs';\n }\n\n /**\n * Fires when the active tab changes. This event emits the index of the active tab.\n */\n @Output()\n public activeChange = new EventEmitter<SkyTabIndex>();\n\n /**\n * Fires when users click the button to add a new tab.\n * The new tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public newTab = new EventEmitter<void>();\n\n /**\n * Fires when users click the button to open a tab.\n * The open tab button is added to the tab area when you specify a listener for this event.\n */\n @Output()\n public openTab = new EventEmitter<void>();\n\n /**\n * Fires when any tab's `tabIndex` value changes.\n */\n @Output()\n public tabIndexesChange = new EventEmitter<SkyTabsetTabIndexesChange>();\n\n public set tabDisplayMode(value: SkyTabsetButtonsDisplayMode) {\n this._tabDisplayMode = value;\n this.changeDetector.markForCheck();\n }\n\n public get tabDisplayMode(): SkyTabsetButtonsDisplayMode {\n return this._tabDisplayMode || 'tabs';\n }\n\n @ContentChildren(SkyTabComponent)\n public tabs: QueryList<SkyTabComponent>;\n\n public dropdownTriggerButtonText: string;\n\n /**\n * This property is used by the deprecated tabset-nav-button component.\n * @internal\n */\n public lastActiveTabIndex: SkyTabIndex;\n\n public tabButtons: TabButtonViewModel[] = [];\n\n private ngUnsubscribe = new Subject<void>();\n\n private tabComponentsStateChangeUnsubscribe = new Subject<void>();\n\n private _active: SkyTabIndex;\n\n private _permalinkId: string;\n\n private _tabDisplayMode: SkyTabsetButtonsDisplayMode;\n\n private _tabStyle: SkyTabsetStyle;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private adapterService: SkyTabsetAdapterService,\n private permalinkService: SkyTabsetPermalinkService,\n private tabsetService: SkyTabsetService\n ) {}\n\n public ngAfterViewInit(): void {\n this.initTabComponents();\n this.listenTabComponentsStructuralChange();\n\n const initialTabIndex = this.getInitialTabIndex();\n this.tabsetService.setActiveTabIndex(initialTabIndex);\n\n this.listenTabButtonsOverflowChange();\n this.listenLocationPopStateChange();\n\n // If the currently active tab is getting unregistered, activate the next one.\n this.tabsetService.activeTabUnregistered\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((tab) => {\n // Wait for the new tabs to render before activating.\n setTimeout(() => {\n this.tabsetService.activateNearestTab(tab.arrayIndex);\n });\n });\n\n // Let the tabset render the initial active index before listening for changes.\n setTimeout(() => {\n this.listenTabComponentsStateChange();\n this.listenActiveIndexChange();\n this.permalinkService.init();\n });\n }\n\n public ngOnDestroy(): void {\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n this.unsubscribeTabComponentsStateChange();\n this.permalinkService.clearParam(this.permalinkId);\n }\n\n public onWindowResize(): void {\n this.adapterService.detectOverflow();\n }\n\n public onTabCloseClick(tabButton: TabButtonViewModel): void {\n const tabComponent = this.tabs.find((tab) =>\n this.tabsetService.tabIndexesEqual(tab.tabIndex, tabButton.tabIndex)\n );\n\n tabComponent.close.emit();\n }\n\n public onTabButtonClick(tabButton: TabButtonViewModel): void {\n this.tabsetService.setActiveTabIndex(tabButton.tabIndex);\n }\n\n public onNewTabClick(): void {\n this.newTab.emit();\n }\n\n public onOpenTabClick(): void {\n this.openTab.emit();\n }\n\n /**\n * Sets the initial active tab index based on the following criteria.\n * 1. Does the URL include a query param that reflects this tabset's active tab?\n * 2. Does one of the tab components have their `active` property set to `true`?\n * 3. Is the tabset component's `active` property set to a specific tab index?\n */\n private getInitialTabIndex(): SkyTabIndex {\n let activeIndex: SkyTabIndex = this.getActiveTabIndexByPermalinkId();\n if (activeIndex === undefined) {\n activeIndex = this.getActiveTabComponent()?.tabIndex;\n if (activeIndex === undefined) {\n activeIndex = this.active;\n }\n }\n\n return activeIndex;\n }\n\n private listenActiveIndexChange(): void {\n this.tabsetService.activeTabIndex\n .pipe(distinctUntilChanged(), takeUntil(this.ngUnsubscribe))\n .subscribe((activeIndex) => {\n this.updateTabsetComponent(activeIndex);\n });\n }\n\n private listenTabComponentsStructuralChange(): void {\n this.tabs.changes.pipe(takeUntil(this.ngUnsubscribe)).subscribe(() => {\n this.resetTabComponents();\n });\n }\n\n private listenTabComponentsStateChange(): void {\n combineLatest(this.tabs.map((tab) => tab.activeChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n const tabIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(tabIndex);\n });\n });\n\n combineLatest(this.tabs.map((tab) => tab.tabIndexChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Don't emit the first change.\n if (this.lastActiveTabIndex !== undefined) {\n // Wait for the tab components to render changes before updating the view.\n setTimeout(() => {\n this.updateTabsetComponent(\n this.tabsetService.currentActiveTabIndex,\n true\n );\n this.emitTabIndexChange();\n });\n }\n });\n\n combineLatest(this.tabs.map((tab) => tab.stateChange))\n .pipe(\n takeUntil(\n race(this.tabComponentsStateChangeUnsubscribe, this.ngUnsubscribe)\n )\n )\n .subscribe(() => {\n // Wait for the tab components to render changes before finding the active one.\n setTimeout(() => {\n this.updateTabsetComponent(\n this.tabsetService.currentActiveTabIndex,\n true\n );\n });\n });\n }\n\n private initTabComponents(): void {\n this.tabs.forEach((tab) => tab.init());\n }\n\n private resetTabComponents(): void {\n this.unsubscribeTabComponentsStateChange();\n this.tabsetService.unregisterAll();\n\n // If there are no tab components, do a hard reset of the view.\n if (this.tabs.length === 0) {\n this.updateTabsetComponent(0, true);\n return;\n }\n\n this.initTabComponents();\n const activeIndex = this.getActiveTabComponent()?.tabIndex;\n this.tabsetService.setActiveTabIndex(activeIndex, {\n emitChange: false,\n });\n this.listenTabComponentsStateChange();\n }\n\n private emitTabIndexChange(): void {\n this.tabIndexesChange.emit({\n tabs: this.tabs.map((tab) => ({\n tabHeading: tab.tabHeading,\n tabIndex: tab.tabIndex,\n })),\n });\n }\n\n private unsubscribeTabComponentsStateChange(): void {\n this.tabComponentsStateChangeUnsubscribe.next();\n this.tabComponentsStateChangeUnsubscribe.complete();\n this.tabComponentsStateChangeUnsubscribe = new Subject<void>();\n }\n\n private listenTabButtonsOverflowChange(): void {\n this.adapterService.registerTabset(this.elementRef);\n this.adapterService.overflowChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((isOverflowing) => {\n this.tabDisplayMode = isOverflowing ? 'dropdown' : 'tabs';\n this.changeDetector.markForCheck();\n });\n }\n\n /**\n * Listen for back/forward history button presses to detect query param changes in the URL.\n */\n private listenLocationPopStateChange(): void {\n this.permalinkService.popStateChange\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(() => {\n this.setActiveTabIndexByPermalinkId();\n });\n }\n\n private setActiveTabIndexByPermalinkId(): void {\n const activeIndex = this.getActiveTabIndexByPermalinkId();\n this.tabsetService.setActiveTabIndex(activeIndex);\n }\n\n private getActiveTabIndexByPermalinkId(): SkyTabIndex {\n if (this.permalinkId) {\n const paramValue = this.permalinkService.getParam(this.permalinkId);\n if (paramValue) {\n return this.tabs.find((tab) => tab.permalinkValue === paramValue)\n ?.tabIndex;\n }\n }\n }\n\n private getActiveTabComponent(): SkyTabComponent {\n return this.tabs\n .toArray()\n .reverse()\n .find((tab) => tab.active === true);\n }\n\n private createTabButtons(activeIndex: SkyTabIndex): TabButtonViewModel[] {\n return this.tabs.map((tab) => ({\n active: this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex),\n closeable: tab.closeable,\n ariaControls: tab.tabPanelId,\n disabled: tab.disabled,\n /*tslint:disable-next-line:no-null-keyword*/\n buttonHref: tab.disabled\n ? null\n : this.permalinkService.getParamHref(\n this.permalinkId,\n tab.permalinkValue\n ),\n buttonId: tab.tabButtonId,\n buttonTextCount: tab.tabHeaderCount,\n buttonText: tab.tabHeading,\n tabIndex: tab.tabIndex,\n }));\n }\n\n private updateTabButtons(activeIndex: SkyTabIndex): void {\n this.tabButtons.forEach((button) => {\n button.active = this.tabsetService.tabIndexesEqual(\n button.tabIndex,\n activeIndex\n );\n });\n }\n\n /**\n * Updates the UI and state of the tabset component after the tab index or\n * tab components have changed.\n * @param activeIndex The currently active tab index.\n * @param regenerateTabButtons Indicates if tab button view models should be regenerated.\n * Setting this value to `false` will simply update the existing tab buttons. Setting this value\n * to `true` is only necessary when the underlying tab components have changed and the tab\n * buttons must reflect those changes.\n */\n private updateTabsetComponent(\n activeIndex: SkyTabIndex,\n regenerateTabButtons = false\n ): void {\n // Activate/deactivate tab components.\n this.tabs.forEach((tab) => {\n this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex)\n ? tab.activate()\n : tab.deactivate();\n });\n\n // Update the tab button models.\n if (regenerateTabButtons || !this.tabButtons.length) {\n this.tabButtons = this.createTabButtons(activeIndex);\n } else {\n this.updateTabButtons(activeIndex);\n }\n\n // Update the dropdown trigger button text.\n this.dropdownTriggerButtonText = this.tabButtons.find((b) => {\n return this.tabsetService.tabIndexesEqual(b.tabIndex, activeIndex);\n })?.buttonText;\n\n // Set the query params based on active tab.\n if (this.permalinkId) {\n const activeTabComponent = this.tabs.find((tab) => {\n return this.tabsetService.tabIndexesEqual(tab.tabIndex, activeIndex);\n });\n this.permalinkService.setParam(\n this.permalinkId,\n activeTabComponent.permalinkValue\n );\n }\n\n // Wait for tab button view models to render before gauging dimensions.\n setTimeout(() => {\n this.adapterService.detectOverflow();\n });\n\n this.changeDetector.markForCheck();\n\n // Emit the new active index value to consumers.\n if (this.lastActiveTabIndex !== activeIndex) {\n this.lastActiveTabIndex = activeIndex;\n this.activeChange.emit(activeIndex);\n }\n }\n}\n","<div\n class=\"sky-tabset\"\n role=\"tablist\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [ngClass]=\"\n 'sky-tabset-mode-' + tabDisplayMode + ' sky-tabset-style-' + tabStyle\n \"\n (window:resize)=\"onWindowResize()\"\n>\n <span class=\"sky-tabset-dropdown\">\n <sky-dropdown *ngIf=\"tabDisplayMode === 'dropdown'\" buttonType=\"tab\">\n <sky-dropdown-button>\n {{ dropdownTriggerButtonText }}\n </sky-dropdown-button>\n <sky-dropdown-menu>\n <sky-dropdown-item\n *ngFor=\"let tabButton of tabButtons\"\n class=\"sky-tab-dropdown-menu-item\"\n >\n <div\n class=\"sky-tab-dropdown-item\"\n [ngClass]=\"{\n 'sky-tab-dropdown-item-selected': tabButton.active\n }\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </div>\n </sky-dropdown-item>\n </sky-dropdown-menu>\n </sky-dropdown>\n </span>\n <span class=\"sky-tabset-tabs\">\n <ng-container *ngFor=\"let tabButton of tabButtons\">\n <ng-container\n *ngTemplateOutlet=\"\n tabButtonTemplate;\n context: {\n $implicit: tabButton\n }\n \"\n ></ng-container>\n </ng-container>\n </span>\n <span class=\"sky-tabset-btns\">\n <button\n *ngIf=\"newTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-new sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_add' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onNewTabClick()\"\n >\n <sky-icon icon=\"plus-circle\" size=\"lg\"> </sky-icon>\n </button>\n <button\n *ngIf=\"openTab.observers.length > 0\"\n class=\"sky-btn sky-btn-icon sky-tabset-btn-open sky-margin-inline-compact\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_tab_open' | skyLibResources\"\n [skyThemeClass]=\"{\n 'sky-margin-inline-sm': 'modern'\n }\"\n (click)=\"onOpenTabClick()\"\n >\n <sky-icon icon=\"folder-open-o\" size=\"lg\"> </sky-icon>\n </button>\n </span>\n</div>\n<ng-content></ng-content>\n\n<ng-template let-tabButton #tabButtonTemplate>\n <sky-tab-button\n [active]=\"tabButton.active\"\n [ariaControls]=\"tabButton.ariaControls\"\n [buttonHref]=\"tabButton.buttonHref\"\n [buttonId]=\"tabButton.buttonId\"\n [buttonText]=\"tabButton.buttonText\"\n [buttonTextCount]=\"tabButton.buttonTextCount\"\n [closeable]=\"tabButton.closeable\"\n [disabled]=\"tabButton.disabled\"\n [tabStyle]=\"tabStyle\"\n (buttonClick)=\"onTabButtonClick(tabButton)\"\n (closeClick)=\"onTabCloseClick(tabButton)\"\n ></sky-tab-button>\n</ng-template>\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabset.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,eAAe,EAAc,OAAO,EAAE,MAAM,MAAM,CAAC;;
|
|
1
|
+
{"version":3,"file":"tabset.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/tabs/tabset.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { SkyTabIndex } from './tab-index';\nimport { SkyTabsetActiveTabUnregisteredArgs } from './tabset-active-tab-unregistered-args';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyTabsetService {\n public get activeTabUnregistered(): Observable<SkyTabsetActiveTabUnregisteredArgs> {\n return this._activeTabUnregistered.asObservable();\n }\n\n public get activeTabIndex(): Observable<SkyTabIndex> {\n return this._activeTabIndex.asObservable();\n }\n\n public currentActiveTabIndex: SkyTabIndex = 0;\n\n private _activeTabIndex = new BehaviorSubject<SkyTabIndex>(0);\n\n private _activeTabUnregistered =\n new Subject<SkyTabsetActiveTabUnregisteredArgs>();\n\n private tabs: {\n tabIndex: SkyTabIndex;\n }[] = [];\n\n private tabCounter = 0;\n\n /**\n * Sets the active tab by its unique `tabIndex` property.\n */\n public setActiveTabIndex(\n value: SkyTabIndex,\n config = {\n emitChange: true,\n }\n ): void {\n if (\n value !== undefined &&\n !this.tabIndexesEqual(value, this.currentActiveTabIndex)\n ) {\n this.currentActiveTabIndex = value;\n /* istanbul ignore else */\n if (config.emitChange) {\n this._activeTabIndex.next(value);\n }\n }\n }\n\n /**\n * Registers a tab component.\n */\n public registerTab(tabIndex?: SkyTabIndex): SkyTabIndex {\n if (tabIndex === undefined) {\n tabIndex = this.tabCounter;\n this.tabCounter++;\n }\n\n this.tabs.push({ tabIndex });\n\n return tabIndex;\n }\n\n public updateTabIndex(\n currentTabIndex: SkyTabIndex,\n newTabIndex: SkyTabIndex\n ): void {\n const found = this.tabs.find((tab) =>\n this.tabIndexesEqual(tab.tabIndex, currentTabIndex)\n );\n found.tabIndex = newTabIndex;\n }\n\n /**\n * Unregisters a tab component.\n */\n public unregisterTab(tabIndex: SkyTabIndex): void {\n const index = this.tabs.findIndex((tab) =>\n this.tabIndexesEqual(tab.tabIndex, tabIndex)\n );\n\n // Notify the tabset component when an active tab is unregistered.\n if (this.isTabIndexActive(this.tabs[index].tabIndex)) {\n this._activeTabUnregistered.next({\n arrayIndex: index,\n });\n }\n\n this.tabs.splice(index, 1);\n }\n\n /**\n * Unregisters all tab components at once.\n */\n public unregisterAll(): void {\n this.tabs = [];\n }\n\n /**\n * Compares two tab indexes and returns `true` if they are equal.\n */\n public tabIndexesEqual(\n tabIndex1: SkyTabIndex,\n tabIndex2: SkyTabIndex\n ): boolean {\n return tabIndex1 === tabIndex2 || +tabIndex1 === +tabIndex2;\n }\n\n /**\n * Verifies if a provided tab index is registered.\n */\n public isValidTabIndex(tabIndex: SkyTabIndex): boolean {\n return this.tabs.some((tab) =>\n this.tabIndexesEqual(tab.tabIndex, tabIndex)\n );\n }\n\n /**\n * Activates the first registered tab.\n */\n public activateFirstTab(): SkyTabIndex | undefined {\n const firstTabIndex = this.tabs[0] && this.tabs[0].tabIndex;\n if (firstTabIndex !== undefined) {\n this.setActiveTabIndex(firstTabIndex);\n return firstTabIndex;\n }\n }\n\n /**\n * Activates the next registered tab, or the previous one based on a provided array index.\n */\n public activateNearestTab(arrayIndex: number): void {\n const newActiveTab = this.tabs[arrayIndex] || this.tabs[arrayIndex - 1];\n if (newActiveTab) {\n this.currentActiveTabIndex = newActiveTab.tabIndex;\n }\n }\n\n private isTabIndexActive(tabIndex: SkyTabIndex): boolean {\n return this.tabIndexesEqual(tabIndex, this.currentActiveTabIndex);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertical-tab-media-query.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab-media-query.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"vertical-tab-media-query.service.js","sourceRoot":"","sources":["../../../../../../../../libs/components/tabs/src/lib/modules/vertical-tabset/vertical-tab-media-query.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAyB,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,eAAe,EAAgB,MAAM,MAAM,CAAC;;AAErD;;GAEG;AAEH,MAAM,OAAO,+BAA+B;IAW1C;QANQ,mBAAc,GAAG,IAAI,eAAe,CAC1C,IAAI,CAAC,OAAO,CACb,CAAC;QAEM,aAAQ,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAGxC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAZD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAYM,SAAS,CAAC,QAA+B;QAC9C,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;YACnC,IAAI,EAAE,CAAC,WAAgC,EAAE,EAAE;gBACzC,QAAQ,CAAC,WAAW,CAAC,CAAC;YACxB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAEM,qBAAqB,CAAC,KAAa;QACxC,IAAI,UAA+B,CAAC;QAEpC,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE;YAC/D,UAAU,GAAG,mBAAmB,CAAC,EAAE,CAAC;SACrC;aAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE;YACtE,UAAU,GAAG,mBAAmB,CAAC,EAAE,CAAC;SACrC;aAAM,IAAI,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,mBAAmB,CAAC,EAAE,CAAC,EAAE;YACtE,UAAU,GAAG,mBAAmB,CAAC,EAAE,CAAC;SACrC;aAAM;YACL,UAAU,GAAG,mBAAmB,CAAC,EAAE,CAAC;SACrC;QAED,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAEM,uBAAuB,CAC5B,KAAa,EACb,UAA+B;QAE/B,MAAM,qBAAqB,GAAG,GAAG,CAAC;QAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;QAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;QAClC,MAAM,qBAAqB,GAAG,GAAG,CAAC;QAClC,MAAM,qBAAqB,GAAG,IAAI,CAAC;QACnC,MAAM,qBAAqB,GAAG,IAAI,CAAC;QAEnC,QAAQ,UAAU,EAAE;YAClB,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,OAAO,KAAK,IAAI,qBAAqB,CAAC;aACvC;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,OAAO,KAAK,IAAI,qBAAqB,IAAI,KAAK,IAAI,qBAAqB,CAAC;aACzE;YACD,KAAK,mBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3B,OAAO,KAAK,IAAI,qBAAqB,IAAI,KAAK,IAAI,qBAAqB,CAAC;aACzE;YACD,OAAO,CAAC,CAAC;gBACP,OAAO,KAAK,IAAI,qBAAqB,CAAC;aACvC;SACF;IACH,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC;;6HArEU,+BAA+B;iIAA/B,+BAA+B;4FAA/B,+BAA+B;kBAD3C,UAAU","sourcesContent":["import { Injectable } from '@angular/core';\nimport { SkyMediaBreakpoints, SkyMediaQueryListener } from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class SkyVerticalTabMediaQueryService {\n public get current(): SkyMediaBreakpoints {\n return this._current;\n }\n\n private currentSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n private _current = SkyMediaBreakpoints.xs;\n\n constructor() {\n this.currentSubject.next(this._current);\n }\n\n public subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public setBreakpointForWidth(width: number): void {\n let breakpoint: SkyMediaBreakpoints;\n\n if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.xs)) {\n breakpoint = SkyMediaBreakpoints.xs;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.sm)) {\n breakpoint = SkyMediaBreakpoints.sm;\n } else if (this.isWidthWithinBreakpiont(width, SkyMediaBreakpoints.md)) {\n breakpoint = SkyMediaBreakpoints.md;\n } else {\n breakpoint = SkyMediaBreakpoints.lg;\n }\n\n this._current = breakpoint;\n this.currentSubject.next(this._current);\n }\n\n public isWidthWithinBreakpiont(\n width: number,\n breakpoint: SkyMediaBreakpoints\n ): boolean {\n const xsBreakpointMaxPixels = 767;\n const smBreakpointMinPixels = 768;\n const smBreakpointMaxPixels = 991;\n const mdBreakpointMinPixels = 992;\n const mdBreakpointMaxPixels = 1199;\n const lgBreakpointMinPixels = 1200;\n\n switch (breakpoint) {\n case SkyMediaBreakpoints.xs: {\n return width <= xsBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.sm: {\n return width >= smBreakpointMinPixels && width <= smBreakpointMaxPixels;\n }\n case SkyMediaBreakpoints.md: {\n return width >= mdBreakpointMinPixels && width <= mdBreakpointMaxPixels;\n }\n default: {\n return width >= lgBreakpointMinPixels;\n }\n }\n }\n\n public destroy(): void {\n this.currentSubject.complete();\n }\n}\n"]}
|
|
@@ -3,8 +3,8 @@ import { SkyMediaQueryService } from '@skyux/core';
|
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import { takeUntil } from 'rxjs/operators';
|
|
5
5
|
import { SkyVerticalTabMediaQueryService } from './vertical-tab-media-query.service';
|
|
6
|
-
import { SkyVerticalTabsetService } from './vertical-tabset.service';
|
|
7
6
|
import { SkyVerticalTabsetAdapterService } from './vertical-tabset-adapter.service';
|
|
7
|
+
import { SkyVerticalTabsetService } from './vertical-tabset.service';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
import * as i1 from "./vertical-tabset-adapter.service";
|
|
10
10
|
import * as i2 from "./vertical-tabset.service";
|