@hermes-ui/angular 0.1.6 → 0.2.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.
Files changed (151) hide show
  1. package/README.md +52 -52
  2. package/button/_buttons.clarity.scss +80 -2
  3. package/button/_mixins.buttons.scss +44 -2
  4. package/button/_properties.buttons.scss +349 -387
  5. package/button/_variables.buttons.scss +22 -0
  6. package/fesm2022/hermes-ui-angular-accordion.mjs +2 -2
  7. package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
  8. package/fesm2022/hermes-ui-angular-addons-a11y.mjs.map +1 -1
  9. package/fesm2022/hermes-ui-angular-addons-card-container.mjs +3 -3
  10. package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
  11. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2 -2
  12. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
  13. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2 -2
  14. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
  15. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +30 -30
  16. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
  17. package/fesm2022/hermes-ui-angular-addons-dialog.mjs.map +1 -1
  18. package/fesm2022/hermes-ui-angular-addons-menu.mjs +8 -8
  19. package/fesm2022/hermes-ui-angular-addons-menu.mjs.map +1 -1
  20. package/fesm2022/hermes-ui-angular-addons-property-view.mjs +2 -2
  21. package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
  22. package/fesm2022/hermes-ui-angular-addons-stepper.mjs.map +1 -1
  23. package/fesm2022/hermes-ui-angular-addons-tabs.mjs.map +1 -1
  24. package/fesm2022/hermes-ui-angular-addons-testing.mjs +78 -78
  25. package/fesm2022/hermes-ui-angular-addons-testing.mjs.map +1 -1
  26. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +66 -66
  27. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
  28. package/fesm2022/hermes-ui-angular-addons-var.mjs +2 -2
  29. package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
  30. package/fesm2022/hermes-ui-angular-addons-wizard.mjs +2 -2
  31. package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
  32. package/fesm2022/hermes-ui-angular-addons-workflow.mjs.map +1 -1
  33. package/fesm2022/hermes-ui-angular-button.mjs +76 -76
  34. package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
  35. package/fesm2022/hermes-ui-angular-card.mjs.map +1 -1
  36. package/fesm2022/hermes-ui-angular-collapsible-panel.mjs.map +1 -1
  37. package/fesm2022/hermes-ui-angular-data-datagrid.mjs +928 -928
  38. package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
  39. package/fesm2022/hermes-ui-angular-data-stack-view.mjs +116 -116
  40. package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
  41. package/fesm2022/hermes-ui-angular-data-tree-view.mjs +14 -14
  42. package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
  43. package/fesm2022/hermes-ui-angular-data.mjs.map +1 -1
  44. package/fesm2022/hermes-ui-angular-divider.mjs +2 -2
  45. package/fesm2022/hermes-ui-angular-divider.mjs.map +1 -1
  46. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +2 -2
  47. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
  48. package/fesm2022/hermes-ui-angular-emphasis-badge.mjs.map +1 -1
  49. package/fesm2022/hermes-ui-angular-emphasis-label.mjs +16 -16
  50. package/fesm2022/hermes-ui-angular-emphasis-label.mjs.map +1 -1
  51. package/fesm2022/hermes-ui-angular-emphasis.mjs.map +1 -1
  52. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +52 -52
  53. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
  54. package/fesm2022/hermes-ui-angular-forms-combobox.mjs +128 -128
  55. package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
  56. package/fesm2022/hermes-ui-angular-forms-common.mjs +2 -2
  57. package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
  58. package/fesm2022/hermes-ui-angular-forms-datalist.mjs +48 -48
  59. package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
  60. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +377 -377
  61. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
  62. package/fesm2022/hermes-ui-angular-forms-file-input.mjs +192 -192
  63. package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
  64. package/fesm2022/hermes-ui-angular-forms-input.mjs +54 -54
  65. package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
  66. package/fesm2022/hermes-ui-angular-forms-native-select.mjs +40 -40
  67. package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
  68. package/fesm2022/hermes-ui-angular-forms-number-input.mjs +82 -82
  69. package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
  70. package/fesm2022/hermes-ui-angular-forms-password.mjs +60 -60
  71. package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
  72. package/fesm2022/hermes-ui-angular-forms-radio.mjs +52 -52
  73. package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
  74. package/fesm2022/hermes-ui-angular-forms-range.mjs +46 -46
  75. package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
  76. package/fesm2022/hermes-ui-angular-forms-select.mjs +10 -10
  77. package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
  78. package/fesm2022/hermes-ui-angular-forms-textarea.mjs +40 -40
  79. package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
  80. package/fesm2022/hermes-ui-angular-forms.mjs.map +1 -1
  81. package/fesm2022/hermes-ui-angular-icon.mjs +29 -29
  82. package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
  83. package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs.map +1 -1
  84. package/fesm2022/hermes-ui-angular-layout-main-container.mjs.map +1 -1
  85. package/fesm2022/hermes-ui-angular-layout-nav.mjs +48 -48
  86. package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
  87. package/fesm2022/hermes-ui-angular-layout-tabs.mjs +148 -148
  88. package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
  89. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +382 -28
  90. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
  91. package/fesm2022/hermes-ui-angular-layout.mjs.map +1 -1
  92. package/fesm2022/hermes-ui-angular-modal.mjs +2 -2
  93. package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
  94. package/fesm2022/hermes-ui-angular-pagination.mjs +8 -8
  95. package/fesm2022/hermes-ui-angular-pagination.mjs.map +1 -1
  96. package/fesm2022/hermes-ui-angular-popover-common.mjs +26 -3
  97. package/fesm2022/hermes-ui-angular-popover-common.mjs.map +1 -1
  98. package/fesm2022/hermes-ui-angular-popover-dropdown.mjs.map +1 -1
  99. package/fesm2022/hermes-ui-angular-popover-signpost.mjs +68 -68
  100. package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
  101. package/fesm2022/hermes-ui-angular-popover-tooltip.mjs.map +1 -1
  102. package/fesm2022/hermes-ui-angular-popover.mjs.map +1 -1
  103. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs +10 -10
  104. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs.map +1 -1
  105. package/fesm2022/hermes-ui-angular-progress-spinner.mjs.map +1 -1
  106. package/fesm2022/hermes-ui-angular-stepper.mjs +2 -2
  107. package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
  108. package/fesm2022/hermes-ui-angular-timeline.mjs +2 -2
  109. package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
  110. package/fesm2022/hermes-ui-angular-toast.mjs +6 -6
  111. package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
  112. package/fesm2022/hermes-ui-angular-utils-conditional.mjs.map +1 -1
  113. package/fesm2022/hermes-ui-angular-utils.mjs +6 -0
  114. package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
  115. package/fesm2022/hermes-ui-angular-wizard.mjs +58 -58
  116. package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
  117. package/fesm2022/hermes-ui-angular.mjs.map +1 -1
  118. package/forms/combobox/_combobox.clarity.scss +18 -4
  119. package/forms/combobox/_properties.combobox.scss +5 -5
  120. package/forms/styles/_input-group.clarity.scss +7 -0
  121. package/forms/styles/_mixins.forms.scss +12 -10
  122. package/forms/styles/_native-select.clarity.scss +17 -5
  123. package/forms/styles/_properties.forms.scss +29 -18
  124. package/forms/styles/_textarea.clarity.scss +4 -4
  125. package/forms/styles/_variables.forms.scss +6 -0
  126. package/hermes-ui.scss +7 -7
  127. package/layout/main-container/_properties.header.scss +44 -6
  128. package/layout/main-container/_variables.header.scss +11 -0
  129. package/layout/nav/_header.clarity.scss +14 -0
  130. package/layout/nav/_mixins.header.scss +55 -40
  131. package/layout/nav/_responsive-nav.clarity.scss +21 -10
  132. package/layout/vertical-nav/_properties.vertical-nav.scss +77 -27
  133. package/layout/vertical-nav/_variables.vertical-nav.scss +23 -0
  134. package/layout/vertical-nav/_vertical-nav.clarity.scss +418 -277
  135. package/package.json +1 -1
  136. package/toast/README.md +65 -65
  137. package/toast/_properties.toast.scss +56 -56
  138. package/toast/_toast.clarity.scss +190 -190
  139. package/toast/_variables.toast.scss +33 -33
  140. package/types/hermes-ui-angular-addons-theme-builder.d.ts +2 -2
  141. package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -1
  142. package/types/hermes-ui-angular-data-datagrid.d.ts.map +1 -1
  143. package/types/hermes-ui-angular-icon.d.ts +3 -3
  144. package/types/hermes-ui-angular-icon.d.ts.map +1 -1
  145. package/types/hermes-ui-angular-layout-vertical-nav.d.ts +134 -10
  146. package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -1
  147. package/types/hermes-ui-angular-popover-common.d.ts +4 -3
  148. package/types/hermes-ui-angular-popover-common.d.ts.map +1 -1
  149. package/types/hermes-ui-angular-utils.d.ts +12 -0
  150. package/types/hermes-ui-angular-utils.d.ts.map +1 -1
  151. package/types/hermes-ui-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hermes-ui-angular-addons-testing.mjs","sources":["../../../addons/testing/a11y/forms/required-field-legend.component.mock.ts","../../../addons/testing/a11y/zoom/zoom-level.service.mock.ts","../../../addons/testing/a11y/index.ts","../../../addons/testing/card-container/appfx-card-container.component.mock.ts","../../../addons/testing/card-container/appfx-card-container.mock.ts","../../../addons/testing/card-container/index.ts","../../../addons/testing/datagrid/datagrid.component.mock.ts","../../../addons/testing/datagrid/datagrid-action-bar.component.mock.ts","../../../addons/testing/datagrid/datagrid-cell-container.component.mock.ts","../../../addons/testing/datagrid/datagrid-column-toggle.component.mock.ts","../../../addons/testing/datagrid/datagrid-persist-settings.directive.mock.ts","../../../addons/testing/datagrid/datagrid-preserve-selection.directive.mock.ts","../../../addons/testing/datagrid/grid-helper.ts","../../../addons/testing/datagrid/is-row-selectable.pipe.mock.ts","../../../addons/testing/datagrid/index.ts","../../../addons/testing/datagrid-filters/datagrid-filters.component.mock.ts","../../../addons/testing/datagrid-filters/index.ts","../../../addons/testing/dialog/multi-page-dialog.component.mock.ts","../../../addons/testing/dialog/multi-page-dialog-header.component.mock.ts","../../../addons/testing/dialog/index.ts","../../../addons/testing/menu/menu-action.component.mock.ts","../../../addons/testing/menu/menu.component.mock.ts","../../../addons/testing/menu/index.ts","../../../addons/testing/property-view/property-view-component.mock.ts","../../../addons/testing/property-view/property-view-strings.mock.ts","../../../addons/testing/property-view/property-view-test-helper.ts","../../../addons/testing/property-view/index.ts","../../../addons/testing/stepper/stepper.component.mock.ts","../../../addons/testing/stepper/index.ts","../../../addons/testing/tabs/tabs-helper.ts","../../../addons/testing/tabs/index.ts","../../../addons/testing/var/workflow.mock.ts","../../../addons/testing/var/index.ts","../../../addons/testing/wizard/wizard.component.mock.ts","../../../addons/testing/wizard/wizard-helper.ts","../../../addons/testing/wizard/index.ts","../../../addons/testing/index.ts","../../../addons/testing/hermes-ui-angular-addons-testing.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-required-field-legend',\r\n standalone: false,\r\n template: ``,\r\n})\r\nexport class MockRequiredFieldLegendComponent {}\r\n\r\n@Component({\r\n selector: 'appfx-required-field-legend',\r\n standalone: true,\r\n template: ``,\r\n})\r\nexport class MockRequiredFieldLegendStandaloneComponent extends MockRequiredFieldLegendComponent {}\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ZoomLevel } from '@hermes-ui/angular/addons/a11y';\nimport { ReplaySubject } from 'rxjs';\n\nexport class ZoomLevelServiceMock {\n resizeSubject = new ReplaySubject<ZoomLevel>(1);\n onChange = this.resizeSubject.asObservable();\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockRequiredFieldLegendComponent,\r\n MockRequiredFieldLegendStandaloneComponent,\r\n} from './forms/required-field-legend.component.mock';\r\nexport { ZoomLevelServiceMock } from './zoom/zoom-level.service.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-card-container',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockAppfxCardContainerComponent {\r\n @Input() containerId: string;\r\n\r\n @Input() cards: unknown[] = [];\r\n\r\n @Input() persistenceStore?: unknown;\r\n\r\n @Input() showCardContainerSettings: boolean = true;\r\n\r\n @Input() dragDropEnabled: boolean = true;\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-card-container',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockAppfxCardContainerStandaloneComponent extends MockAppfxCardContainerComponent {}\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, EmbeddedViewRef, ViewChild, ViewContainerRef } from '@angular/core';\nimport { AppfxCard } from '@hermes-ui/angular/addons/card-container';\n\n// mock for container service\nexport class MockContainerService {\n getCardOrder() {}\n\n moveCard() {}\n\n getVisibleCardsCount() {}\n}\n\n// mock for A11y service\nexport class MockA11yService {\n isSelected() {}\n\n isDraggableOver() {}\n\n selectCard() {}\n\n moveDropPosition() {}\n}\n\n// mock for DragDrop service\nexport class MockDragDropService {\n onDragStart() {}\n\n onDragDrop() {}\n}\n\n// mock for Layout service\nexport class MockLayoutService {\n updateCardSize() {}\n}\n\n// Renderer2 Mock\nexport class MockRenderer2 {\n setStyle(el: any, name: string, style: string): void {\n el[name] = style;\n }\n\n removeStyle(el: any, name: string): void {\n el[name] = null;\n }\n}\n\n// Mock Card Container for ViewContainerRef\n@Component({\n standalone: false,\n template: `\n <div class=\"scrollable\">\n <div>\n <ng-template #cardContainer></ng-template>\n </div>\n </div>\n `,\n styles: [\n '.scrollable { overflow: auto; position: absolute; left: 0; right: 0; top: 0; bottom: 0; max-height: 20px; }',\n ],\n})\nexport class MockCardContainerComponent {\n @ViewChild('cardContainer', { read: ViewContainerRef, static: true }) cardContainer: ViewContainerRef;\n}\n\n// Sample Card to test scenarios\n@Component({\n standalone: false,\n template: `\n <div class=\"card\">\n <div class=\"card-header\">\n <div class=\"card-title\">Sample Card</div>\n </div>\n <div class=\"card-block\"></div>\n <div class=\"card-footer\"></div>\n </div>\n `,\n})\nexport class SampleCardComponent {\n eleRef: ElementRef;\n\n constructor(el: ElementRef) {\n this.eleRef = el;\n }\n}\n\n// Sample Card to without footer test scenarios\n@Component({\n standalone: false,\n template: `\n <div class=\"card\">\n <div class=\"card-header\">\n <div class=\"card-title\">Sample Card</div>\n </div>\n <div class=\"card-block\"></div>\n </div>\n `,\n})\nexport class SampleCardWithoutFooterComponent {\n eleRef: ElementRef;\n\n constructor(el: ElementRef) {\n this.eleRef = el;\n }\n}\n\n// Sample Card to without header test scenarios\n@Component({\n standalone: false,\n template: `\n <div class=\"card\">\n <div class=\"card-block\">\n <div class=\"card-title\">Sample Card</div>\n </div>\n <div class=\"card-footer\"></div>\n </div>\n `,\n})\nexport class SampleCardWithoutHeaderComponent {\n eleRef: ElementRef;\n\n constructor(el: ElementRef) {\n this.eleRef = el;\n }\n}\n\n// mock element ref\nexport class MockElementRef extends ElementRef {\n override nativeElement = {\n querySelector: () => {},\n };\n}\n\n// sort function to display cards by sorted titles\nexport const sortCardsFn = (a: AppfxCard, b: AppfxCard) => {\n if (a.title && b.title) {\n return a.title.localeCompare(b.title);\n }\n return 0;\n};\n\n// sample cards for unit tests\nexport const sampleCards = [\n {\n id: 'sample-card-1',\n title: 'Sample Card 1',\n componentClass: SampleCardComponent,\n hidden: false,\n order: 0,\n view: undefined as unknown as EmbeddedViewRef<void>,\n },\n {\n id: 'sample-card-2',\n title: 'Sample Card 2',\n componentClass: SampleCardComponent,\n hidden: false,\n canHide: false,\n order: 1,\n view: undefined as unknown as EmbeddedViewRef<void>,\n },\n {\n id: 'sample-card-3',\n title: 'Sample Card 3',\n componentClass: SampleCardComponent,\n hidden: false,\n canHide: false,\n order: 5,\n view: undefined as unknown as EmbeddedViewRef<void>,\n },\n];\n\n// sample card settings\nexport const sampleCardsSettings = [\n {\n id: 'sample-card-1',\n hidden: false,\n order: 0,\n },\n {\n id: 'sample-card-2',\n hidden: true,\n order: 2,\n },\n {\n id: 'sample-card-3',\n hidden: false,\n order: 5,\n },\n];\n\n// card to order mapping\nexport const cardIdToOrder = {\n cardWithDefaultOrder: Infinity,\n [sampleCards[0].id]: 0,\n [sampleCards[1].id]: 1,\n [sampleCards[2].id]: 2,\n};\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockAppfxCardContainerComponent,\r\n MockAppfxCardContainerStandaloneComponent,\r\n} from './appfx-card-container.component.mock';\r\nexport {\r\n cardIdToOrder,\r\n MockA11yService,\r\n MockCardContainerComponent,\r\n MockContainerService,\r\n MockDragDropService,\r\n MockElementRef,\r\n MockLayoutService,\r\n MockRenderer2,\r\n sampleCards,\r\n sampleCardsSettings,\r\n SampleCardComponent,\r\n SampleCardWithoutFooterComponent,\r\n SampleCardWithoutHeaderComponent,\r\n sortCardsFn,\r\n} from './appfx-card-container.mock';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\nimport { HermesDatagridVirtualScrollRangeInterface } from '@hermes-ui/angular/data/datagrid';\n\n@Component({\n selector: 'appfx-datagrid',\n standalone: false,\n template: ``,\n})\nexport class MockAppfxDatagridComponent {\n @Input() gridItems: any;\n @Input() columns: any;\n @Input() layoutModel: any;\n @Input() footerModel: any;\n @Input() pageSize: number;\n @Input() pageSizeOptions: number[];\n @Input() totalItems: number;\n @Input() selectionType: any;\n @Input() selectedItems: any;\n @Input() datagridLabels: any;\n @Input() preSelectFirstItem: boolean;\n @Input() rowSelectionMode: boolean;\n @Input() actionBarActions: any[];\n @Input() showFooter: boolean;\n @Input() singleRowActions: any[];\n @Input() noItemsFoundPlaceholder: string;\n @Input() loading: boolean;\n @Input() serverDrivenDatagrid: boolean;\n @Input() filterMode: any;\n @Input() listItemsCount: number;\n @Input() trackByGridItemProperty: string;\n @Input() isRowLocked: (rowItem: any) => boolean;\n @Input() detailHeader: any;\n @Input() detailBody: any;\n @Input() rowDetailContent: TemplateRef<any>;\n @Input() rowsExpandedByDefault: boolean;\n @Input() vscPersistDatagridSettings: boolean;\n @Input() detailState: any = null;\n @Input() trackByFunction: any;\n @Input() virtualScrolling: boolean;\n @Input() dataRange: HermesDatagridVirtualScrollRangeInterface<any>;\n\n @Output() selectedItemsChange = new EventEmitter<any>();\n @Output() gridItemsChange = new EventEmitter<any[]>();\n @Output() selectionChange = new EventEmitter<any[]>();\n @Output() searchTermChange = new EventEmitter<string>();\n @Output() refreshGridData = new EventEmitter<any>();\n @Output() refreshVirtualGridData = new EventEmitter<any>();\n @Output() actionClick = new EventEmitter<any>();\n @Output() rowActionMenuOpenChange = new EventEmitter<any>();\n @Output() exportDataEvent = new EventEmitter<any>();\n @Output() detailStateChange = new EventEmitter<any>(true);\n\n hermesDatagridPagination: any;\n\n onModelChange(): void {}\n}\n\n@Component({\n selector: 'appfx-datagrid',\n standalone: true,\n template: ``,\n})\nexport class MockStandaloneDatagridComponent extends MockAppfxDatagridComponent {}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ActionDefinition } from '@hermes-ui/angular/addons/datagrid';\n\n@Component({\n selector: 'appfx-datagrid-action-bar',\n standalone: false,\n template: `\n @for (action of actions; track action) {\n <button\n (click)=\"onActionClick(action)\"\n [title]=\"action.tooltip\"\n [attr.data-test-id]=\"action.id\"\n [disabled]=\"!action.enabled\"\n >\n {{ action.label }}\n </button>\n }\n `,\n})\nexport class MockDatagridActionBarComponent {\n @Input() actions: ActionDefinition[];\n\n @Output() invokeAction: EventEmitter<ActionDefinition> = new EventEmitter();\n\n onActionClick(action: ActionDefinition): void {\n this.invokeAction.emit(action);\n }\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n Component,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Component for unit testing purposes to provide a template for rendering datagrid cell content.\r\n */\r\n@Component({\r\n selector: 'appfx-dg-cell-container',\r\n standalone: false,\r\n template: `\r\n @if (!column.columnRenderer) {\r\n {{ item?.[column.field] }}\r\n }\r\n <ng-template #cellContainer></ng-template>\r\n `,\r\n})\r\nexport class MockDatagridCellContainerComponent implements OnInit {\r\n @Input() column: any;\r\n\r\n @Input() item: any;\r\n\r\n @ViewChild('cellContainer', { read: ViewContainerRef, static: true }) protected container: ViewContainerRef;\r\n private componentRef: ComponentRef<any> | null;\r\n private instance: any;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {}\r\n\r\n ngOnInit(): void {\r\n if (this.column.columnRenderer) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.column.columnRenderer);\r\n this.componentRef = this.container.createComponent(factory);\r\n this.instance = <any>this.componentRef?.instance;\r\n this.instance.item = this.item;\r\n this.instance.column = this.column;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-dg-column-toggle',\r\n standalone: false,\r\n template: ``,\r\n})\r\nexport class MockDatagridColumnToggleComponent {\r\n @Input() columns: unknown[];\r\n\r\n showColumn(): void {}\r\n\r\n hideColumn(): void {}\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'appfx-datagrid[appfxPersistDatagridSettings]',\r\n standalone: false,\r\n})\r\nexport class MockDatagridPersistSettingsDirective {\r\n @Input() appfxPersistDatagridSettings: string;\r\n\r\n @Input() persistPageSize: boolean;\r\n\r\n @Input() persistSortOrder: boolean;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appfxPreserveSelection]',\r\n standalone: false,\r\n})\r\nexport class MockDatagridPreserveSelectionDirective {\r\n @Input() preserveExistingSelection: boolean;\r\n}\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DebugElement } from '@angular/core';\nimport { ComponentFixture } from '@angular/core/testing';\nimport { By } from '@angular/platform-browser';\nimport { HermesDatagrid } from '@hermes-ui/angular/data/datagrid';\n\nexport class GridHelper {\n isExpandable = false;\n private gridElement: HTMLElement;\n private component: HermesDatagrid;\n private componentDebugElement: DebugElement; // retain for deep introspection\n\n constructor(\n contextDebugElement: DebugElement,\n public indexedEntry?: number\n ) {\n const gridMatches = contextDebugElement.queryAll(By.directive(HermesDatagrid));\n\n if (!gridMatches.length) {\n throw Error('No grid found by scoped context');\n } else if (gridMatches.length > 1 && indexedEntry === undefined) {\n throw Error(`${gridMatches.length} multiple grids under the passed context`);\n } else {\n this.componentDebugElement = gridMatches[indexedEntry || 0];\n this.component = this.componentDebugElement.injector.get<HermesDatagrid>(HermesDatagrid);\n this.gridElement = this.componentDebugElement.nativeElement;\n this.isExpandable = this.isRowDetailConfigured();\n }\n }\n\n /**\n * validate grid component that is undefined. If it is defined, its data items collection must be empty\n * @param gridParentDebugElement\n */\n static assertEmpty(gridParentDebugElement: DebugElement): void {\n const matchedGrid = gridParentDebugElement.query(By.directive(HermesDatagrid));\n if (!matchedGrid) {\n expect(matchedGrid).toBeNull();\n return;\n }\n\n const hermesGrid = matchedGrid.injector.get<HermesDatagrid>(HermesDatagrid);\n if (hermesGrid) {\n expect(hermesGrid.items.all.length).toBeFalsy();\n }\n }\n\n // many internal rendering changes occur throughout the Grid rendering pipeline. After sorting and filtering rows changes occur\n detectChanges(fixture: ComponentFixture<any>): void {\n fixture.detectChanges();\n this.component.resize();\n fixture.detectChanges();\n }\n\n getGridElement(): HTMLElement {\n return this.gridElement;\n }\n\n getGridInternalInstance(): HermesDatagrid {\n return this.component;\n }\n\n // team developers should annotate grids when multiple exist\n getTestId(): string | undefined {\n return this.getGridElement().dataset['testId'] || undefined;\n }\n\n // omits control columns such as selector and expandable row toggle\n getHeaders(): string[] {\n return Array.from(\n this.gridElement.querySelectorAll(\n '.datagrid-table .datagrid-header hermes-dg-column .datagrid-column-title'\n ) as NodeListOf<HTMLElement>\n ).map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''));\n }\n\n // omits control columns such as selector and expandable row toggle\n getHiddenHeaders(): string[] {\n return Array.from(\n this.gridElement.querySelectorAll(\n '.datagrid-table .datagrid-header hermes-dg-column.datagrid-hidden-column .datagrid-column-title'\n ) as NodeListOf<HTMLElement>\n ).map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''));\n }\n\n // testing utility logic to verify presence of label, optionally ensuring certain columns are not present\n assertHeaderLabels(includeLabelList: Array<string>, excludeLabelList?: Array<string>) {\n const gridHeaderLabelList = this.getHeaders();\n\n // these columns are present\n if (Array.isArray(includeLabelList)) {\n gridHeaderLabelList.forEach((headerLabel, index) => {\n expect(headerLabel).toEqual(includeLabelList[index], `Cannot find \"${headerLabel}\" column.`);\n });\n }\n\n // these columns are not present ( in the DOM ). Currently ignores hidden attribute\n if (Array.isArray(excludeLabelList)) {\n excludeLabelList.forEach(undefinedLabel => {\n expect(gridHeaderLabelList.indexOf(undefinedLabel)).toBeLessThan(0, `There is a \"${undefinedLabel}\" column.`);\n });\n }\n }\n\n isRowDetailConfigured(): boolean {\n return !!this.gridElement.querySelector(\n '.datagrid-table .datagrid-header .datagrid-column.datagrid-expandable-caret'\n );\n }\n\n // omits control columns such as selector and expandable row toggle\n getHeaderElements(): HTMLElement[] {\n return Array.from(this.gridElement.querySelectorAll('hermes-dg-column') as NodeListOf<HTMLElement>).map(\n (element: HTMLElement) => element\n );\n }\n\n // omits control columns such as selector and expandable row toggle\n getHeaderElementAt(headerIndex: number): HTMLElement | undefined {\n return this.getHeaderElements()[headerIndex] || undefined;\n }\n\n getSelectAllElement(): HTMLElement | null {\n return this.gridElement.querySelector(\n \".datagrid-table .datagrid-header .datagrid-column.datagrid-select input[type='checkbox']\"\n );\n }\n\n // only if column title is within a button, consider it as a column sort action\n isColumnSortable(header: string): boolean {\n const columnIndex: number = Array.from(\n this.gridElement.querySelectorAll(\n '.datagrid-table .datagrid-header button.datagrid-column-title'\n ) as NodeListOf<HTMLElement>\n )\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\n .indexOf(header);\n\n return columnIndex !== -1;\n }\n\n sortByColumn(header: string): boolean {\n const headerElements = Array.from(\n this.gridElement.querySelectorAll(\n '.datagrid-table .datagrid-header button.datagrid-column-title'\n ) as NodeListOf<HTMLButtonElement>\n ).filter((element: HTMLElement) => {\n return element.textContent && header === element.textContent.trim();\n });\n\n if (!headerElements || headerElements.length === 0) {\n return false;\n }\n const headerElement = headerElements[0] as HTMLElement;\n headerElement.click();\n return true;\n }\n\n sortByColumnIndex(colIndex: number): boolean {\n const headerElement = this.getHeaderElementAt(colIndex);\n\n if (!headerElement) {\n throw Error(`The grid does not have column with index ${colIndex}`);\n }\n\n const columnSortButton = headerElement.querySelector<HTMLButtonElement>('button.datagrid-column-title');\n\n if (!columnSortButton) {\n throw Error(`The column is not sortable at ${colIndex}`);\n }\n\n columnSortButton.click(); // toggle sort\n return true;\n }\n\n // open filter overlay from icon in the right corner of header cell\n openFilter(header: string): void {\n const headerElement: HTMLElement = <HTMLElement>this.getHeaderElements().find((element: HTMLElement) => {\n const columnTitle: HTMLElement = <HTMLElement>element.querySelector('.datagrid-column-title');\n return !!(columnTitle && columnTitle.textContent && columnTitle.textContent.trim() === header);\n });\n\n if (headerElement) {\n const filterButton = headerElement.querySelector<HTMLButtonElement>('hermes-dg-filter .datagrid-filter-toggle');\n if (filterButton) {\n filterButton.click();\n }\n }\n }\n\n // shut down filter overlay\n closeFilter(): void {\n const closeButton = document.body.querySelector<HTMLButtonElement>('.datagrid-filter button.close');\n if (closeButton) {\n closeButton.click();\n }\n }\n\n openFilterByColumnIndex(colIndex: number): void {\n const headerElements: HTMLElement[] = this.getHeaderElements();\n\n if (!headerElements || headerElements.length - 1 < colIndex) {\n throw Error(`The grid does not have column with index ${colIndex}`);\n }\n\n const filterButton: HTMLElement = headerElements[colIndex].querySelector(\n 'hermes-dg-filter > .datagrid-filter-toggle'\n ) as HTMLElement;\n filterButton.click();\n }\n\n getFilterInput(): FilterInputTestHelper {\n const inputElement: HTMLInputElement = document.body.querySelector('.datagrid-filter input') as HTMLInputElement;\n return new FilterInputTestHelper(inputElement);\n }\n\n getRows(): GridRowTestHelper[] {\n const rowElements: NodeListOf<HTMLElement> = this.gridElement.querySelectorAll('hermes-dg-row');\n return Array.from(rowElements).map((element: HTMLElement) => new GridRowTestHelper(this, element));\n }\n\n getFooter(): GridFooterTestHelper {\n const footerElement: HTMLElement | null = this.gridElement.querySelector('hermes-dg-footer');\n return new GridFooterTestHelper(footerElement);\n }\n\n getPlaceholder(): GridPlaceholder {\n const placeholderElement = this.gridElement.querySelector<HTMLElement>('hermes-dg-placeholder');\n if (!placeholderElement) {\n throw Error('No placeholder located in grid');\n }\n return new GridPlaceholder(placeholderElement);\n }\n\n // visible in the grid on the current page only. to get the actual model of selected items only the component state can determine array\n getSelectedRows(): GridRowTestHelper[] {\n const rowElements: NodeListOf<HTMLElement> = this.gridElement.querySelectorAll('hermes-dg-row.datagrid-selected');\n return Array.from(rowElements).map((element: HTMLElement) => new GridRowTestHelper(this, element));\n }\n\n // if datagrid supports row selection mode, force all \"visible\" rows in view to be checked\n selectAllRows(): boolean {\n const canPerform = this.component.selection.rowSelectionMode;\n if (canPerform) {\n this.component.selection.toggleAll();\n }\n return canPerform;\n }\n\n // if datagrid supports row selection mode, force all \"visible\" rows in view to be unchecked\n unselectAllRows(): boolean {\n const canPerform = this.component.selection.rowSelectionMode;\n if (canPerform) {\n this.component.selection.clearSelection();\n }\n return canPerform;\n }\n\n clickActionBarButton(label: string): void {\n const btn = this.findActionBarButton(this.getButtonIdentifier(label));\n if (btn) {\n btn.click();\n } else {\n throw Error(\"The action button '\" + label + \"' does not exist\");\n }\n }\n\n isActionBarButtonDisabled(label: string): boolean {\n const btn = this.findActionBarButton(this.getButtonIdentifier(label));\n if (btn) {\n return btn.disabled;\n } else {\n throw Error(\"The action button '\" + label + \"' does not exist\");\n }\n }\n\n getActionBarActionLabels(hasSpan?: boolean): Array<string> {\n const buttonElements: NodeListOf<HTMLButtonElement> = this.gridElement.querySelectorAll(\n 'hermes-dg-action-bar button' + (hasSpan ? ' > span' : '')\n );\n return Array.from(buttonElements).map((element: HTMLElement) => {\n return element && element.innerText ? element.innerText.trim() : '';\n });\n }\n\n isDataLoading(): boolean {\n return this.component.loading;\n }\n\n findActionBarButton(label: string): HTMLButtonElement | undefined {\n const menuItems = this.gridElement.querySelectorAll<HTMLButtonElement>('hermes-dg-action-bar button');\n\n const matched = Array.from(menuItems)\n .map(e => (e.textContent ? e.textContent.trim() : ''))\n .indexOf(label);\n return matched >= 0 ? menuItems[matched] : undefined;\n }\n\n findFooterButton(label: string): HTMLButtonElement | undefined {\n const buttons = this.gridElement.querySelectorAll<HTMLButtonElement>('hermes-dg-footer button');\n\n const matched = Array.from(buttons)\n .map(e => (e.textContent ? e.textContent.trim() : ''))\n .indexOf(label);\n return matched >= 0 ? buttons[matched] : undefined;\n }\n\n findFooterDropdownChildButton(label: string): HTMLButtonElement | undefined {\n const buttons = document.querySelectorAll<HTMLButtonElement>('hermes-dropdown-menu button');\n\n const matched = Array.from(buttons)\n .map(e => (e.textContent ? e.textContent.trim() : ''))\n .indexOf(label);\n return matched >= 0 ? buttons[matched] : undefined;\n }\n\n /**\n * handle string and array-based i18n bundle-key structures\n */\n private getButtonIdentifier(label: string): string {\n if (typeof label === 'string') {\n return label;\n } else {\n throw Error('invalid i18n tuple argument');\n }\n }\n}\n\nexport class FilterInputTestHelper {\n constructor(private inputElement: HTMLInputElement) {}\n\n // presence (or not) of the filter control\n assert(validFlag: boolean): void {\n if (validFlag) {\n expect(this.inputElement).not.toBeNull();\n expect(this.inputElement.disabled).toEqual(false);\n } else {\n expect(this.inputElement).toBeNull();\n }\n }\n\n inputText(text: string, triggerEvent?: string) {\n let eventName = 'input';\n if (triggerEvent) {\n eventName = triggerEvent;\n }\n\n this.inputElement.value = text;\n this.inputElement.dispatchEvent(this.newEvent(eventName));\n // should sync grid??\n }\n\n // note: should leverage the DebugElement eventing system instead of DOM directly\n private newEvent(eventName: string, bubbles = false, cancelable = false) {\n const evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(eventName, bubbles, cancelable, null);\n return evt;\n }\n}\n\nexport class GridFooterTestHelper {\n constructor(private footerElement: HTMLElement | null) {}\n\n getElement(): HTMLElement {\n return this.footerElement as HTMLElement;\n }\n\n getFooterText(): string {\n return this.footerElement && this.footerElement.textContent ? this.footerElement.textContent.trim() : '';\n }\n\n openShowHideColumnsMenu(): void {\n if (!this.footerElement) {\n return;\n }\n const showHideColumnButton: HTMLElement = this.footerElement.querySelector(\n 'button[cdkOverlayOrigin]'\n ) as HTMLElement;\n showHideColumnButton.click();\n }\n\n clickShowHideColumnsItem(name: string): void {\n this.getShowHideColumnsItems();\n const showHideColumnsItem: any = this.findShowHideColumnsItemByName(name);\n if (showHideColumnsItem) {\n showHideColumnsItem.click();\n }\n }\n\n findShowHideColumnsItemByName(name: string): any {\n const checkBoxLabels: any[] = this.getShowHideColumnsItems();\n const labelIndex: number = checkBoxLabels\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\n .indexOf(name);\n\n return labelIndex !== -1 ? checkBoxLabels[labelIndex] : null;\n }\n\n getShowHideColumnsItems(): any[] {\n if (!this.footerElement) {\n return [];\n }\n const checkBoxLabels: any = document.body.querySelectorAll('.column-switch hermes-checkbox-wrapper > label');\n return Array.from(checkBoxLabels);\n }\n\n clickPreviousPaginationButton(): void {\n if (!this.footerElement) {\n return;\n }\n const button = this.footerElement.querySelector<HTMLButtonElement>('hermes-dg-pagination button.pagination-previous');\n if (button && !button.disabled) {\n button.click();\n }\n }\n\n clickNextPaginationButton(): void {\n if (!this.footerElement) {\n return;\n }\n const button = this.footerElement.querySelector<HTMLButtonElement>('hermes-dg-pagination button.pagination-next');\n if (button && !button.disabled) {\n button.click();\n }\n }\n\n clickPaginationButton(label: string): void {\n if (!this.footerElement) {\n return;\n }\n const paginationButtons: NodeListOf<HTMLButtonElement> =\n this.footerElement.querySelectorAll('hermes-dg-pagination li button');\n const paginationButtonIndex: number = Array.from(paginationButtons)\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\n .indexOf(label);\n if (paginationButtonIndex !== -1) {\n paginationButtons[paginationButtonIndex].click();\n }\n }\n}\n\nexport class GridRowTestHelper {\n constructor(\n private grid: GridHelper,\n private rowElement: HTMLElement\n ) {}\n\n // ignores control datagrid cells, which do not display data\n getCell(header: string): GridCellTestHelper {\n const columnIndex = this.grid.getHeaders().indexOf(header);\n return this.getCellAt(columnIndex);\n }\n\n // ignores control datagrid cells, which do not display data\n getCellAt(index: number): GridCellTestHelper {\n return new GridCellTestHelper(this.rowElement.querySelectorAll<HTMLElement>('hermes-dg-cell').item(index));\n }\n\n getCellTextAt(index: number): string {\n const cellText: string | null = this.rowElement\n .querySelectorAll<HTMLElement>('hermes-dg-cell > span')\n .item(index).textContent;\n return cellText ? cellText.trim() : '';\n }\n\n getElement(): HTMLElement {\n return this.rowElement as HTMLElement;\n }\n\n isSelected(): boolean {\n return this.rowElement.classList.contains('datagrid-selected');\n }\n\n // testing utility logic to verify grid cell value (or substring ) match, and alternatively a negative (non-matching) way to exclude\n assertCellValues(\n includeValueList: Array<string | number | Array<string> | undefined>,\n excludeValueList?: Array<string | number | Array<string> | undefined>\n ): void {\n // these cells are present for equality matching\n if (Array.isArray(includeValueList)) {\n includeValueList.forEach((cellValue, index) => {\n const gridCell = this.getCellAt(index);\n if (cellValue !== undefined) {\n if (Array.isArray(cellValue)) {\n // substring containment\n expect(\n (cellValue as Array<any>).reduce(\n (matched, phrase) => matched && gridCell.getText().includes(phrase),\n true\n )\n ).toBe(true);\n } else {\n // scalar value\n expect(gridCell.getText()).toEqual(String(cellValue));\n }\n } else {\n // undefined means the cell must not be present\n if (Array.isArray(cellValue)) {\n // substring containment (negated)\n expect(\n (cellValue as Array<any>).reduce(\n (matched, phrase) => matched && gridCell.getText().includes(phrase),\n true\n )\n ).toBe(false);\n } else {\n expect(gridCell.getElement()).toBeNull(`There is no cell at position index ${index}.`);\n }\n }\n });\n }\n\n // these cells do not match the actual value in the data cell\n if (Array.isArray(excludeValueList)) {\n excludeValueList.forEach((cellValue, index) => {\n const gridCell = this.getCellAt(index);\n if (cellValue !== undefined) {\n expect(gridCell.getText()).not.toEqual(String(cellValue));\n } else {\n // undefined means the cell must not be present\n expect(gridCell.getElement()).not.toBeNull(`There is a no cell at position index ${index}.`);\n }\n });\n }\n }\n\n // find the row selector for single/multiple actions. Action performed programmatically on label ( despite it being empty )\n select(): void {\n const selectionElement = this.rowElement.querySelector<HTMLLabelElement>(\n '.datagrid-cell.datagrid-select .hermes-control-label'\n );\n if (!selectionElement) {\n throw Error('The row is not selectable.');\n }\n selectionElement.click();\n }\n\n /**\n * In case the row selection in the Clarity grid is enabled for multiple selection,\n * ex. [hermesDgRowSelection]=\"true\" clicking on the checkbox's input causes both the\n * events for the row selection and the checkbox to be triggered causing the select\n * and deselect of the element immediately one after the other\n */\n selectMultiWithRowSelectionEnabled(): void {\n const selectionElement: HTMLElement | null = this.rowElement.querySelector(\n '.datagrid-select.datagrid-cell > .hermes-checkbox-wrapper'\n );\n if (!selectionElement) {\n throw Error('The row is not selectable.');\n }\n (selectionElement as HTMLElement).click();\n }\n\n // clicking the row achieves what? focus\n click(): void {\n const selectionElement: HTMLElement | null = this.rowElement.querySelector('div.datagrid-row-clickable');\n\n if (!selectionElement) {\n throw Error('The row is not clickable.');\n }\n (selectionElement as HTMLElement).click();\n }\n\n isRowClickable(): boolean {\n const selectionElement: HTMLElement | null = this.rowElement.querySelector('div.datagrid-row-clickable');\n return !!selectionElement;\n }\n\n // check whether the row element has a nested input\n isSelectionAvailable(): boolean {\n const selectionInput: HTMLElement | null = this.rowElement.querySelector('input');\n return selectionInput ? true : false;\n }\n\n // check whether the row element has a nested disabled input\n isSelectionDisabled(): boolean {\n const disabledSelectionInput: HTMLElement | null = this.rowElement.querySelector('input[aria-disabled]');\n return disabledSelectionInput ? true : false;\n }\n\n expand(): void {\n const expandElement: HTMLElement | null = this.rowElement.querySelector(\n '.datagrid-expandable-caret > button.datagrid-expandable-caret-button'\n );\n if (!expandElement) {\n throw Error('The row is not expandable.');\n }\n (expandElement as HTMLElement).click();\n }\n\n isExpanded(): boolean {\n return !!this.rowElement.querySelector('hermes-dg-row-detail');\n }\n\n isRowExpandable(): boolean {\n return (\n this.rowElement.querySelectorAll('.datagrid-expandable-caret > button.datagrid-expandable-caret-button').length >\n 0\n );\n }\n\n getSingleRowActionMenuButton(): HTMLElement {\n return this.rowElement.querySelector('.datagrid-action-toggle > hermes-icon') as HTMLElement;\n }\n\n openSingleRowActionMenu(): boolean {\n const menuItems = this.rowElement.querySelectorAll('hermes-dg-action-overflow button.datagrid-action-toggle');\n if (menuItems && menuItems.length > 0) {\n (menuItems.item(0) as HTMLButtonElement).click();\n return true;\n }\n\n return false;\n }\n\n // retrieve action menu item by name\n getSingleRowActionMenuItem(menuItemName: string): HTMLButtonElement | undefined {\n const menuItems: NodeListOf<HTMLButtonElement> = document.querySelectorAll('div.datagrid-action-overflow button');\n const menuItemIndex: number = Array.from(menuItems)\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\n .indexOf(menuItemName);\n if (menuItemIndex !== -1) {\n return menuItems[menuItemIndex];\n }\n\n return undefined;\n }\n\n clickOnSingleRowActionMenuItem(menuItemName: string): void {\n const menuItem = this.getSingleRowActionMenuItem(menuItemName);\n if (menuItem) {\n menuItem.click();\n }\n }\n\n isRowSingleSelectable(): boolean {\n return (\n !!this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-radio-wrapper') &&\n !!this.grid\n .getGridElement()\n .querySelector(\n '.datagrid-table .datagrid-header > .datagrid-row .datagrid-select.datagrid-column > .datagrid-column-separator'\n )\n );\n }\n}\n\nexport class GridCellTestHelper {\n constructor(private cellElement: HTMLElement) {}\n\n getElement(): HTMLElement {\n return this.cellElement;\n }\n\n getText(): string {\n const cellElement = this.cellElement as HTMLElement;\n return cellElement.innerText ? cellElement.innerText.trim() : '';\n }\n\n getChildElementText(selector: string): string {\n const childElement: HTMLElement | null = this.cellElement.querySelector(selector) as HTMLElement;\n if (childElement) {\n return childElement.innerText ? childElement.innerText.trim() : '';\n }\n return '';\n }\n\n // datagrid wrapper uses a custom cell objects to project client defined cell formatter\n // optionally query deeper into the custom cell component as defined by column registry\n getCellWrapperElement(selector?: string): HTMLElement | null {\n const matchedElement = this.cellElement.querySelector<HTMLElement>('appfx-dg-cell-container');\n if (!matchedElement) {\n return null;\n }\n\n return selector ? matchedElement.querySelector(selector) : matchedElement;\n }\n\n // common icons follow the accepted practice of being wrapped in spanned element annotated with \"object\"\n getObjectIconElement(): HTMLElement | undefined {\n return this.getElement().querySelector<HTMLElement>('span.object > i') || undefined;\n }\n\n // finds the first simple anchor link and fires a click event if found\n clickChildLink(): void {\n const selectionElement = this.cellElement.querySelector<HTMLAnchorElement>('A');\n\n if (!selectionElement) {\n throw Error('The cell is not clickable.');\n } else {\n selectionElement.click();\n }\n }\n\n /* future work: add reference to custom object */\n}\n\nexport class GridPlaceholder {\n constructor(private placeholderComponentElement: HTMLElement) {}\n\n getElement(): HTMLElement {\n return this.placeholderComponentElement as HTMLElement;\n }\n\n getText(): string | undefined {\n return this.placeholderComponentElement ? this.placeholderComponentElement.textContent.trim() : undefined;\n }\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'isRowSelectable', standalone: false })\r\nexport class MockIsRowSelectablePipe implements PipeTransform {\r\n transform(rowItem: any, isLocked?: (rowItem: any) => boolean, disabled?: boolean): boolean {\r\n return !isLocked?.(rowItem) || !!disabled;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxDatagridComponent, MockStandaloneDatagridComponent } from './datagrid.component.mock';\r\nexport { MockDatagridActionBarComponent } from './datagrid-action-bar.component.mock';\r\nexport { MockDatagridCellContainerComponent } from './datagrid-cell-container.component.mock';\r\nexport { MockDatagridColumnToggleComponent } from './datagrid-column-toggle.component.mock';\r\nexport { MockDatagridPersistSettingsDirective } from './datagrid-persist-settings.directive.mock';\r\nexport { MockDatagridPreserveSelectionDirective } from './datagrid-preserve-selection.directive.mock';\r\nexport {\r\n FilterInputTestHelper,\r\n GridCellTestHelper,\r\n GridFooterTestHelper,\r\n GridHelper,\r\n GridPlaceholder,\r\n GridRowTestHelper,\r\n} from './grid-helper';\r\nexport { MockIsRowSelectablePipe } from './is-row-selectable.pipe.mock';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FilterablePropertyDefinition, FilterMode, PropertyFilter } from '@hermes-ui/angular/addons/datagrid-filters';\n\n@Component({\n selector: 'appfx-datagrid-filters',\n standalone: false,\n template: '',\n})\nexport class MockDatagridFiltersComponent {\n @Input() filterMode = FilterMode.Quick;\n\n @Input() filterableProperties: FilterablePropertyDefinition[];\n\n @Output() searchTermChange = new EventEmitter<string>();\n\n @Output() propertyFiltersChange = new EventEmitter<PropertyFilter[]>();\n}\n\n@Component({\n selector: 'appfx-datagrid-filters',\n standalone: true,\n template: '',\n})\nexport class MockDatagridFiltersStandaloneComponent extends MockDatagridFiltersComponent {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockDatagridFiltersComponent,\r\n MockDatagridFiltersStandaloneComponent,\r\n} from './datagrid-filters.component.mock';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { DefaultButton } from '@hermes-ui/angular/addons/dialog';\nimport { CloseHandler, ModelChange, Step, TabLayout, WorkflowModel } from '@hermes-ui/angular/addons/var';\n\n@Component({\n selector: 'appfx-dialog',\n standalone: false,\n template: '',\n})\nexport class MockAppfxDialogComponent {\n @Input() title: string;\n @Input() subTitle: string;\n @Input() size: string;\n @Input() height: string;\n @Input() defaultButton: DefaultButton;\n @Input() cancelButtonLabel: string;\n @Input() okButtonLabel: string;\n @Input() tabLayout: TabLayout;\n @Input() disableTabsContent: boolean;\n @Input() loading: boolean;\n @Input() steps: Step[];\n @Input() model: WorkflowModel;\n @Input() closeHandler: CloseHandler;\n @Input() showTabLinks: boolean;\n @Input() opened: boolean;\n\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\n @Output() openedChange = new EventEmitter<boolean>();\n}\n\n@Component({\n selector: 'appfx-dialog',\n standalone: true,\n template: '',\n})\nexport class MockAppfxDialogStandaloneComponent extends MockAppfxDialogComponent {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-dialog-header',\r\n standalone: false,\r\n template: `<ng-content></ng-content>`,\r\n})\r\nexport class MockAppfxDialogHeaderComponent {}\r\n\r\n@Component({\r\n selector: 'appfx-dialog-header',\r\n standalone: true,\r\n template: `<ng-content></ng-content>`,\r\n})\r\nexport class MockAppfxDialogHeaderStandaloneComponent extends MockAppfxDialogHeaderComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxDialogComponent, MockAppfxDialogStandaloneComponent } from './multi-page-dialog.component.mock';\r\nexport {\r\n MockAppfxDialogHeaderComponent,\r\n MockAppfxDialogHeaderStandaloneComponent,\r\n} from './multi-page-dialog-header.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-menu-action',\r\n standalone: false,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuActionComponent {\r\n @Input() actionId: string;\r\n\r\n @Input() iconClass?: string;\r\n\r\n @Input() text?: string;\r\n\r\n @Input() shortcut?: string;\r\n\r\n @Input() enabled?: boolean = true;\r\n\r\n @Output() handle: EventEmitter<void> = new EventEmitter<void>(true);\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-menu-action',\r\n standalone: true,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuActionStandaloneComponent extends MockAppfxMenuActionComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-menu',\r\n standalone: false,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuComponent {\r\n @Input() declare text: string;\r\n\r\n @Output() opened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output() closed: EventEmitter<void> = new EventEmitter<void>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-menu',\r\n standalone: true,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuStandaloneComponent extends MockAppfxMenuComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxMenuActionComponent, MockAppfxMenuActionStandaloneComponent } from './menu-action.component.mock';\r\nexport { MockAppfxMenuComponent, MockAppfxMenuStandaloneComponent } from './menu.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-property-view',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockPropertyViewComponent {\r\n @Input() data: any;\r\n @Input() config: any;\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-property-view',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockPropertyViewStandaloneComponent extends MockPropertyViewComponent {}\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { PropertyViewStrings } from '@hermes-ui/angular/addons/property-view';\n\n/**\n * Mock user-visible strings used in the 'appfx-property-view' library.\n */\n@Injectable()\nexport class MockPropertyViewStrings extends PropertyViewStrings {\n override toggle = 'Toggle {0} section';\n override actions = 'Actions';\n override categoryListItemsAreaLabel = '{0} items grouped in {1} sections.';\n override categoryListItemAreaLabel = '{0} items grouped in 1 section.';\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n PropertyViewMessageModel,\n PropertyViewModelType,\n PropertyViewPropertyModel,\n PropertyViewPropertyValueModel,\n} from '@hermes-ui/angular/addons/property-view';\n\nexport function verifyPropertyViewProperty(key: string, value: string[], propertyModel: PropertyViewPropertyModel) {\n expect(propertyModel.type).toEqual(PropertyViewModelType.Property);\n expect(propertyModel.key.text).toEqual(key);\n for (let i = 0; i < value.length; i++) {\n expect((<PropertyViewPropertyValueModel>propertyModel.content[i]).text).toEqual(value[i]);\n }\n}\n\nexport function verifyPropertyViewMessage(textValue: string, icon: string, messageModel: PropertyViewMessageModel) {\n expect(messageModel.type).toEqual(PropertyViewModelType.Message);\n expect(messageModel.text).toEqual(textValue);\n expect(messageModel.icon).toEqual(icon);\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockPropertyViewComponent, MockPropertyViewStandaloneComponent } from './property-view-component.mock';\r\nexport { MockPropertyViewStrings } from './property-view-strings.mock';\r\nexport { verifyPropertyViewMessage, verifyPropertyViewProperty } from './property-view-test-helper';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ModelChange, Step, WorkflowModel } from '@hermes-ui/angular/addons/var';\n\n@Component({\n selector: 'appfx-stepper',\n standalone: false,\n template: '<ng-content></ng-content>',\n})\nexport class MockStepperComponent {\n @Input() steps: Step[];\n @Input() wizardModel: WorkflowModel;\n @Input() loading: boolean;\n\n @Output() onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\n @Output() onFinish: EventEmitter<void> = new EventEmitter<void>();\n}\n\n@Component({\n selector: 'appfx-stepper',\n standalone: true,\n template: '<ng-content></ng-content>',\n})\nexport class MockStepperStandaloneComponent extends MockStepperComponent {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockStepperComponent, MockStepperStandaloneComponent } from './stepper.component.mock';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DebugElement, EmbeddedViewRef, Predicate } from '@angular/core';\nimport { By } from '@angular/platform-browser';\nimport { HermesTab, HermesTabContent, HermesTabs } from '@hermes-ui/angular/layout/tabs';\n\nexport class TabsHelper {\n private tabs: DebugElement;\n private component: HermesTabs;\n\n constructor(contextDebugElement: DebugElement) {\n const tabsElementMatches: Array<DebugElement> = contextDebugElement.queryAll(By.directive(HermesTabs));\n\n if (!tabsElementMatches.length) {\n throw Error('No tabs found under passed context element');\n } else if (tabsElementMatches.length > 1) {\n throw Error('Unable to isolate targeted instance of tabs widget');\n } else {\n this.tabs = tabsElementMatches[0];\n this.component = this.tabs.injector.get<HermesTabs>(HermesTabs);\n }\n }\n\n /**\n * Discover clarity tab links of (zero or more) items within the tabs.\n */\n getLinkList(): Array<DebugElement> {\n return this.tabs.queryAll(By.css(`[role=\"tablist\"] > [role=\"presentation\"] > [hermesTabLink]`));\n }\n\n /**\n * A DOM pointer to a tab link, as afforded by supplied index into collection.\n */\n findLink(linkIndex: number): DebugElement | undefined {\n return this.getLinkList()[linkIndex];\n }\n\n /**\n * Retrieves the active Clarity Tab instance.\n */\n getActiveTab(): HermesTab {\n return this.component.tabsService.activeTab;\n }\n\n /**\n * Determines the active shown tab using relative sequences that map directly to DOM source order.\n */\n getActiveTabIndex(): number {\n return this.component.tabLinkDirectives.findIndex(\n tabLink => tabLink.tabLinkId === this.component.tabsService.activeTab.tabLink.tabLinkId\n );\n }\n\n /**\n * Extract located projected content as provided for the active tab.\n */\n getActiveTabContentElement(): HTMLElement | undefined {\n const evr = this.getActiveTab().tabContent['viewRef'] as EmbeddedViewRef<HermesTabContent>;\n return evr ? ((evr.rootNodes[0] as HTMLElement).firstElementChild as HTMLElement) || undefined : undefined;\n }\n\n /**\n * Clicks a tab link given the tab index.\n */\n clickLink(linkIndex: number): void {\n const tabLink = this.component.tabLinkDirectives[linkIndex];\n try {\n tabLink.activate();\n } catch {\n throw Error('No tab link found at index ' + linkIndex);\n }\n }\n\n /**\n * Searches for tab link text, as applied to a tab button.\n */\n findLinkText(linkIndex: number): string | undefined {\n const tabLinkElement = this.findLink(linkIndex);\n return tabLinkElement ? tabLinkElement.nativeElement.textContent.trim() : undefined;\n }\n\n /**\n * Debug element for the icon found inside the tab link.\n */\n findLinkIcon(linkIndex: number): DebugElement | undefined {\n const tabLinkElement = this.findLink(linkIndex);\n return (tabLinkElement && tabLinkElement.query(By.css('hermes-icon'))) || undefined;\n }\n\n /**\n * Optionally find the custom component or desired HTML element within the active panel.\n */\n findContentView(childTabContentQuery?: Predicate<DebugElement>): DebugElement | undefined {\n const panel = this.tabs.query(By.css(`section.active`));\n return panel && childTabContentQuery ? panel.query(childTabContentQuery) || undefined : panel || undefined;\n }\n\n areTabsVisible(): boolean {\n const tabsPanel = this.tabs.query(By.css(`.nav`));\n return getComputedStyle(tabsPanel.nativeElement)['display'] !== 'none';\n }\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { TabsHelper } from './tabs-helper';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { OnStepActivate, OnStepValidate, StepModel, StepValidationState } from '@hermes-ui/angular/addons/var';\nimport { Observable, of } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n selector: 'appfx-mock-page-page',\n standalone: false,\n template: '<div>{{ model.mockPropertyValue }}</div>',\n})\nexport class MockStepComponent implements OnStepValidate, OnStepActivate {\n model: MockStepModel;\n\n activate() {\n this.model.isActivated = true;\n }\n\n validate(): Observable<boolean> {\n return of(true).pipe(\n tap(() => {\n this.model.isValidated = true;\n })\n );\n }\n}\n\n@Component({\n selector: 'appfx-invalid-mock-page-page',\n standalone: false,\n template: '<div></div>',\n})\nexport class InvalidMockComponent extends MockStepComponent {\n override validate(): Observable<boolean> {\n return of(false).pipe(\n tap(() => {\n this.model.isValidated = true;\n })\n );\n }\n}\n\nexport class MockStepModel implements StepModel {\n isActivated = false;\n isValidated = false;\n readyToComplete: boolean;\n\n validationState: StepValidationState = new StepValidationState();\n\n constructor(public mockPropertyValue: string) {}\n}\n\n/** Simple mock of {@link WorkflowConfigurationService} used by workflow-dependent tests. */\nexport class MockWorkflowConfigurationService {\n private debugValue = false;\n\n get debug(): boolean {\n return this.debugValue;\n }\n\n set debug(newValue: boolean) {\n this.debugValue = newValue;\n }\n}\n\n@NgModule({\n imports: [NoopAnimationsModule],\n declarations: [InvalidMockComponent, MockStepComponent],\n})\nexport class MockWorkflowTestModule {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n InvalidMockComponent,\r\n MockStepComponent,\r\n MockStepModel,\r\n MockWorkflowConfigurationService,\r\n MockWorkflowTestModule,\r\n} from './workflow.mock';\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ModelChange, Step, WorkflowModel } from '@hermes-ui/angular/addons/var';\nimport { Reason } from '@hermes-ui/angular/addons/wizard';\n\n@Component({\n selector: 'appfx-wizard',\n standalone: false,\n template: '',\n})\nexport class MockAppfxWizardComponent {\n @Input() title: string;\n @Input() pages: Step[];\n @Input() wizardModel: WorkflowModel;\n @Input() loading: boolean;\n @Input() size: string;\n @Input() opened: boolean;\n\n @Output() openedChange = new EventEmitter<boolean>();\n @Output() onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\n @Output() onFinish: EventEmitter<void> = new EventEmitter<void>();\n @Output() onClose: EventEmitter<Reason> = new EventEmitter<Reason>();\n}\n\n@Component({\n selector: 'appfx-wizard',\n standalone: true,\n template: '',\n})\nexport class MockWizardStandaloneComponent extends MockAppfxWizardComponent {}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { DebugElement } from '@angular/core';\r\nimport { By } from '@angular/platform-browser';\r\n\r\nexport class WizardHelper {\r\n readonly #navPanelSelector = '.hermes-wizard-stepnav-wrapper';\r\n readonly #navitemSelector = 'hermes-wizard-stepnav .hermes-wizard-stepnav-item';\r\n readonly #showStepNavBinSelector = '.btn-show-stepnav';\r\n readonly #closeStepNavBinSelector = '.btn-close-stepnav';\r\n\r\n constructor(private wizard: DebugElement) {}\r\n\r\n get pageNavTitles(): Array<string | undefined> {\r\n // getlastTextNode is needed because hermes-icon contains a span with text labels for\r\n // the icons which we don't care about.\r\n return this.wizard\r\n .queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link-title'))\r\n .map((v: DebugElement) => this.getLastTextNode(v));\r\n }\r\n\r\n get isVisible(): boolean {\r\n return getComputedStyle(this.wizard.nativeElement)['visibility'] === 'visible';\r\n }\r\n\r\n get activePageNavTitle(): string | undefined {\r\n const activeNavItem: DebugElement = this.wizard.query(\r\n By.css(this.#navitemSelector + '.active .hermes-wizard-stepnav-link-title')\r\n );\r\n if (!activeNavItem) {\r\n return '';\r\n }\r\n\r\n return this.getLastTextNode(activeNavItem);\r\n }\r\n\r\n get activePageTitle(): string {\r\n return this.wizard.query(By.css('.hermes-wizard-page-title')).nativeElement.innerText.trim();\r\n }\r\n\r\n get size(): string | undefined {\r\n return (Array.from(this.wizard.nativeElement.classList) as string[])\r\n .map((value: string) => {\r\n const matches = value.match(/^wizard-(sm|md|lg|xl)$/);\r\n return (matches || [])[1];\r\n })\r\n .filter(v => !!v)\r\n .pop();\r\n }\r\n\r\n get buttons(): DebugElement[] {\r\n return this.wizard.queryAll(By.css('hermes-wizard-button button'));\r\n }\r\n\r\n get visibleButtons(): DebugElement[] {\r\n return this.buttons.filter((value: DebugElement) => {\r\n return value.nativeElement.parentElement.getAttribute('aria-hidden') === 'false';\r\n });\r\n }\r\n\r\n get cancelButton(): DebugElement {\r\n return this.buttons[0];\r\n }\r\n\r\n get cancelButtonText(): string {\r\n return this.cancelButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get backButton(): DebugElement {\r\n return this.buttons[1];\r\n }\r\n\r\n get backButtonText(): string {\r\n return this.backButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get nextButton(): DebugElement {\r\n return this.buttons[2];\r\n }\r\n\r\n get nextButtonText(): string {\r\n return this.nextButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get finishButton(): DebugElement {\r\n return this.buttons[3];\r\n }\r\n\r\n get finishButtonText(): string {\r\n return this.finishButton.nativeElement.innerText.trim();\r\n }\r\n\r\n private get stepNavPanel(): DebugElement {\r\n return this.wizard.query(By.css(this.#navPanelSelector));\r\n }\r\n\r\n private get stepNavs(): Array<DebugElement> {\r\n return this.wizard.queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link'));\r\n }\r\n\r\n private get showStepNavBtn(): DebugElement {\r\n return this.wizard.query(By.css(this.#showStepNavBinSelector));\r\n }\r\n\r\n private get closeStepNavBtn(): DebugElement {\r\n return this.wizard.query(By.css(this.#closeStepNavBinSelector));\r\n }\r\n\r\n navigateToStep(stepIndex: number) {\r\n this.click(this.stepNavs[stepIndex]);\r\n }\r\n\r\n isNavVisible(): boolean {\r\n return getComputedStyle(this.stepNavPanel.nativeElement)['display'] !== 'none';\r\n }\r\n\r\n isStepNavEnabled(stepIndex: number): boolean {\r\n return this.stepNavs[stepIndex].attributes['disabled'] === undefined;\r\n }\r\n\r\n isShowNavIconVisible(): boolean {\r\n return getComputedStyle(this.showStepNavBtn.nativeElement)['display'] !== 'none';\r\n }\r\n\r\n showNavigator(): void {\r\n this.click(this.showStepNavBtn);\r\n }\r\n\r\n closeNavigator(): void {\r\n this.click(this.closeStepNavBtn);\r\n }\r\n\r\n cancel(): void {\r\n this.click(this.cancelButton);\r\n }\r\n\r\n back(): void {\r\n this.click(this.backButton);\r\n }\r\n\r\n next(): void {\r\n this.click(this.nextButton);\r\n }\r\n\r\n finish(): void {\r\n this.click(this.finishButton);\r\n }\r\n\r\n private click(el: DebugElement) {\r\n el.triggerEventHandler('click', null);\r\n }\r\n\r\n private getLastTextNode(debugElement: DebugElement): string {\r\n // Find the last child node of type text (3)\r\n const childNodes: NodeList = debugElement.nativeElement.childNodes;\r\n let result = '';\r\n childNodes.forEach((node: Node) => {\r\n if (node.nodeType === 3) {\r\n const text = node.textContent?.trim() || '';\r\n // comments included by Angular are seen as text nodes, but terxtContent returns\r\n // an empty string. We should ignore those.\r\n if (text !== '') {\r\n result = text;\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxWizardComponent, MockWizardStandaloneComponent } from './wizard.component.mock';\r\nexport { WizardHelper } from './wizard-helper';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport * from './a11y';\r\nexport * from './card-container';\r\nexport * from './datagrid';\r\nexport * from './datagrid-filters';\r\nexport * from './dialog';\r\nexport * from './menu';\r\nexport * from './property-view';\r\nexport * from './stepper';\r\nexport * from './tabs';\r\nexport * from './var';\r\nexport * from './wizard';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hermes-ui-angular-addons-testing.mjs","sources":["../../../addons/testing/a11y/forms/required-field-legend.component.mock.ts","../../../addons/testing/a11y/zoom/zoom-level.service.mock.ts","../../../addons/testing/a11y/index.ts","../../../addons/testing/card-container/appfx-card-container.component.mock.ts","../../../addons/testing/card-container/appfx-card-container.mock.ts","../../../addons/testing/card-container/index.ts","../../../addons/testing/datagrid/datagrid.component.mock.ts","../../../addons/testing/datagrid/datagrid-action-bar.component.mock.ts","../../../addons/testing/datagrid/datagrid-cell-container.component.mock.ts","../../../addons/testing/datagrid/datagrid-column-toggle.component.mock.ts","../../../addons/testing/datagrid/datagrid-persist-settings.directive.mock.ts","../../../addons/testing/datagrid/datagrid-preserve-selection.directive.mock.ts","../../../addons/testing/datagrid/grid-helper.ts","../../../addons/testing/datagrid/is-row-selectable.pipe.mock.ts","../../../addons/testing/datagrid/index.ts","../../../addons/testing/datagrid-filters/datagrid-filters.component.mock.ts","../../../addons/testing/datagrid-filters/index.ts","../../../addons/testing/dialog/multi-page-dialog.component.mock.ts","../../../addons/testing/dialog/multi-page-dialog-header.component.mock.ts","../../../addons/testing/dialog/index.ts","../../../addons/testing/menu/menu-action.component.mock.ts","../../../addons/testing/menu/menu.component.mock.ts","../../../addons/testing/menu/index.ts","../../../addons/testing/property-view/property-view-component.mock.ts","../../../addons/testing/property-view/property-view-strings.mock.ts","../../../addons/testing/property-view/property-view-test-helper.ts","../../../addons/testing/property-view/index.ts","../../../addons/testing/stepper/stepper.component.mock.ts","../../../addons/testing/stepper/index.ts","../../../addons/testing/tabs/tabs-helper.ts","../../../addons/testing/tabs/index.ts","../../../addons/testing/var/workflow.mock.ts","../../../addons/testing/var/index.ts","../../../addons/testing/wizard/wizard.component.mock.ts","../../../addons/testing/wizard/wizard-helper.ts","../../../addons/testing/wizard/index.ts","../../../addons/testing/index.ts","../../../addons/testing/hermes-ui-angular-addons-testing.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-required-field-legend',\r\n standalone: false,\r\n template: ``,\r\n})\r\nexport class MockRequiredFieldLegendComponent {}\r\n\r\n@Component({\r\n selector: 'appfx-required-field-legend',\r\n standalone: true,\r\n template: ``,\r\n})\r\nexport class MockRequiredFieldLegendStandaloneComponent extends MockRequiredFieldLegendComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ZoomLevel } from '@hermes-ui/angular/addons/a11y';\r\nimport { ReplaySubject } from 'rxjs';\r\n\r\nexport class ZoomLevelServiceMock {\r\n resizeSubject = new ReplaySubject<ZoomLevel>(1);\r\n onChange = this.resizeSubject.asObservable();\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockRequiredFieldLegendComponent,\r\n MockRequiredFieldLegendStandaloneComponent,\r\n} from './forms/required-field-legend.component.mock';\r\nexport { ZoomLevelServiceMock } from './zoom/zoom-level.service.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-card-container',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockAppfxCardContainerComponent {\r\n @Input() containerId: string;\r\n\r\n @Input() cards: unknown[] = [];\r\n\r\n @Input() persistenceStore?: unknown;\r\n\r\n @Input() showCardContainerSettings: boolean = true;\r\n\r\n @Input() dragDropEnabled: boolean = true;\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-card-container',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockAppfxCardContainerStandaloneComponent extends MockAppfxCardContainerComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, ElementRef, EmbeddedViewRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { AppfxCard } from '@hermes-ui/angular/addons/card-container';\r\n\r\n// mock for container service\r\nexport class MockContainerService {\r\n getCardOrder() {}\r\n\r\n moveCard() {}\r\n\r\n getVisibleCardsCount() {}\r\n}\r\n\r\n// mock for A11y service\r\nexport class MockA11yService {\r\n isSelected() {}\r\n\r\n isDraggableOver() {}\r\n\r\n selectCard() {}\r\n\r\n moveDropPosition() {}\r\n}\r\n\r\n// mock for DragDrop service\r\nexport class MockDragDropService {\r\n onDragStart() {}\r\n\r\n onDragDrop() {}\r\n}\r\n\r\n// mock for Layout service\r\nexport class MockLayoutService {\r\n updateCardSize() {}\r\n}\r\n\r\n// Renderer2 Mock\r\nexport class MockRenderer2 {\r\n setStyle(el: any, name: string, style: string): void {\r\n el[name] = style;\r\n }\r\n\r\n removeStyle(el: any, name: string): void {\r\n el[name] = null;\r\n }\r\n}\r\n\r\n// Mock Card Container for ViewContainerRef\r\n@Component({\r\n standalone: false,\r\n template: `\r\n <div class=\"scrollable\">\r\n <div>\r\n <ng-template #cardContainer></ng-template>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n '.scrollable { overflow: auto; position: absolute; left: 0; right: 0; top: 0; bottom: 0; max-height: 20px; }',\r\n ],\r\n})\r\nexport class MockCardContainerComponent {\r\n @ViewChild('cardContainer', { read: ViewContainerRef, static: true }) cardContainer: ViewContainerRef;\r\n}\r\n\r\n// Sample Card to test scenarios\r\n@Component({\r\n standalone: false,\r\n template: `\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">Sample Card</div>\r\n </div>\r\n <div class=\"card-block\"></div>\r\n <div class=\"card-footer\"></div>\r\n </div>\r\n `,\r\n})\r\nexport class SampleCardComponent {\r\n eleRef: ElementRef;\r\n\r\n constructor(el: ElementRef) {\r\n this.eleRef = el;\r\n }\r\n}\r\n\r\n// Sample Card to without footer test scenarios\r\n@Component({\r\n standalone: false,\r\n template: `\r\n <div class=\"card\">\r\n <div class=\"card-header\">\r\n <div class=\"card-title\">Sample Card</div>\r\n </div>\r\n <div class=\"card-block\"></div>\r\n </div>\r\n `,\r\n})\r\nexport class SampleCardWithoutFooterComponent {\r\n eleRef: ElementRef;\r\n\r\n constructor(el: ElementRef) {\r\n this.eleRef = el;\r\n }\r\n}\r\n\r\n// Sample Card to without header test scenarios\r\n@Component({\r\n standalone: false,\r\n template: `\r\n <div class=\"card\">\r\n <div class=\"card-block\">\r\n <div class=\"card-title\">Sample Card</div>\r\n </div>\r\n <div class=\"card-footer\"></div>\r\n </div>\r\n `,\r\n})\r\nexport class SampleCardWithoutHeaderComponent {\r\n eleRef: ElementRef;\r\n\r\n constructor(el: ElementRef) {\r\n this.eleRef = el;\r\n }\r\n}\r\n\r\n// mock element ref\r\nexport class MockElementRef extends ElementRef {\r\n override nativeElement = {\r\n querySelector: () => {},\r\n };\r\n}\r\n\r\n// sort function to display cards by sorted titles\r\nexport const sortCardsFn = (a: AppfxCard, b: AppfxCard) => {\r\n if (a.title && b.title) {\r\n return a.title.localeCompare(b.title);\r\n }\r\n return 0;\r\n};\r\n\r\n// sample cards for unit tests\r\nexport const sampleCards = [\r\n {\r\n id: 'sample-card-1',\r\n title: 'Sample Card 1',\r\n componentClass: SampleCardComponent,\r\n hidden: false,\r\n order: 0,\r\n view: undefined as unknown as EmbeddedViewRef<void>,\r\n },\r\n {\r\n id: 'sample-card-2',\r\n title: 'Sample Card 2',\r\n componentClass: SampleCardComponent,\r\n hidden: false,\r\n canHide: false,\r\n order: 1,\r\n view: undefined as unknown as EmbeddedViewRef<void>,\r\n },\r\n {\r\n id: 'sample-card-3',\r\n title: 'Sample Card 3',\r\n componentClass: SampleCardComponent,\r\n hidden: false,\r\n canHide: false,\r\n order: 5,\r\n view: undefined as unknown as EmbeddedViewRef<void>,\r\n },\r\n];\r\n\r\n// sample card settings\r\nexport const sampleCardsSettings = [\r\n {\r\n id: 'sample-card-1',\r\n hidden: false,\r\n order: 0,\r\n },\r\n {\r\n id: 'sample-card-2',\r\n hidden: true,\r\n order: 2,\r\n },\r\n {\r\n id: 'sample-card-3',\r\n hidden: false,\r\n order: 5,\r\n },\r\n];\r\n\r\n// card to order mapping\r\nexport const cardIdToOrder = {\r\n cardWithDefaultOrder: Infinity,\r\n [sampleCards[0].id]: 0,\r\n [sampleCards[1].id]: 1,\r\n [sampleCards[2].id]: 2,\r\n};\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockAppfxCardContainerComponent,\r\n MockAppfxCardContainerStandaloneComponent,\r\n} from './appfx-card-container.component.mock';\r\nexport {\r\n cardIdToOrder,\r\n MockA11yService,\r\n MockCardContainerComponent,\r\n MockContainerService,\r\n MockDragDropService,\r\n MockElementRef,\r\n MockLayoutService,\r\n MockRenderer2,\r\n sampleCards,\r\n sampleCardsSettings,\r\n SampleCardComponent,\r\n SampleCardWithoutFooterComponent,\r\n SampleCardWithoutHeaderComponent,\r\n sortCardsFn,\r\n} from './appfx-card-container.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output, TemplateRef } from '@angular/core';\r\nimport { HermesDatagridVirtualScrollRangeInterface } from '@hermes-ui/angular/data/datagrid';\r\n\r\n@Component({\r\n selector: 'appfx-datagrid',\r\n standalone: false,\r\n template: ``,\r\n})\r\nexport class MockAppfxDatagridComponent {\r\n @Input() gridItems: any;\r\n @Input() columns: any;\r\n @Input() layoutModel: any;\r\n @Input() footerModel: any;\r\n @Input() pageSize: number;\r\n @Input() pageSizeOptions: number[];\r\n @Input() totalItems: number;\r\n @Input() selectionType: any;\r\n @Input() selectedItems: any;\r\n @Input() datagridLabels: any;\r\n @Input() preSelectFirstItem: boolean;\r\n @Input() rowSelectionMode: boolean;\r\n @Input() actionBarActions: any[];\r\n @Input() showFooter: boolean;\r\n @Input() singleRowActions: any[];\r\n @Input() noItemsFoundPlaceholder: string;\r\n @Input() loading: boolean;\r\n @Input() serverDrivenDatagrid: boolean;\r\n @Input() filterMode: any;\r\n @Input() listItemsCount: number;\r\n @Input() trackByGridItemProperty: string;\r\n @Input() isRowLocked: (rowItem: any) => boolean;\r\n @Input() detailHeader: any;\r\n @Input() detailBody: any;\r\n @Input() rowDetailContent: TemplateRef<any>;\r\n @Input() rowsExpandedByDefault: boolean;\r\n @Input() vscPersistDatagridSettings: boolean;\r\n @Input() detailState: any = null;\r\n @Input() trackByFunction: any;\r\n @Input() virtualScrolling: boolean;\r\n @Input() dataRange: HermesDatagridVirtualScrollRangeInterface<any>;\r\n\r\n @Output() selectedItemsChange = new EventEmitter<any>();\r\n @Output() gridItemsChange = new EventEmitter<any[]>();\r\n @Output() selectionChange = new EventEmitter<any[]>();\r\n @Output() searchTermChange = new EventEmitter<string>();\r\n @Output() refreshGridData = new EventEmitter<any>();\r\n @Output() refreshVirtualGridData = new EventEmitter<any>();\r\n @Output() actionClick = new EventEmitter<any>();\r\n @Output() rowActionMenuOpenChange = new EventEmitter<any>();\r\n @Output() exportDataEvent = new EventEmitter<any>();\r\n @Output() detailStateChange = new EventEmitter<any>(true);\r\n\r\n hermesDatagridPagination: any;\r\n\r\n onModelChange(): void {}\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-datagrid',\r\n standalone: true,\r\n template: ``,\r\n})\r\nexport class MockStandaloneDatagridComponent extends MockAppfxDatagridComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ActionDefinition } from '@hermes-ui/angular/addons/datagrid';\r\n\r\n@Component({\r\n selector: 'appfx-datagrid-action-bar',\r\n standalone: false,\r\n template: `\r\n @for (action of actions; track action) {\r\n <button\r\n (click)=\"onActionClick(action)\"\r\n [title]=\"action.tooltip\"\r\n [attr.data-test-id]=\"action.id\"\r\n [disabled]=\"!action.enabled\"\r\n >\r\n {{ action.label }}\r\n </button>\r\n }\r\n `,\r\n})\r\nexport class MockDatagridActionBarComponent {\r\n @Input() actions: ActionDefinition[];\r\n\r\n @Output() invokeAction: EventEmitter<ActionDefinition> = new EventEmitter();\r\n\r\n onActionClick(action: ActionDefinition): void {\r\n this.invokeAction.emit(action);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n Component,\r\n ComponentFactoryResolver,\r\n ComponentRef,\r\n Input,\r\n OnInit,\r\n ViewChild,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\n\r\n/**\r\n * Component for unit testing purposes to provide a template for rendering datagrid cell content.\r\n */\r\n@Component({\r\n selector: 'appfx-dg-cell-container',\r\n standalone: false,\r\n template: `\r\n @if (!column.columnRenderer) {\r\n {{ item?.[column.field] }}\r\n }\r\n <ng-template #cellContainer></ng-template>\r\n `,\r\n})\r\nexport class MockDatagridCellContainerComponent implements OnInit {\r\n @Input() column: any;\r\n\r\n @Input() item: any;\r\n\r\n @ViewChild('cellContainer', { read: ViewContainerRef, static: true }) protected container: ViewContainerRef;\r\n private componentRef: ComponentRef<any> | null;\r\n private instance: any;\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) {}\r\n\r\n ngOnInit(): void {\r\n if (this.column.columnRenderer) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.column.columnRenderer);\r\n this.componentRef = this.container.createComponent(factory);\r\n this.instance = <any>this.componentRef?.instance;\r\n this.instance.item = this.item;\r\n this.instance.column = this.column;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-dg-column-toggle',\r\n standalone: false,\r\n template: ``,\r\n})\r\nexport class MockDatagridColumnToggleComponent {\r\n @Input() columns: unknown[];\r\n\r\n showColumn(): void {}\r\n\r\n hideColumn(): void {}\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'appfx-datagrid[appfxPersistDatagridSettings]',\r\n standalone: false,\r\n})\r\nexport class MockDatagridPersistSettingsDirective {\r\n @Input() appfxPersistDatagridSettings: string;\r\n\r\n @Input() persistPageSize: boolean;\r\n\r\n @Input() persistSortOrder: boolean;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, Input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appfxPreserveSelection]',\r\n standalone: false,\r\n})\r\nexport class MockDatagridPreserveSelectionDirective {\r\n @Input() preserveExistingSelection: boolean;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { DebugElement } from '@angular/core';\r\nimport { ComponentFixture } from '@angular/core/testing';\r\nimport { By } from '@angular/platform-browser';\r\nimport { HermesDatagrid } from '@hermes-ui/angular/data/datagrid';\r\n\r\nexport class GridHelper {\r\n isExpandable = false;\r\n private gridElement: HTMLElement;\r\n private component: HermesDatagrid;\r\n private componentDebugElement: DebugElement; // retain for deep introspection\r\n\r\n constructor(\r\n contextDebugElement: DebugElement,\r\n public indexedEntry?: number\r\n ) {\r\n const gridMatches = contextDebugElement.queryAll(By.directive(HermesDatagrid));\r\n\r\n if (!gridMatches.length) {\r\n throw Error('No grid found by scoped context');\r\n } else if (gridMatches.length > 1 && indexedEntry === undefined) {\r\n throw Error(`${gridMatches.length} multiple grids under the passed context`);\r\n } else {\r\n this.componentDebugElement = gridMatches[indexedEntry || 0];\r\n this.component = this.componentDebugElement.injector.get<HermesDatagrid>(HermesDatagrid);\r\n this.gridElement = this.componentDebugElement.nativeElement;\r\n this.isExpandable = this.isRowDetailConfigured();\r\n }\r\n }\r\n\r\n /**\r\n * validate grid component that is undefined. If it is defined, its data items collection must be empty\r\n * @param gridParentDebugElement\r\n */\r\n static assertEmpty(gridParentDebugElement: DebugElement): void {\r\n const matchedGrid = gridParentDebugElement.query(By.directive(HermesDatagrid));\r\n if (!matchedGrid) {\r\n expect(matchedGrid).toBeNull();\r\n return;\r\n }\r\n\r\n const hermesGrid = matchedGrid.injector.get<HermesDatagrid>(HermesDatagrid);\r\n if (hermesGrid) {\r\n expect(hermesGrid.items.all.length).toBeFalsy();\r\n }\r\n }\r\n\r\n // many internal rendering changes occur throughout the Grid rendering pipeline. After sorting and filtering rows changes occur\r\n detectChanges(fixture: ComponentFixture<any>): void {\r\n fixture.detectChanges();\r\n this.component.resize();\r\n fixture.detectChanges();\r\n }\r\n\r\n getGridElement(): HTMLElement {\r\n return this.gridElement;\r\n }\r\n\r\n getGridInternalInstance(): HermesDatagrid {\r\n return this.component;\r\n }\r\n\r\n // team developers should annotate grids when multiple exist\r\n getTestId(): string | undefined {\r\n return this.getGridElement().dataset['testId'] || undefined;\r\n }\r\n\r\n // omits control columns such as selector and expandable row toggle\r\n getHeaders(): string[] {\r\n return Array.from(\r\n this.gridElement.querySelectorAll(\r\n '.datagrid-table .datagrid-header hermes-dg-column .datagrid-column-title'\r\n ) as NodeListOf<HTMLElement>\r\n ).map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''));\r\n }\r\n\r\n // omits control columns such as selector and expandable row toggle\r\n getHiddenHeaders(): string[] {\r\n return Array.from(\r\n this.gridElement.querySelectorAll(\r\n '.datagrid-table .datagrid-header hermes-dg-column.datagrid-hidden-column .datagrid-column-title'\r\n ) as NodeListOf<HTMLElement>\r\n ).map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''));\r\n }\r\n\r\n // testing utility logic to verify presence of label, optionally ensuring certain columns are not present\r\n assertHeaderLabels(includeLabelList: Array<string>, excludeLabelList?: Array<string>) {\r\n const gridHeaderLabelList = this.getHeaders();\r\n\r\n // these columns are present\r\n if (Array.isArray(includeLabelList)) {\r\n gridHeaderLabelList.forEach((headerLabel, index) => {\r\n expect(headerLabel).toEqual(includeLabelList[index], `Cannot find \"${headerLabel}\" column.`);\r\n });\r\n }\r\n\r\n // these columns are not present ( in the DOM ). Currently ignores hidden attribute\r\n if (Array.isArray(excludeLabelList)) {\r\n excludeLabelList.forEach(undefinedLabel => {\r\n expect(gridHeaderLabelList.indexOf(undefinedLabel)).toBeLessThan(0, `There is a \"${undefinedLabel}\" column.`);\r\n });\r\n }\r\n }\r\n\r\n isRowDetailConfigured(): boolean {\r\n return !!this.gridElement.querySelector(\r\n '.datagrid-table .datagrid-header .datagrid-column.datagrid-expandable-caret'\r\n );\r\n }\r\n\r\n // omits control columns such as selector and expandable row toggle\r\n getHeaderElements(): HTMLElement[] {\r\n return Array.from(this.gridElement.querySelectorAll('hermes-dg-column') as NodeListOf<HTMLElement>).map(\r\n (element: HTMLElement) => element\r\n );\r\n }\r\n\r\n // omits control columns such as selector and expandable row toggle\r\n getHeaderElementAt(headerIndex: number): HTMLElement | undefined {\r\n return this.getHeaderElements()[headerIndex] || undefined;\r\n }\r\n\r\n getSelectAllElement(): HTMLElement | null {\r\n return this.gridElement.querySelector(\r\n \".datagrid-table .datagrid-header .datagrid-column.datagrid-select input[type='checkbox']\"\r\n );\r\n }\r\n\r\n // only if column title is within a button, consider it as a column sort action\r\n isColumnSortable(header: string): boolean {\r\n const columnIndex: number = Array.from(\r\n this.gridElement.querySelectorAll(\r\n '.datagrid-table .datagrid-header button.datagrid-column-title'\r\n ) as NodeListOf<HTMLElement>\r\n )\r\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\r\n .indexOf(header);\r\n\r\n return columnIndex !== -1;\r\n }\r\n\r\n sortByColumn(header: string): boolean {\r\n const headerElements = Array.from(\r\n this.gridElement.querySelectorAll(\r\n '.datagrid-table .datagrid-header button.datagrid-column-title'\r\n ) as NodeListOf<HTMLButtonElement>\r\n ).filter((element: HTMLElement) => {\r\n return element.textContent && header === element.textContent.trim();\r\n });\r\n\r\n if (!headerElements || headerElements.length === 0) {\r\n return false;\r\n }\r\n const headerElement = headerElements[0] as HTMLElement;\r\n headerElement.click();\r\n return true;\r\n }\r\n\r\n sortByColumnIndex(colIndex: number): boolean {\r\n const headerElement = this.getHeaderElementAt(colIndex);\r\n\r\n if (!headerElement) {\r\n throw Error(`The grid does not have column with index ${colIndex}`);\r\n }\r\n\r\n const columnSortButton = headerElement.querySelector<HTMLButtonElement>('button.datagrid-column-title');\r\n\r\n if (!columnSortButton) {\r\n throw Error(`The column is not sortable at ${colIndex}`);\r\n }\r\n\r\n columnSortButton.click(); // toggle sort\r\n return true;\r\n }\r\n\r\n // open filter overlay from icon in the right corner of header cell\r\n openFilter(header: string): void {\r\n const headerElement: HTMLElement = <HTMLElement>this.getHeaderElements().find((element: HTMLElement) => {\r\n const columnTitle: HTMLElement = <HTMLElement>element.querySelector('.datagrid-column-title');\r\n return !!(columnTitle && columnTitle.textContent && columnTitle.textContent.trim() === header);\r\n });\r\n\r\n if (headerElement) {\r\n const filterButton = headerElement.querySelector<HTMLButtonElement>('hermes-dg-filter .datagrid-filter-toggle');\r\n if (filterButton) {\r\n filterButton.click();\r\n }\r\n }\r\n }\r\n\r\n // shut down filter overlay\r\n closeFilter(): void {\r\n const closeButton = document.body.querySelector<HTMLButtonElement>('.datagrid-filter button.close');\r\n if (closeButton) {\r\n closeButton.click();\r\n }\r\n }\r\n\r\n openFilterByColumnIndex(colIndex: number): void {\r\n const headerElements: HTMLElement[] = this.getHeaderElements();\r\n\r\n if (!headerElements || headerElements.length - 1 < colIndex) {\r\n throw Error(`The grid does not have column with index ${colIndex}`);\r\n }\r\n\r\n const filterButton: HTMLElement = headerElements[colIndex].querySelector(\r\n 'hermes-dg-filter > .datagrid-filter-toggle'\r\n ) as HTMLElement;\r\n filterButton.click();\r\n }\r\n\r\n getFilterInput(): FilterInputTestHelper {\r\n const inputElement: HTMLInputElement = document.body.querySelector('.datagrid-filter input') as HTMLInputElement;\r\n return new FilterInputTestHelper(inputElement);\r\n }\r\n\r\n getRows(): GridRowTestHelper[] {\r\n const rowElements: NodeListOf<HTMLElement> = this.gridElement.querySelectorAll('hermes-dg-row');\r\n return Array.from(rowElements).map((element: HTMLElement) => new GridRowTestHelper(this, element));\r\n }\r\n\r\n getFooter(): GridFooterTestHelper {\r\n const footerElement: HTMLElement | null = this.gridElement.querySelector('hermes-dg-footer');\r\n return new GridFooterTestHelper(footerElement);\r\n }\r\n\r\n getPlaceholder(): GridPlaceholder {\r\n const placeholderElement = this.gridElement.querySelector<HTMLElement>('hermes-dg-placeholder');\r\n if (!placeholderElement) {\r\n throw Error('No placeholder located in grid');\r\n }\r\n return new GridPlaceholder(placeholderElement);\r\n }\r\n\r\n // visible in the grid on the current page only. to get the actual model of selected items only the component state can determine array\r\n getSelectedRows(): GridRowTestHelper[] {\r\n const rowElements: NodeListOf<HTMLElement> = this.gridElement.querySelectorAll('hermes-dg-row.datagrid-selected');\r\n return Array.from(rowElements).map((element: HTMLElement) => new GridRowTestHelper(this, element));\r\n }\r\n\r\n // if datagrid supports row selection mode, force all \"visible\" rows in view to be checked\r\n selectAllRows(): boolean {\r\n const canPerform = this.component.selection.rowSelectionMode;\r\n if (canPerform) {\r\n this.component.selection.toggleAll();\r\n }\r\n return canPerform;\r\n }\r\n\r\n // if datagrid supports row selection mode, force all \"visible\" rows in view to be unchecked\r\n unselectAllRows(): boolean {\r\n const canPerform = this.component.selection.rowSelectionMode;\r\n if (canPerform) {\r\n this.component.selection.clearSelection();\r\n }\r\n return canPerform;\r\n }\r\n\r\n clickActionBarButton(label: string): void {\r\n const btn = this.findActionBarButton(this.getButtonIdentifier(label));\r\n if (btn) {\r\n btn.click();\r\n } else {\r\n throw Error(\"The action button '\" + label + \"' does not exist\");\r\n }\r\n }\r\n\r\n isActionBarButtonDisabled(label: string): boolean {\r\n const btn = this.findActionBarButton(this.getButtonIdentifier(label));\r\n if (btn) {\r\n return btn.disabled;\r\n } else {\r\n throw Error(\"The action button '\" + label + \"' does not exist\");\r\n }\r\n }\r\n\r\n getActionBarActionLabels(hasSpan?: boolean): Array<string> {\r\n const buttonElements: NodeListOf<HTMLButtonElement> = this.gridElement.querySelectorAll(\r\n 'hermes-dg-action-bar button' + (hasSpan ? ' > span' : '')\r\n );\r\n return Array.from(buttonElements).map((element: HTMLElement) => {\r\n return element && element.innerText ? element.innerText.trim() : '';\r\n });\r\n }\r\n\r\n isDataLoading(): boolean {\r\n return this.component.loading;\r\n }\r\n\r\n findActionBarButton(label: string): HTMLButtonElement | undefined {\r\n const menuItems = this.gridElement.querySelectorAll<HTMLButtonElement>('hermes-dg-action-bar button');\r\n\r\n const matched = Array.from(menuItems)\r\n .map(e => (e.textContent ? e.textContent.trim() : ''))\r\n .indexOf(label);\r\n return matched >= 0 ? menuItems[matched] : undefined;\r\n }\r\n\r\n findFooterButton(label: string): HTMLButtonElement | undefined {\r\n const buttons = this.gridElement.querySelectorAll<HTMLButtonElement>('hermes-dg-footer button');\r\n\r\n const matched = Array.from(buttons)\r\n .map(e => (e.textContent ? e.textContent.trim() : ''))\r\n .indexOf(label);\r\n return matched >= 0 ? buttons[matched] : undefined;\r\n }\r\n\r\n findFooterDropdownChildButton(label: string): HTMLButtonElement | undefined {\r\n const buttons = document.querySelectorAll<HTMLButtonElement>('hermes-dropdown-menu button');\r\n\r\n const matched = Array.from(buttons)\r\n .map(e => (e.textContent ? e.textContent.trim() : ''))\r\n .indexOf(label);\r\n return matched >= 0 ? buttons[matched] : undefined;\r\n }\r\n\r\n /**\r\n * handle string and array-based i18n bundle-key structures\r\n */\r\n private getButtonIdentifier(label: string): string {\r\n if (typeof label === 'string') {\r\n return label;\r\n } else {\r\n throw Error('invalid i18n tuple argument');\r\n }\r\n }\r\n}\r\n\r\nexport class FilterInputTestHelper {\r\n constructor(private inputElement: HTMLInputElement) {}\r\n\r\n // presence (or not) of the filter control\r\n assert(validFlag: boolean): void {\r\n if (validFlag) {\r\n expect(this.inputElement).not.toBeNull();\r\n expect(this.inputElement.disabled).toEqual(false);\r\n } else {\r\n expect(this.inputElement).toBeNull();\r\n }\r\n }\r\n\r\n inputText(text: string, triggerEvent?: string) {\r\n let eventName = 'input';\r\n if (triggerEvent) {\r\n eventName = triggerEvent;\r\n }\r\n\r\n this.inputElement.value = text;\r\n this.inputElement.dispatchEvent(this.newEvent(eventName));\r\n // should sync grid??\r\n }\r\n\r\n // note: should leverage the DebugElement eventing system instead of DOM directly\r\n private newEvent(eventName: string, bubbles = false, cancelable = false) {\r\n const evt = document.createEvent('CustomEvent');\r\n evt.initCustomEvent(eventName, bubbles, cancelable, null);\r\n return evt;\r\n }\r\n}\r\n\r\nexport class GridFooterTestHelper {\r\n constructor(private footerElement: HTMLElement | null) {}\r\n\r\n getElement(): HTMLElement {\r\n return this.footerElement as HTMLElement;\r\n }\r\n\r\n getFooterText(): string {\r\n return this.footerElement && this.footerElement.textContent ? this.footerElement.textContent.trim() : '';\r\n }\r\n\r\n openShowHideColumnsMenu(): void {\r\n if (!this.footerElement) {\r\n return;\r\n }\r\n const showHideColumnButton: HTMLElement = this.footerElement.querySelector(\r\n 'button[cdkOverlayOrigin]'\r\n ) as HTMLElement;\r\n showHideColumnButton.click();\r\n }\r\n\r\n clickShowHideColumnsItem(name: string): void {\r\n this.getShowHideColumnsItems();\r\n const showHideColumnsItem: any = this.findShowHideColumnsItemByName(name);\r\n if (showHideColumnsItem) {\r\n showHideColumnsItem.click();\r\n }\r\n }\r\n\r\n findShowHideColumnsItemByName(name: string): any {\r\n const checkBoxLabels: any[] = this.getShowHideColumnsItems();\r\n const labelIndex: number = checkBoxLabels\r\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\r\n .indexOf(name);\r\n\r\n return labelIndex !== -1 ? checkBoxLabels[labelIndex] : null;\r\n }\r\n\r\n getShowHideColumnsItems(): any[] {\r\n if (!this.footerElement) {\r\n return [];\r\n }\r\n const checkBoxLabels: any = document.body.querySelectorAll('.column-switch hermes-checkbox-wrapper > label');\r\n return Array.from(checkBoxLabels);\r\n }\r\n\r\n clickPreviousPaginationButton(): void {\r\n if (!this.footerElement) {\r\n return;\r\n }\r\n const button = this.footerElement.querySelector<HTMLButtonElement>('hermes-dg-pagination button.pagination-previous');\r\n if (button && !button.disabled) {\r\n button.click();\r\n }\r\n }\r\n\r\n clickNextPaginationButton(): void {\r\n if (!this.footerElement) {\r\n return;\r\n }\r\n const button = this.footerElement.querySelector<HTMLButtonElement>('hermes-dg-pagination button.pagination-next');\r\n if (button && !button.disabled) {\r\n button.click();\r\n }\r\n }\r\n\r\n clickPaginationButton(label: string): void {\r\n if (!this.footerElement) {\r\n return;\r\n }\r\n const paginationButtons: NodeListOf<HTMLButtonElement> =\r\n this.footerElement.querySelectorAll('hermes-dg-pagination li button');\r\n const paginationButtonIndex: number = Array.from(paginationButtons)\r\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\r\n .indexOf(label);\r\n if (paginationButtonIndex !== -1) {\r\n paginationButtons[paginationButtonIndex].click();\r\n }\r\n }\r\n}\r\n\r\nexport class GridRowTestHelper {\r\n constructor(\r\n private grid: GridHelper,\r\n private rowElement: HTMLElement\r\n ) {}\r\n\r\n // ignores control datagrid cells, which do not display data\r\n getCell(header: string): GridCellTestHelper {\r\n const columnIndex = this.grid.getHeaders().indexOf(header);\r\n return this.getCellAt(columnIndex);\r\n }\r\n\r\n // ignores control datagrid cells, which do not display data\r\n getCellAt(index: number): GridCellTestHelper {\r\n return new GridCellTestHelper(this.rowElement.querySelectorAll<HTMLElement>('hermes-dg-cell').item(index));\r\n }\r\n\r\n getCellTextAt(index: number): string {\r\n const cellText: string | null = this.rowElement\r\n .querySelectorAll<HTMLElement>('hermes-dg-cell > span')\r\n .item(index).textContent;\r\n return cellText ? cellText.trim() : '';\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.rowElement as HTMLElement;\r\n }\r\n\r\n isSelected(): boolean {\r\n return this.rowElement.classList.contains('datagrid-selected');\r\n }\r\n\r\n // testing utility logic to verify grid cell value (or substring ) match, and alternatively a negative (non-matching) way to exclude\r\n assertCellValues(\r\n includeValueList: Array<string | number | Array<string> | undefined>,\r\n excludeValueList?: Array<string | number | Array<string> | undefined>\r\n ): void {\r\n // these cells are present for equality matching\r\n if (Array.isArray(includeValueList)) {\r\n includeValueList.forEach((cellValue, index) => {\r\n const gridCell = this.getCellAt(index);\r\n if (cellValue !== undefined) {\r\n if (Array.isArray(cellValue)) {\r\n // substring containment\r\n expect(\r\n (cellValue as Array<any>).reduce(\r\n (matched, phrase) => matched && gridCell.getText().includes(phrase),\r\n true\r\n )\r\n ).toBe(true);\r\n } else {\r\n // scalar value\r\n expect(gridCell.getText()).toEqual(String(cellValue));\r\n }\r\n } else {\r\n // undefined means the cell must not be present\r\n if (Array.isArray(cellValue)) {\r\n // substring containment (negated)\r\n expect(\r\n (cellValue as Array<any>).reduce(\r\n (matched, phrase) => matched && gridCell.getText().includes(phrase),\r\n true\r\n )\r\n ).toBe(false);\r\n } else {\r\n expect(gridCell.getElement()).toBeNull(`There is no cell at position index ${index}.`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n // these cells do not match the actual value in the data cell\r\n if (Array.isArray(excludeValueList)) {\r\n excludeValueList.forEach((cellValue, index) => {\r\n const gridCell = this.getCellAt(index);\r\n if (cellValue !== undefined) {\r\n expect(gridCell.getText()).not.toEqual(String(cellValue));\r\n } else {\r\n // undefined means the cell must not be present\r\n expect(gridCell.getElement()).not.toBeNull(`There is a no cell at position index ${index}.`);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // find the row selector for single/multiple actions. Action performed programmatically on label ( despite it being empty )\r\n select(): void {\r\n const selectionElement = this.rowElement.querySelector<HTMLLabelElement>(\r\n '.datagrid-cell.datagrid-select .hermes-control-label'\r\n );\r\n if (!selectionElement) {\r\n throw Error('The row is not selectable.');\r\n }\r\n selectionElement.click();\r\n }\r\n\r\n /**\r\n * In case the row selection in the Clarity grid is enabled for multiple selection,\r\n * ex. [hermesDgRowSelection]=\"true\" clicking on the checkbox's input causes both the\r\n * events for the row selection and the checkbox to be triggered causing the select\r\n * and deselect of the element immediately one after the other\r\n */\r\n selectMultiWithRowSelectionEnabled(): void {\r\n const selectionElement: HTMLElement | null = this.rowElement.querySelector(\r\n '.datagrid-select.datagrid-cell > .hermes-checkbox-wrapper'\r\n );\r\n if (!selectionElement) {\r\n throw Error('The row is not selectable.');\r\n }\r\n (selectionElement as HTMLElement).click();\r\n }\r\n\r\n // clicking the row achieves what? focus\r\n click(): void {\r\n const selectionElement: HTMLElement | null = this.rowElement.querySelector('div.datagrid-row-clickable');\r\n\r\n if (!selectionElement) {\r\n throw Error('The row is not clickable.');\r\n }\r\n (selectionElement as HTMLElement).click();\r\n }\r\n\r\n isRowClickable(): boolean {\r\n const selectionElement: HTMLElement | null = this.rowElement.querySelector('div.datagrid-row-clickable');\r\n return !!selectionElement;\r\n }\r\n\r\n // check whether the row element has a nested input\r\n isSelectionAvailable(): boolean {\r\n const selectionInput: HTMLElement | null = this.rowElement.querySelector('input');\r\n return selectionInput ? true : false;\r\n }\r\n\r\n // check whether the row element has a nested disabled input\r\n isSelectionDisabled(): boolean {\r\n const disabledSelectionInput: HTMLElement | null = this.rowElement.querySelector('input[aria-disabled]');\r\n return disabledSelectionInput ? true : false;\r\n }\r\n\r\n expand(): void {\r\n const expandElement: HTMLElement | null = this.rowElement.querySelector(\r\n '.datagrid-expandable-caret > button.datagrid-expandable-caret-button'\r\n );\r\n if (!expandElement) {\r\n throw Error('The row is not expandable.');\r\n }\r\n (expandElement as HTMLElement).click();\r\n }\r\n\r\n isExpanded(): boolean {\r\n return !!this.rowElement.querySelector('hermes-dg-row-detail');\r\n }\r\n\r\n isRowExpandable(): boolean {\r\n return (\r\n this.rowElement.querySelectorAll('.datagrid-expandable-caret > button.datagrid-expandable-caret-button').length >\r\n 0\r\n );\r\n }\r\n\r\n getSingleRowActionMenuButton(): HTMLElement {\r\n return this.rowElement.querySelector('.datagrid-action-toggle > hermes-icon') as HTMLElement;\r\n }\r\n\r\n openSingleRowActionMenu(): boolean {\r\n const menuItems = this.rowElement.querySelectorAll('hermes-dg-action-overflow button.datagrid-action-toggle');\r\n if (menuItems && menuItems.length > 0) {\r\n (menuItems.item(0) as HTMLButtonElement).click();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // retrieve action menu item by name\r\n getSingleRowActionMenuItem(menuItemName: string): HTMLButtonElement | undefined {\r\n const menuItems: NodeListOf<HTMLButtonElement> = document.querySelectorAll('div.datagrid-action-overflow button');\r\n const menuItemIndex: number = Array.from(menuItems)\r\n .map((element: HTMLElement) => (element.textContent ? element.textContent.trim() : ''))\r\n .indexOf(menuItemName);\r\n if (menuItemIndex !== -1) {\r\n return menuItems[menuItemIndex];\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n clickOnSingleRowActionMenuItem(menuItemName: string): void {\r\n const menuItem = this.getSingleRowActionMenuItem(menuItemName);\r\n if (menuItem) {\r\n menuItem.click();\r\n }\r\n }\r\n\r\n isRowSingleSelectable(): boolean {\r\n return (\r\n !!this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-radio-wrapper') &&\r\n !!this.grid\r\n .getGridElement()\r\n .querySelector(\r\n '.datagrid-table .datagrid-header > .datagrid-row .datagrid-select.datagrid-column > .datagrid-column-separator'\r\n )\r\n );\r\n }\r\n}\r\n\r\nexport class GridCellTestHelper {\r\n constructor(private cellElement: HTMLElement) {}\r\n\r\n getElement(): HTMLElement {\r\n return this.cellElement;\r\n }\r\n\r\n getText(): string {\r\n const cellElement = this.cellElement as HTMLElement;\r\n return cellElement.innerText ? cellElement.innerText.trim() : '';\r\n }\r\n\r\n getChildElementText(selector: string): string {\r\n const childElement: HTMLElement | null = this.cellElement.querySelector(selector) as HTMLElement;\r\n if (childElement) {\r\n return childElement.innerText ? childElement.innerText.trim() : '';\r\n }\r\n return '';\r\n }\r\n\r\n // datagrid wrapper uses a custom cell objects to project client defined cell formatter\r\n // optionally query deeper into the custom cell component as defined by column registry\r\n getCellWrapperElement(selector?: string): HTMLElement | null {\r\n const matchedElement = this.cellElement.querySelector<HTMLElement>('appfx-dg-cell-container');\r\n if (!matchedElement) {\r\n return null;\r\n }\r\n\r\n return selector ? matchedElement.querySelector(selector) : matchedElement;\r\n }\r\n\r\n // common icons follow the accepted practice of being wrapped in spanned element annotated with \"object\"\r\n getObjectIconElement(): HTMLElement | undefined {\r\n return this.getElement().querySelector<HTMLElement>('span.object > i') || undefined;\r\n }\r\n\r\n // finds the first simple anchor link and fires a click event if found\r\n clickChildLink(): void {\r\n const selectionElement = this.cellElement.querySelector<HTMLAnchorElement>('A');\r\n\r\n if (!selectionElement) {\r\n throw Error('The cell is not clickable.');\r\n } else {\r\n selectionElement.click();\r\n }\r\n }\r\n\r\n /* future work: add reference to custom object */\r\n}\r\n\r\nexport class GridPlaceholder {\r\n constructor(private placeholderComponentElement: HTMLElement) {}\r\n\r\n getElement(): HTMLElement {\r\n return this.placeholderComponentElement as HTMLElement;\r\n }\r\n\r\n getText(): string | undefined {\r\n return this.placeholderComponentElement ? this.placeholderComponentElement.textContent.trim() : undefined;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'isRowSelectable', standalone: false })\r\nexport class MockIsRowSelectablePipe implements PipeTransform {\r\n transform(rowItem: any, isLocked?: (rowItem: any) => boolean, disabled?: boolean): boolean {\r\n return !isLocked?.(rowItem) || !!disabled;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxDatagridComponent, MockStandaloneDatagridComponent } from './datagrid.component.mock';\r\nexport { MockDatagridActionBarComponent } from './datagrid-action-bar.component.mock';\r\nexport { MockDatagridCellContainerComponent } from './datagrid-cell-container.component.mock';\r\nexport { MockDatagridColumnToggleComponent } from './datagrid-column-toggle.component.mock';\r\nexport { MockDatagridPersistSettingsDirective } from './datagrid-persist-settings.directive.mock';\r\nexport { MockDatagridPreserveSelectionDirective } from './datagrid-preserve-selection.directive.mock';\r\nexport {\r\n FilterInputTestHelper,\r\n GridCellTestHelper,\r\n GridFooterTestHelper,\r\n GridHelper,\r\n GridPlaceholder,\r\n GridRowTestHelper,\r\n} from './grid-helper';\r\nexport { MockIsRowSelectablePipe } from './is-row-selectable.pipe.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FilterablePropertyDefinition, FilterMode, PropertyFilter } from '@hermes-ui/angular/addons/datagrid-filters';\r\n\r\n@Component({\r\n selector: 'appfx-datagrid-filters',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockDatagridFiltersComponent {\r\n @Input() filterMode = FilterMode.Quick;\r\n\r\n @Input() filterableProperties: FilterablePropertyDefinition[];\r\n\r\n @Output() searchTermChange = new EventEmitter<string>();\r\n\r\n @Output() propertyFiltersChange = new EventEmitter<PropertyFilter[]>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-datagrid-filters',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockDatagridFiltersStandaloneComponent extends MockDatagridFiltersComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n MockDatagridFiltersComponent,\r\n MockDatagridFiltersStandaloneComponent,\r\n} from './datagrid-filters.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { DefaultButton } from '@hermes-ui/angular/addons/dialog';\r\nimport { CloseHandler, ModelChange, Step, TabLayout, WorkflowModel } from '@hermes-ui/angular/addons/var';\r\n\r\n@Component({\r\n selector: 'appfx-dialog',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockAppfxDialogComponent {\r\n @Input() title: string;\r\n @Input() subTitle: string;\r\n @Input() size: string;\r\n @Input() height: string;\r\n @Input() defaultButton: DefaultButton;\r\n @Input() cancelButtonLabel: string;\r\n @Input() okButtonLabel: string;\r\n @Input() tabLayout: TabLayout;\r\n @Input() disableTabsContent: boolean;\r\n @Input() loading: boolean;\r\n @Input() steps: Step[];\r\n @Input() model: WorkflowModel;\r\n @Input() closeHandler: CloseHandler;\r\n @Input() showTabLinks: boolean;\r\n @Input() opened: boolean;\r\n\r\n @Output() readonly onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\r\n @Output() onClose: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() openedChange = new EventEmitter<boolean>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-dialog',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockAppfxDialogStandaloneComponent extends MockAppfxDialogComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-dialog-header',\r\n standalone: false,\r\n template: `<ng-content></ng-content>`,\r\n})\r\nexport class MockAppfxDialogHeaderComponent {}\r\n\r\n@Component({\r\n selector: 'appfx-dialog-header',\r\n standalone: true,\r\n template: `<ng-content></ng-content>`,\r\n})\r\nexport class MockAppfxDialogHeaderStandaloneComponent extends MockAppfxDialogHeaderComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxDialogComponent, MockAppfxDialogStandaloneComponent } from './multi-page-dialog.component.mock';\r\nexport {\r\n MockAppfxDialogHeaderComponent,\r\n MockAppfxDialogHeaderStandaloneComponent,\r\n} from './multi-page-dialog-header.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-menu-action',\r\n standalone: false,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuActionComponent {\r\n @Input() actionId: string;\r\n\r\n @Input() iconClass?: string;\r\n\r\n @Input() text?: string;\r\n\r\n @Input() shortcut?: string;\r\n\r\n @Input() enabled?: boolean = true;\r\n\r\n @Output() handle: EventEmitter<void> = new EventEmitter<void>(true);\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-menu-action',\r\n standalone: true,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuActionStandaloneComponent extends MockAppfxMenuActionComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-menu',\r\n standalone: false,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuComponent {\r\n @Input() declare text: string;\r\n\r\n @Output() opened: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @Output() closed: EventEmitter<void> = new EventEmitter<void>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-menu',\r\n standalone: true,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockAppfxMenuStandaloneComponent extends MockAppfxMenuComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxMenuActionComponent, MockAppfxMenuActionStandaloneComponent } from './menu-action.component.mock';\r\nexport { MockAppfxMenuComponent, MockAppfxMenuStandaloneComponent } from './menu.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'appfx-property-view',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockPropertyViewComponent {\r\n @Input() data: any;\r\n @Input() config: any;\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-property-view',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockPropertyViewStandaloneComponent extends MockPropertyViewComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { PropertyViewStrings } from '@hermes-ui/angular/addons/property-view';\r\n\r\n/**\r\n * Mock user-visible strings used in the 'appfx-property-view' library.\r\n */\r\n@Injectable()\r\nexport class MockPropertyViewStrings extends PropertyViewStrings {\r\n override toggle = 'Toggle {0} section';\r\n override actions = 'Actions';\r\n override categoryListItemsAreaLabel = '{0} items grouped in {1} sections.';\r\n override categoryListItemAreaLabel = '{0} items grouped in 1 section.';\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport {\r\n PropertyViewMessageModel,\r\n PropertyViewModelType,\r\n PropertyViewPropertyModel,\r\n PropertyViewPropertyValueModel,\r\n} from '@hermes-ui/angular/addons/property-view';\r\n\r\nexport function verifyPropertyViewProperty(key: string, value: string[], propertyModel: PropertyViewPropertyModel) {\r\n expect(propertyModel.type).toEqual(PropertyViewModelType.Property);\r\n expect(propertyModel.key.text).toEqual(key);\r\n for (let i = 0; i < value.length; i++) {\r\n expect((<PropertyViewPropertyValueModel>propertyModel.content[i]).text).toEqual(value[i]);\r\n }\r\n}\r\n\r\nexport function verifyPropertyViewMessage(textValue: string, icon: string, messageModel: PropertyViewMessageModel) {\r\n expect(messageModel.type).toEqual(PropertyViewModelType.Message);\r\n expect(messageModel.text).toEqual(textValue);\r\n expect(messageModel.icon).toEqual(icon);\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockPropertyViewComponent, MockPropertyViewStandaloneComponent } from './property-view-component.mock';\r\nexport { MockPropertyViewStrings } from './property-view-strings.mock';\r\nexport { verifyPropertyViewMessage, verifyPropertyViewProperty } from './property-view-test-helper';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ModelChange, Step, WorkflowModel } from '@hermes-ui/angular/addons/var';\r\n\r\n@Component({\r\n selector: 'appfx-stepper',\r\n standalone: false,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockStepperComponent {\r\n @Input() steps: Step[];\r\n @Input() wizardModel: WorkflowModel;\r\n @Input() loading: boolean;\r\n\r\n @Output() onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\r\n @Output() onFinish: EventEmitter<void> = new EventEmitter<void>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-stepper',\r\n standalone: true,\r\n template: '<ng-content></ng-content>',\r\n})\r\nexport class MockStepperStandaloneComponent extends MockStepperComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockStepperComponent, MockStepperStandaloneComponent } from './stepper.component.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { DebugElement, EmbeddedViewRef, Predicate } from '@angular/core';\r\nimport { By } from '@angular/platform-browser';\r\nimport { HermesTab, HermesTabContent, HermesTabs } from '@hermes-ui/angular/layout/tabs';\r\n\r\nexport class TabsHelper {\r\n private tabs: DebugElement;\r\n private component: HermesTabs;\r\n\r\n constructor(contextDebugElement: DebugElement) {\r\n const tabsElementMatches: Array<DebugElement> = contextDebugElement.queryAll(By.directive(HermesTabs));\r\n\r\n if (!tabsElementMatches.length) {\r\n throw Error('No tabs found under passed context element');\r\n } else if (tabsElementMatches.length > 1) {\r\n throw Error('Unable to isolate targeted instance of tabs widget');\r\n } else {\r\n this.tabs = tabsElementMatches[0];\r\n this.component = this.tabs.injector.get<HermesTabs>(HermesTabs);\r\n }\r\n }\r\n\r\n /**\r\n * Discover clarity tab links of (zero or more) items within the tabs.\r\n */\r\n getLinkList(): Array<DebugElement> {\r\n return this.tabs.queryAll(By.css(`[role=\"tablist\"] > [role=\"presentation\"] > [hermesTabLink]`));\r\n }\r\n\r\n /**\r\n * A DOM pointer to a tab link, as afforded by supplied index into collection.\r\n */\r\n findLink(linkIndex: number): DebugElement | undefined {\r\n return this.getLinkList()[linkIndex];\r\n }\r\n\r\n /**\r\n * Retrieves the active Clarity Tab instance.\r\n */\r\n getActiveTab(): HermesTab {\r\n return this.component.tabsService.activeTab;\r\n }\r\n\r\n /**\r\n * Determines the active shown tab using relative sequences that map directly to DOM source order.\r\n */\r\n getActiveTabIndex(): number {\r\n return this.component.tabLinkDirectives.findIndex(\r\n tabLink => tabLink.tabLinkId === this.component.tabsService.activeTab.tabLink.tabLinkId\r\n );\r\n }\r\n\r\n /**\r\n * Extract located projected content as provided for the active tab.\r\n */\r\n getActiveTabContentElement(): HTMLElement | undefined {\r\n const evr = this.getActiveTab().tabContent['viewRef'] as EmbeddedViewRef<HermesTabContent>;\r\n return evr ? ((evr.rootNodes[0] as HTMLElement).firstElementChild as HTMLElement) || undefined : undefined;\r\n }\r\n\r\n /**\r\n * Clicks a tab link given the tab index.\r\n */\r\n clickLink(linkIndex: number): void {\r\n const tabLink = this.component.tabLinkDirectives[linkIndex];\r\n try {\r\n tabLink.activate();\r\n } catch {\r\n throw Error('No tab link found at index ' + linkIndex);\r\n }\r\n }\r\n\r\n /**\r\n * Searches for tab link text, as applied to a tab button.\r\n */\r\n findLinkText(linkIndex: number): string | undefined {\r\n const tabLinkElement = this.findLink(linkIndex);\r\n return tabLinkElement ? tabLinkElement.nativeElement.textContent.trim() : undefined;\r\n }\r\n\r\n /**\r\n * Debug element for the icon found inside the tab link.\r\n */\r\n findLinkIcon(linkIndex: number): DebugElement | undefined {\r\n const tabLinkElement = this.findLink(linkIndex);\r\n return (tabLinkElement && tabLinkElement.query(By.css('hermes-icon'))) || undefined;\r\n }\r\n\r\n /**\r\n * Optionally find the custom component or desired HTML element within the active panel.\r\n */\r\n findContentView(childTabContentQuery?: Predicate<DebugElement>): DebugElement | undefined {\r\n const panel = this.tabs.query(By.css(`section.active`));\r\n return panel && childTabContentQuery ? panel.query(childTabContentQuery) || undefined : panel || undefined;\r\n }\r\n\r\n areTabsVisible(): boolean {\r\n const tabsPanel = this.tabs.query(By.css(`.nav`));\r\n return getComputedStyle(tabsPanel.nativeElement)['display'] !== 'none';\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { TabsHelper } from './tabs-helper';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, NgModule } from '@angular/core';\r\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { OnStepActivate, OnStepValidate, StepModel, StepValidationState } from '@hermes-ui/angular/addons/var';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: 'appfx-mock-page-page',\r\n standalone: false,\r\n template: '<div>{{ model.mockPropertyValue }}</div>',\r\n})\r\nexport class MockStepComponent implements OnStepValidate, OnStepActivate {\r\n model: MockStepModel;\r\n\r\n activate() {\r\n this.model.isActivated = true;\r\n }\r\n\r\n validate(): Observable<boolean> {\r\n return of(true).pipe(\r\n tap(() => {\r\n this.model.isValidated = true;\r\n })\r\n );\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-invalid-mock-page-page',\r\n standalone: false,\r\n template: '<div></div>',\r\n})\r\nexport class InvalidMockComponent extends MockStepComponent {\r\n override validate(): Observable<boolean> {\r\n return of(false).pipe(\r\n tap(() => {\r\n this.model.isValidated = true;\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport class MockStepModel implements StepModel {\r\n isActivated = false;\r\n isValidated = false;\r\n readyToComplete: boolean;\r\n\r\n validationState: StepValidationState = new StepValidationState();\r\n\r\n constructor(public mockPropertyValue: string) {}\r\n}\r\n\r\n/** Simple mock of {@link WorkflowConfigurationService} used by workflow-dependent tests. */\r\nexport class MockWorkflowConfigurationService {\r\n private debugValue = false;\r\n\r\n get debug(): boolean {\r\n return this.debugValue;\r\n }\r\n\r\n set debug(newValue: boolean) {\r\n this.debugValue = newValue;\r\n }\r\n}\r\n\r\n@NgModule({\r\n imports: [NoopAnimationsModule],\r\n declarations: [InvalidMockComponent, MockStepComponent],\r\n})\r\nexport class MockWorkflowTestModule {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport {\r\n InvalidMockComponent,\r\n MockStepComponent,\r\n MockStepModel,\r\n MockWorkflowConfigurationService,\r\n MockWorkflowTestModule,\r\n} from './workflow.mock';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ModelChange, Step, WorkflowModel } from '@hermes-ui/angular/addons/var';\r\nimport { Reason } from '@hermes-ui/angular/addons/wizard';\r\n\r\n@Component({\r\n selector: 'appfx-wizard',\r\n standalone: false,\r\n template: '',\r\n})\r\nexport class MockAppfxWizardComponent {\r\n @Input() title: string;\r\n @Input() pages: Step[];\r\n @Input() wizardModel: WorkflowModel;\r\n @Input() loading: boolean;\r\n @Input() size: string;\r\n @Input() opened: boolean;\r\n\r\n @Output() openedChange = new EventEmitter<boolean>();\r\n @Output() onModelChange: EventEmitter<ModelChange[]> = new EventEmitter<ModelChange[]>();\r\n @Output() onFinish: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onClose: EventEmitter<Reason> = new EventEmitter<Reason>();\r\n}\r\n\r\n@Component({\r\n selector: 'appfx-wizard',\r\n standalone: true,\r\n template: '',\r\n})\r\nexport class MockWizardStandaloneComponent extends MockAppfxWizardComponent {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { DebugElement } from '@angular/core';\r\nimport { By } from '@angular/platform-browser';\r\n\r\nexport class WizardHelper {\r\n readonly #navPanelSelector = '.hermes-wizard-stepnav-wrapper';\r\n readonly #navitemSelector = 'hermes-wizard-stepnav .hermes-wizard-stepnav-item';\r\n readonly #showStepNavBinSelector = '.btn-show-stepnav';\r\n readonly #closeStepNavBinSelector = '.btn-close-stepnav';\r\n\r\n constructor(private wizard: DebugElement) {}\r\n\r\n get pageNavTitles(): Array<string | undefined> {\r\n // getlastTextNode is needed because hermes-icon contains a span with text labels for\r\n // the icons which we don't care about.\r\n return this.wizard\r\n .queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link-title'))\r\n .map((v: DebugElement) => this.getLastTextNode(v));\r\n }\r\n\r\n get isVisible(): boolean {\r\n return getComputedStyle(this.wizard.nativeElement)['visibility'] === 'visible';\r\n }\r\n\r\n get activePageNavTitle(): string | undefined {\r\n const activeNavItem: DebugElement = this.wizard.query(\r\n By.css(this.#navitemSelector + '.active .hermes-wizard-stepnav-link-title')\r\n );\r\n if (!activeNavItem) {\r\n return '';\r\n }\r\n\r\n return this.getLastTextNode(activeNavItem);\r\n }\r\n\r\n get activePageTitle(): string {\r\n return this.wizard.query(By.css('.hermes-wizard-page-title')).nativeElement.innerText.trim();\r\n }\r\n\r\n get size(): string | undefined {\r\n return (Array.from(this.wizard.nativeElement.classList) as string[])\r\n .map((value: string) => {\r\n const matches = value.match(/^wizard-(sm|md|lg|xl)$/);\r\n return (matches || [])[1];\r\n })\r\n .filter(v => !!v)\r\n .pop();\r\n }\r\n\r\n get buttons(): DebugElement[] {\r\n return this.wizard.queryAll(By.css('hermes-wizard-button button'));\r\n }\r\n\r\n get visibleButtons(): DebugElement[] {\r\n return this.buttons.filter((value: DebugElement) => {\r\n return value.nativeElement.parentElement.getAttribute('aria-hidden') === 'false';\r\n });\r\n }\r\n\r\n get cancelButton(): DebugElement {\r\n return this.buttons[0];\r\n }\r\n\r\n get cancelButtonText(): string {\r\n return this.cancelButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get backButton(): DebugElement {\r\n return this.buttons[1];\r\n }\r\n\r\n get backButtonText(): string {\r\n return this.backButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get nextButton(): DebugElement {\r\n return this.buttons[2];\r\n }\r\n\r\n get nextButtonText(): string {\r\n return this.nextButton.nativeElement.innerText.trim();\r\n }\r\n\r\n get finishButton(): DebugElement {\r\n return this.buttons[3];\r\n }\r\n\r\n get finishButtonText(): string {\r\n return this.finishButton.nativeElement.innerText.trim();\r\n }\r\n\r\n private get stepNavPanel(): DebugElement {\r\n return this.wizard.query(By.css(this.#navPanelSelector));\r\n }\r\n\r\n private get stepNavs(): Array<DebugElement> {\r\n return this.wizard.queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link'));\r\n }\r\n\r\n private get showStepNavBtn(): DebugElement {\r\n return this.wizard.query(By.css(this.#showStepNavBinSelector));\r\n }\r\n\r\n private get closeStepNavBtn(): DebugElement {\r\n return this.wizard.query(By.css(this.#closeStepNavBinSelector));\r\n }\r\n\r\n navigateToStep(stepIndex: number) {\r\n this.click(this.stepNavs[stepIndex]);\r\n }\r\n\r\n isNavVisible(): boolean {\r\n return getComputedStyle(this.stepNavPanel.nativeElement)['display'] !== 'none';\r\n }\r\n\r\n isStepNavEnabled(stepIndex: number): boolean {\r\n return this.stepNavs[stepIndex].attributes['disabled'] === undefined;\r\n }\r\n\r\n isShowNavIconVisible(): boolean {\r\n return getComputedStyle(this.showStepNavBtn.nativeElement)['display'] !== 'none';\r\n }\r\n\r\n showNavigator(): void {\r\n this.click(this.showStepNavBtn);\r\n }\r\n\r\n closeNavigator(): void {\r\n this.click(this.closeStepNavBtn);\r\n }\r\n\r\n cancel(): void {\r\n this.click(this.cancelButton);\r\n }\r\n\r\n back(): void {\r\n this.click(this.backButton);\r\n }\r\n\r\n next(): void {\r\n this.click(this.nextButton);\r\n }\r\n\r\n finish(): void {\r\n this.click(this.finishButton);\r\n }\r\n\r\n private click(el: DebugElement) {\r\n el.triggerEventHandler('click', null);\r\n }\r\n\r\n private getLastTextNode(debugElement: DebugElement): string {\r\n // Find the last child node of type text (3)\r\n const childNodes: NodeList = debugElement.nativeElement.childNodes;\r\n let result = '';\r\n childNodes.forEach((node: Node) => {\r\n if (node.nodeType === 3) {\r\n const text = node.textContent?.trim() || '';\r\n // comments included by Angular are seen as text nodes, but terxtContent returns\r\n // an empty string. We should ignore those.\r\n if (text !== '') {\r\n result = text;\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport { MockAppfxWizardComponent, MockWizardStandaloneComponent } from './wizard.component.mock';\r\nexport { WizardHelper } from './wizard-helper';\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport * from './a11y';\r\nexport * from './card-container';\r\nexport * from './datagrid';\r\nexport * from './datagrid-filters';\r\nexport * from './dialog';\r\nexport * from './menu';\r\nexport * from './property-view';\r\nexport * from './stepper';\r\nexport * from './tabs';\r\nexport * from './var';\r\nexport * from './wizard';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}