@skyux/tabs 12.6.0 → 12.7.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.
@@ -200,6 +200,9 @@ class SkyTabButtonHarness extends SkyComponentHarness {
200
200
  * Clicks the remove tab button if it is visible.
201
201
  */
202
202
  async clickRemoveButton() {
203
+ if (await this.isInWizardTabset()) {
204
+ throw new Error('Cannot use remove tab button in a wizard tabset.');
205
+ }
203
206
  const button = await this.locatorForOptional('.sky-btn-tab-close')();
204
207
  if (!button) {
205
208
  throw new Error('Unable to find remove tab button.');
@@ -210,6 +213,9 @@ class SkyTabButtonHarness extends SkyComponentHarness {
210
213
  * Gets the permalink that the page routes to when the tab is clicked.
211
214
  */
212
215
  async getPermalink() {
216
+ if (await this.isInWizardTabset()) {
217
+ throw new Error('Cannot get permalink for tab button in a wizard tabset.');
218
+ }
213
219
  return await (await this.#getTabButton()).getAttribute('href');
214
220
  }
215
221
  /**
@@ -238,6 +244,12 @@ class SkyTabButtonHarness extends SkyComponentHarness {
238
244
  async isDisabled() {
239
245
  return await (await this.#getTabButton()).hasClass('sky-btn-tab-disabled');
240
246
  }
247
+ /**
248
+ * Whether the tab button is in a Wizard tabset.
249
+ */
250
+ async isInWizardTabset() {
251
+ return await (await this.#getTabButton()).hasClass('sky-btn-tab-wizard');
252
+ }
241
253
  /**
242
254
  * Gets the id of the content controlled by this tab.
243
255
  * @internal
@@ -281,6 +293,9 @@ class SkyTabsetHarness extends SkyComponentHarness {
281
293
  * Clicks the new tab button if visible.
282
294
  */
283
295
  async clickNewTabButton() {
296
+ if (await this.isWizardTabset()) {
297
+ throw new Error('Cannot use new tab button in a wizard tabset.');
298
+ }
284
299
  const newTabButton = await this.locatorForOptional('button.sky-tabset-btn-new')();
285
300
  if (!newTabButton) {
286
301
  throw new Error('Unable to find the new tab button.');
@@ -291,6 +306,9 @@ class SkyTabsetHarness extends SkyComponentHarness {
291
306
  * Clicks the open tab button if visible.
292
307
  */
293
308
  async clickOpenTabButton() {
309
+ if (await this.isWizardTabset()) {
310
+ throw new Error('Cannot use open tab button in a wizard tabset.');
311
+ }
294
312
  const openTabButton = await this.locatorForOptional('button.sky-tabset-btn-open')();
295
313
  if (!openTabButton) {
296
314
  throw new Error('Unable to find the open tab button.');
@@ -366,6 +384,12 @@ class SkyTabsetHarness extends SkyComponentHarness {
366
384
  const id = await tabButton.getTabId();
367
385
  return await this.locatorFor(SkyTabContentHarness.with({ tabId: id }))();
368
386
  }
387
+ /**
388
+ * Whether the tabset is a Wizard component.
389
+ */
390
+ async isWizardTabset() {
391
+ return ((await (await this.host()).getAttribute('data-tab-style')) === 'wizard');
392
+ }
369
393
  async #getDropdownMenu() {
370
394
  const dropdown = await this.#getTabDropdown();
371
395
  if (!(await dropdown?.isOpen())) {
@@ -375,6 +399,51 @@ class SkyTabsetHarness extends SkyComponentHarness {
375
399
  }
376
400
  }
377
401
 
402
+ /**
403
+ * Harness to interact with tabset nav buttons in wizard style tabset tests.
404
+ */
405
+ class SkyTabsetNavButtonHarness extends SkyComponentHarness {
406
+ /**
407
+ * @internal
408
+ */
409
+ static { this.hostSelector = 'sky-tabset-nav-button'; }
410
+ #button = this.locatorFor('button');
411
+ /**
412
+ * Gets a `HarnessPredicate` that can be used to search for a
413
+ * `SkyTabsetNavButtonHarness` that meets certain criteria.
414
+ */
415
+ static with(filters) {
416
+ return SkyTabsetNavButtonHarness.getDataSkyIdPredicate(filters).addOption('buttonType', filters.buttonType, async (harness, buttonType) => {
417
+ const harnessButtonType = await harness.getButtonType();
418
+ return await HarnessPredicate.stringMatches(harnessButtonType, buttonType);
419
+ });
420
+ }
421
+ /**
422
+ * Clicks the button.
423
+ */
424
+ async click() {
425
+ return await (await this.#button()).click();
426
+ }
427
+ /**
428
+ * Gets the button text.
429
+ */
430
+ async getButtonText() {
431
+ return await (await this.#button()).text();
432
+ }
433
+ /**
434
+ * Gets the button type.
435
+ */
436
+ async getButtonType() {
437
+ return (await (await this.host()).getAttribute('data-button-type'));
438
+ }
439
+ /**
440
+ * Whether the button is disabled.
441
+ */
442
+ async isDisabled() {
443
+ return (await (await this.#button()).getAttribute('disabled')) !== null;
444
+ }
445
+ }
446
+
378
447
  /**
379
448
  * Harness for interacting with a vertical tab content in tests.
380
449
  */
@@ -671,5 +740,5 @@ class SkyVerticalTabsetHarness extends SkyComponentHarness {
671
740
  * Generated bundle index. Do not edit.
672
741
  */
673
742
 
674
- export { SkyTabButtonHarness, SkyTabContentHarness, SkyTabsetFixture, SkyTabsetHarness, SkyVerticalTabButtonHarness, SkyVerticalTabContentHarness, SkyVerticalTabsetGroupHarness, SkyVerticalTabsetHarness };
743
+ export { SkyTabButtonHarness, SkyTabContentHarness, SkyTabsetFixture, SkyTabsetHarness, SkyTabsetNavButtonHarness, SkyVerticalTabButtonHarness, SkyVerticalTabContentHarness, SkyVerticalTabsetGroupHarness, SkyVerticalTabsetHarness };
675
744
  //# sourceMappingURL=skyux-tabs-testing.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-tabs-testing.mjs","sources":["../../../../../libs/components/tabs/testing/src/legacy/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tab-content-harness.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tab-button-harness.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tabset-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tab-content-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tab-button-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tabset-group-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tabset-harness.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n * @internal\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string | undefined {\n const tabsetEl = this.#getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string | undefined {\n const tabsetEl = this.#getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.#getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n /* safety check */\n /* istanbul ignore next */\n return -1;\n }\n\n #debugEl: DebugElement;\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset',\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.#getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.#getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading span')?.childNodes[0],\n );\n const tabHeaderCount = this.#getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count'),\n );\n\n let permalinkValue: string | undefined;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<void> {\n await this.#clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<void> {\n await this.#clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<void> {\n const tabLinkEl = this.#getTabLinkEl(tabIndex);\n\n tabLinkEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<void> {\n const tabWrapperEl = this.#getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`,\n )[tabIndex];\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close',\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n async #clickButton(buttonCls: string): Promise<void> {\n const tabsetEl = this.#getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`,\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n #getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.#debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n #getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.#getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab`,\n );\n }\n\n #getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.#getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n #getTextContent(el: Element | Node | undefined | null): string | undefined {\n return (el && el.textContent?.trim()) || undefined;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyTabContentHarnessFilters } from './tab-content-harness-filters';\n\n/**\n * Harness for interacting with a tab component in tests.\n */\nexport class SkyTabContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tab';\n\n #getTab = this.locatorFor('.sky-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabContentHarness` that meets certain criteria.\n * @internal\n */\n public static with(\n filters: SkyTabContentHarnessFilters,\n ): HarnessPredicate<SkyTabContentHarness> {\n return new HarnessPredicate(SkyTabContentHarness, filters).addOption(\n 'tabId',\n filters.tabId,\n async (harness, tabId) => {\n const harnessId = await harness.getTabId();\n return await HarnessPredicate.stringMatches(harnessId, tabId);\n },\n );\n }\n\n /**\n * Gets the tab's layout.\n */\n public async getLayout(): Promise<string> {\n return (await (await this.host()).getAttribute('layout')) || 'none';\n }\n\n /**\n * @internal\n */\n public async getTabId(): Promise<string | null> {\n return await (await this.#getTab()).getAttribute('id');\n }\n\n /**\n * Whether the tab content is visible.\n */\n public async isVisible(): Promise<boolean> {\n return !(await (await this.#getTab()).getProperty<boolean>('hidden'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyTabButtonHarnessFilters } from './tab-button-harness-filters';\nimport { SkyTabContentHarness } from './tab-content-harness';\n\n/**\n * Harness for interacting with a tab button component in tests.\n */\nexport class SkyTabButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tab-button';\n\n #getTabButton = this.locatorFor('a.sky-btn-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTabButtonHarnessFilters,\n ): HarnessPredicate<SkyTabButtonHarness> {\n return new HarnessPredicate(SkyTabButtonHarness, filters).addOption(\n 'tabHeading',\n filters.tabHeading,\n async (harness, tabHeading) => {\n const harnessTabHeading = await harness.getTabHeading();\n return await HarnessPredicate.stringMatches(\n harnessTabHeading,\n tabHeading,\n );\n },\n );\n }\n\n /**\n * Clicks the tab button.\n */\n public async click(): Promise<void> {\n return await (await this.#getTabButton()).click();\n }\n\n /**\n * Clicks the remove tab button if it is visible.\n */\n public async clickRemoveButton(): Promise<void> {\n const button = await this.locatorForOptional('.sky-btn-tab-close')();\n if (!button) {\n throw new Error('Unable to find remove tab button.');\n }\n return await button.click();\n }\n\n /**\n * Gets the permalink that the page routes to when the tab is clicked.\n */\n public async getPermalink(): Promise<string | null> {\n return await (await this.#getTabButton()).getAttribute('href');\n }\n\n /**\n * Gets the `SkyTabContentHarness` controlled by this tab button.\n */\n public async getTabContentHarness(): Promise<SkyTabContentHarness> {\n return await this.documentRootLocatorFactory().locatorFor(\n SkyTabContentHarness.with({ tabId: await this.getTabId() }),\n )();\n }\n\n /**\n * Gets the tab heading.\n */\n public async getTabHeading(): Promise<string> {\n return (\n // eslint-disable-next-line @cspell/spellchecker\n await (await this.locatorFor('.sky-tab-heading > span[skyid]')()).text()\n );\n }\n\n /**\n * Gets whether the tab button is active.\n */\n public async isActive(): Promise<boolean> {\n return await (await this.#getTabButton()).hasClass('sky-btn-tab-selected');\n }\n\n /**\n * Gets whether the tab button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getTabButton()).hasClass('sky-btn-tab-disabled');\n }\n\n /**\n * Gets the id of the content controlled by this tab.\n * @internal\n */\n public async getTabId(): Promise<string> {\n return (\n (await (await this.#getTabButton()).getAttribute('aria-controls')) ||\n /* istanbul ignore next */\n ''\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyDropdownHarness,\n SkyDropdownMenuHarness,\n} from '@skyux/popovers/testing';\nimport { SkyTabsetButtonsDisplayMode } from '@skyux/tabs';\n\nimport { SkyTabButtonHarness } from './tab-button-harness';\nimport { SkyTabContentHarness } from './tab-content-harness';\nimport { SkyTabsetHarnessFilters } from './tabset-harness-filters';\n\n/**\n * Harness for interacting with a tabset component in tests.\n */\nexport class SkyTabsetHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tabset';\n\n #getTabset = this.locatorFor('.sky-tabset');\n #getTabButtons = this.locatorForAll(SkyTabButtonHarness);\n #getTabDropdown = this.locatorFor(SkyDropdownHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabsetHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTabsetHarnessFilters,\n ): HarnessPredicate<SkyTabsetHarness> {\n return SkyTabsetHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * In `dropdown` mode, clicks the dropdown tab to open the tab dropdown menu.\n */\n public async clickDropdownTab(): Promise<void> {\n if (!((await this.getMode()) === 'dropdown')) {\n throw new Error(\n 'Cannot click dropdown tab button, tab is not in dropdown mode.',\n );\n }\n const button = await this.locatorFor(SkyDropdownHarness)();\n return await button.clickDropdownButton();\n }\n\n /**\n * Clicks the new tab button if visible.\n */\n public async clickNewTabButton(): Promise<void> {\n const newTabButton = await this.locatorForOptional(\n 'button.sky-tabset-btn-new',\n )();\n\n if (!newTabButton) {\n throw new Error('Unable to find the new tab button.');\n }\n\n return await newTabButton.click();\n }\n\n /**\n * Clicks the open tab button if visible.\n */\n public async clickOpenTabButton(): Promise<void> {\n const openTabButton = await this.locatorForOptional(\n 'button.sky-tabset-btn-open',\n )();\n\n if (!openTabButton) {\n throw new Error('Unable to find the open tab button.');\n }\n\n return await openTabButton.click();\n }\n\n /**\n * Clicks a tab button with a `tabHeading` matching the input.\n */\n public async clickTabButton(tabHeading: string): Promise<void> {\n const tabButton = await this.getTabButtonHarness(tabHeading);\n return await tabButton.click();\n }\n\n /**\n * Gets the active tab button harness.\n */\n public async getActiveTabButton(): Promise<SkyTabButtonHarness | null> {\n const tabButtonHarnesses = await this.getTabButtonHarnesses();\n\n for (const harness of tabButtonHarnesses) {\n if (await harness.isActive()) {\n return harness;\n }\n }\n\n /* istanbul ignore next */\n return null;\n }\n\n /**\n * Gets the tabset aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getTabset()).getAttribute('aria-label');\n }\n\n /**\n * Gets the tabset aria-labelledby value.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.#getTabset()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the tabset's display mode.\n */\n public async getMode(): Promise<SkyTabsetButtonsDisplayMode> {\n if (await (await this.#getTabset()).hasClass('sky-tabset-mode-tabs')) {\n return 'tabs';\n }\n return 'dropdown';\n }\n\n /**\n * Gets a tab button harness with the given `tabHeading`\n */\n public async getTabButtonHarness(\n tabHeading: string,\n ): Promise<SkyTabButtonHarness> {\n if ((await this.getMode()) === 'dropdown') {\n const menu = await this.#getDropdownMenu();\n return await menu.queryHarness(\n SkyTabButtonHarness.with({ tabHeading: tabHeading }),\n );\n }\n return await this.locatorFor(\n SkyTabButtonHarness.with({ tabHeading: tabHeading }),\n )();\n }\n\n /**\n * Gets an array of all tab button harnesses.\n */\n public async getTabButtonHarnesses(): Promise<SkyTabButtonHarness[]> {\n if ((await this.getMode()) === 'dropdown') {\n const menu = await this.#getDropdownMenu();\n return await menu.queryHarnesses(SkyTabButtonHarness);\n }\n return await this.#getTabButtons();\n }\n\n /**\n * Gets a tab content harness for the tab with the given `tabHeading`.\n */\n public async getTabContentHarness(\n tabHeading: string,\n ): Promise<SkyTabContentHarness> {\n const tabButton = await this.getTabButtonHarness(tabHeading);\n const id = await tabButton.getTabId();\n return await this.locatorFor(SkyTabContentHarness.with({ tabId: id }))();\n }\n\n async #getDropdownMenu(): Promise<SkyDropdownMenuHarness> {\n const dropdown = await this.#getTabDropdown();\n if (!(await dropdown?.isOpen())) {\n throw new Error(\n 'Cannot get tab button when tabs is in dropdown mode and is closed.',\n );\n }\n return await dropdown.getDropdownMenu();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabContentHarnessFilters } from './vertical-tab-content-harness-filters';\n\n/**\n * Harness for interacting with a vertical tab content in tests.\n */\nexport class SkyVerticalTabContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-vertical-tab-content-pane';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabContentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabContentHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabContentHarness> {\n return SkyVerticalTabContentHarness.getDataSkyIdPredicate(\n filters,\n ).addOption('tabId', filters.tabId, async (harness, tabId) => {\n const harnessId = await harness.getTabId();\n return await HarnessPredicate.stringMatches(harnessId, tabId);\n });\n }\n\n /**\n * Gets the tab content's id.\n * @internal\n */\n public async getTabId(): Promise<string | null> {\n return await (await this.host()).getAttribute('id');\n }\n\n /**\n * Whether the tab content is visible.\n */\n public async isVisible(): Promise<boolean> {\n return !(await (await this.host()).hasClass('sky-vertical-tab-hidden'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabContentHarness } from './vertical-tab-content-harness';\n\n/**\n * Harness for interacting with a vertical tab button in tests.\n */\nexport class SkyVerticalTabButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tab';\n\n #tabButton = this.locatorFor('a.sky-vertical-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabButtonHarness> {\n return new HarnessPredicate(SkyVerticalTabButtonHarness, filters).addOption(\n 'tabHeading',\n filters.tabHeading,\n async (harness, heading) => {\n const tabHeading = await harness.getTabHeading();\n return tabHeading === heading;\n },\n );\n }\n\n /**\n * Clicks the tab button to activate the tab.\n */\n public async click(): Promise<void> {\n return await (await this.#tabButton()).click();\n }\n\n /**\n * Gets the `SkyVerticalTabContentHarness` for this tab.\n */\n public async getTabContent(): Promise<SkyVerticalTabContentHarness> {\n return await this.documentRootLocatorFactory().locatorFor(\n SkyVerticalTabContentHarness.with({ tabId: await this.getTabId() }),\n )();\n }\n\n /**\n * Gets the tab header count.\n */\n public async getTabHeaderCount(): Promise<number> {\n const value = (\n await (await this.locatorFor('.sky-vertical-tab-count')()).text()\n ).trim();\n\n // get value between parentheses\n const rx = /\\(([^)]+)\\)/;\n\n return Number(value.match(rx)?.[1]);\n }\n\n /**\n * Gets the tab heading text.\n */\n public async getTabHeading(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-vertical-tab-heading-value')()).text()\n ).trim();\n }\n\n /**\n * Gets the id of the content controlled by this tab.\n * @internal\n */\n public async getTabId(): Promise<string> {\n return (\n (await (await this.#tabButton()).getAttribute('aria-controls')) ||\n /* istanbul ignore next */\n ''\n );\n }\n\n /**\n * Whether the tab is active.\n */\n public async isActive(): Promise<boolean> {\n return await (await this.#tabButton()).hasClass('sky-vertical-tab-active');\n }\n\n /**\n * Whether the tab is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (\n await this.#tabButton()\n ).hasClass('sky-vertical-tabset-button-disabled');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarness } from './vertical-tab-button-harness';\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabsetGroupHarnessFilters } from './vertical-tabset-group-harness-filters';\n\n/**\n * Harness for interacting with a vertical tabset group in tests.\n */\nexport class SkyVerticalTabsetGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tabset-group';\n\n #button = this.locatorFor('button.sky-vertical-tabset-button');\n #header = this.locatorFor('.sky-vertical-tabset-group-header');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabsetGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabsetGroupHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabsetGroupHarness> {\n return new HarnessPredicate(\n SkyVerticalTabsetGroupHarness,\n filters,\n ).addOption(\n 'groupHeading',\n filters.groupHeading,\n async (harness, heading) => {\n return (await harness.getGroupHeading()) === heading;\n },\n );\n }\n\n /**\n * Clicks the group button to toggle its expanded state.\n */\n public async click(): Promise<void> {\n return await (await this.#button()).click();\n }\n\n /**\n * Gets the group heading text.\n */\n public async getGroupHeading(): Promise<string> {\n return (await (await this.#button()).text()).trim();\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` for a specific tab under this group based on filters.\n */\n public async getVerticalTab(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): Promise<SkyVerticalTabButtonHarness> {\n return await this.locatorFor(SkyVerticalTabButtonHarness.with(filters))();\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` for all tabs under this group.\n */\n public async getVerticalTabs(): Promise<SkyVerticalTabButtonHarness[]> {\n return await this.locatorForAll(SkyVerticalTabButtonHarness)();\n }\n\n /**\n * Whether a tab under this group is active.\n */\n public async isActive(): Promise<boolean> {\n return await (\n await this.#header()\n ).hasClass('sky-vertical-tabset-group-header-active');\n }\n\n /**\n * Whether the group is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (\n await this.#button()\n ).hasClass('sky-vertical-tabset-button-disabled');\n }\n\n /**\n * Whether the group is expanded.\n */\n public async isOpen(): Promise<boolean> {\n return (\n (await (await this.#button()).getAttribute('aria-expanded')) === 'true'\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarness } from './vertical-tab-button-harness';\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabContentHarness } from './vertical-tab-content-harness';\nimport { SkyVerticalTabsetGroupHarness } from './vertical-tabset-group-harness';\nimport { SkyVerticalTabsetGroupHarnessFilters } from './vertical-tabset-group-harness-filters';\nimport { SkyVerticalTabsetHarnessFilters } from './vertical-tabset-harness-filters';\n\n/**\n * Harness for interacting with the vertical tabset component in tests.\n */\nexport class SkyVerticalTabsetHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tabset';\n\n #showTabsButton = this.locatorForOptional(\n '.sky-vertical-tabset-content > button.sky-vertical-tabset-show-tabs-btn',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabsetHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabsetHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabsetHarness> {\n return SkyVerticalTabsetHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Click the show tabs button in mobile view.\n */\n public async clickShowTabsButton(): Promise<void> {\n const showTabsButton = await this.#showTabsButton();\n if (showTabsButton) {\n await showTabsButton.click();\n }\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` of the currently active tab.\n */\n public async getActiveTab(): Promise<\n SkyVerticalTabButtonHarness | undefined\n > {\n const tabs = await this.getTabs();\n if (tabs) {\n for (const tab of tabs) {\n if (await tab.isActive()) {\n return tab;\n }\n }\n }\n return undefined;\n }\n\n /**\n * Gets the `SkyVerticalTabContentHarness` for the currently active tab.\n */\n public async getActiveTabContent(): Promise<\n SkyVerticalTabContentHarness | undefined\n > {\n // in mobile view tabs are not rendered.\n if (!(await this.isTabsVisible())) {\n const contents = await this.locatorForAll(SkyVerticalTabContentHarness)();\n for (const content of contents) {\n if (await content.isVisible()) {\n return content;\n }\n }\n }\n\n const activeTab = await this.getActiveTab();\n if (activeTab) {\n return await activeTab.getTabContent();\n }\n return undefined;\n }\n\n /**\n * Gets the aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (\n await this.locatorFor('span.sky-vertical-tabset-tablist')()\n ).getAttribute('aria-label');\n }\n\n /**\n * Gets the aria-labelledby.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (\n await this.locatorFor('span.sky-vertical-tabset-tablist')()\n ).getAttribute('aria-labelledby');\n }\n\n /**\n * Get the vertical tabset group by `SkyVerticalTabsetGroupHarnessFilters`\n */\n public async getGroup(\n filters: SkyVerticalTabsetGroupHarnessFilters,\n ): Promise<SkyVerticalTabsetGroupHarness | undefined> {\n return await this.locatorFor(SkyVerticalTabsetGroupHarness.with(filters))();\n }\n\n /**\n * Gets an array of `SkyVerticalTabsetGroupHarness` in this tabset.\n */\n public async getGroups(): Promise<SkyVerticalTabsetGroupHarness[]> {\n // open tablist if in mobile view\n if (!(await this.isTabsVisible())) {\n await this.clickShowTabsButton();\n }\n\n return await this.locatorForAll(SkyVerticalTabsetGroupHarness)();\n }\n\n /**\n * Gets the text in the show tabs button in mobile view.\n */\n public async getShowTabsText(): Promise<string | undefined> {\n const showTabsButton = await this.#showTabsButton();\n\n // check if it is in mobile view\n if (showTabsButton) {\n return (await await showTabsButton.text()).trim();\n }\n\n return undefined;\n }\n\n /**\n * Gets a `SkyVerticalTabButtonHarness` that matches the filter.\n */\n public async getTab(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): Promise<SkyVerticalTabButtonHarness> {\n return await this.locatorFor(SkyVerticalTabButtonHarness.with(filters))();\n }\n\n /**\n * Gets an array of `SkyVerticalTabButtonHarness` in this tabset.\n */\n public async getTabs(): Promise<SkyVerticalTabButtonHarness[]> {\n // open tablist if in mobile view\n if (!(await this.isTabsVisible())) {\n await this.clickShowTabsButton();\n }\n\n return await this.locatorForAll(SkyVerticalTabButtonHarness)();\n }\n\n /**\n * Whether the tabs are visible.\n * In mobile view, vertical tabsets collapse to just the content pane\n * with a button to show the tabs.\n */\n public async isTabsVisible(): Promise<boolean> {\n const showTabsButton = await this.#showTabsButton();\n if (showTabsButton) {\n return false;\n }\n return true;\n }\n}\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":"skyux-tabs-testing.mjs","sources":["../../../../../libs/components/tabs/testing/src/legacy/tabs/tabset-fixture.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tab-content-harness.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tab-button-harness.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tabset-harness.ts","../../../../../libs/components/tabs/testing/src/modules/tabs/tabset-nav-button-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tab-content-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tab-button-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tabset-group-harness.ts","../../../../../libs/components/tabs/testing/src/modules/vertical-tabset/vertical-tabset-harness.ts","../../../../../libs/components/tabs/testing/src/skyux-tabs-testing.ts"],"sourcesContent":["import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyTabsetFixtureTab } from './tab-fixture-tab';\n\n/**\n * Allows interaction with a SKY UX tabset component.\n * @internal\n */\nexport class SkyTabsetFixture {\n /**\n * The tabset component's ARIA label.\n */\n public get ariaLabel(): string | undefined {\n const tabsetEl = this.#getTabsetEl();\n return tabsetEl.getAttribute('aria-label') || undefined;\n }\n\n /**\n * The tabset component's ARIA labelled by attribute.\n */\n public get ariaLabelledBy(): string | undefined {\n const tabsetEl = this.#getTabsetEl();\n return tabsetEl.getAttribute('aria-labelledby') || undefined;\n }\n\n /**\n * The index of the currently selected tab.\n */\n public get activeTabIndex(): number {\n const tabLinkEls = this.#getTabLinkEls();\n\n for (let i = 0, n = tabLinkEls.length; i < n; i++) {\n if (tabLinkEls.item(i).classList.contains('sky-btn-tab-selected')) {\n return i;\n }\n }\n\n /* safety check */\n /* istanbul ignore next */\n return -1;\n }\n\n #debugEl: DebugElement;\n #fixture: ComponentFixture<unknown>;\n\n constructor(fixture: ComponentFixture<unknown>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-tabset',\n );\n }\n\n /**\n * Retrieves information about the tab at the specified index.\n * @param tabIndex The index of the tab.\n */\n public getTab(tabIndex: number): SkyTabsetFixtureTab {\n const tabLinkEl = this.#getTabLinkEl(tabIndex);\n\n const active = this.activeTabIndex === tabIndex;\n const disabled = tabLinkEl.classList.contains('sky-btn-tab-disabled');\n const tabHeading = this.#getTextContent(\n tabLinkEl.querySelector('.sky-tab-heading span')?.childNodes[0],\n );\n const tabHeaderCount = this.#getTextContent(\n tabLinkEl.querySelector('.sky-tab-header-count'),\n );\n\n let permalinkValue: string | undefined;\n\n if (tabLinkEl.href) {\n const permalink = tabLinkEl.href.split('?')[1];\n if (permalink) {\n const permalinkParts = permalink.split('=');\n\n permalinkValue = decodeURIComponent(permalinkParts[1]);\n }\n }\n\n return {\n active,\n disabled,\n permalinkValue,\n tabHeaderCount,\n tabHeading,\n };\n }\n\n /**\n * Clicks the tabset's \"new\" button.\n */\n public async clickNewButton(): Promise<void> {\n await this.#clickButton('sky-tabset-btn-new');\n }\n\n /**\n * Clicks the tabset's \"open\" button.\n */\n public async clickOpenButton(): Promise<void> {\n await this.#clickButton('sky-tabset-btn-open');\n }\n\n /**\n * Clicks the tab button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTab(tabIndex: number): Promise<void> {\n const tabLinkEl = this.#getTabLinkEl(tabIndex);\n\n tabLinkEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n /**\n * Click's the tab's close button at the specified index.\n * @param tabIndex The index of the tab.\n */\n public async clickTabClose(tabIndex: number): Promise<void> {\n const tabWrapperEl = this.#getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab-wrapper`,\n )[tabIndex];\n\n const closeBtnEl = tabWrapperEl.querySelector(\n '.sky-btn-tab-close',\n ) as HTMLButtonElement;\n\n if (!closeBtnEl) {\n throw new Error('The specified tab does not have a close button.');\n }\n\n closeBtnEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n async #clickButton(buttonCls: string): Promise<void> {\n const tabsetEl = this.#getTabsetEl();\n\n const newButtonEl = tabsetEl.querySelector(\n `.sky-tabset-btns .${buttonCls}`,\n ) as HTMLButtonElement;\n\n newButtonEl.click();\n\n this.#fixture.detectChanges();\n await this.#fixture.whenStable();\n }\n\n #getTabsetEl(): HTMLDivElement {\n const tabsetEl = this.#debugEl.query(By.css('.sky-tabset')).nativeElement;\n\n return tabsetEl;\n }\n\n #getTabLinkEls(): NodeListOf<HTMLAnchorElement> {\n return this.#getTabsetEl().querySelectorAll(\n `.sky-tabset-tabs .sky-btn-tab`,\n );\n }\n\n #getTabLinkEl(tabIndex: number): HTMLAnchorElement {\n const tabLinkEl = this.#getTabLinkEls().item(tabIndex);\n\n if (!tabLinkEl) {\n throw new Error(`There is no tab at index ${tabIndex}.`);\n }\n\n return tabLinkEl;\n }\n\n #getTextContent(el: Element | Node | undefined | null): string | undefined {\n return (el && el.textContent?.trim()) || undefined;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyTabContentHarnessFilters } from './tab-content-harness-filters';\n\n/**\n * Harness for interacting with a tab component in tests.\n */\nexport class SkyTabContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tab';\n\n #getTab = this.locatorFor('.sky-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabContentHarness` that meets certain criteria.\n * @internal\n */\n public static with(\n filters: SkyTabContentHarnessFilters,\n ): HarnessPredicate<SkyTabContentHarness> {\n return new HarnessPredicate(SkyTabContentHarness, filters).addOption(\n 'tabId',\n filters.tabId,\n async (harness, tabId) => {\n const harnessId = await harness.getTabId();\n return await HarnessPredicate.stringMatches(harnessId, tabId);\n },\n );\n }\n\n /**\n * Gets the tab's layout.\n */\n public async getLayout(): Promise<string> {\n return (await (await this.host()).getAttribute('layout')) || 'none';\n }\n\n /**\n * @internal\n */\n public async getTabId(): Promise<string | null> {\n return await (await this.#getTab()).getAttribute('id');\n }\n\n /**\n * Whether the tab content is visible.\n */\n public async isVisible(): Promise<boolean> {\n return !(await (await this.#getTab()).getProperty<boolean>('hidden'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyTabButtonHarnessFilters } from './tab-button-harness-filters';\nimport { SkyTabContentHarness } from './tab-content-harness';\n\n/**\n * Harness for interacting with a tab button component in tests.\n */\nexport class SkyTabButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tab-button';\n\n #getTabButton = this.locatorFor('a.sky-btn-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTabButtonHarnessFilters,\n ): HarnessPredicate<SkyTabButtonHarness> {\n return new HarnessPredicate(SkyTabButtonHarness, filters).addOption(\n 'tabHeading',\n filters.tabHeading,\n async (harness, tabHeading) => {\n const harnessTabHeading = await harness.getTabHeading();\n return await HarnessPredicate.stringMatches(\n harnessTabHeading,\n tabHeading,\n );\n },\n );\n }\n\n /**\n * Clicks the tab button.\n */\n public async click(): Promise<void> {\n return await (await this.#getTabButton()).click();\n }\n\n /**\n * Clicks the remove tab button if it is visible.\n */\n public async clickRemoveButton(): Promise<void> {\n if (await this.isInWizardTabset()) {\n throw new Error('Cannot use remove tab button in a wizard tabset.');\n }\n const button = await this.locatorForOptional('.sky-btn-tab-close')();\n if (!button) {\n throw new Error('Unable to find remove tab button.');\n }\n return await button.click();\n }\n\n /**\n * Gets the permalink that the page routes to when the tab is clicked.\n */\n public async getPermalink(): Promise<string | null> {\n if (await this.isInWizardTabset()) {\n throw new Error(\n 'Cannot get permalink for tab button in a wizard tabset.',\n );\n }\n return await (await this.#getTabButton()).getAttribute('href');\n }\n\n /**\n * Gets the `SkyTabContentHarness` controlled by this tab button.\n */\n public async getTabContentHarness(): Promise<SkyTabContentHarness> {\n return await this.documentRootLocatorFactory().locatorFor(\n SkyTabContentHarness.with({ tabId: await this.getTabId() }),\n )();\n }\n\n /**\n * Gets the tab heading.\n */\n public async getTabHeading(): Promise<string> {\n return (\n // eslint-disable-next-line @cspell/spellchecker\n await (await this.locatorFor('.sky-tab-heading > span[skyid]')()).text()\n );\n }\n\n /**\n * Gets whether the tab button is active.\n */\n public async isActive(): Promise<boolean> {\n return await (await this.#getTabButton()).hasClass('sky-btn-tab-selected');\n }\n\n /**\n * Gets whether the tab button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (await this.#getTabButton()).hasClass('sky-btn-tab-disabled');\n }\n\n /**\n * Whether the tab button is in a Wizard tabset.\n */\n public async isInWizardTabset(): Promise<boolean> {\n return await (await this.#getTabButton()).hasClass('sky-btn-tab-wizard');\n }\n\n /**\n * Gets the id of the content controlled by this tab.\n * @internal\n */\n public async getTabId(): Promise<string> {\n return (\n (await (await this.#getTabButton()).getAttribute('aria-controls')) ||\n /* istanbul ignore next */\n ''\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport {\n SkyDropdownHarness,\n SkyDropdownMenuHarness,\n} from '@skyux/popovers/testing';\nimport { SkyTabsetButtonsDisplayMode } from '@skyux/tabs';\n\nimport { SkyTabButtonHarness } from './tab-button-harness';\nimport { SkyTabContentHarness } from './tab-content-harness';\nimport { SkyTabsetHarnessFilters } from './tabset-harness-filters';\n\n/**\n * Harness for interacting with a tabset component in tests.\n */\nexport class SkyTabsetHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tabset';\n\n #getTabset = this.locatorFor('.sky-tabset');\n #getTabButtons = this.locatorForAll(SkyTabButtonHarness);\n #getTabDropdown = this.locatorFor(SkyDropdownHarness);\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabsetHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTabsetHarnessFilters,\n ): HarnessPredicate<SkyTabsetHarness> {\n return SkyTabsetHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * In `dropdown` mode, clicks the dropdown tab to open the tab dropdown menu.\n */\n public async clickDropdownTab(): Promise<void> {\n if (!((await this.getMode()) === 'dropdown')) {\n throw new Error(\n 'Cannot click dropdown tab button, tab is not in dropdown mode.',\n );\n }\n const button = await this.locatorFor(SkyDropdownHarness)();\n return await button.clickDropdownButton();\n }\n\n /**\n * Clicks the new tab button if visible.\n */\n public async clickNewTabButton(): Promise<void> {\n if (await this.isWizardTabset()) {\n throw new Error('Cannot use new tab button in a wizard tabset.');\n }\n\n const newTabButton = await this.locatorForOptional(\n 'button.sky-tabset-btn-new',\n )();\n\n if (!newTabButton) {\n throw new Error('Unable to find the new tab button.');\n }\n\n return await newTabButton.click();\n }\n\n /**\n * Clicks the open tab button if visible.\n */\n public async clickOpenTabButton(): Promise<void> {\n if (await this.isWizardTabset()) {\n throw new Error('Cannot use open tab button in a wizard tabset.');\n }\n\n const openTabButton = await this.locatorForOptional(\n 'button.sky-tabset-btn-open',\n )();\n\n if (!openTabButton) {\n throw new Error('Unable to find the open tab button.');\n }\n\n return await openTabButton.click();\n }\n\n /**\n * Clicks a tab button with a `tabHeading` matching the input.\n */\n public async clickTabButton(tabHeading: string): Promise<void> {\n const tabButton = await this.getTabButtonHarness(tabHeading);\n return await tabButton.click();\n }\n\n /**\n * Gets the active tab button harness.\n */\n public async getActiveTabButton(): Promise<SkyTabButtonHarness | null> {\n const tabButtonHarnesses = await this.getTabButtonHarnesses();\n\n for (const harness of tabButtonHarnesses) {\n if (await harness.isActive()) {\n return harness;\n }\n }\n\n /* istanbul ignore next */\n return null;\n }\n\n /**\n * Gets the tabset aria-label value.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (await this.#getTabset()).getAttribute('aria-label');\n }\n\n /**\n * Gets the tabset aria-labelledby value.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (await this.#getTabset()).getAttribute('aria-labelledby');\n }\n\n /**\n * Gets the tabset's display mode.\n */\n public async getMode(): Promise<SkyTabsetButtonsDisplayMode> {\n if (await (await this.#getTabset()).hasClass('sky-tabset-mode-tabs')) {\n return 'tabs';\n }\n return 'dropdown';\n }\n\n /**\n * Gets a tab button harness with the given `tabHeading`\n */\n public async getTabButtonHarness(\n tabHeading: string,\n ): Promise<SkyTabButtonHarness> {\n if ((await this.getMode()) === 'dropdown') {\n const menu = await this.#getDropdownMenu();\n return await menu.queryHarness(\n SkyTabButtonHarness.with({ tabHeading: tabHeading }),\n );\n }\n return await this.locatorFor(\n SkyTabButtonHarness.with({ tabHeading: tabHeading }),\n )();\n }\n\n /**\n * Gets an array of all tab button harnesses.\n */\n public async getTabButtonHarnesses(): Promise<SkyTabButtonHarness[]> {\n if ((await this.getMode()) === 'dropdown') {\n const menu = await this.#getDropdownMenu();\n return await menu.queryHarnesses(SkyTabButtonHarness);\n }\n return await this.#getTabButtons();\n }\n\n /**\n * Gets a tab content harness for the tab with the given `tabHeading`.\n */\n public async getTabContentHarness(\n tabHeading: string,\n ): Promise<SkyTabContentHarness> {\n const tabButton = await this.getTabButtonHarness(tabHeading);\n const id = await tabButton.getTabId();\n return await this.locatorFor(SkyTabContentHarness.with({ tabId: id }))();\n }\n\n /**\n * Whether the tabset is a Wizard component.\n */\n public async isWizardTabset(): Promise<boolean> {\n return (\n (await (await this.host()).getAttribute('data-tab-style')) === 'wizard'\n );\n }\n\n async #getDropdownMenu(): Promise<SkyDropdownMenuHarness> {\n const dropdown = await this.#getTabDropdown();\n if (!(await dropdown?.isOpen())) {\n throw new Error(\n 'Cannot get tab button when tabs is in dropdown mode and is closed.',\n );\n }\n return await dropdown.getDropdownMenu();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyTabsetNavButtonType } from '@skyux/tabs';\n\nimport { SkyTabsetNavButtonHarnessFilters } from './tabset-nav-button-harness-filters';\n\n/**\n * Harness to interact with tabset nav buttons in wizard style tabset tests.\n */\nexport class SkyTabsetNavButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-tabset-nav-button';\n\n #button = this.locatorFor('button');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyTabsetNavButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyTabsetNavButtonHarnessFilters,\n ): HarnessPredicate<SkyTabsetNavButtonHarness> {\n return SkyTabsetNavButtonHarness.getDataSkyIdPredicate(filters).addOption(\n 'buttonType',\n filters.buttonType,\n async (harness, buttonType) => {\n const harnessButtonType = await harness.getButtonType();\n return await HarnessPredicate.stringMatches(\n harnessButtonType,\n buttonType,\n );\n },\n );\n }\n\n /**\n * Clicks the button.\n */\n public async click(): Promise<void> {\n return await (await this.#button()).click();\n }\n\n /**\n * Gets the button text.\n */\n public async getButtonText(): Promise<string> {\n return await (await this.#button()).text();\n }\n\n /**\n * Gets the button type.\n */\n public async getButtonType(): Promise<SkyTabsetNavButtonType | null> {\n return (await (\n await this.host()\n ).getAttribute('data-button-type')) as SkyTabsetNavButtonType;\n }\n\n /**\n * Whether the button is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return (await (await this.#button()).getAttribute('disabled')) !== null;\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabContentHarnessFilters } from './vertical-tab-content-harness-filters';\n\n/**\n * Harness for interacting with a vertical tab content in tests.\n */\nexport class SkyVerticalTabContentHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = '.sky-vertical-tab-content-pane';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabContentHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabContentHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabContentHarness> {\n return SkyVerticalTabContentHarness.getDataSkyIdPredicate(\n filters,\n ).addOption('tabId', filters.tabId, async (harness, tabId) => {\n const harnessId = await harness.getTabId();\n return await HarnessPredicate.stringMatches(harnessId, tabId);\n });\n }\n\n /**\n * Gets the tab content's id.\n * @internal\n */\n public async getTabId(): Promise<string | null> {\n return await (await this.host()).getAttribute('id');\n }\n\n /**\n * Whether the tab content is visible.\n */\n public async isVisible(): Promise<boolean> {\n return !(await (await this.host()).hasClass('sky-vertical-tab-hidden'));\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabContentHarness } from './vertical-tab-content-harness';\n\n/**\n * Harness for interacting with a vertical tab button in tests.\n */\nexport class SkyVerticalTabButtonHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tab';\n\n #tabButton = this.locatorFor('a.sky-vertical-tab');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabButtonHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabButtonHarness> {\n return new HarnessPredicate(SkyVerticalTabButtonHarness, filters).addOption(\n 'tabHeading',\n filters.tabHeading,\n async (harness, heading) => {\n const tabHeading = await harness.getTabHeading();\n return tabHeading === heading;\n },\n );\n }\n\n /**\n * Clicks the tab button to activate the tab.\n */\n public async click(): Promise<void> {\n return await (await this.#tabButton()).click();\n }\n\n /**\n * Gets the `SkyVerticalTabContentHarness` for this tab.\n */\n public async getTabContent(): Promise<SkyVerticalTabContentHarness> {\n return await this.documentRootLocatorFactory().locatorFor(\n SkyVerticalTabContentHarness.with({ tabId: await this.getTabId() }),\n )();\n }\n\n /**\n * Gets the tab header count.\n */\n public async getTabHeaderCount(): Promise<number> {\n const value = (\n await (await this.locatorFor('.sky-vertical-tab-count')()).text()\n ).trim();\n\n // get value between parentheses\n const rx = /\\(([^)]+)\\)/;\n\n return Number(value.match(rx)?.[1]);\n }\n\n /**\n * Gets the tab heading text.\n */\n public async getTabHeading(): Promise<string> {\n return (\n await (await this.locatorFor('.sky-vertical-tab-heading-value')()).text()\n ).trim();\n }\n\n /**\n * Gets the id of the content controlled by this tab.\n * @internal\n */\n public async getTabId(): Promise<string> {\n return (\n (await (await this.#tabButton()).getAttribute('aria-controls')) ||\n /* istanbul ignore next */\n ''\n );\n }\n\n /**\n * Whether the tab is active.\n */\n public async isActive(): Promise<boolean> {\n return await (await this.#tabButton()).hasClass('sky-vertical-tab-active');\n }\n\n /**\n * Whether the tab is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (\n await this.#tabButton()\n ).hasClass('sky-vertical-tabset-button-disabled');\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarness } from './vertical-tab-button-harness';\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabsetGroupHarnessFilters } from './vertical-tabset-group-harness-filters';\n\n/**\n * Harness for interacting with a vertical tabset group in tests.\n */\nexport class SkyVerticalTabsetGroupHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tabset-group';\n\n #button = this.locatorFor('button.sky-vertical-tabset-button');\n #header = this.locatorFor('.sky-vertical-tabset-group-header');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabsetGroupHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabsetGroupHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabsetGroupHarness> {\n return new HarnessPredicate(\n SkyVerticalTabsetGroupHarness,\n filters,\n ).addOption(\n 'groupHeading',\n filters.groupHeading,\n async (harness, heading) => {\n return (await harness.getGroupHeading()) === heading;\n },\n );\n }\n\n /**\n * Clicks the group button to toggle its expanded state.\n */\n public async click(): Promise<void> {\n return await (await this.#button()).click();\n }\n\n /**\n * Gets the group heading text.\n */\n public async getGroupHeading(): Promise<string> {\n return (await (await this.#button()).text()).trim();\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` for a specific tab under this group based on filters.\n */\n public async getVerticalTab(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): Promise<SkyVerticalTabButtonHarness> {\n return await this.locatorFor(SkyVerticalTabButtonHarness.with(filters))();\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` for all tabs under this group.\n */\n public async getVerticalTabs(): Promise<SkyVerticalTabButtonHarness[]> {\n return await this.locatorForAll(SkyVerticalTabButtonHarness)();\n }\n\n /**\n * Whether a tab under this group is active.\n */\n public async isActive(): Promise<boolean> {\n return await (\n await this.#header()\n ).hasClass('sky-vertical-tabset-group-header-active');\n }\n\n /**\n * Whether the group is disabled.\n */\n public async isDisabled(): Promise<boolean> {\n return await (\n await this.#button()\n ).hasClass('sky-vertical-tabset-button-disabled');\n }\n\n /**\n * Whether the group is expanded.\n */\n public async isOpen(): Promise<boolean> {\n return (\n (await (await this.#button()).getAttribute('aria-expanded')) === 'true'\n );\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyVerticalTabButtonHarness } from './vertical-tab-button-harness';\nimport { SkyVerticalTabButtonHarnessFilters } from './vertical-tab-button-harness-filters';\nimport { SkyVerticalTabContentHarness } from './vertical-tab-content-harness';\nimport { SkyVerticalTabsetGroupHarness } from './vertical-tabset-group-harness';\nimport { SkyVerticalTabsetGroupHarnessFilters } from './vertical-tabset-group-harness-filters';\nimport { SkyVerticalTabsetHarnessFilters } from './vertical-tabset-harness-filters';\n\n/**\n * Harness for interacting with the vertical tabset component in tests.\n */\nexport class SkyVerticalTabsetHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-vertical-tabset';\n\n #showTabsButton = this.locatorForOptional(\n '.sky-vertical-tabset-content > button.sky-vertical-tabset-show-tabs-btn',\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyVerticalTabsetHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyVerticalTabsetHarnessFilters,\n ): HarnessPredicate<SkyVerticalTabsetHarness> {\n return SkyVerticalTabsetHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Click the show tabs button in mobile view.\n */\n public async clickShowTabsButton(): Promise<void> {\n const showTabsButton = await this.#showTabsButton();\n if (showTabsButton) {\n await showTabsButton.click();\n }\n }\n\n /**\n * Gets the `SkyVerticalTabButtonHarness` of the currently active tab.\n */\n public async getActiveTab(): Promise<\n SkyVerticalTabButtonHarness | undefined\n > {\n const tabs = await this.getTabs();\n if (tabs) {\n for (const tab of tabs) {\n if (await tab.isActive()) {\n return tab;\n }\n }\n }\n return undefined;\n }\n\n /**\n * Gets the `SkyVerticalTabContentHarness` for the currently active tab.\n */\n public async getActiveTabContent(): Promise<\n SkyVerticalTabContentHarness | undefined\n > {\n // in mobile view tabs are not rendered.\n if (!(await this.isTabsVisible())) {\n const contents = await this.locatorForAll(SkyVerticalTabContentHarness)();\n for (const content of contents) {\n if (await content.isVisible()) {\n return content;\n }\n }\n }\n\n const activeTab = await this.getActiveTab();\n if (activeTab) {\n return await activeTab.getTabContent();\n }\n return undefined;\n }\n\n /**\n * Gets the aria-label.\n */\n public async getAriaLabel(): Promise<string | null> {\n return await (\n await this.locatorFor('span.sky-vertical-tabset-tablist')()\n ).getAttribute('aria-label');\n }\n\n /**\n * Gets the aria-labelledby.\n */\n public async getAriaLabelledBy(): Promise<string | null> {\n return await (\n await this.locatorFor('span.sky-vertical-tabset-tablist')()\n ).getAttribute('aria-labelledby');\n }\n\n /**\n * Get the vertical tabset group by `SkyVerticalTabsetGroupHarnessFilters`\n */\n public async getGroup(\n filters: SkyVerticalTabsetGroupHarnessFilters,\n ): Promise<SkyVerticalTabsetGroupHarness | undefined> {\n return await this.locatorFor(SkyVerticalTabsetGroupHarness.with(filters))();\n }\n\n /**\n * Gets an array of `SkyVerticalTabsetGroupHarness` in this tabset.\n */\n public async getGroups(): Promise<SkyVerticalTabsetGroupHarness[]> {\n // open tablist if in mobile view\n if (!(await this.isTabsVisible())) {\n await this.clickShowTabsButton();\n }\n\n return await this.locatorForAll(SkyVerticalTabsetGroupHarness)();\n }\n\n /**\n * Gets the text in the show tabs button in mobile view.\n */\n public async getShowTabsText(): Promise<string | undefined> {\n const showTabsButton = await this.#showTabsButton();\n\n // check if it is in mobile view\n if (showTabsButton) {\n return (await await showTabsButton.text()).trim();\n }\n\n return undefined;\n }\n\n /**\n * Gets a `SkyVerticalTabButtonHarness` that matches the filter.\n */\n public async getTab(\n filters: SkyVerticalTabButtonHarnessFilters,\n ): Promise<SkyVerticalTabButtonHarness> {\n return await this.locatorFor(SkyVerticalTabButtonHarness.with(filters))();\n }\n\n /**\n * Gets an array of `SkyVerticalTabButtonHarness` in this tabset.\n */\n public async getTabs(): Promise<SkyVerticalTabButtonHarness[]> {\n // open tablist if in mobile view\n if (!(await this.isTabsVisible())) {\n await this.clickShowTabsButton();\n }\n\n return await this.locatorForAll(SkyVerticalTabButtonHarness)();\n }\n\n /**\n * Whether the tabs are visible.\n * In mobile view, vertical tabsets collapse to just the content pane\n * with a button to show the tabs.\n */\n public async isTabsVisible(): Promise<boolean> {\n const showTabsButton = await this.#showTabsButton();\n if (showTabsButton) {\n return false;\n }\n return true;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1918,6 +1918,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
1918
1918
  const buttonTypeNext = 'next';
1919
1919
  const buttonTypePrevious = 'previous';
1920
1920
  const buttonTypeFinish = 'finish';
1921
+ /**
1922
+ * Creates a button to navigate between tabs in a tabset when `tabStyle` is `"wizard"`.
1923
+ */
1921
1924
  class SkyTabsetNavButtonComponent {
1922
1925
  /**
1923
1926
  * The tabset wizard component to associate with the nav button.
@@ -1965,6 +1968,9 @@ class SkyTabsetNavButtonComponent {
1965
1968
  this.type = 'button';
1966
1969
  }
1967
1970
  }
1971
+ get buttonTypeData() {
1972
+ return this.buttonType;
1973
+ }
1968
1974
  /**
1969
1975
  * Whether to disable the nav button.
1970
1976
  * Defaults to the disabled state of the next tab for `next`, the existence of a previous tab for `previous`,
@@ -2041,7 +2047,7 @@ class SkyTabsetNavButtonComponent {
2041
2047
  }
2042
2048
  }
2043
2049
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: SkyTabsetNavButtonComponent, deps: [{ token: i3.SkyLogService }], target: i0.ɵɵFactoryTarget.Component }); }
2044
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: SkyTabsetNavButtonComponent, isStandalone: false, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText", disabled: "disabled" }, ngImport: i0, template: "@if (isVisible) {\n <button\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"\n disabled\n | skyTabsetNavButtonDisabled\n : buttonType\n : !!tabToSelect\n : tabToSelect?.disabled\n \"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n >\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n </button>\n}\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3$1.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: SkyTabsetNavButtonDisabledPipe, name: "skyTabsetNavButtonDisabled" }] }); }
2050
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: SkyTabsetNavButtonComponent, isStandalone: false, selector: "sky-tabset-nav-button", inputs: { tabset: "tabset", buttonType: "buttonType", buttonText: "buttonText", disabled: "disabled" }, host: { properties: { "attr.data-button-type": "this.buttonTypeData" } }, ngImport: i0, template: "@if (isVisible) {\n <button\n class=\"sky-btn sky-margin-inline-sm\"\n [attr.aria-controls]=\"ariaControls\"\n [disabled]=\"\n disabled\n | skyTabsetNavButtonDisabled\n : buttonType\n : !!tabToSelect\n : tabToSelect?.disabled\n \"\n [ngClass]=\"buttonClassName\"\n [type]=\"type\"\n (click)=\"buttonType === 'finish' ? null : buttonClick()\"\n >\n {{ buttonText || ('skyux_tabs_navigator_' + buttonType | skyLibResources) }}\n </button>\n}\n", dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i3$1.SkyLibResourcesPipe, name: "skyLibResources" }, { kind: "pipe", type: SkyTabsetNavButtonDisabledPipe, name: "skyTabsetNavButtonDisabled" }] }); }
2045
2051
  }
2046
2052
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: SkyTabsetNavButtonComponent, decorators: [{
2047
2053
  type: Component,
@@ -2050,6 +2056,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2050
2056
  type: Input
2051
2057
  }], buttonType: [{
2052
2058
  type: Input
2059
+ }], buttonTypeData: [{
2060
+ type: HostBinding,
2061
+ args: ['attr.data-button-type']
2053
2062
  }], buttonText: [{
2054
2063
  type: Input
2055
2064
  }], disabled: [{
@@ -2182,6 +2191,9 @@ class SkyTabsetComponent {
2182
2191
  get tabStyle() {
2183
2192
  return this.#_tabStyle;
2184
2193
  }
2194
+ get dataTabStyle() {
2195
+ return this.tabStyle;
2196
+ }
2185
2197
  set tabDisplayMode(value) {
2186
2198
  this.#_tabDisplayMode = value;
2187
2199
  this.#changeDetector.markForCheck();
@@ -2543,7 +2555,7 @@ class SkyTabsetComponent {
2543
2555
  }
2544
2556
  }
2545
2557
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.7", ngImport: i0, type: SkyTabsetComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: SkyTabsetAdapterService }, { token: SkyTabsetPermalinkService }, { token: SkyTabsetService }], target: i0.ɵɵFactoryTarget.Component }); }
2546
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: SkyTabsetComponent, isStandalone: false, selector: "sky-tabset", inputs: { active: "active", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", permalinkId: "permalinkId", tabStyle: "tabStyle" }, outputs: { activeChange: "activeChange", newTab: "newTab", openTab: "openTab", tabIndexesChange: "tabIndexesChange" }, host: { properties: { "class": "this.cssClass" } }, providers: [
2558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.7", type: SkyTabsetComponent, isStandalone: false, selector: "sky-tabset", inputs: { active: "active", ariaLabel: "ariaLabel", ariaLabelledBy: "ariaLabelledBy", permalinkId: "permalinkId", tabStyle: "tabStyle" }, outputs: { activeChange: "activeChange", newTab: "newTab", openTab: "openTab", tabIndexesChange: "tabIndexesChange" }, host: { properties: { "attr.data-tab-style": "this.dataTabStyle", "class": "this.cssClass" } }, providers: [
2547
2559
  SkyTabsetAdapterService,
2548
2560
  SkyTabsetPermalinkService,
2549
2561
  SkyTabsetService,
@@ -2566,6 +2578,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.7", ngImpor
2566
2578
  type: Input
2567
2579
  }], tabStyle: [{
2568
2580
  type: Input
2581
+ }], dataTabStyle: [{
2582
+ type: HostBinding,
2583
+ args: ['attr.data-tab-style']
2569
2584
  }], activeChange: [{
2570
2585
  type: Output
2571
2586
  }], newTab: [{