@skyux/lists 7.0.0-beta.0 → 7.0.0-beta.10

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.
Files changed (50) hide show
  1. package/documentation.json +727 -448
  2. package/esm2020/index.mjs +2 -1
  3. package/esm2020/lib/modules/filter/filter-button.component.mjs +17 -5
  4. package/esm2020/lib/modules/filter/filter-summary-item.component.mjs +15 -6
  5. package/esm2020/lib/modules/infinite-scroll/infinite-scroll-dom-adapter.service.mjs +52 -60
  6. package/esm2020/lib/modules/infinite-scroll/infinite-scroll.component.mjs +51 -44
  7. package/esm2020/lib/modules/paging/paging.component.mjs +41 -40
  8. package/esm2020/lib/modules/repeater/repeater-adapter.service.mjs +32 -27
  9. package/esm2020/lib/modules/repeater/repeater-expand-mode-type.mjs +2 -0
  10. package/esm2020/lib/modules/repeater/repeater-item.component.mjs +168 -147
  11. package/esm2020/lib/modules/repeater/repeater.component.mjs +167 -173
  12. package/esm2020/lib/modules/repeater/repeater.service.mjs +15 -4
  13. package/esm2020/lib/modules/sort/sort-item.component.mjs +26 -16
  14. package/esm2020/lib/modules/sort/sort.component.mjs +1 -1
  15. package/esm2020/lib/modules/sort/sort.service.mjs +1 -1
  16. package/esm2020/testing/filter/filter-fixture-button.mjs +21 -15
  17. package/esm2020/testing/filter/filter-fixture-summary.mjs +11 -6
  18. package/esm2020/testing/filter/lists-filter-fixture-button.mjs +1 -1
  19. package/esm2020/testing/paging/paging-fixture.mjs +2 -2
  20. package/esm2020/testing/repeater/repeater-item-harness.mjs +17 -8
  21. package/esm2020/testing/sort/sort-fixture-menu-item.mjs +1 -1
  22. package/esm2020/testing/sort/sort-fixture.mjs +53 -47
  23. package/fesm2015/skyux-lists-testing.mjs +85 -58
  24. package/fesm2015/skyux-lists-testing.mjs.map +1 -1
  25. package/fesm2015/skyux-lists.mjs +581 -520
  26. package/fesm2015/skyux-lists.mjs.map +1 -1
  27. package/fesm2020/skyux-lists-testing.mjs +96 -73
  28. package/fesm2020/skyux-lists-testing.mjs.map +1 -1
  29. package/fesm2020/skyux-lists.mjs +573 -520
  30. package/fesm2020/skyux-lists.mjs.map +1 -1
  31. package/index.d.ts +1 -0
  32. package/lib/modules/filter/filter-button.component.d.ts +9 -8
  33. package/lib/modules/filter/filter-summary-item.component.d.ts +3 -1
  34. package/lib/modules/infinite-scroll/infinite-scroll-dom-adapter.service.d.ts +3 -9
  35. package/lib/modules/infinite-scroll/infinite-scroll.component.d.ts +3 -10
  36. package/lib/modules/paging/paging.component.d.ts +2 -4
  37. package/lib/modules/repeater/repeater-adapter.service.d.ts +4 -11
  38. package/lib/modules/repeater/repeater-expand-mode-type.d.ts +1 -0
  39. package/lib/modules/repeater/repeater-item.component.d.ts +24 -46
  40. package/lib/modules/repeater/repeater.component.d.ts +8 -21
  41. package/lib/modules/repeater/repeater.service.d.ts +7 -5
  42. package/lib/modules/sort/sort-item.component.d.ts +2 -5
  43. package/lib/modules/sort/sort.component.d.ts +1 -1
  44. package/package.json +10 -10
  45. package/testing/filter/filter-fixture-button.d.ts +1 -2
  46. package/testing/filter/filter-fixture-summary.d.ts +1 -2
  47. package/testing/filter/lists-filter-fixture-button.d.ts +2 -2
  48. package/testing/repeater/repeater-item-harness.d.ts +5 -1
  49. package/testing/sort/sort-fixture-menu-item.d.ts +1 -1
  50. package/testing/sort/sort-fixture.d.ts +4 -14
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { SkyFilterModule, SkyPagingModule, SkySortModule, SkyInfiniteScrollModule } from '@skyux/lists';
4
+ import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
4
5
  import { SkyAppTestUtility } from '@skyux-sdk/testing';
5
6
  import { By } from '@angular/platform-browser';
6
7
  import { SkyComponentHarness } from '@skyux/core/testing';
7
- import { __classPrivateFieldGet } from 'tslib';
8
8
  import { HarnessPredicate } from '@angular/cdk/testing';
9
9
  import { SkyCheckboxHarness } from '@skyux/forms/testing';
10
10
  import { NoopAnimationsModule } from '@angular/platform-browser/animations';
@@ -24,6 +24,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
24
24
  }]
25
25
  }] });
26
26
 
27
+ var _SkyFilterFixtureSummary_debugElement, _SkyFilterFixtureSummary_fixture;
27
28
  /**
28
29
  * Provides information for and interaction with a SKY UX filter summary component.
29
30
  * By using the fixture API, a test insulates itself against updates to the internals
@@ -32,26 +33,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
32
33
  */
33
34
  class SkyFilterFixtureSummary {
34
35
  constructor(fixture, skyTestId) {
35
- this.fixture = fixture;
36
- this.debugElement = SkyAppTestUtility.getDebugElementByTestId(this.fixture, skyTestId, 'sky-filter-summary');
36
+ _SkyFilterFixtureSummary_debugElement.set(this, void 0);
37
+ _SkyFilterFixtureSummary_fixture.set(this, void 0);
38
+ __classPrivateFieldSet(this, _SkyFilterFixtureSummary_fixture, fixture, "f");
39
+ __classPrivateFieldSet(this, _SkyFilterFixtureSummary_debugElement, SkyAppTestUtility.getDebugElementByTestId(__classPrivateFieldGet(this, _SkyFilterFixtureSummary_fixture, "f"), skyTestId, 'sky-filter-summary'), "f");
37
40
  }
38
41
  async filterCloseClick(index) {
39
- const summaryItems = this.debugElement.nativeElement.querySelectorAll('sky-filter-summary-item');
42
+ const summaryItems = __classPrivateFieldGet(this, _SkyFilterFixtureSummary_debugElement, "f").nativeElement.querySelectorAll('sky-filter-summary-item');
40
43
  if (summaryItems.length > index) {
41
44
  const summaryItem = summaryItems[index];
42
45
  if (summaryItem instanceof HTMLElement) {
43
46
  const closeButton = summaryItem.querySelector('.sky-token-btn-close');
44
47
  if (closeButton instanceof HTMLElement) {
45
48
  closeButton.click();
46
- this.fixture.detectChanges();
47
- return this.fixture.whenStable();
49
+ __classPrivateFieldGet(this, _SkyFilterFixtureSummary_fixture, "f").detectChanges();
50
+ return __classPrivateFieldGet(this, _SkyFilterFixtureSummary_fixture, "f").whenStable();
48
51
  }
49
52
  }
50
53
  }
51
54
  throw new Error(`Unable to click close for a filter index ${index}`);
52
55
  }
53
56
  }
