@skyux/data-grid 15.2.0 → 15.3.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.
@@ -113,6 +113,14 @@ class SkyDataGridHarness extends SkyQueryableComponentHarness {
113
113
  async getPagingOrNull() {
114
114
  return await this.queryHarnessOrNull(SkyPagingHarness);
115
115
  }
116
+ /**
117
+ * Gets the inline delete confirmation shown for a row whose ID is in the
118
+ * data grid's `rowDeleteIds`, or `null` if the row is not showing one.
119
+ * @param rowId The ID of the row.
120
+ */
121
+ async getRowInlineDelete(rowId) {
122
+ return await (await this.#getGridWrapper()).getRowInlineDelete(rowId);
123
+ }
116
124
  /**
117
125
  * Gets the wait harness for the data grid.
118
126
  */
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-data-grid-testing.mjs","sources":["../../../../../libs/components/data-grid/testing/src/modules/data-grid/data-grid-harness.ts","../../../../../libs/components/data-grid/testing/src/modules/data-grid/provide-data-grid-testing.ts","../../../../../libs/components/data-grid/testing/src/skyux-data-grid-testing.ts"],"sourcesContent":["import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\nimport { SkyAgGridWrapperHarness } from '@skyux/ag-grid/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyWaitHarness } from '@skyux/indicators/testing';\nimport { SkyPagingHarness } from '@skyux/lists/testing';\n\nimport { SkyDataGridHarnessFilters } from './data-grid-harness.filters';\n\n/**\n * Harness for interacting with SKY UX data grid components in tests.\n * Add `provideSkyDataGridTesting()` to the spec's providers so the harness\n * can wait for the grid to finish rendering; without it, render-readiness\n * waits are skipped.\n * @preview\n */\nexport class SkyDataGridHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-data-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDataGridHarness` that meets certain criteria\n */\n public static with(\n filters: SkyDataGridHarnessFilters,\n ): HarnessPredicate<SkyDataGridHarness> {\n return SkyDataGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Checks whether the grid is ready.\n */\n public async isGridReady(): Promise<boolean> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.isGridReady())\n .catch(() => false);\n }\n\n /**\n * Checks whether the grid is loading.\n */\n public async isLoading(): Promise<boolean> {\n const waits = await this.queryHarnesses(SkyWaitHarness);\n return await Promise.all(\n waits.map(async (wait): Promise<boolean> => await wait.isWaiting()),\n ).then((loadingStates) => loadingStates.some((isLoading) => isLoading));\n }\n\n /**\n * Retrieves the IDs of the currently displayed columns.\n */\n public async getDisplayedColumnIds(): Promise<string[]> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.getDisplayedColumnIds())\n .catch(() =>\n Promise.reject(new Error('Unable to retrieve displayed column IDs.')),\n );\n }\n\n /**\n * Retrieves the header names of the currently displayed columns.\n */\n public async getDisplayedColumnHeaderNames(): Promise<string[]> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.getDisplayedColumnHeaderNames())\n .catch(() =>\n Promise.reject(\n new Error('Unable to retrieve displayed column header names.'),\n ),\n );\n }\n\n /**\n * Retrieves the total number of displayed rows.\n */\n public async getDisplayedRowCount(): Promise<number> {\n return await this.#getGridWrapper()\n .then(async (grid) => (await grid.getGridApi()).getDisplayedRowCount())\n .catch(() =>\n Promise.reject(\n new Error('Unable to retrieve total number of displayed rows.'),\n ),\n );\n }\n\n /**\n * Clicks the column header sort button and waits for the grid to re-render\n * the sorted rows, and for a consumer's own `[(sort)]` binding to reflect\n * the change, before resolving.\n */\n public async clickColumnSortButton(column: string): Promise<void> {\n const grid = await this.#getGridWrapper();\n const api = await grid.getGridApi();\n const btn = await this.locatorFor(\n `.ag-header-cell.ag-header-cell-sortable[col-id=\"${column}\"] button.ag-header-cell-label-sortable`,\n )();\n // AG Grid's `sortChanged` event (which `SkyDataGrid`'s own `[(sort)]`\n // binding listens for) is dispatched independently of the `modelUpdated`\n // render event `waitUntilRendered()` waits for below, so wait for it\n // explicitly instead of guessing how many stabilize passes are enough\n // for it to have already fired. Registered only after `btn` resolves, so\n // a failed locator lookup can't leave this listener attached.\n let handler!: () => void;\n const sortChanged = new Promise<void>((resolve) => {\n handler = (): void => resolve();\n api.addEventListener('sortChanged', handler);\n });\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n try {\n await grid.waitUntilRendered(() => btn.click());\n await Promise.race([\n sortChanged,\n new Promise((resolve) => {\n timeoutId = setTimeout(resolve, 2000);\n }),\n ]);\n } finally {\n clearTimeout(timeoutId);\n api.removeEventListener('sortChanged', handler);\n }\n await this.forceStabilize();\n }\n\n /**\n * Gets the paging harness for the data grid. Throws if the grid is not paged.\n */\n public async getPaging(): Promise<SkyPagingHarness> {\n const paging = await this.getPagingOrNull();\n\n if (paging === null) {\n throw new Error('Unable to retrieve paging. The data grid is not paged.');\n }\n\n return paging;\n }\n\n /**\n * Gets the paging harness for the data grid, or `null` if the grid is not paged.\n */\n public async getPagingOrNull(): Promise<SkyPagingHarness | null> {\n return await this.queryHarnessOrNull(SkyPagingHarness);\n }\n\n /**\n * Gets the wait harness for the data grid.\n */\n public async getWait(): Promise<SkyWaitHarness> {\n return await this.queryHarness(SkyWaitHarness);\n }\n\n /**\n * Returns a child harness after the grid has finished rendering, or throws\n * an error if the harness is not found.\n */\n public override async queryHarness<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarness(query);\n }\n\n /**\n * Returns a child harness after the grid has finished rendering, or `null`\n * if not found.\n */\n public override async queryHarnessOrNull<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T | null> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarnessOrNull(query);\n }\n\n /**\n * Returns all child harnesses that match after the grid has finished\n * rendering.\n */\n public override async queryHarnesses<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T[]> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarnesses(query);\n }\n\n /**\n * Returns a child test element after the grid has finished rendering, or\n * throws an error if not found.\n */\n public override async querySelector(selector: string): Promise<TestElement> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelector(selector);\n }\n\n /**\n * Returns a child test element after the grid has finished rendering, or\n * `null` if not found.\n */\n public override async querySelectorOrNull(\n selector: string,\n ): Promise<TestElement | null> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelectorOrNull(selector);\n }\n\n /**\n * Returns all child test elements that match after the grid has finished\n * rendering.\n */\n public override async querySelectorAll(\n selector: string,\n ): Promise<TestElement[]> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelectorAll(selector);\n }\n\n /**\n * Bypasses the render-readiness wait to avoid recursing through it while\n * checking readiness itself.\n */\n async #getGridWrapper(): Promise<SkyAgGridWrapperHarness> {\n return await super.queryHarness(SkyAgGridWrapperHarness);\n }\n\n async #waitForGridWrapperRendered(): Promise<void> {\n await this.#getGridWrapper()\n .then(async (grid) => await grid.waitUntilRendered())\n .catch(() => undefined);\n }\n}\n","import { Provider } from '@angular/core';\nimport { provideSkyAgGridTesting } from '@skyux/ag-grid/testing';\n\n/**\n * Configures every data grid in the test to disable AG Grid's row/column\n * virtualization and to opt out of AG Grid's Angular test-zone detection so\n * `SkyDataGridHarness` can reliably wait for the grid to finish rendering.\n * Add to the spec's `TestBed.configureTestingModule` providers.\n * @preview\n */\nexport function provideSkyDataGridTesting(): Provider[] {\n return [provideSkyAgGridTesting()];\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-data-grid-testing.mjs","sources":["../../../../../libs/components/data-grid/testing/src/modules/data-grid/data-grid-harness.ts","../../../../../libs/components/data-grid/testing/src/modules/data-grid/provide-data-grid-testing.ts","../../../../../libs/components/data-grid/testing/src/skyux-data-grid-testing.ts"],"sourcesContent":["import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\nimport { SkyAgGridWrapperHarness } from '@skyux/ag-grid/testing';\nimport { SkyQueryableComponentHarness } from '@skyux/core/testing';\nimport { SkyWaitHarness } from '@skyux/indicators/testing';\nimport { SkyInlineDeleteHarness } from '@skyux/layout/testing';\nimport { SkyPagingHarness } from '@skyux/lists/testing';\n\nimport { SkyDataGridHarnessFilters } from './data-grid-harness.filters';\n\n/**\n * Harness for interacting with SKY UX data grid components in tests.\n * Add `provideSkyDataGridTesting()` to the spec's providers so the harness\n * can wait for the grid to finish rendering; without it, render-readiness\n * waits are skipped.\n * @preview\n */\nexport class SkyDataGridHarness extends SkyQueryableComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-data-grid';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyDataGridHarness` that meets certain criteria\n */\n public static with(\n filters: SkyDataGridHarnessFilters,\n ): HarnessPredicate<SkyDataGridHarness> {\n return SkyDataGridHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Checks whether the grid is ready.\n */\n public async isGridReady(): Promise<boolean> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.isGridReady())\n .catch(() => false);\n }\n\n /**\n * Checks whether the grid is loading.\n */\n public async isLoading(): Promise<boolean> {\n const waits = await this.queryHarnesses(SkyWaitHarness);\n return await Promise.all(\n waits.map(async (wait): Promise<boolean> => await wait.isWaiting()),\n ).then((loadingStates) => loadingStates.some((isLoading) => isLoading));\n }\n\n /**\n * Retrieves the IDs of the currently displayed columns.\n */\n public async getDisplayedColumnIds(): Promise<string[]> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.getDisplayedColumnIds())\n .catch(() =>\n Promise.reject(new Error('Unable to retrieve displayed column IDs.')),\n );\n }\n\n /**\n * Retrieves the header names of the currently displayed columns.\n */\n public async getDisplayedColumnHeaderNames(): Promise<string[]> {\n return await this.#getGridWrapper()\n .then(async (grid) => await grid.getDisplayedColumnHeaderNames())\n .catch(() =>\n Promise.reject(\n new Error('Unable to retrieve displayed column header names.'),\n ),\n );\n }\n\n /**\n * Retrieves the total number of displayed rows.\n */\n public async getDisplayedRowCount(): Promise<number> {\n return await this.#getGridWrapper()\n .then(async (grid) => (await grid.getGridApi()).getDisplayedRowCount())\n .catch(() =>\n Promise.reject(\n new Error('Unable to retrieve total number of displayed rows.'),\n ),\n );\n }\n\n /**\n * Clicks the column header sort button and waits for the grid to re-render\n * the sorted rows, and for a consumer's own `[(sort)]` binding to reflect\n * the change, before resolving.\n */\n public async clickColumnSortButton(column: string): Promise<void> {\n const grid = await this.#getGridWrapper();\n const api = await grid.getGridApi();\n const btn = await this.locatorFor(\n `.ag-header-cell.ag-header-cell-sortable[col-id=\"${column}\"] button.ag-header-cell-label-sortable`,\n )();\n // AG Grid's `sortChanged` event (which `SkyDataGrid`'s own `[(sort)]`\n // binding listens for) is dispatched independently of the `modelUpdated`\n // render event `waitUntilRendered()` waits for below, so wait for it\n // explicitly instead of guessing how many stabilize passes are enough\n // for it to have already fired. Registered only after `btn` resolves, so\n // a failed locator lookup can't leave this listener attached.\n let handler!: () => void;\n const sortChanged = new Promise<void>((resolve) => {\n handler = (): void => resolve();\n api.addEventListener('sortChanged', handler);\n });\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n try {\n await grid.waitUntilRendered(() => btn.click());\n await Promise.race([\n sortChanged,\n new Promise((resolve) => {\n timeoutId = setTimeout(resolve, 2000);\n }),\n ]);\n } finally {\n clearTimeout(timeoutId);\n api.removeEventListener('sortChanged', handler);\n }\n await this.forceStabilize();\n }\n\n /**\n * Gets the paging harness for the data grid. Throws if the grid is not paged.\n */\n public async getPaging(): Promise<SkyPagingHarness> {\n const paging = await this.getPagingOrNull();\n\n if (paging === null) {\n throw new Error('Unable to retrieve paging. The data grid is not paged.');\n }\n\n return paging;\n }\n\n /**\n * Gets the paging harness for the data grid, or `null` if the grid is not paged.\n */\n public async getPagingOrNull(): Promise<SkyPagingHarness | null> {\n return await this.queryHarnessOrNull(SkyPagingHarness);\n }\n\n /**\n * Gets the inline delete confirmation shown for a row whose ID is in the\n * data grid's `rowDeleteIds`, or `null` if the row is not showing one.\n * @param rowId The ID of the row.\n */\n public async getRowInlineDelete(\n rowId: string,\n ): Promise<SkyInlineDeleteHarness | null> {\n return await (await this.#getGridWrapper()).getRowInlineDelete(rowId);\n }\n\n /**\n * Gets the wait harness for the data grid.\n */\n public async getWait(): Promise<SkyWaitHarness> {\n return await this.queryHarness(SkyWaitHarness);\n }\n\n /**\n * Returns a child harness after the grid has finished rendering, or throws\n * an error if the harness is not found.\n */\n public override async queryHarness<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarness(query);\n }\n\n /**\n * Returns a child harness after the grid has finished rendering, or `null`\n * if not found.\n */\n public override async queryHarnessOrNull<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T | null> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarnessOrNull(query);\n }\n\n /**\n * Returns all child harnesses that match after the grid has finished\n * rendering.\n */\n public override async queryHarnesses<T extends ComponentHarness>(\n query: HarnessQuery<T>,\n ): Promise<T[]> {\n await this.#waitForGridWrapperRendered();\n return await super.queryHarnesses(query);\n }\n\n /**\n * Returns a child test element after the grid has finished rendering, or\n * throws an error if not found.\n */\n public override async querySelector(selector: string): Promise<TestElement> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelector(selector);\n }\n\n /**\n * Returns a child test element after the grid has finished rendering, or\n * `null` if not found.\n */\n public override async querySelectorOrNull(\n selector: string,\n ): Promise<TestElement | null> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelectorOrNull(selector);\n }\n\n /**\n * Returns all child test elements that match after the grid has finished\n * rendering.\n */\n public override async querySelectorAll(\n selector: string,\n ): Promise<TestElement[]> {\n await this.#waitForGridWrapperRendered();\n return await super.querySelectorAll(selector);\n }\n\n /**\n * Bypasses the render-readiness wait to avoid recursing through it while\n * checking readiness itself.\n */\n async #getGridWrapper(): Promise<SkyAgGridWrapperHarness> {\n return await super.queryHarness(SkyAgGridWrapperHarness);\n }\n\n async #waitForGridWrapperRendered(): Promise<void> {\n await this.#getGridWrapper()\n .then(async (grid) => await grid.waitUntilRendered())\n .catch(() => undefined);\n }\n}\n","import { Provider } from '@angular/core';\nimport { provideSkyAgGridTesting } from '@skyux/ag-grid/testing';\n\n/**\n * Configures every data grid in the test to disable AG Grid's row/column\n * virtualization and to opt out of AG Grid's Angular test-zone detection so\n * `SkyDataGridHarness` can reliably wait for the grid to finish rendering.\n * Add to the spec's `TestBed.configureTestingModule` providers.\n * @preview\n */\nexport function provideSkyDataGridTesting(): Provider[] {\n return [provideSkyAgGridTesting()];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}