{"version":3,"file":"ngx-com-components-paginator-testing.mjs","sources":["../../../projects/com/components/paginator/testing/paginator.harness.ts","../../../projects/com/components/paginator/testing/index.ts","../../../projects/com/components/paginator/testing/ngx-com-components-paginator-testing.ts"],"sourcesContent":["import {\n  ComponentHarness,\n  HarnessPredicate,\n} from '@angular/cdk/testing';\nimport type { BaseHarnessFilters } from '@angular/cdk/testing';\n\n/** Harness filters for ComPaginatorHarness. */\nexport interface ComPaginatorHarnessFilters extends BaseHarnessFilters {\n  /** Filter by whether the paginator is disabled. */\n  disabled?: boolean;\n}\n\n/**\n * Harness for interacting with a ComPaginator in tests.\n */\nexport class ComPaginatorHarness extends ComponentHarness {\n  static hostSelector = 'com-paginator';\n\n  private readonly previousButton = this.locatorFor('button[aria-label=\"Previous page\"]');\n  private readonly nextButton = this.locatorFor('button[aria-label=\"Next page\"]');\n  private readonly firstButton = this.locatorForOptional('button[aria-label=\"First page\"]');\n  private readonly lastButton = this.locatorForOptional('button[aria-label=\"Last page\"]');\n  private readonly rangeLabel = this.locatorForOptional('nav > span');\n  private readonly select = this.locatorForOptional('select');\n  private readonly nav = this.locatorFor('nav[role=\"navigation\"]');\n\n  /**\n   * Gets a HarnessPredicate for matching paginators.\n   * @param options Filter options.\n   */\n  static with(options: ComPaginatorHarnessFilters = {}): HarnessPredicate<ComPaginatorHarness> {\n    return new HarnessPredicate(ComPaginatorHarness, options)\n      .addOption('disabled', options.disabled, async (harness, disabled) => {\n        return (await harness.isDisabled()) === disabled;\n      });\n  }\n\n  /** Navigates to the first page. Throws if the first page button is not present. */\n  async goToFirstPage(): Promise<void> {\n    const btn = await this.firstButton();\n    if (!btn) {\n      throw new Error('First page button is not present');\n    }\n    return btn.click();\n  }\n\n  /** Navigates to the previous page. */\n  async goToPreviousPage(): Promise<void> {\n    const btn = await this.previousButton();\n    return btn.click();\n  }\n\n  /** Navigates to the next page. */\n  async goToNextPage(): Promise<void> {\n    const btn = await this.nextButton();\n    return btn.click();\n  }\n\n  /** Navigates to the last page. Throws if the last page button is not present. */\n  async goToLastPage(): Promise<void> {\n    const btn = await this.lastButton();\n    if (!btn) {\n      throw new Error('Last page button is not present');\n    }\n    return btn.click();\n  }\n\n  /** Navigates to a specific page (1-based). Throws if page button is not present. */\n  async goToPage(pageNumber: number): Promise<void> {\n    const btn = await this.locatorForOptional(`button[aria-label=\"Page ${pageNumber}\"]`)();\n    if (!btn) {\n      throw new Error(`Page button for page ${pageNumber} is not present`);\n    }\n    return btn.click();\n  }\n\n  /** Gets the range label text. */\n  async getRangeLabel(): Promise<string> {\n    const label = await this.rangeLabel();\n    if (!label) {\n      return '';\n    }\n    return label.text();\n  }\n\n  /** Gets the current page size from the select element. Throws if no select is present. */\n  async getPageSize(): Promise<number> {\n    const selectEl = await this.select();\n    if (!selectEl) {\n      throw new Error('Page size select is not present');\n    }\n    const value = await selectEl.getProperty<string>('value');\n    return Number(value);\n  }\n\n  /** Sets the page size by selecting a value. Throws if no select is present. */\n  async setPageSize(size: number): Promise<void> {\n    const selectEl = await this.select();\n    if (!selectEl) {\n      throw new Error('Page size select is not present');\n    }\n    await selectEl.setInputValue(String(size));\n    await selectEl.dispatchEvent('change');\n  }\n\n  /** Whether the previous page button is disabled. */\n  async isPreviousPageDisabled(): Promise<boolean> {\n    const btn = await this.previousButton();\n    return (await btn.getAttribute('disabled')) !== null;\n  }\n\n  /** Whether the next page button is disabled. */\n  async isNextPageDisabled(): Promise<boolean> {\n    const btn = await this.nextButton();\n    return (await btn.getAttribute('disabled')) !== null;\n  }\n\n  /** Whether the paginator is fully disabled (both prev and next buttons disabled). */\n  async isDisabled(): Promise<boolean> {\n    return (await this.isPreviousPageDisabled()) && (await this.isNextPageDisabled());\n  }\n\n  /** Gets the aria-label of the navigation element. */\n  async getAriaLabel(): Promise<string | null> {\n    const navEl = await this.nav();\n    return navEl.getAttribute('aria-label');\n  }\n\n  /** Whether the paginator navigation is focused. */\n  async isFocused(): Promise<boolean> {\n    const host = await this.host();\n    return host.isFocused();\n  }\n\n  /** Focuses the paginator host element. */\n  async focus(): Promise<void> {\n    const host = await this.host();\n    return host.focus();\n  }\n\n  /** Blurs the paginator host element. */\n  async blur(): Promise<void> {\n    const host = await this.host();\n    return host.blur();\n  }\n}\n","// Testing utilities for the paginator component\n\nexport { ComPaginatorHarness } from './paginator.harness';\n\nexport type { ComPaginatorHarnessFilters } from './paginator.harness';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}