57
+ _SkyFilterFixtureSummary_debugElement = new WeakMap(), _SkyFilterFixtureSummary_fixture = new WeakMap();
54
58
 
59
+ var _SkyFilterFixtureButton_instances, _SkyFilterFixtureButton_getButtonElement, _SkyFilterFixtureButton_normalizeText;
55
60
  /**
56
61
  * Provides information for and interaction with a SKY UX filter button component.
57
62
  * By using the fixture API, a test insulates itself against updates to the internals
@@ -61,13 +66,14 @@ class SkyFilterFixtureSummary {
61
66
  class SkyFilterFixtureButton {
62
67
  constructor(fixture, skyTestId) {
63
68
  this.fixture = fixture;
69
+ _SkyFilterFixtureButton_instances.add(this);
64
70
  this.debugElement = SkyAppTestUtility.getDebugElementByTestId(this.fixture, skyTestId, 'sky-filter-button');
65
71
  }
66
72
  /**
67
73
  * Click the button to apply the filter.
68
74
  */
69
75
  async clickFilterButton() {
70
- const button = this.getButtonElement();
76
+ const button = __classPrivateFieldGet(this, _SkyFilterFixtureButton_instances, "m", _SkyFilterFixtureButton_getButtonElement).call(this);
71
77
  if (button instanceof HTMLButtonElement && !button.disabled) {
72
78
  button.click();
73
79
  }
@@ -75,28 +81,31 @@ class SkyFilterFixtureButton {
75
81
  return this.fixture.whenStable();
76
82
  }
77
83
  get button() {
78
- const buttonElement = this.getButtonElement();
84
+ const buttonElement = __classPrivateFieldGet(this, _SkyFilterFixtureButton_instances, "m", _SkyFilterFixtureButton_getButtonElement).call(this);
79
85
  return {
80
- ariaControls: buttonElement.getAttribute('aria-controls'),
81
- ariaExpanded: buttonElement.getAttribute('aria-expanded') === 'true',
82
- disabled: buttonElement.disabled,
83
- id: buttonElement.id,
86
+ ariaControls: buttonElement?.getAttribute('aria-controls') ?? undefined,
87
+ ariaExpanded: buttonElement?.getAttribute('aria-expanded') === 'true',
88
+ disabled: !!buttonElement?.disabled,
89
+ id: buttonElement?.id,
84
90
  };
85
91
  }
86
92
  /**
87
93
  * Get the button text.
88
94
  */
89
95
  get buttonText() {
90
- const text = this.getButtonElement()?.innerText;
91
- return this.normalizeText(text);
92
- }
93
- getButtonElement() {
94
- return this.debugElement.nativeElement.querySelector('.sky-filter-btn');
95
- }
96
- normalizeText(text) {
97
- return text.trim().replace(/\s+/g, ' ');
96
+ const text = __classPrivateFieldGet(this, _SkyFilterFixtureButton_instances, "m", _SkyFilterFixtureButton_getButtonElement).call(this)?.innerText;
97
+ return __classPrivateFieldGet(this, _SkyFilterFixtureButton_instances, "m", _SkyFilterFixtureButton_normalizeText).call(this, text);
98
98
  }
99
99
  }
100
+ _SkyFilterFixtureButton_instances = new WeakSet(), _SkyFilterFixtureButton_getButtonElement = function _SkyFilterFixtureButton_getButtonElement() {
101
+ return this.debugElement.nativeElement.querySelector('.sky-filter-btn');
102
+ }, _SkyFilterFixtureButton_normalizeText = function _SkyFilterFixtureButton_normalizeText(text) {
103
+ let retVal = '';
104
+ if (text) {
105
+ retVal = text?.trim().replace(/\s+/g, ' ');
106
+ }
107
+ return retVal;
108
+ };
100
109
 
101
110
  /**
102
111
  * @internal
@@ -195,7 +204,7 @@ class SkyPagingFixture {
195
204
  return this._debugEl.query(By.css(`.sky-list-paging-link button[sky-cmp-id="${id}"]`))?.nativeElement;
196
205
  }
197
206
  getPageId(page) {
198
- return page?.getAttribute('sky-cmp-id');
207
+ return page?.getAttribute('sky-cmp-id') ?? '';
199
208
  }
200
209
  async waitForComponentInitialization() {
201
210
  this.fixture.detectChanges();
@@ -236,28 +245,37 @@ class SkyRepeaterItemHarness extends SkyComponentHarness {
236
245
  * Whether the repeater item is selected.
237
246
  */
238
247
  async isSelected() {
239
- if (!(await this.isSelectable())) {
248
+ const checkbox = await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this);
249
+ if (!checkbox) {
240
250
  throw new Error('Could not determine if repeater item is selected because it is not selectable.');
241
251
  }
242
- return (await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this)).isChecked();
252
+ return checkbox.isChecked();
253
+ }
254
+ /**
255
+ * Returns a child harness.
256
+ */
257
+ async queryHarness(query) {
258
+ return this.locatorForOptional(query)();
243
259
  }
244
260
  /**
245
261
  * Selects the repeater item.
246
262
  */
247
263
  async select() {
248
- if (!(await this.isSelectable())) {
264
+ const checkbox = await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this);
265
+ if (!checkbox) {
249
266
  throw new Error('Could not select the repeater item because it is not selectable.');
250
267
  }
251
- await (await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this)).check();
268
+ await checkbox.check();
252
269
  }
253
270
  /**
254
271
  * Deselects the repeater item.
255
272
  */
256
273
  async deselect() {
257
- if (!(await this.isSelectable())) {
274
+ const checkbox = await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this);
275
+ if (!checkbox) {
258
276
  throw new Error('Could not deselect the repeater item because it is not selectable.');
259
277
  }
260
- await (await __classPrivateFieldGet(this, _SkyRepeaterItemHarness_getCheckbox, "f").call(this)).uncheck();
278
+ await checkbox.uncheck();
261
279
  }
262
280
  /**
263
281
  * Gets the text of the repeater item content.
@@ -318,6 +336,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
318
336
  }]
319
337
  }] });
320
338
 
339
+ var _SkySortFixture_instances, _SkySortFixture_debugEl, _SkySortFixture_getDropdownButtonEl, _SkySortFixture_getDropdownMenuEl, _SkySortFixture_getSortButtonTextEl, _SkySortFixture_getSortItems, _SkySortFixture_selectMenuItem;
321
340
  /**
322
341
  * Provides information for and interaction with a SKY UX sort component.
323
342
  * By using the fixture API, a test insulates itself against updates to the internals
@@ -327,7 +346,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
327
346
  class SkySortFixture {
328
347
  constructor(fixture, skyTestId) {
329
348
  this.fixture = fixture;
330
- this._debugEl = SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-sort');
349
+ _SkySortFixture_instances.add(this);
350
+ _SkySortFixture_debugEl.set(this, void 0);
351
+ __classPrivateFieldSet(this, _SkySortFixture_debugEl, SkyAppTestUtility.getDebugElementByTestId(fixture, skyTestId, 'sky-sort'), "f");
331
352
  }
332
353
  /**
333
354
  * The active sort menu item, if one exists. Menu items are only available when the menu dropdown
@@ -340,9 +361,11 @@ class SkySortFixture {
340
361
  * The sort menu's properties.
341
362
  */
342
363
  get menu() {
364
+ /* istanbul ignore next */
365
+ const buttonText = SkyAppTestUtility.getText(__classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getSortButtonTextEl).call(this)) || '';
343
366
  return {
344
- buttonText: SkyAppTestUtility.getText(this.getSortButtonTextEl()),
345
- isOpen: this.getDropdownMenuEl() !== null,
367
+ buttonText,
368
+ isOpen: __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getDropdownMenuEl).call(this) !== null,
346
369
  };
347
370
  }
348
371
  /**
@@ -355,7 +378,7 @@ class SkySortFixture {
355
378
  if (!this.menu.isOpen) {
356
379
  return;
357
380
  }
358
- return this.getSortItems().map((item, i) => {
381
+ return __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getSortItems).call(this).map((item, i) => {
359
382
  const itemButton = item.querySelector('button');
360
383
  return {
361
384
  index: i,
@@ -372,7 +395,7 @@ class SkySortFixture {
372
395
  if (!this.menu.isOpen) {
373
396
  return;
374
397
  }
375
- const menu = this.getDropdownButtonEl();
398
+ const menu = __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getDropdownButtonEl).call(this);
376
399
  if (menu !== undefined && !menu.disabled) {
377
400
  menu.click();
378
401
  this.fixture.detectChanges();
@@ -389,7 +412,7 @@ class SkySortFixture {
389
412
  if (this.menu.isOpen) {
390
413
  return;
391
414
  }
392
- const menu = this.getDropdownButtonEl();
415
+ const menu = __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getDropdownButtonEl).call(this);
393
416
  if (menu !== undefined && !menu.disabled) {
394
417
  menu.click();
395
418
  this.fixture.detectChanges();
@@ -403,7 +426,7 @@ class SkySortFixture {
403
426
  * @param menuItemIndex The index of the menu item to select.
404
427
  */
405
428
  async selectMenuItemByIndex(menuItemIndex) {
406
- return this.selectMenuItem((_item, index) => {
429
+ return __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_selectMenuItem).call(this, (_item, index) => {
407
430
  return index === menuItemIndex;
408
431
  });
409
432
  }
@@ -413,49 +436,49 @@ class SkySortFixture {
413
436
  * @param menuItemText The text of the menu item to select.
414
437
  */
415
438
  async selectMenuItemByText(menuItemText) {
416
- return this.selectMenuItem((item) => {
417
- return SkyAppTestUtility.getText(item) === menuItemText;
418
- });
419
- }
420
- //#region helpers
421
- getDropdownButtonEl() {
422
- return this._debugEl.query(By.css('.sky-dropdown-button'))
423
- ?.nativeElement;
424
- }
425
- getDropdownMenuEl() {
426
- return document.querySelector('sky-overlay .sky-dropdown-menu');
427
- }
428
- getSortButtonTextEl() {
429
- return this._debugEl.query(By.css('.sky-sort-btn-text'))
430
- ?.nativeElement;
431
- }
432
- getSortItems() {
433
- const resultNodes = document.querySelectorAll('sky-overlay .sky-sort-item');
434
- return Array.prototype.slice.call(resultNodes);
435
- }
436
- /**
437
- * Ensures the sort menu is open and selects the menu item via a selection predicate,
438
- * if a matching item is available.
439
- * @param selectionPredicate The menu item selector method to use.
440
- */
441
- async selectMenuItem(selectionPredicate) {
442
- // make sure the sort menu is open
443
- if (!this.menu.isOpen) {
444
- await this.openMenu();
439
+ /* istanbul ignore else */
440
+ if (menuItemText) {
441
+ return __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_selectMenuItem).call(this, (item) => {
442
+ return SkyAppTestUtility.getText(item) === menuItemText;
443
+ });
445
444
  }
446
- // find the requested menu item using the selectionPredicate parameter
447
- const items = this.getSortItems();
448
- const targetItem = items.find((item, index) => selectionPredicate(item, index));
449
- // if we found the item, select it
450
- if (targetItem) {
451
- // we've got the '.sky-sort-item' div, but we want to click it's child button element
452
- const targetButton = targetItem.querySelector('button');
453
- targetButton.click();
454
- this.fixture.detectChanges();
455
- return this.fixture.whenStable();
445
+ else {
446
+ return;
456
447
  }
457
448
  }
458
449
  }
450
+ _SkySortFixture_debugEl = new WeakMap(), _SkySortFixture_instances = new WeakSet(), _SkySortFixture_getDropdownButtonEl = function _SkySortFixture_getDropdownButtonEl() {
451
+ return __classPrivateFieldGet(this, _SkySortFixture_debugEl, "f").query(By.css('.sky-dropdown-button')).nativeElement;
452
+ }, _SkySortFixture_getDropdownMenuEl = function _SkySortFixture_getDropdownMenuEl() {
453
+ return document.querySelector('sky-overlay .sky-dropdown-menu');
454
+ }, _SkySortFixture_getSortButtonTextEl = function _SkySortFixture_getSortButtonTextEl() {
455
+ return __classPrivateFieldGet(this, _SkySortFixture_debugEl, "f").query(By.css('.sky-sort-btn-text')).nativeElement;
456
+ }, _SkySortFixture_getSortItems = function _SkySortFixture_getSortItems() {
457
+ const resultNodes = document.querySelectorAll('sky-overlay .sky-sort-item');
458
+ return Array.prototype.slice.call(resultNodes);
459
+ }, _SkySortFixture_selectMenuItem =
460
+ /**
461
+ * Ensures the sort menu is open and selects the menu item via a selection predicate,
462
+ * if a matching item is available.
463
+ * @param selectionPredicate The menu item selector method to use.
464
+ */
465
+ async function _SkySortFixture_selectMenuItem(selectionPredicate) {
466
+ // make sure the sort menu is open
467
+ if (!this.menu.isOpen) {
468
+ await this.openMenu();
469
+ }
470
+ // find the requested menu item using the selectionPredicate parameter
471
+ const items = __classPrivateFieldGet(this, _SkySortFixture_instances, "m", _SkySortFixture_getSortItems).call(this);
472
+ const targetItem = items.find((item, index) => selectionPredicate(item, index));
473
+ // if we found the item, select it
474
+ if (targetItem) {
475
+ // we've got the '.sky-sort-item' div, but we want to click it's child button element
476
+ const targetButton = targetItem.querySelector('button');
477
+ targetButton?.click();
478
+ this.fixture.detectChanges();
479
+ return this.fixture.whenStable();
480
+ }
481
+ };
459
482
 
460
483
  /**
461
484
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-lists-testing.mjs","sources":["../../../../../libs/components/lists/testing/src/filter/filter-testing.module.ts","../../../../../libs/components/lists/testing/src/filter/filter-fixture-summary.ts","../../../../../libs/components/lists/testing/src/filter/filter-fixture-button.ts","../../../../../libs/components/lists/testing/src/paging/paging-testing.module.ts","../../../../../libs/components/lists/testing/src/paging/paging-fixture.ts","../../../../../libs/components/lists/testing/src/repeater/repeater-item-harness.ts","../../../../../libs/components/lists/testing/src/repeater/repeater-harness.ts","../../../../../libs/components/lists/testing/src/sort/sort-testing.module.ts","../../../../../libs/components/lists/testing/src/sort/sort-fixture.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-testing.module.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-fixture.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-harness.ts","../../../../../libs/components/lists/testing/src/skyux-lists-testing.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { SkyFilterModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyFilterModule],\n})\nexport class SkyFilterTestingModule {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX filter summary component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyFilterFixtureSummary {\n private debugElement: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugElement = SkyAppTestUtility.getDebugElementByTestId(\n this.fixture,\n skyTestId,\n 'sky-filter-summary'\n );\n }\n\n public async filterCloseClick(index: number): Promise<any> {\n const summaryItems = this.debugElement.nativeElement.querySelectorAll(\n 'sky-filter-summary-item'\n );\n if (summaryItems.length > index) {\n const summaryItem = summaryItems[index];\n if (summaryItem instanceof HTMLElement) {\n const closeButton = summaryItem.querySelector('.sky-token-btn-close');\n if (closeButton instanceof HTMLElement) {\n closeButton.click();\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n }\n throw new Error(`Unable to click close for a filter index ${index}`);\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyListsFilterFixtureButton } from './lists-filter-fixture-button';\n\n/**\n * Provides information for and interaction with a SKY UX filter button component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyFilterFixtureButton {\n private debugElement: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugElement = SkyAppTestUtility.getDebugElementByTestId(\n this.fixture,\n skyTestId,\n 'sky-filter-button'\n );\n }\n\n /**\n * Click the button to apply the filter.\n */\n public async clickFilterButton(): Promise<any> {\n const button = this.getButtonElement();\n if (button instanceof HTMLButtonElement && !button.disabled) {\n button.click();\n }\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n public get button(): SkyListsFilterFixtureButton {\n const buttonElement = this.getButtonElement();\n return {\n ariaControls: buttonElement.getAttribute('aria-controls'),\n ariaExpanded: buttonElement.getAttribute('aria-expanded') === 'true',\n disabled: buttonElement.disabled,\n id: buttonElement.id,\n };\n }\n /**\n * Get the button text.\n */\n public get buttonText(): string {\n const text = this.getButtonElement()?.innerText;\n return this.normalizeText(text);\n }\n\n private getButtonElement(): HTMLButtonElement | null {\n return this.debugElement.nativeElement.querySelector('.sky-filter-btn');\n }\n\n private normalizeText(text: string): string {\n return text.trim().replace(/\\s+/g, ' ');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyPagingModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyPagingModule],\n})\nexport class SkyPagingTestingModule {}\n","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 { SkyPagingFixtureButton } from './paging-fixture-button';\n\n/**\n * Provides information for and interaction with a SKY UX paging component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyPagingFixture {\n private _debugEl: DebugElement;\n\n /**\n * The id of the active page, if available.\n */\n public get activePageId(): string {\n return this.getPageId(this.activePageButton);\n }\n\n /**\n * Properties of the page links displayed in the paging component.\n */\n public get pageLinks(): SkyPagingFixtureButton[] {\n return this.pagingLinks.map((page: DebugElement) => {\n return {\n id: this.getPageId(page.nativeElement),\n isActive: page.nativeElement.classList.contains('sky-paging-current'),\n isEnabled: !page.nativeElement.disabled,\n };\n });\n }\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this._debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-paging'\n );\n\n this.waitForComponentInitialization();\n }\n\n /**\n * Selects the specified page by id, if it is enabled.\n */\n public async selectPage(id: string | number): Promise<void> {\n const pageButton = this.getPageLink(id.toString());\n\n if (pageButton !== undefined && !pageButton.disabled) {\n pageButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Clicks the next page button, if it is enabled.\n */\n public async selectNextPage(): Promise<void> {\n const nextButton = this.nextPageButton;\n\n if (nextButton !== undefined && !nextButton.disabled) {\n nextButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Clicks the previous page button, if it is enabled.\n */\n public async selectPreviousPage(): Promise<void> {\n const previousButton = this.previousPageButton;\n\n if (previousButton !== undefined && !previousButton.disabled) {\n previousButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n //#region helpers\n\n private get activePageButton(): HTMLButtonElement {\n return this._debugEl.query(\n By.css('.sky-list-paging-link .sky-paging-current')\n )?.nativeElement as HTMLButtonElement;\n }\n\n private get nextPageButton(): HTMLButtonElement {\n return this._debugEl.query(By.css('.sky-paging-btn[sky-cmp-id=\"next\"]'))\n ?.nativeElement as HTMLButtonElement;\n }\n\n private get previousPageButton(): HTMLButtonElement {\n return this._debugEl.query(By.css('.sky-paging-btn[sky-cmp-id=\"previous\"]'))\n ?.nativeElement as HTMLButtonElement;\n }\n\n private get pagingLinks(): DebugElement[] {\n return this._debugEl.queryAll(By.css('.sky-list-paging-link button'));\n }\n\n private getPageLink(id: string): HTMLButtonElement {\n return this._debugEl.query(\n By.css(`.sky-list-paging-link button[sky-cmp-id=\"${id}\"]`)\n )?.nativeElement as HTMLButtonElement;\n }\n\n private getPageId(page: HTMLButtonElement): string {\n return page?.getAttribute('sky-cmp-id');\n }\n\n private async waitForComponentInitialization(): Promise<void> {\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n //#endregion\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyCheckboxHarness } from '@skyux/forms/testing';\n\nimport { SkyRepeaterItemHarnessFilters } from './repeater-item-harness-filters';\n\n/**\n * Harness for interacting with a repeater item component in tests.\n * @internal\n */\nexport class SkyRepeaterItemHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-repeater-item';\n\n #getCheckbox = this.locatorForOptional(SkyCheckboxHarness);\n\n #getContent = this.locatorFor('.sky-repeater-item-content');\n\n #getTitle = this.locatorFor('.sky-repeater-item-title');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRepeaterItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRepeaterItemHarnessFilters\n ): HarnessPredicate<SkyRepeaterItemHarness> {\n return SkyRepeaterItemHarness.getDataSkyIdPredicate(filters)\n .addOption('contentText', filters.contentText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getContentText(), text)\n )\n .addOption('titleText', filters.titleText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getTitleText(), text)\n );\n }\n\n /**\n * Whether the repeater item is selectable.\n */\n public async isSelectable(): Promise<boolean> {\n return !!(await this.#getCheckbox());\n }\n\n /**\n * Whether the repeater item is selected.\n */\n public async isSelected(): Promise<boolean> {\n if (!(await this.isSelectable())) {\n throw new Error(\n 'Could not determine if repeater item is selected because it is not selectable.'\n );\n }\n\n return (await this.#getCheckbox()).isChecked();\n }\n\n /**\n * Selects the repeater item.\n */\n public async select() {\n if (!(await this.isSelectable())) {\n throw new Error(\n 'Could not select the repeater item because it is not selectable.'\n );\n }\n\n await (await this.#getCheckbox()).check();\n }\n\n /**\n * Deselects the repeater item.\n */\n public async deselect(): Promise<void> {\n if (!(await this.isSelectable())) {\n throw new Error(\n 'Could not deselect the repeater item because it is not selectable.'\n );\n }\n\n await (await this.#getCheckbox()).uncheck();\n }\n\n /**\n * Gets the text of the repeater item content.\n */\n public async getContentText(): Promise<string> {\n return (await this.#getContent()).text();\n }\n\n /**\n * Gets the text of the repeater item title.\n */\n public async getTitleText(): Promise<string> {\n return (await this.#getTitle()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyRepeaterHarnessFilters } from './repeater-harness-filters';\nimport { SkyRepeaterItemHarness } from './repeater-item-harness';\nimport { SkyRepeaterItemHarnessFilters } from './repeater-item-harness-filters';\n\n/**\n * Harness for interacting with a repeater component in tests.\n * @internal\n */\nexport class SkyRepeaterHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-repeater';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRepeaterHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRepeaterHarnessFilters\n ): HarnessPredicate<SkyRepeaterHarness> {\n return SkyRepeaterHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of child repeater items.\n */\n public async getRepeaterItems(\n filters?: SkyRepeaterItemHarnessFilters\n ): Promise<SkyRepeaterItemHarness[]> {\n return this.locatorForAll(SkyRepeaterItemHarness.with(filters || {}))();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { SkySortModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n imports: [NoopAnimationsModule],\n exports: [SkySortModule],\n})\nexport class SkySortTestingModule {}\n","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 { SkySortFixtureMenu } from './sort-fixture-menu';\nimport { SkySortFixtureMenuItem } from './sort-fixture-menu-item';\n\n/**\n * Provides information for and interaction with a SKY UX sort component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkySortFixture {\n /**\n * The active sort menu item, if one exists. Menu items are only available when the menu dropdown\n * is open. If the menu dropdown is closed, this property will be undefined.\n */\n public get activeMenuItem(): SkySortFixtureMenuItem {\n return this.menuItems?.find((x) => x.isActive);\n }\n\n /**\n * The sort menu's properties.\n */\n public get menu(): SkySortFixtureMenu {\n return {\n buttonText: SkyAppTestUtility.getText(this.getSortButtonTextEl()),\n isOpen: this.getDropdownMenuEl() !== null,\n };\n }\n\n /**\n * The properties of each sort menu item. Menu items are only available when the menu dropdown\n * is open. If the menu dropdown is closed, this property will be undefined.\n */\n public get menuItems(): SkySortFixtureMenuItem[] {\n // Return undefined when we can't determine what the options are.\n // We do this to avoid any confusion with an empty set of options.\n if (!this.menu.isOpen) {\n return;\n }\n\n return this.getSortItems().map((item: HTMLElement, i: number) => {\n const itemButton = item.querySelector('button');\n\n return {\n index: i,\n isActive: item.classList.contains('sky-sort-item-selected'),\n text: SkyAppTestUtility.getText(itemButton),\n };\n });\n }\n\n private _debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this._debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-sort'\n );\n }\n\n /**\n * Closes the sort dropdown menu if it isn't closed already.\n */\n public async closeMenu(): Promise<void> {\n // if the menu is already closed, do nothing\n if (!this.menu.isOpen) {\n return;\n }\n\n const menu = this.getDropdownButtonEl();\n if (menu !== undefined && !menu.disabled) {\n menu.click();\n\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Opens the sort dropdown menu if it isn't open already.\n */\n public async openMenu(): Promise<void> {\n // if the menu is already open, do nothing\n if (this.menu.isOpen) {\n return;\n }\n\n const menu = this.getDropdownButtonEl();\n\n if (menu !== undefined && !menu.disabled) {\n menu.click();\n\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item with the specified index, if it exists.\n * @param menuItemIndex The index of the menu item to select.\n */\n public async selectMenuItemByIndex(menuItemIndex: number): Promise<void> {\n return this.selectMenuItem((_item: HTMLElement, index: number) => {\n return index === menuItemIndex;\n });\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item with the specified text,\n * if a matching item is available.\n * @param menuItemText The text of the menu item to select.\n */\n public async selectMenuItemByText(menuItemText: string): Promise<void> {\n return this.selectMenuItem((item: HTMLElement) => {\n return SkyAppTestUtility.getText(item) === menuItemText;\n });\n }\n\n //#region helpers\n\n private getDropdownButtonEl(): HTMLButtonElement {\n return this._debugEl.query(By.css('.sky-dropdown-button'))\n ?.nativeElement as HTMLButtonElement;\n }\n\n private getDropdownMenuEl(): HTMLElement {\n return document.querySelector('sky-overlay .sky-dropdown-menu');\n }\n\n private getSortButtonTextEl(): HTMLElement {\n return this._debugEl.query(By.css('.sky-sort-btn-text'))\n ?.nativeElement as HTMLElement;\n }\n\n private getSortItems(): HTMLElement[] {\n const resultNodes = document.querySelectorAll('sky-overlay .sky-sort-item');\n return Array.prototype.slice.call(resultNodes);\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item via a selection predicate,\n * if a matching item is available.\n * @param selectionPredicate The menu item selector method to use.\n */\n private async selectMenuItem(\n selectionPredicate: (item: HTMLElement, index: number) => boolean\n ): Promise<void> {\n // make sure the sort menu is open\n if (!this.menu.isOpen) {\n await this.openMenu();\n }\n\n // find the requested menu item using the selectionPredicate parameter\n const items = this.getSortItems();\n const targetItem = items.find((item: HTMLElement, index: number) =>\n selectionPredicate(item, index)\n );\n\n // if we found the item, select it\n if (targetItem) {\n // we've got the '.sky-sort-item' div, but we want to click it's child button element\n const targetButton = targetItem.querySelector('button');\n targetButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n //#endregion\n}\n","import { NgModule } from '@angular/core';\nimport { SkyInfiniteScrollModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyInfiniteScrollModule],\n})\nexport class SkyInfiniteScrollTestingModule {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX infinite scroll component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @deprecated Use `SkyInfiniteScrollHarness` instead.\n * @internal\n */\nexport class SkyInfiniteScrollFixture {\n private debugElement: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugElement = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-infinite-scroll'\n );\n }\n\n public get loadMoreButtonIsVisible(): boolean {\n return this.getButton() instanceof HTMLButtonElement;\n }\n\n public async clickLoadMoreButton(): Promise<any> {\n const button = this.getButton();\n if (button instanceof HTMLButtonElement) {\n button.click();\n }\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getButton() {\n return this.debugElement.nativeElement.querySelector(\n '.sky-infinite-scroll .sky-btn'\n );\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyInfiniteScrollHarnessFilters } from './infinite-scroll-harness-filters';\n\n/**\n * Harness for interacting with an infinite scroll component in tests.\n * @internal\n */\nexport class SkyInfiniteScrollHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-infinite-scroll';\n\n #showMoreButton = this.locatorForOptional(\n 'button.sky-infinite-scroll-load-more-button'\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInfiniteScrollHarness` that meets certain criteria.\n */\n public static with(filters: SkyInfiniteScrollHarnessFilters) {\n return this.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Whether the infinite scroll is enabled.\n */\n public async isEnabled(): Promise<boolean> {\n return (await this.locatorForOptional('.sky-infinite-scroll')()) !== null;\n }\n\n /**\n * Whether the infinite scroll is loading.\n */\n public async isLoading(): Promise<boolean> {\n return (await this.isEnabled()) && (await this.#showMoreButton()) === null;\n }\n\n /**\n * Clicks the \"Load more\" button.\n */\n public async loadMore(): Promise<void> {\n const button = await this.#showMoreButton();\n if (button) {\n await button.click();\n } else {\n if (!(await this.isEnabled())) {\n throw new Error(\n 'Unable to click the \"Load more\" button because the infinite scroll is not enabled.'\n );\n } else {\n throw new Error(\n 'Unable to click the \"Load more\" button because the infinite scroll is loading.'\n );\n }\n }\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-lists-testing.mjs","sources":["../../../../../libs/components/lists/testing/src/filter/filter-testing.module.ts","../../../../../libs/components/lists/testing/src/filter/filter-fixture-summary.ts","../../../../../libs/components/lists/testing/src/filter/filter-fixture-button.ts","../../../../../libs/components/lists/testing/src/paging/paging-testing.module.ts","../../../../../libs/components/lists/testing/src/paging/paging-fixture.ts","../../../../../libs/components/lists/testing/src/repeater/repeater-item-harness.ts","../../../../../libs/components/lists/testing/src/repeater/repeater-harness.ts","../../../../../libs/components/lists/testing/src/sort/sort-testing.module.ts","../../../../../libs/components/lists/testing/src/sort/sort-fixture.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-testing.module.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-fixture.ts","../../../../../libs/components/lists/testing/src/infinite-scroll/infinite-scroll-harness.ts","../../../../../libs/components/lists/testing/src/skyux-lists-testing.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { SkyFilterModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyFilterModule],\n})\nexport class SkyFilterTestingModule {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX filter summary component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyFilterFixtureSummary {\n #debugElement: DebugElement;\n #fixture: ComponentFixture<any>;\n\n constructor(fixture: ComponentFixture<any>, skyTestId: string) {\n this.#fixture = fixture;\n this.#debugElement = SkyAppTestUtility.getDebugElementByTestId(\n this.#fixture,\n skyTestId,\n 'sky-filter-summary'\n );\n }\n\n public async filterCloseClick(index: number): Promise<any> {\n const summaryItems = this.#debugElement.nativeElement.querySelectorAll(\n 'sky-filter-summary-item'\n );\n if (summaryItems.length > index) {\n const summaryItem = summaryItems[index];\n if (summaryItem instanceof HTMLElement) {\n const closeButton = summaryItem.querySelector('.sky-token-btn-close');\n if (closeButton instanceof HTMLElement) {\n closeButton.click();\n this.#fixture.detectChanges();\n return this.#fixture.whenStable();\n }\n }\n }\n throw new Error(`Unable to click close for a filter index ${index}`);\n }\n}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\nimport { SkyListsFilterFixtureButton } from './lists-filter-fixture-button';\n\n/**\n * Provides information for and interaction with a SKY UX filter button component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyFilterFixtureButton {\n private debugElement: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugElement = SkyAppTestUtility.getDebugElementByTestId(\n this.fixture,\n skyTestId,\n 'sky-filter-button'\n );\n }\n\n /**\n * Click the button to apply the filter.\n */\n public async clickFilterButton(): Promise<any> {\n const button = this.#getButtonElement();\n if (button instanceof HTMLButtonElement && !button.disabled) {\n button.click();\n }\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n public get button(): SkyListsFilterFixtureButton {\n const buttonElement = this.#getButtonElement();\n return {\n ariaControls: buttonElement?.getAttribute('aria-controls') ?? undefined,\n ariaExpanded: buttonElement?.getAttribute('aria-expanded') === 'true',\n disabled: !!buttonElement?.disabled,\n id: buttonElement?.id,\n };\n }\n /**\n * Get the button text.\n */\n public get buttonText(): string {\n const text = this.#getButtonElement()?.innerText;\n return this.#normalizeText(text);\n }\n\n #getButtonElement(): HTMLButtonElement | null {\n return this.debugElement.nativeElement.querySelector('.sky-filter-btn');\n }\n\n #normalizeText(text: string | undefined): string {\n let retVal = '';\n if (text) {\n retVal = text?.trim().replace(/\\s+/g, ' ');\n }\n return retVal;\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyPagingModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyPagingModule],\n})\nexport class SkyPagingTestingModule {}\n","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 { SkyPagingFixtureButton } from './paging-fixture-button';\n\n/**\n * Provides information for and interaction with a SKY UX paging component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkyPagingFixture {\n private _debugEl: DebugElement;\n\n /**\n * The id of the active page, if available.\n */\n public get activePageId(): string {\n return this.getPageId(this.activePageButton);\n }\n\n /**\n * Properties of the page links displayed in the paging component.\n */\n public get pageLinks(): SkyPagingFixtureButton[] {\n return this.pagingLinks.map((page: DebugElement) => {\n return {\n id: this.getPageId(page.nativeElement),\n isActive: page.nativeElement.classList.contains('sky-paging-current'),\n isEnabled: !page.nativeElement.disabled,\n };\n });\n }\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this._debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-paging'\n );\n\n this.waitForComponentInitialization();\n }\n\n /**\n * Selects the specified page by id, if it is enabled.\n */\n public async selectPage(id: string | number): Promise<void> {\n const pageButton = this.getPageLink(id.toString());\n\n if (pageButton !== undefined && !pageButton.disabled) {\n pageButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Clicks the next page button, if it is enabled.\n */\n public async selectNextPage(): Promise<void> {\n const nextButton = this.nextPageButton;\n\n if (nextButton !== undefined && !nextButton.disabled) {\n nextButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Clicks the previous page button, if it is enabled.\n */\n public async selectPreviousPage(): Promise<void> {\n const previousButton = this.previousPageButton;\n\n if (previousButton !== undefined && !previousButton.disabled) {\n previousButton.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n //#region helpers\n\n private get activePageButton(): HTMLButtonElement {\n return this._debugEl.query(\n By.css('.sky-list-paging-link .sky-paging-current')\n )?.nativeElement as HTMLButtonElement;\n }\n\n private get nextPageButton(): HTMLButtonElement {\n return this._debugEl.query(By.css('.sky-paging-btn[sky-cmp-id=\"next\"]'))\n ?.nativeElement as HTMLButtonElement;\n }\n\n private get previousPageButton(): HTMLButtonElement {\n return this._debugEl.query(By.css('.sky-paging-btn[sky-cmp-id=\"previous\"]'))\n ?.nativeElement as HTMLButtonElement;\n }\n\n private get pagingLinks(): DebugElement[] {\n return this._debugEl.queryAll(By.css('.sky-list-paging-link button'));\n }\n\n private getPageLink(id: string): HTMLButtonElement {\n return this._debugEl.query(\n By.css(`.sky-list-paging-link button[sky-cmp-id=\"${id}\"]`)\n )?.nativeElement as HTMLButtonElement;\n }\n\n private getPageId(page: HTMLButtonElement): string {\n return page?.getAttribute('sky-cmp-id') ?? '';\n }\n\n private async waitForComponentInitialization(): Promise<void> {\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n //#endregion\n}\n","import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n} from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\nimport { SkyCheckboxHarness } from '@skyux/forms/testing';\n\nimport { SkyRepeaterItemHarnessFilters } from './repeater-item-harness-filters';\n\n/**\n * Harness for interacting with a repeater item component in tests.\n * @internal\n */\nexport class SkyRepeaterItemHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-repeater-item';\n\n #getCheckbox = this.locatorForOptional(SkyCheckboxHarness);\n\n #getContent = this.locatorFor('.sky-repeater-item-content');\n\n #getTitle = this.locatorFor('.sky-repeater-item-title');\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRepeaterItemHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRepeaterItemHarnessFilters\n ): HarnessPredicate<SkyRepeaterItemHarness> {\n return SkyRepeaterItemHarness.getDataSkyIdPredicate(filters)\n .addOption('contentText', filters.contentText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getContentText(), text)\n )\n .addOption('titleText', filters.titleText, async (harness, text) =>\n HarnessPredicate.stringMatches(await harness.getTitleText(), text)\n );\n }\n\n /**\n * Whether the repeater item is selectable.\n */\n public async isSelectable(): Promise<boolean> {\n return !!(await this.#getCheckbox());\n }\n\n /**\n * Whether the repeater item is selected.\n */\n public async isSelected(): Promise<boolean> {\n const checkbox = await this.#getCheckbox();\n if (!checkbox) {\n throw new Error(\n 'Could not determine if repeater item is selected because it is not selectable.'\n );\n }\n\n return checkbox.isChecked();\n }\n\n /**\n * Returns a child harness.\n */\n public async queryHarness<T extends ComponentHarness>(\n query: HarnessQuery<T>\n ): Promise<T | null> {\n return this.locatorForOptional(query)();\n }\n\n /**\n * Selects the repeater item.\n */\n public async select(): Promise<void> {\n const checkbox = await this.#getCheckbox();\n if (!checkbox) {\n throw new Error(\n 'Could not select the repeater item because it is not selectable.'\n );\n }\n\n await checkbox.check();\n }\n\n /**\n * Deselects the repeater item.\n */\n public async deselect(): Promise<void> {\n const checkbox = await this.#getCheckbox();\n if (!checkbox) {\n throw new Error(\n 'Could not deselect the repeater item because it is not selectable.'\n );\n }\n\n await checkbox.uncheck();\n }\n\n /**\n * Gets the text of the repeater item content.\n */\n public async getContentText(): Promise<string> {\n return (await this.#getContent()).text();\n }\n\n /**\n * Gets the text of the repeater item title.\n */\n public async getTitleText(): Promise<string> {\n return (await this.#getTitle()).text();\n }\n}\n","import { HarnessPredicate } from '@angular/cdk/testing';\nimport { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyRepeaterHarnessFilters } from './repeater-harness-filters';\nimport { SkyRepeaterItemHarness } from './repeater-item-harness';\nimport { SkyRepeaterItemHarnessFilters } from './repeater-item-harness-filters';\n\n/**\n * Harness for interacting with a repeater component in tests.\n * @internal\n */\nexport class SkyRepeaterHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-repeater';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyRepeaterHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyRepeaterHarnessFilters\n ): HarnessPredicate<SkyRepeaterHarness> {\n return SkyRepeaterHarness.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Gets a list of child repeater items.\n */\n public async getRepeaterItems(\n filters?: SkyRepeaterItemHarnessFilters\n ): Promise<SkyRepeaterItemHarness[]> {\n return this.locatorForAll(SkyRepeaterItemHarness.with(filters || {}))();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { SkySortModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n imports: [NoopAnimationsModule],\n exports: [SkySortModule],\n})\nexport class SkySortTestingModule {}\n","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 { SkySortFixtureMenu } from './sort-fixture-menu';\nimport { SkySortFixtureMenuItem } from './sort-fixture-menu-item';\n\n/**\n * Provides information for and interaction with a SKY UX sort component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @internal\n */\nexport class SkySortFixture {\n /**\n * The active sort menu item, if one exists. Menu items are only available when the menu dropdown\n * is open. If the menu dropdown is closed, this property will be undefined.\n */\n public get activeMenuItem(): SkySortFixtureMenuItem | undefined {\n return this.menuItems?.find((x) => x.isActive);\n }\n\n /**\n * The sort menu's properties.\n */\n public get menu(): SkySortFixtureMenu {\n /* istanbul ignore next */\n const buttonText =\n SkyAppTestUtility.getText(this.#getSortButtonTextEl()) || '';\n return {\n buttonText,\n isOpen: this.#getDropdownMenuEl() !== null,\n };\n }\n\n /**\n * The properties of each sort menu item. Menu items are only available when the menu dropdown\n * is open. If the menu dropdown is closed, this property will be undefined.\n */\n public get menuItems(): SkySortFixtureMenuItem[] | undefined {\n // Return undefined when we can't determine what the options are.\n // We do this to avoid any confusion with an empty set of options.\n if (!this.menu.isOpen) {\n return;\n }\n\n return this.#getSortItems().map((item: HTMLElement, i: number) => {\n const itemButton = item.querySelector('button');\n\n return {\n index: i,\n isActive: item.classList.contains('sky-sort-item-selected'),\n text: SkyAppTestUtility.getText(itemButton),\n };\n });\n }\n\n #debugEl: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.#debugEl = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-sort'\n );\n }\n\n /**\n * Closes the sort dropdown menu if it isn't closed already.\n */\n public async closeMenu(): Promise<void> {\n // if the menu is already closed, do nothing\n if (!this.menu.isOpen) {\n return;\n }\n\n const menu = this.#getDropdownButtonEl();\n if (menu !== undefined && !menu.disabled) {\n menu.click();\n\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Opens the sort dropdown menu if it isn't open already.\n */\n public async openMenu(): Promise<void> {\n // if the menu is already open, do nothing\n if (this.menu.isOpen) {\n return;\n }\n\n const menu = this.#getDropdownButtonEl();\n\n if (menu !== undefined && !menu.disabled) {\n menu.click();\n\n this.fixture.detectChanges();\n await this.fixture.whenStable();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item with the specified index, if it exists.\n * @param menuItemIndex The index of the menu item to select.\n */\n public async selectMenuItemByIndex(menuItemIndex: number): Promise<void> {\n return this.#selectMenuItem((_item: HTMLElement, index: number) => {\n return index === menuItemIndex;\n });\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item with the specified text,\n * if a matching item is available.\n * @param menuItemText The text of the menu item to select.\n */\n public async selectMenuItemByText(\n menuItemText: string | undefined\n ): Promise<void> {\n /* istanbul ignore else */\n if (menuItemText) {\n return this.#selectMenuItem((item: HTMLElement) => {\n return SkyAppTestUtility.getText(item) === menuItemText;\n });\n } else {\n return;\n }\n }\n\n //#region helpers\n\n #getDropdownButtonEl(): HTMLButtonElement | undefined {\n return this.#debugEl.query(By.css('.sky-dropdown-button')).nativeElement;\n }\n\n #getDropdownMenuEl(): HTMLElement | null {\n return document.querySelector('sky-overlay .sky-dropdown-menu');\n }\n\n #getSortButtonTextEl(): HTMLElement | undefined {\n return this.#debugEl.query(By.css('.sky-sort-btn-text')).nativeElement;\n }\n\n #getSortItems(): HTMLElement[] {\n const resultNodes = document.querySelectorAll('sky-overlay .sky-sort-item');\n return Array.prototype.slice.call(resultNodes);\n }\n\n /**\n * Ensures the sort menu is open and selects the menu item via a selection predicate,\n * if a matching item is available.\n * @param selectionPredicate The menu item selector method to use.\n */\n async #selectMenuItem(\n selectionPredicate: (item: HTMLElement, index: number) => boolean\n ): Promise<void> {\n // make sure the sort menu is open\n if (!this.menu.isOpen) {\n await this.openMenu();\n }\n\n // find the requested menu item using the selectionPredicate parameter\n const items = this.#getSortItems();\n const targetItem = items.find((item: HTMLElement, index: number) =>\n selectionPredicate(item, index)\n );\n\n // if we found the item, select it\n if (targetItem) {\n // we've got the '.sky-sort-item' div, but we want to click it's child button element\n const targetButton = targetItem.querySelector('button');\n targetButton?.click();\n\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n }\n\n //#endregion\n}\n","import { NgModule } from '@angular/core';\nimport { SkyInfiniteScrollModule } from '@skyux/lists';\n\n/**\n * @internal\n */\n@NgModule({\n exports: [SkyInfiniteScrollModule],\n})\nexport class SkyInfiniteScrollTestingModule {}\n","import { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { SkyAppTestUtility } from '@skyux-sdk/testing';\n\n/**\n * Provides information for and interaction with a SKY UX infinite scroll component.\n * By using the fixture API, a test insulates itself against updates to the internals\n * of a component, such as changing its DOM structure.\n * @deprecated Use `SkyInfiniteScrollHarness` instead.\n * @internal\n */\nexport class SkyInfiniteScrollFixture {\n private debugElement: DebugElement;\n\n constructor(private fixture: ComponentFixture<any>, skyTestId: string) {\n this.debugElement = SkyAppTestUtility.getDebugElementByTestId(\n fixture,\n skyTestId,\n 'sky-infinite-scroll'\n );\n }\n\n public get loadMoreButtonIsVisible(): boolean {\n return this.getButton() instanceof HTMLButtonElement;\n }\n\n public async clickLoadMoreButton(): Promise<any> {\n const button = this.getButton();\n if (button instanceof HTMLButtonElement) {\n button.click();\n }\n this.fixture.detectChanges();\n return this.fixture.whenStable();\n }\n\n private getButton() {\n return this.debugElement.nativeElement.querySelector(\n '.sky-infinite-scroll .sky-btn'\n );\n }\n}\n","import { SkyComponentHarness } from '@skyux/core/testing';\n\nimport { SkyInfiniteScrollHarnessFilters } from './infinite-scroll-harness-filters';\n\n/**\n * Harness for interacting with an infinite scroll component in tests.\n * @internal\n */\nexport class SkyInfiniteScrollHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-infinite-scroll';\n\n #showMoreButton = this.locatorForOptional(\n 'button.sky-infinite-scroll-load-more-button'\n );\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyInfiniteScrollHarness` that meets certain criteria.\n */\n public static with(filters: SkyInfiniteScrollHarnessFilters) {\n return this.getDataSkyIdPredicate(filters);\n }\n\n /**\n * Whether the infinite scroll is enabled.\n */\n public async isEnabled(): Promise<boolean> {\n return (await this.locatorForOptional('.sky-infinite-scroll')()) !== null;\n }\n\n /**\n * Whether the infinite scroll is loading.\n */\n public async isLoading(): Promise<boolean> {\n return (await this.isEnabled()) && (await this.#showMoreButton()) === null;\n }\n\n /**\n * Clicks the \"Load more\" button.\n */\n public async loadMore(): Promise<void> {\n const button = await this.#showMoreButton();\n if (button) {\n await button.click();\n } else {\n if (!(await this.isEnabled())) {\n throw new Error(\n 'Unable to click the \"Load more\" button because the infinite scroll is not enabled.'\n );\n } else {\n throw new Error(\n 'Unable to click the \"Load more\" button because the infinite scroll is loading.'\n );\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}