@hermes-ui/angular 0.1.4

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 (539) hide show
  1. package/README.md +52 -0
  2. package/accordion/_accordion.clarity.scss +81 -0
  3. package/accordion/_properties.accordion.scss +45 -0
  4. package/accordion/_variables.accordion.scss +91 -0
  5. package/addons/a11y/README.md +157 -0
  6. package/addons/a11y/forms/required-field-legend.component.scss +17 -0
  7. package/addons/card-container/card/appfx-card.component.scss +137 -0
  8. package/addons/card-container/container/appfx-card-container.component.scss +17 -0
  9. package/addons/card-container/settings/appfx-card-container-settings.component.scss +62 -0
  10. package/addons/certificate-viewer/certificate-viewer/certificate-viewer.component.scss +69 -0
  11. package/addons/certificate-viewer/certificate-viewer-details/certificate-viewer-details.component.scss +49 -0
  12. package/addons/certificate-viewer/certificate-viewer-general/certificate-viewer-general.component.scss +38 -0
  13. package/addons/datagrid/README.md +289 -0
  14. package/addons/datagrid/addons/action-bar/datagrid-action-bar.component.scss +81 -0
  15. package/addons/datagrid/addons/column-toggle/datagrid-column-toggle.component.scss +99 -0
  16. package/addons/datagrid/addons/export/export-datagrid.component.scss +9 -0
  17. package/addons/datagrid/datagrid.component.scss +339 -0
  18. package/addons/datagrid-filters/README.md +223 -0
  19. package/addons/datagrid-filters/advanced-filters/date-time-filter.component.scss +10 -0
  20. package/addons/datagrid-filters/advanced-filters/enum-filter.component.scss +40 -0
  21. package/addons/datagrid-filters/advanced-filters/users-filter.component.scss +11 -0
  22. package/addons/datagrid-filters/common-styles.scss +98 -0
  23. package/addons/datagrid-filters/composite-filters.component.scss +26 -0
  24. package/addons/datagrid-filters/datagrid-filters.component.scss +22 -0
  25. package/addons/datagrid-filters/manage-filters/manage-filter.component.scss +42 -0
  26. package/addons/dialog/README.md +112 -0
  27. package/addons/dialog/multi-page-dialog.a11y.scss +203 -0
  28. package/addons/dialog/multi-page-dialog.component.scss +102 -0
  29. package/addons/dialog/toggle-component/toggle.component.scss +15 -0
  30. package/addons/drag-and-drop/README.md +48 -0
  31. package/addons/menu/menu.component.scss +120 -0
  32. package/addons/property-view/components/property-view-category.component.scss +38 -0
  33. package/addons/property-view/components/property-view-message.component.scss +48 -0
  34. package/addons/property-view/components/property-view-property.component.scss +122 -0
  35. package/addons/property-view/components/property-view-section.component.scss +59 -0
  36. package/addons/property-view/components/property-view.component.scss +23 -0
  37. package/addons/stepper/stepper.component.scss +53 -0
  38. package/addons/tabs/tab-links/tab-links.component.scss +61 -0
  39. package/addons/tabs/tabs.a11y.scss +26 -0
  40. package/addons/tabs/tabs.component.scss +95 -0
  41. package/addons/theme-builder/README.md +70 -0
  42. package/addons/theme-builder/theme-builder.component.scss +194 -0
  43. package/addons/translate/README.md +124 -0
  44. package/addons/var/debug/workflow-model-monitor.component.scss +50 -0
  45. package/addons/var/error/error.component.scss +38 -0
  46. package/addons/var/spinner/spinner.component.scss +33 -0
  47. package/addons/wizard/summary/summary.component.scss +22 -0
  48. package/addons/wizard/wizard.component.scss +251 -0
  49. package/button/_buttons.clarity.scss +388 -0
  50. package/button/_mixins.buttons.scss +241 -0
  51. package/button/_properties.buttons.scss +387 -0
  52. package/button/_properties.toggles.scss +35 -0
  53. package/button/_variables.buttons.scss +905 -0
  54. package/button/_variables.toggles.scss +41 -0
  55. package/button/button-group/_button-group.clarity.scss +202 -0
  56. package/collapsible-panel/_mixins.collapsible-panel.scss +189 -0
  57. package/collapsible-panel/_properties.collapsible-panel.scss +42 -0
  58. package/collapsible-panel/_variables.collapsible-panel.scss +40 -0
  59. package/data/_mixins.tables.scss +114 -0
  60. package/data/_properties.tables.scss +77 -0
  61. package/data/_tables.clarity.scss +120 -0
  62. package/data/_variables.tables.scss +42 -0
  63. package/data/datagrid/_datagrid.clarity.scss +1871 -0
  64. package/data/datagrid/_mixins.datagrid.scss +102 -0
  65. package/data/datagrid/_properties.datagrid.scss +98 -0
  66. package/data/datagrid/_variables.datagrid.scss +98 -0
  67. package/data/stack-view/_properties.stack-view.scss +50 -0
  68. package/data/stack-view/_stack-view.clarity.scss +267 -0
  69. package/data/stack-view/_variables.stack-view.scss +32 -0
  70. package/data/tree-view/_properties.tree-view.scss +41 -0
  71. package/data/tree-view/_tree-view.clarity.scss +281 -0
  72. package/data/tree-view/_variables.tree-view.scss +51 -0
  73. package/emphasis/alert/_alert.clarity.scss +467 -0
  74. package/emphasis/alert/_mixins.alert.scss +96 -0
  75. package/emphasis/alert/_properties.alert.scss +183 -0
  76. package/emphasis/alert/_variables.alert.scss +502 -0
  77. package/emphasis/badge/_badges.clarity.scss +61 -0
  78. package/emphasis/badge/_mixins.bades.scss +34 -0
  79. package/emphasis/badge/_properties.badges.scss +82 -0
  80. package/emphasis/badge/_variables.badges.scss +160 -0
  81. package/emphasis/label/_labels.clarity.scss +179 -0
  82. package/emphasis/label/_mixins.label.scss +77 -0
  83. package/emphasis/label/_properties.label.scss +105 -0
  84. package/emphasis/label/_variables.label.scss +181 -0
  85. package/fesm2022/hermes-ui-angular-accordion.mjs +355 -0
  86. package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -0
  87. package/fesm2022/hermes-ui-angular-addons-a11y.mjs +544 -0
  88. package/fesm2022/hermes-ui-angular-addons-a11y.mjs.map +1 -0
  89. package/fesm2022/hermes-ui-angular-addons-card-container.mjs +1082 -0
  90. package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -0
  91. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs +2520 -0
  92. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -0
  93. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs +2818 -0
  94. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -0
  95. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +3131 -0
  96. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -0
  97. package/fesm2022/hermes-ui-angular-addons-dialog.mjs +386 -0
  98. package/fesm2022/hermes-ui-angular-addons-dialog.mjs.map +1 -0
  99. package/fesm2022/hermes-ui-angular-addons-drag-and-drop.mjs +78 -0
  100. package/fesm2022/hermes-ui-angular-addons-drag-and-drop.mjs.map +1 -0
  101. package/fesm2022/hermes-ui-angular-addons-menu.mjs +559 -0
  102. package/fesm2022/hermes-ui-angular-addons-menu.mjs.map +1 -0
  103. package/fesm2022/hermes-ui-angular-addons-property-view.mjs +1142 -0
  104. package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -0
  105. package/fesm2022/hermes-ui-angular-addons-stepper.mjs +716 -0
  106. package/fesm2022/hermes-ui-angular-addons-stepper.mjs.map +1 -0
  107. package/fesm2022/hermes-ui-angular-addons-tabs.mjs +539 -0
  108. package/fesm2022/hermes-ui-angular-addons-tabs.mjs.map +1 -0
  109. package/fesm2022/hermes-ui-angular-addons-testing.mjs +2010 -0
  110. package/fesm2022/hermes-ui-angular-addons-testing.mjs.map +1 -0
  111. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs +922 -0
  112. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -0
  113. package/fesm2022/hermes-ui-angular-addons-translate.mjs +295 -0
  114. package/fesm2022/hermes-ui-angular-addons-translate.mjs.map +1 -0
  115. package/fesm2022/hermes-ui-angular-addons-var.mjs +2028 -0
  116. package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -0
  117. package/fesm2022/hermes-ui-angular-addons-wizard.mjs +610 -0
  118. package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -0
  119. package/fesm2022/hermes-ui-angular-addons-workflow-strings.mjs +121 -0
  120. package/fesm2022/hermes-ui-angular-addons-workflow-strings.mjs.map +1 -0
  121. package/fesm2022/hermes-ui-angular-addons-workflow.mjs +88 -0
  122. package/fesm2022/hermes-ui-angular-addons-workflow.mjs.map +1 -0
  123. package/fesm2022/hermes-ui-angular-button.mjs +719 -0
  124. package/fesm2022/hermes-ui-angular-button.mjs.map +1 -0
  125. package/fesm2022/hermes-ui-angular-collapsible-panel.mjs +201 -0
  126. package/fesm2022/hermes-ui-angular-collapsible-panel.mjs.map +1 -0
  127. package/fesm2022/hermes-ui-angular-data-datagrid.mjs +8045 -0
  128. package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -0
  129. package/fesm2022/hermes-ui-angular-data-stack-view.mjs +442 -0
  130. package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -0
  131. package/fesm2022/hermes-ui-angular-data-tree-view.mjs +1106 -0
  132. package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -0
  133. package/fesm2022/hermes-ui-angular-data.mjs +40 -0
  134. package/fesm2022/hermes-ui-angular-data.mjs.map +1 -0
  135. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs +624 -0
  136. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -0
  137. package/fesm2022/hermes-ui-angular-emphasis-badge.mjs +69 -0
  138. package/fesm2022/hermes-ui-angular-emphasis-badge.mjs.map +1 -0
  139. package/fesm2022/hermes-ui-angular-emphasis-common.mjs +25 -0
  140. package/fesm2022/hermes-ui-angular-emphasis-common.mjs.map +1 -0
  141. package/fesm2022/hermes-ui-angular-emphasis-label.mjs +105 -0
  142. package/fesm2022/hermes-ui-angular-emphasis-label.mjs.map +1 -0
  143. package/fesm2022/hermes-ui-angular-emphasis.mjs +41 -0
  144. package/fesm2022/hermes-ui-angular-emphasis.mjs.map +1 -0
  145. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +279 -0
  146. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -0
  147. package/fesm2022/hermes-ui-angular-forms-combobox.mjs +1775 -0
  148. package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -0
  149. package/fesm2022/hermes-ui-angular-forms-common.mjs +1251 -0
  150. package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -0
  151. package/fesm2022/hermes-ui-angular-forms-datalist.mjs +263 -0
  152. package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -0
  153. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +3274 -0
  154. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -0
  155. package/fesm2022/hermes-ui-angular-forms-file-input.mjs +826 -0
  156. package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -0
  157. package/fesm2022/hermes-ui-angular-forms-input.mjs +153 -0
  158. package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -0
  159. package/fesm2022/hermes-ui-angular-forms-native-select.mjs +153 -0
  160. package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -0
  161. package/fesm2022/hermes-ui-angular-forms-number-input.mjs +236 -0
  162. package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -0
  163. package/fesm2022/hermes-ui-angular-forms-password.mjs +233 -0
  164. package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -0
  165. package/fesm2022/hermes-ui-angular-forms-radio.mjs +224 -0
  166. package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -0
  167. package/fesm2022/hermes-ui-angular-forms-range.mjs +186 -0
  168. package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -0
  169. package/fesm2022/hermes-ui-angular-forms-select.mjs +606 -0
  170. package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -0
  171. package/fesm2022/hermes-ui-angular-forms-textarea.mjs +136 -0
  172. package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -0
  173. package/fesm2022/hermes-ui-angular-forms.mjs +105 -0
  174. package/fesm2022/hermes-ui-angular-forms.mjs.map +1 -0
  175. package/fesm2022/hermes-ui-angular-icon.mjs +7413 -0
  176. package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -0
  177. package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs +120 -0
  178. package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs.map +1 -0
  179. package/fesm2022/hermes-ui-angular-layout-main-container.mjs +100 -0
  180. package/fesm2022/hermes-ui-angular-layout-main-container.mjs.map +1 -0
  181. package/fesm2022/hermes-ui-angular-layout-nav.mjs +582 -0
  182. package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -0
  183. package/fesm2022/hermes-ui-angular-layout-tabs.mjs +807 -0
  184. package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -0
  185. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs +507 -0
  186. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -0
  187. package/fesm2022/hermes-ui-angular-layout.mjs +44 -0
  188. package/fesm2022/hermes-ui-angular-layout.mjs.map +1 -0
  189. package/fesm2022/hermes-ui-angular-modal.mjs +619 -0
  190. package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -0
  191. package/fesm2022/hermes-ui-angular-popover-common.mjs +1371 -0
  192. package/fesm2022/hermes-ui-angular-popover-common.mjs.map +1 -0
  193. package/fesm2022/hermes-ui-angular-popover-dropdown.mjs +492 -0
  194. package/fesm2022/hermes-ui-angular-popover-dropdown.mjs.map +1 -0
  195. package/fesm2022/hermes-ui-angular-popover-signpost.mjs +494 -0
  196. package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -0
  197. package/fesm2022/hermes-ui-angular-popover-tooltip.mjs +293 -0
  198. package/fesm2022/hermes-ui-angular-popover-tooltip.mjs.map +1 -0
  199. package/fesm2022/hermes-ui-angular-popover.mjs +41 -0
  200. package/fesm2022/hermes-ui-angular-popover.mjs.map +1 -0
  201. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs +217 -0
  202. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs.map +1 -0
  203. package/fesm2022/hermes-ui-angular-progress-spinner.mjs +132 -0
  204. package/fesm2022/hermes-ui-angular-progress-spinner.mjs.map +1 -0
  205. package/fesm2022/hermes-ui-angular-stepper.mjs +694 -0
  206. package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -0
  207. package/fesm2022/hermes-ui-angular-timeline.mjs +316 -0
  208. package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -0
  209. package/fesm2022/hermes-ui-angular-toast.mjs +373 -0
  210. package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -0
  211. package/fesm2022/hermes-ui-angular-utils-conditional.mjs +351 -0
  212. package/fesm2022/hermes-ui-angular-utils-conditional.mjs.map +1 -0
  213. package/fesm2022/hermes-ui-angular-utils-loading.mjs +107 -0
  214. package/fesm2022/hermes-ui-angular-utils-loading.mjs.map +1 -0
  215. package/fesm2022/hermes-ui-angular-utils.mjs +2086 -0
  216. package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -0
  217. package/fesm2022/hermes-ui-angular-wizard.mjs +3074 -0
  218. package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -0
  219. package/fesm2022/hermes-ui-angular.mjs +130 -0
  220. package/fesm2022/hermes-ui-angular.mjs.map +1 -0
  221. package/forms/combobox/_combobox.clarity.scss +330 -0
  222. package/forms/combobox/_properties.combobox.scss +46 -0
  223. package/forms/combobox/_variables.combobox.scss +32 -0
  224. package/forms/datepicker/_datepicker.clarity.scss +259 -0
  225. package/forms/datepicker/_mixins.datepicker.scss +89 -0
  226. package/forms/datepicker/_properties.datepicker.scss +46 -0
  227. package/forms/datepicker/_variables.datepicker.scss +74 -0
  228. package/forms/styles/_checkbox.clarity.scss +193 -0
  229. package/forms/styles/_containers.clarity.scss +230 -0
  230. package/forms/styles/_datalist.clarity.scss +47 -0
  231. package/forms/styles/_file-input.clarity.scss +134 -0
  232. package/forms/styles/_file.clarity.scss +52 -0
  233. package/forms/styles/_form.clarity.scss +87 -0
  234. package/forms/styles/_input-group.clarity.scss +126 -0
  235. package/forms/styles/_input.clarity.scss +83 -0
  236. package/forms/styles/_mixins.forms.scss +193 -0
  237. package/forms/styles/_native-select.clarity.scss +178 -0
  238. package/forms/styles/_number-input.clarity.scss +58 -0
  239. package/forms/styles/_password.clarity.scss +26 -0
  240. package/forms/styles/_properties.forms.scss +180 -0
  241. package/forms/styles/_radio.clarity.scss +120 -0
  242. package/forms/styles/_range.clarity.scss +124 -0
  243. package/forms/styles/_select.clarity.scss +158 -0
  244. package/forms/styles/_textarea.clarity.scss +71 -0
  245. package/forms/styles/_toggles.clarity.scss +209 -0
  246. package/forms/styles/_variables.forms.scss +156 -0
  247. package/hermes-ui.scss +7 -0
  248. package/icon/icon.component.scss +247 -0
  249. package/image/_icons.clarity.scss +101 -0
  250. package/image/_images.clarity.scss +42 -0
  251. package/image/_mixins.images.scss +11 -0
  252. package/layout/_card.clarity.scss +318 -0
  253. package/layout/_login.clarity.scss +240 -0
  254. package/layout/_properties.card.scss +39 -0
  255. package/layout/_properties.login.scss +32 -0
  256. package/layout/_variables.card.scss +24 -0
  257. package/layout/_variables.login.scss +22 -0
  258. package/layout/breadcrumbs/_breadcrumbs.clarity.scss +60 -0
  259. package/layout/breadcrumbs/_properties.breadcrumbs.scss +18 -0
  260. package/layout/breadcrumbs/_variables.breadcrumbs.scss +11 -0
  261. package/layout/grid/_grid.scss +23 -0
  262. package/layout/grid/grid/_grid.scss +39 -0
  263. package/layout/grid/mixins/_breakpoint.scss +83 -0
  264. package/layout/grid/mixins/_clearfix.scss +13 -0
  265. package/layout/grid/mixins/_grid-framework.scss +91 -0
  266. package/layout/grid/mixins/_grid.scss +39 -0
  267. package/layout/grid/utilities/_align.scss +30 -0
  268. package/layout/grid/utilities/_clearfix.scss +12 -0
  269. package/layout/grid/utilities/_display.scss +18 -0
  270. package/layout/grid/utilities/_flex.scss +222 -0
  271. package/layout/grid/utilities/_float.scss +26 -0
  272. package/layout/grid/utilities/_visibility.scss +60 -0
  273. package/layout/main-container/_layout.clarity.scss +87 -0
  274. package/layout/main-container/_properties.header.scss +55 -0
  275. package/layout/main-container/_variables.header.scss +32 -0
  276. package/layout/nav/_header.clarity.scss +40 -0
  277. package/layout/nav/_links.clarity.scss +84 -0
  278. package/layout/nav/_mixins.header.scss +332 -0
  279. package/layout/nav/_mixins.responsive-nav.scss +75 -0
  280. package/layout/nav/_nav.clarity.scss +100 -0
  281. package/layout/nav/_properties.nav.scss +27 -0
  282. package/layout/nav/_properties.responsive-nav.scss +23 -0
  283. package/layout/nav/_properties.subnav.scss +19 -0
  284. package/layout/nav/_responsive-nav.clarity.scss +490 -0
  285. package/layout/nav/_subnav.clarity.scss +48 -0
  286. package/layout/nav/_variables.nav.scss +13 -0
  287. package/layout/nav/_variables.responsive-nav.scss +28 -0
  288. package/layout/nav/_variables.subnav.scss +21 -0
  289. package/layout/tabs/_mixins.tabs.scss +41 -0
  290. package/layout/tabs/_properties.tabs.scss +25 -0
  291. package/layout/tabs/_tabs.clarity.scss +110 -0
  292. package/layout/tabs/_variables.tabs.scss +17 -0
  293. package/layout/vertical-nav/_mixins.vertical-nav.scss +52 -0
  294. package/layout/vertical-nav/_properties.vertical-nav.scss +73 -0
  295. package/layout/vertical-nav/_variables.vertical-nav.scss +52 -0
  296. package/layout/vertical-nav/_vertical-nav.clarity.scss +469 -0
  297. package/main.scss +14 -0
  298. package/modal/_modal.clarity.scss +379 -0
  299. package/modal/_properties.modal.scss +57 -0
  300. package/modal/_variables.modal.scss +41 -0
  301. package/package.json +325 -0
  302. package/popover/common/README.md +112 -0
  303. package/popover/common/_popover.clarity.scss +28 -0
  304. package/popover/dropdown/_dropdown.clarity.scss +326 -0
  305. package/popover/dropdown/_menu-mixins.clarity.scss +132 -0
  306. package/popover/dropdown/_properties.dropdown.scss +50 -0
  307. package/popover/dropdown/_variables.dropdown.scss +36 -0
  308. package/popover/signpost/_properties.signpost.scss +34 -0
  309. package/popover/signpost/_signposts.clarity.scss +414 -0
  310. package/popover/signpost/_variables.signpost.scss +21 -0
  311. package/popover/tooltip/_mixins.tooltip.scss +186 -0
  312. package/popover/tooltip/_properties.tooltip.scss +28 -0
  313. package/popover/tooltip/_tooltips.clarity.scss +122 -0
  314. package/popover/tooltip/_variables.tooltip.scss +20 -0
  315. package/progress/progress-bars/_progress-bars.clarity.scss +616 -0
  316. package/progress/progress-bars/_properties.progress-bars.scss +24 -0
  317. package/progress/progress-bars/_variables.progress-bars.scss +15 -0
  318. package/progress/progress-bars/utils/_mixins.clarity.scss +18 -0
  319. package/progress/spinner/_mixins.spinner.scss +30 -0
  320. package/progress/spinner/_properties.spinner.scss +37 -0
  321. package/progress/spinner/_spinner.clarity.scss +148 -0
  322. package/progress/spinner/_variables.spinner.scss +25 -0
  323. package/schematics/collection.json +14 -0
  324. package/stepper/_properties.stepper.scss +29 -0
  325. package/stepper/_stepper.clarity.scss +184 -0
  326. package/stepper/_variables.stepper.scss +13 -0
  327. package/styles/_a11y.scss +14 -0
  328. package/styles/_close.clarity.scss +60 -0
  329. package/styles/_components.clarity.scss +189 -0
  330. package/styles/_mixins.scss +460 -0
  331. package/styles/_normalize.scss +292 -0
  332. package/styles/_reboot.clarity.scss +374 -0
  333. package/styles/_variables.clarity.scss +139 -0
  334. package/styles/core/base/base.element.scss +97 -0
  335. package/styles/core/global.scss +12 -0
  336. package/styles/core/layout/_alignments.scss +18 -0
  337. package/styles/core/layout/_container.scss +29 -0
  338. package/styles/core/layout/_display.scss +58 -0
  339. package/styles/core/layout/_optimize.scss +60 -0
  340. package/styles/core/layout/_shadow-dom.scss +47 -0
  341. package/styles/core/layout/_spacing.scss +31 -0
  342. package/styles/core/layout/_type-grid.scss +66 -0
  343. package/styles/core/layout/_type-horizontal.scss +33 -0
  344. package/styles/core/layout/_type-vertical.scss +26 -0
  345. package/styles/core/layout/mixins/_mixins.alignment.scss +35 -0
  346. package/styles/core/layout/mixins/_mixins.display.scss +23 -0
  347. package/styles/core/layout/mixins/_mixins.grid.scss +105 -0
  348. package/styles/core/layout/mixins/_mixins.scss +106 -0
  349. package/styles/core/layout/mixins/_mixins.shadow-dom.scss +106 -0
  350. package/styles/core/layout/mixins/_mixins.type-horizontal.scss +113 -0
  351. package/styles/core/layout/mixins/_mixins.type-vertical.scss +108 -0
  352. package/styles/core/module.layout.scss +22 -0
  353. package/styles/core/module.reset.scss +48 -0
  354. package/styles/core/module.typography.scss +9 -0
  355. package/styles/core/theme.dark.scss +298 -0
  356. package/styles/core/theme.high-contrast.scss +42 -0
  357. package/styles/core/theme.low-motion.scss +20 -0
  358. package/styles/core/tokens/_alias-interaction.scss +74 -0
  359. package/styles/core/tokens/_alias-object-background.scss +29 -0
  360. package/styles/core/tokens/_alias-object-border.scss +21 -0
  361. package/styles/core/tokens/_alias-object-container.scss +20 -0
  362. package/styles/core/tokens/_alias-object-opacity.scss +15 -0
  363. package/styles/core/tokens/_alias-object-shadow.scss +17 -0
  364. package/styles/core/tokens/_alias-primary.scss +21 -0
  365. package/styles/core/tokens/_alias-status.scss +40 -0
  366. package/styles/core/tokens/_alias-typography.scss +107 -0
  367. package/styles/core/tokens/_alias-utility.scss +42 -0
  368. package/styles/core/tokens/_alias-viz-colors.scss +170 -0
  369. package/styles/core/tokens/_global-animation.scss +32 -0
  370. package/styles/core/tokens/_global-colors.scss +249 -0
  371. package/styles/core/tokens/_global-space.scss +52 -0
  372. package/styles/core/tokens/_internal-scale.scss +14 -0
  373. package/styles/core/tokens/_properties.tokens.scss +22 -0
  374. package/styles/core/tokens/_variables.tokens.scss +787 -0
  375. package/styles/core/typography/_legacy-typography.scss +328 -0
  376. package/styles/core/typography/_mixins.typography.scss +18 -0
  377. package/styles/core/typography/_typography.scss +328 -0
  378. package/styles/variables/_properties.density.scss +225 -0
  379. package/styles/variables/_properties.global.scss +51 -0
  380. package/styles/variables/_properties.layout.scss +21 -0
  381. package/styles/variables/_properties.scss +11 -0
  382. package/styles/variables/_properties.typography.scss +164 -0
  383. package/styles/variables/_variables.density.scss +116 -0
  384. package/styles/variables/_variables.global.scss +87 -0
  385. package/styles/variables/_variables.layout.scss +37 -0
  386. package/styles/variables/_variables.scss +11 -0
  387. package/styles/variables/_variables.typography.scss +156 -0
  388. package/timeline/_properties.timeline.scss +38 -0
  389. package/timeline/_timeline.clarity.scss +172 -0
  390. package/timeline/_variables.timeline.scss +29 -0
  391. package/toast/README.md +65 -0
  392. package/toast/_properties.toast.scss +56 -0
  393. package/toast/_toast.clarity.scss +190 -0
  394. package/toast/_variables.toast.scss +33 -0
  395. package/types/hermes-ui-angular-accordion.d.ts +101 -0
  396. package/types/hermes-ui-angular-accordion.d.ts.map +1 -0
  397. package/types/hermes-ui-angular-addons-a11y.d.ts +187 -0
  398. package/types/hermes-ui-angular-addons-a11y.d.ts.map +1 -0
  399. package/types/hermes-ui-angular-addons-card-container.d.ts +482 -0
  400. package/types/hermes-ui-angular-addons-card-container.d.ts.map +1 -0
  401. package/types/hermes-ui-angular-addons-certificate-viewer.d.ts +404 -0
  402. package/types/hermes-ui-angular-addons-certificate-viewer.d.ts.map +1 -0
  403. package/types/hermes-ui-angular-addons-datagrid-filters.d.ts +911 -0
  404. package/types/hermes-ui-angular-addons-datagrid-filters.d.ts.map +1 -0
  405. package/types/hermes-ui-angular-addons-datagrid.d.ts +1529 -0
  406. package/types/hermes-ui-angular-addons-datagrid.d.ts.map +1 -0
  407. package/types/hermes-ui-angular-addons-dialog.d.ts +233 -0
  408. package/types/hermes-ui-angular-addons-dialog.d.ts.map +1 -0
  409. package/types/hermes-ui-angular-addons-drag-and-drop.d.ts +35 -0
  410. package/types/hermes-ui-angular-addons-drag-and-drop.d.ts.map +1 -0
  411. package/types/hermes-ui-angular-addons-menu.d.ts +197 -0
  412. package/types/hermes-ui-angular-addons-menu.d.ts.map +1 -0
  413. package/types/hermes-ui-angular-addons-property-view.d.ts +387 -0
  414. package/types/hermes-ui-angular-addons-property-view.d.ts.map +1 -0
  415. package/types/hermes-ui-angular-addons-stepper.d.ts +298 -0
  416. package/types/hermes-ui-angular-addons-stepper.d.ts.map +1 -0
  417. package/types/hermes-ui-angular-addons-tabs.d.ts +173 -0
  418. package/types/hermes-ui-angular-addons-tabs.d.ts.map +1 -0
  419. package/types/hermes-ui-angular-addons-testing.d.ts +592 -0
  420. package/types/hermes-ui-angular-addons-testing.d.ts.map +1 -0
  421. package/types/hermes-ui-angular-addons-theme-builder.d.ts +200 -0
  422. package/types/hermes-ui-angular-addons-theme-builder.d.ts.map +1 -0
  423. package/types/hermes-ui-angular-addons-translate.d.ts +149 -0
  424. package/types/hermes-ui-angular-addons-translate.d.ts.map +1 -0
  425. package/types/hermes-ui-angular-addons-var.d.ts +923 -0
  426. package/types/hermes-ui-angular-addons-var.d.ts.map +1 -0
  427. package/types/hermes-ui-angular-addons-wizard.d.ts +241 -0
  428. package/types/hermes-ui-angular-addons-wizard.d.ts.map +1 -0
  429. package/types/hermes-ui-angular-addons-workflow-strings.d.ts +124 -0
  430. package/types/hermes-ui-angular-addons-workflow-strings.d.ts.map +1 -0
  431. package/types/hermes-ui-angular-addons-workflow.d.ts +15 -0
  432. package/types/hermes-ui-angular-addons-workflow.d.ts.map +1 -0
  433. package/types/hermes-ui-angular-button.d.ts +170 -0
  434. package/types/hermes-ui-angular-button.d.ts.map +1 -0
  435. package/types/hermes-ui-angular-collapsible-panel.d.ts +74 -0
  436. package/types/hermes-ui-angular-collapsible-panel.d.ts.map +1 -0
  437. package/types/hermes-ui-angular-data-datagrid.d.ts +1938 -0
  438. package/types/hermes-ui-angular-data-datagrid.d.ts.map +1 -0
  439. package/types/hermes-ui-angular-data-stack-view.d.ts +88 -0
  440. package/types/hermes-ui-angular-data-stack-view.d.ts.map +1 -0
  441. package/types/hermes-ui-angular-data-tree-view.d.ts +230 -0
  442. package/types/hermes-ui-angular-data-tree-view.d.ts.map +1 -0
  443. package/types/hermes-ui-angular-data.d.ts +16 -0
  444. package/types/hermes-ui-angular-data.d.ts.map +1 -0
  445. package/types/hermes-ui-angular-emphasis-alert.d.ts +176 -0
  446. package/types/hermes-ui-angular-emphasis-alert.d.ts.map +1 -0
  447. package/types/hermes-ui-angular-emphasis-badge.d.ts +26 -0
  448. package/types/hermes-ui-angular-emphasis-badge.d.ts.map +1 -0
  449. package/types/hermes-ui-angular-emphasis-common.d.ts +7 -0
  450. package/types/hermes-ui-angular-emphasis-common.d.ts.map +1 -0
  451. package/types/hermes-ui-angular-emphasis-label.d.ts +30 -0
  452. package/types/hermes-ui-angular-emphasis-label.d.ts.map +1 -0
  453. package/types/hermes-ui-angular-emphasis.d.ts +16 -0
  454. package/types/hermes-ui-angular-emphasis.d.ts.map +1 -0
  455. package/types/hermes-ui-angular-forms-checkbox.d.ts +73 -0
  456. package/types/hermes-ui-angular-forms-checkbox.d.ts.map +1 -0
  457. package/types/hermes-ui-angular-forms-combobox.d.ts +354 -0
  458. package/types/hermes-ui-angular-forms-combobox.d.ts.map +1 -0
  459. package/types/hermes-ui-angular-forms-common.d.ts +340 -0
  460. package/types/hermes-ui-angular-forms-common.d.ts.map +1 -0
  461. package/types/hermes-ui-angular-forms-datalist.d.ts +60 -0
  462. package/types/hermes-ui-angular-forms-datalist.d.ts.map +1 -0
  463. package/types/hermes-ui-angular-forms-datepicker.d.ts +987 -0
  464. package/types/hermes-ui-angular-forms-datepicker.d.ts.map +1 -0
  465. package/types/hermes-ui-angular-forms-file-input.d.ts +194 -0
  466. package/types/hermes-ui-angular-forms-file-input.d.ts.map +1 -0
  467. package/types/hermes-ui-angular-forms-input.d.ts +30 -0
  468. package/types/hermes-ui-angular-forms-input.d.ts.map +1 -0
  469. package/types/hermes-ui-angular-forms-native-select.d.ts +37 -0
  470. package/types/hermes-ui-angular-forms-native-select.d.ts.map +1 -0
  471. package/types/hermes-ui-angular-forms-number-input.d.ts +44 -0
  472. package/types/hermes-ui-angular-forms-number-input.d.ts.map +1 -0
  473. package/types/hermes-ui-angular-forms-password.d.ts +53 -0
  474. package/types/hermes-ui-angular-forms-password.d.ts.map +1 -0
  475. package/types/hermes-ui-angular-forms-radio.d.ts +50 -0
  476. package/types/hermes-ui-angular-forms-radio.d.ts.map +1 -0
  477. package/types/hermes-ui-angular-forms-range.d.ts +38 -0
  478. package/types/hermes-ui-angular-forms-range.d.ts.map +1 -0
  479. package/types/hermes-ui-angular-forms-select.d.ts +211 -0
  480. package/types/hermes-ui-angular-forms-select.d.ts.map +1 -0
  481. package/types/hermes-ui-angular-forms-textarea.d.ts +30 -0
  482. package/types/hermes-ui-angular-forms-textarea.d.ts.map +1 -0
  483. package/types/hermes-ui-angular-forms.d.ts +39 -0
  484. package/types/hermes-ui-angular-forms.d.ts.map +1 -0
  485. package/types/hermes-ui-angular-icon.d.ts +1504 -0
  486. package/types/hermes-ui-angular-icon.d.ts.map +1 -0
  487. package/types/hermes-ui-angular-layout-breadcrumbs.d.ts +46 -0
  488. package/types/hermes-ui-angular-layout-breadcrumbs.d.ts.map +1 -0
  489. package/types/hermes-ui-angular-layout-main-container.d.ts +29 -0
  490. package/types/hermes-ui-angular-layout-main-container.d.ts.map +1 -0
  491. package/types/hermes-ui-angular-layout-nav.d.ts +143 -0
  492. package/types/hermes-ui-angular-layout-nav.d.ts.map +1 -0
  493. package/types/hermes-ui-angular-layout-tabs.d.ts +159 -0
  494. package/types/hermes-ui-angular-layout-tabs.d.ts.map +1 -0
  495. package/types/hermes-ui-angular-layout-vertical-nav.d.ts +129 -0
  496. package/types/hermes-ui-angular-layout-vertical-nav.d.ts.map +1 -0
  497. package/types/hermes-ui-angular-layout.d.ts +20 -0
  498. package/types/hermes-ui-angular-layout.d.ts.map +1 -0
  499. package/types/hermes-ui-angular-modal.d.ts +161 -0
  500. package/types/hermes-ui-angular-modal.d.ts.map +1 -0
  501. package/types/hermes-ui-angular-popover-common.d.ts +317 -0
  502. package/types/hermes-ui-angular-popover-common.d.ts.map +1 -0
  503. package/types/hermes-ui-angular-popover-dropdown.d.ts +124 -0
  504. package/types/hermes-ui-angular-popover-dropdown.d.ts.map +1 -0
  505. package/types/hermes-ui-angular-popover-signpost.d.ts +158 -0
  506. package/types/hermes-ui-angular-popover-signpost.d.ts.map +1 -0
  507. package/types/hermes-ui-angular-popover-tooltip.d.ts +84 -0
  508. package/types/hermes-ui-angular-popover-tooltip.d.ts.map +1 -0
  509. package/types/hermes-ui-angular-popover.d.ts +17 -0
  510. package/types/hermes-ui-angular-popover.d.ts.map +1 -0
  511. package/types/hermes-ui-angular-progress-progress-bars.d.ts +58 -0
  512. package/types/hermes-ui-angular-progress-progress-bars.d.ts.map +1 -0
  513. package/types/hermes-ui-angular-progress-spinner.d.ts +45 -0
  514. package/types/hermes-ui-angular-progress-spinner.d.ts.map +1 -0
  515. package/types/hermes-ui-angular-stepper.d.ts +180 -0
  516. package/types/hermes-ui-angular-stepper.d.ts.map +1 -0
  517. package/types/hermes-ui-angular-timeline.d.ts +87 -0
  518. package/types/hermes-ui-angular-timeline.d.ts.map +1 -0
  519. package/types/hermes-ui-angular-toast.d.ts +131 -0
  520. package/types/hermes-ui-angular-toast.d.ts.map +1 -0
  521. package/types/hermes-ui-angular-utils-conditional.d.ts +133 -0
  522. package/types/hermes-ui-angular-utils-conditional.d.ts.map +1 -0
  523. package/types/hermes-ui-angular-utils-loading.d.ts +39 -0
  524. package/types/hermes-ui-angular-utils-loading.d.ts.map +1 -0
  525. package/types/hermes-ui-angular-utils.d.ts +914 -0
  526. package/types/hermes-ui-angular-utils.d.ts.map +1 -0
  527. package/types/hermes-ui-angular-wizard.d.ts +1509 -0
  528. package/types/hermes-ui-angular-wizard.d.ts.map +1 -0
  529. package/types/hermes-ui-angular.d.ts +44 -0
  530. package/types/hermes-ui-angular.d.ts.map +1 -0
  531. package/typography/_code.scss +36 -0
  532. package/typography/_font-metropolis.scss +45 -0
  533. package/typography/_lists.scss +81 -0
  534. package/typography/_typography.scss +322 -0
  535. package/utils/animations/_animations.clarity.scss +44 -0
  536. package/utils/animations/_mixins.animations.scss +33 -0
  537. package/wizard/_properties.wizard.scss +54 -0
  538. package/wizard/_variables.wizard.scss +59 -0
  539. package/wizard/_wizard.clarity.scss +692 -0
@@ -0,0 +1,2010 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Component, Input, ViewContainerRef, ViewChild, ElementRef, EventEmitter, Output, Directive, Pipe, Injectable, NgModule } from '@angular/core';
3
+ import { ReplaySubject, of } from 'rxjs';
4
+ import { By } from '@angular/platform-browser';
5
+ import { HermesDatagrid } from '@hermes-ui/angular/data/datagrid';
6
+ import { FilterMode } from '@hermes-ui/angular/addons/datagrid-filters';
7
+ import { PropertyViewStrings, PropertyViewModelType } from '@hermes-ui/angular/addons/property-view';
8
+ import { HermesTabs } from '@hermes-ui/angular/layout/tabs';
9
+ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
10
+ import { StepValidationState } from '@hermes-ui/angular/addons/var';
11
+ import { tap } from 'rxjs/operators';
12
+
13
+ /*
14
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
15
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
16
+ * This software is released under MIT license.
17
+ * The full license information can be found in LICENSE in the root directory of this project.
18
+ */
19
+ class MockRequiredFieldLegendComponent {
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockRequiredFieldLegendComponent, isStandalone: false, selector: "appfx-required-field-legend", ngImport: i0, template: ``, isInline: true }); }
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendComponent, decorators: [{
24
+ type: Component,
25
+ args: [{
26
+ selector: 'appfx-required-field-legend',
27
+ standalone: false,
28
+ template: ``,
29
+ }]
30
+ }] });
31
+ class MockRequiredFieldLegendStandaloneComponent extends MockRequiredFieldLegendComponent {
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
33
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockRequiredFieldLegendStandaloneComponent, isStandalone: true, selector: "appfx-required-field-legend", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockRequiredFieldLegendStandaloneComponent, decorators: [{
36
+ type: Component,
37
+ args: [{
38
+ selector: 'appfx-required-field-legend',
39
+ standalone: true,
40
+ template: ``,
41
+ }]
42
+ }] });
43
+
44
+ /*
45
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
46
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
47
+ * This software is released under MIT license.
48
+ * The full license information can be found in LICENSE in the root directory of this project.
49
+ */
50
+ class ZoomLevelServiceMock {
51
+ constructor() {
52
+ this.resizeSubject = new ReplaySubject(1);
53
+ this.onChange = this.resizeSubject.asObservable();
54
+ }
55
+ }
56
+
57
+ /*
58
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
59
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
60
+ * This software is released under MIT license.
61
+ * The full license information can be found in LICENSE in the root directory of this project.
62
+ */
63
+
64
+ /*
65
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
66
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
67
+ * This software is released under MIT license.
68
+ * The full license information can be found in LICENSE in the root directory of this project.
69
+ */
70
+ class MockAppfxCardContainerComponent {
71
+ constructor() {
72
+ this.cards = [];
73
+ this.showCardContainerSettings = true;
74
+ this.dragDropEnabled = true;
75
+ }
76
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
77
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxCardContainerComponent, isStandalone: false, selector: "appfx-card-container", inputs: { containerId: "containerId", cards: "cards", persistenceStore: "persistenceStore", showCardContainerSettings: "showCardContainerSettings", dragDropEnabled: "dragDropEnabled" }, ngImport: i0, template: '', isInline: true }); }
78
+ }
79
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerComponent, decorators: [{
80
+ type: Component,
81
+ args: [{
82
+ selector: 'appfx-card-container',
83
+ standalone: false,
84
+ template: '',
85
+ }]
86
+ }], propDecorators: { containerId: [{
87
+ type: Input
88
+ }], cards: [{
89
+ type: Input
90
+ }], persistenceStore: [{
91
+ type: Input
92
+ }], showCardContainerSettings: [{
93
+ type: Input
94
+ }], dragDropEnabled: [{
95
+ type: Input
96
+ }] } });
97
+ class MockAppfxCardContainerStandaloneComponent extends MockAppfxCardContainerComponent {
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxCardContainerStandaloneComponent, isStandalone: true, selector: "appfx-card-container", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
100
+ }
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxCardContainerStandaloneComponent, decorators: [{
102
+ type: Component,
103
+ args: [{
104
+ selector: 'appfx-card-container',
105
+ standalone: true,
106
+ template: '',
107
+ }]
108
+ }] });
109
+
110
+ /*
111
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
112
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
113
+ * This software is released under MIT license.
114
+ * The full license information can be found in LICENSE in the root directory of this project.
115
+ */
116
+ // mock for container service
117
+ class MockContainerService {
118
+ getCardOrder() { }
119
+ moveCard() { }
120
+ getVisibleCardsCount() { }
121
+ }
122
+ // mock for A11y service
123
+ class MockA11yService {
124
+ isSelected() { }
125
+ isDraggableOver() { }
126
+ selectCard() { }
127
+ moveDropPosition() { }
128
+ }
129
+ // mock for DragDrop service
130
+ class MockDragDropService {
131
+ onDragStart() { }
132
+ onDragDrop() { }
133
+ }
134
+ // mock for Layout service
135
+ class MockLayoutService {
136
+ updateCardSize() { }
137
+ }
138
+ // Renderer2 Mock
139
+ class MockRenderer2 {
140
+ setStyle(el, name, style) {
141
+ el[name] = style;
142
+ }
143
+ removeStyle(el, name) {
144
+ el[name] = null;
145
+ }
146
+ }
147
+ // Mock Card Container for ViewContainerRef
148
+ class MockCardContainerComponent {
149
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockCardContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
150
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockCardContainerComponent, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "cardContainer", first: true, predicate: ["cardContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
151
+ <div class="scrollable">
152
+ <div>
153
+ <ng-template #cardContainer></ng-template>
154
+ </div>
155
+ </div>
156
+ `, isInline: true, styles: [".scrollable{overflow:auto;position:absolute;inset:0;max-height:20px}\n"] }); }
157
+ }
158
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockCardContainerComponent, decorators: [{
159
+ type: Component,
160
+ args: [{ standalone: false, template: `
161
+ <div class="scrollable">
162
+ <div>
163
+ <ng-template #cardContainer></ng-template>
164
+ </div>
165
+ </div>
166
+ `, styles: [".scrollable{overflow:auto;position:absolute;inset:0;max-height:20px}\n"] }]
167
+ }], propDecorators: { cardContainer: [{
168
+ type: ViewChild,
169
+ args: ['cardContainer', { read: ViewContainerRef, static: true }]
170
+ }] } });
171
+ // Sample Card to test scenarios
172
+ class SampleCardComponent {
173
+ constructor(el) {
174
+ this.eleRef = el;
175
+ }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
177
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
178
+ <div class="card">
179
+ <div class="card-header">
180
+ <div class="card-title">Sample Card</div>
181
+ </div>
182
+ <div class="card-block"></div>
183
+ <div class="card-footer"></div>
184
+ </div>
185
+ `, isInline: true }); }
186
+ }
187
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardComponent, decorators: [{
188
+ type: Component,
189
+ args: [{
190
+ standalone: false,
191
+ template: `
192
+ <div class="card">
193
+ <div class="card-header">
194
+ <div class="card-title">Sample Card</div>
195
+ </div>
196
+ <div class="card-block"></div>
197
+ <div class="card-footer"></div>
198
+ </div>
199
+ `,
200
+ }]
201
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
202
+ // Sample Card to without footer test scenarios
203
+ class SampleCardWithoutFooterComponent {
204
+ constructor(el) {
205
+ this.eleRef = el;
206
+ }
207
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutFooterComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
208
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardWithoutFooterComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
209
+ <div class="card">
210
+ <div class="card-header">
211
+ <div class="card-title">Sample Card</div>
212
+ </div>
213
+ <div class="card-block"></div>
214
+ </div>
215
+ `, isInline: true }); }
216
+ }
217
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutFooterComponent, decorators: [{
218
+ type: Component,
219
+ args: [{
220
+ standalone: false,
221
+ template: `
222
+ <div class="card">
223
+ <div class="card-header">
224
+ <div class="card-title">Sample Card</div>
225
+ </div>
226
+ <div class="card-block"></div>
227
+ </div>
228
+ `,
229
+ }]
230
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
231
+ // Sample Card to without header test scenarios
232
+ class SampleCardWithoutHeaderComponent {
233
+ constructor(el) {
234
+ this.eleRef = el;
235
+ }
236
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutHeaderComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
237
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: SampleCardWithoutHeaderComponent, isStandalone: false, selector: "ng-component", ngImport: i0, template: `
238
+ <div class="card">
239
+ <div class="card-block">
240
+ <div class="card-title">Sample Card</div>
241
+ </div>
242
+ <div class="card-footer"></div>
243
+ </div>
244
+ `, isInline: true }); }
245
+ }
246
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SampleCardWithoutHeaderComponent, decorators: [{
247
+ type: Component,
248
+ args: [{
249
+ standalone: false,
250
+ template: `
251
+ <div class="card">
252
+ <div class="card-block">
253
+ <div class="card-title">Sample Card</div>
254
+ </div>
255
+ <div class="card-footer"></div>
256
+ </div>
257
+ `,
258
+ }]
259
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
260
+ // mock element ref
261
+ class MockElementRef extends ElementRef {
262
+ constructor() {
263
+ super(...arguments);
264
+ this.nativeElement = {
265
+ querySelector: () => { },
266
+ };
267
+ }
268
+ }
269
+ // sort function to display cards by sorted titles
270
+ const sortCardsFn = (a, b) => {
271
+ if (a.title && b.title) {
272
+ return a.title.localeCompare(b.title);
273
+ }
274
+ return 0;
275
+ };
276
+ // sample cards for unit tests
277
+ const sampleCards = [
278
+ {
279
+ id: 'sample-card-1',
280
+ title: 'Sample Card 1',
281
+ componentClass: SampleCardComponent,
282
+ hidden: false,
283
+ order: 0,
284
+ view: undefined,
285
+ },
286
+ {
287
+ id: 'sample-card-2',
288
+ title: 'Sample Card 2',
289
+ componentClass: SampleCardComponent,
290
+ hidden: false,
291
+ canHide: false,
292
+ order: 1,
293
+ view: undefined,
294
+ },
295
+ {
296
+ id: 'sample-card-3',
297
+ title: 'Sample Card 3',
298
+ componentClass: SampleCardComponent,
299
+ hidden: false,
300
+ canHide: false,
301
+ order: 5,
302
+ view: undefined,
303
+ },
304
+ ];
305
+ // sample card settings
306
+ const sampleCardsSettings = [
307
+ {
308
+ id: 'sample-card-1',
309
+ hidden: false,
310
+ order: 0,
311
+ },
312
+ {
313
+ id: 'sample-card-2',
314
+ hidden: true,
315
+ order: 2,
316
+ },
317
+ {
318
+ id: 'sample-card-3',
319
+ hidden: false,
320
+ order: 5,
321
+ },
322
+ ];
323
+ // card to order mapping
324
+ const cardIdToOrder = {
325
+ cardWithDefaultOrder: Infinity,
326
+ [sampleCards[0].id]: 0,
327
+ [sampleCards[1].id]: 1,
328
+ [sampleCards[2].id]: 2,
329
+ };
330
+
331
+ /*
332
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
333
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
334
+ * This software is released under MIT license.
335
+ * The full license information can be found in LICENSE in the root directory of this project.
336
+ */
337
+
338
+ /*
339
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
340
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
341
+ * This software is released under MIT license.
342
+ * The full license information can be found in LICENSE in the root directory of this project.
343
+ */
344
+ class MockAppfxDatagridComponent {
345
+ constructor() {
346
+ this.detailState = null;
347
+ this.selectedItemsChange = new EventEmitter();
348
+ this.gridItemsChange = new EventEmitter();
349
+ this.selectionChange = new EventEmitter();
350
+ this.searchTermChange = new EventEmitter();
351
+ this.refreshGridData = new EventEmitter();
352
+ this.refreshVirtualGridData = new EventEmitter();
353
+ this.actionClick = new EventEmitter();
354
+ this.rowActionMenuOpenChange = new EventEmitter();
355
+ this.exportDataEvent = new EventEmitter();
356
+ this.detailStateChange = new EventEmitter(true);
357
+ }
358
+ onModelChange() { }
359
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDatagridComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
360
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDatagridComponent, isStandalone: false, selector: "appfx-datagrid", inputs: { gridItems: "gridItems", columns: "columns", layoutModel: "layoutModel", footerModel: "footerModel", pageSize: "pageSize", pageSizeOptions: "pageSizeOptions", totalItems: "totalItems", selectionType: "selectionType", selectedItems: "selectedItems", datagridLabels: "datagridLabels", preSelectFirstItem: "preSelectFirstItem", rowSelectionMode: "rowSelectionMode", actionBarActions: "actionBarActions", showFooter: "showFooter", singleRowActions: "singleRowActions", noItemsFoundPlaceholder: "noItemsFoundPlaceholder", loading: "loading", serverDrivenDatagrid: "serverDrivenDatagrid", filterMode: "filterMode", listItemsCount: "listItemsCount", trackByGridItemProperty: "trackByGridItemProperty", isRowLocked: "isRowLocked", detailHeader: "detailHeader", detailBody: "detailBody", rowDetailContent: "rowDetailContent", rowsExpandedByDefault: "rowsExpandedByDefault", vscPersistDatagridSettings: "vscPersistDatagridSettings", detailState: "detailState", trackByFunction: "trackByFunction", virtualScrolling: "virtualScrolling", dataRange: "dataRange" }, outputs: { selectedItemsChange: "selectedItemsChange", gridItemsChange: "gridItemsChange", selectionChange: "selectionChange", searchTermChange: "searchTermChange", refreshGridData: "refreshGridData", refreshVirtualGridData: "refreshVirtualGridData", actionClick: "actionClick", rowActionMenuOpenChange: "rowActionMenuOpenChange", exportDataEvent: "exportDataEvent", detailStateChange: "detailStateChange" }, ngImport: i0, template: ``, isInline: true }); }
361
+ }
362
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDatagridComponent, decorators: [{
363
+ type: Component,
364
+ args: [{
365
+ selector: 'appfx-datagrid',
366
+ standalone: false,
367
+ template: ``,
368
+ }]
369
+ }], propDecorators: { gridItems: [{
370
+ type: Input
371
+ }], columns: [{
372
+ type: Input
373
+ }], layoutModel: [{
374
+ type: Input
375
+ }], footerModel: [{
376
+ type: Input
377
+ }], pageSize: [{
378
+ type: Input
379
+ }], pageSizeOptions: [{
380
+ type: Input
381
+ }], totalItems: [{
382
+ type: Input
383
+ }], selectionType: [{
384
+ type: Input
385
+ }], selectedItems: [{
386
+ type: Input
387
+ }], datagridLabels: [{
388
+ type: Input
389
+ }], preSelectFirstItem: [{
390
+ type: Input
391
+ }], rowSelectionMode: [{
392
+ type: Input
393
+ }], actionBarActions: [{
394
+ type: Input
395
+ }], showFooter: [{
396
+ type: Input
397
+ }], singleRowActions: [{
398
+ type: Input
399
+ }], noItemsFoundPlaceholder: [{
400
+ type: Input
401
+ }], loading: [{
402
+ type: Input
403
+ }], serverDrivenDatagrid: [{
404
+ type: Input
405
+ }], filterMode: [{
406
+ type: Input
407
+ }], listItemsCount: [{
408
+ type: Input
409
+ }], trackByGridItemProperty: [{
410
+ type: Input
411
+ }], isRowLocked: [{
412
+ type: Input
413
+ }], detailHeader: [{
414
+ type: Input
415
+ }], detailBody: [{
416
+ type: Input
417
+ }], rowDetailContent: [{
418
+ type: Input
419
+ }], rowsExpandedByDefault: [{
420
+ type: Input
421
+ }], vscPersistDatagridSettings: [{
422
+ type: Input
423
+ }], detailState: [{
424
+ type: Input
425
+ }], trackByFunction: [{
426
+ type: Input
427
+ }], virtualScrolling: [{
428
+ type: Input
429
+ }], dataRange: [{
430
+ type: Input
431
+ }], selectedItemsChange: [{
432
+ type: Output
433
+ }], gridItemsChange: [{
434
+ type: Output
435
+ }], selectionChange: [{
436
+ type: Output
437
+ }], searchTermChange: [{
438
+ type: Output
439
+ }], refreshGridData: [{
440
+ type: Output
441
+ }], refreshVirtualGridData: [{
442
+ type: Output
443
+ }], actionClick: [{
444
+ type: Output
445
+ }], rowActionMenuOpenChange: [{
446
+ type: Output
447
+ }], exportDataEvent: [{
448
+ type: Output
449
+ }], detailStateChange: [{
450
+ type: Output
451
+ }] } });
452
+ class MockStandaloneDatagridComponent extends MockAppfxDatagridComponent {
453
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStandaloneDatagridComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
454
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStandaloneDatagridComponent, isStandalone: true, selector: "appfx-datagrid", usesInheritance: true, ngImport: i0, template: ``, isInline: true }); }
455
+ }
456
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStandaloneDatagridComponent, decorators: [{
457
+ type: Component,
458
+ args: [{
459
+ selector: 'appfx-datagrid',
460
+ standalone: true,
461
+ template: ``,
462
+ }]
463
+ }] });
464
+
465
+ /*
466
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
467
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
468
+ * This software is released under MIT license.
469
+ * The full license information can be found in LICENSE in the root directory of this project.
470
+ */
471
+ class MockDatagridActionBarComponent {
472
+ constructor() {
473
+ this.invokeAction = new EventEmitter();
474
+ }
475
+ onActionClick(action) {
476
+ this.invokeAction.emit(action);
477
+ }
478
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridActionBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
479
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: MockDatagridActionBarComponent, isStandalone: false, selector: "appfx-datagrid-action-bar", inputs: { actions: "actions" }, outputs: { invokeAction: "invokeAction" }, ngImport: i0, template: `
480
+ @for (action of actions; track action) {
481
+ <button
482
+ (click)="onActionClick(action)"
483
+ [title]="action.tooltip"
484
+ [attr.data-test-id]="action.id"
485
+ [disabled]="!action.enabled"
486
+ >
487
+ {{ action.label }}
488
+ </button>
489
+ }
490
+ `, isInline: true }); }
491
+ }
492
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridActionBarComponent, decorators: [{
493
+ type: Component,
494
+ args: [{
495
+ selector: 'appfx-datagrid-action-bar',
496
+ standalone: false,
497
+ template: `
498
+ @for (action of actions; track action) {
499
+ <button
500
+ (click)="onActionClick(action)"
501
+ [title]="action.tooltip"
502
+ [attr.data-test-id]="action.id"
503
+ [disabled]="!action.enabled"
504
+ >
505
+ {{ action.label }}
506
+ </button>
507
+ }
508
+ `,
509
+ }]
510
+ }], propDecorators: { actions: [{
511
+ type: Input
512
+ }], invokeAction: [{
513
+ type: Output
514
+ }] } });
515
+
516
+ /*
517
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
518
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
519
+ * This software is released under MIT license.
520
+ * The full license information can be found in LICENSE in the root directory of this project.
521
+ */
522
+ /**
523
+ * Component for unit testing purposes to provide a template for rendering datagrid cell content.
524
+ */
525
+ class MockDatagridCellContainerComponent {
526
+ constructor(componentFactoryResolver) {
527
+ this.componentFactoryResolver = componentFactoryResolver;
528
+ }
529
+ ngOnInit() {
530
+ if (this.column.columnRenderer) {
531
+ const factory = this.componentFactoryResolver.resolveComponentFactory(this.column.columnRenderer);
532
+ this.componentRef = this.container.createComponent(factory);
533
+ this.instance = this.componentRef?.instance;
534
+ this.instance.item = this.item;
535
+ this.instance.column = this.column;
536
+ }
537
+ }
538
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridCellContainerComponent, deps: [{ token: i0.ComponentFactoryResolver }], target: i0.ɵɵFactoryTarget.Component }); }
539
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.22", type: MockDatagridCellContainerComponent, isStandalone: false, selector: "appfx-dg-cell-container", inputs: { column: "column", item: "item" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["cellContainer"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: `
540
+ @if (!column.columnRenderer) {
541
+ {{ item?.[column.field] }}
542
+ }
543
+ <ng-template #cellContainer></ng-template>
544
+ `, isInline: true }); }
545
+ }
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridCellContainerComponent, decorators: [{
547
+ type: Component,
548
+ args: [{
549
+ selector: 'appfx-dg-cell-container',
550
+ standalone: false,
551
+ template: `
552
+ @if (!column.columnRenderer) {
553
+ {{ item?.[column.field] }}
554
+ }
555
+ <ng-template #cellContainer></ng-template>
556
+ `,
557
+ }]
558
+ }], ctorParameters: () => [{ type: i0.ComponentFactoryResolver }], propDecorators: { column: [{
559
+ type: Input
560
+ }], item: [{
561
+ type: Input
562
+ }], container: [{
563
+ type: ViewChild,
564
+ args: ['cellContainer', { read: ViewContainerRef, static: true }]
565
+ }] } });
566
+
567
+ /*
568
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
569
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
570
+ * This software is released under MIT license.
571
+ * The full license information can be found in LICENSE in the root directory of this project.
572
+ */
573
+ class MockDatagridColumnToggleComponent {
574
+ showColumn() { }
575
+ hideColumn() { }
576
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridColumnToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
577
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridColumnToggleComponent, isStandalone: false, selector: "appfx-dg-column-toggle", inputs: { columns: "columns" }, ngImport: i0, template: ``, isInline: true }); }
578
+ }
579
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridColumnToggleComponent, decorators: [{
580
+ type: Component,
581
+ args: [{
582
+ selector: 'appfx-dg-column-toggle',
583
+ standalone: false,
584
+ template: ``,
585
+ }]
586
+ }], propDecorators: { columns: [{
587
+ type: Input
588
+ }] } });
589
+
590
+ /*
591
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
592
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
593
+ * This software is released under MIT license.
594
+ * The full license information can be found in LICENSE in the root directory of this project.
595
+ */
596
+ class MockDatagridPersistSettingsDirective {
597
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPersistSettingsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
598
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridPersistSettingsDirective, isStandalone: false, selector: "appfx-datagrid[appfxPersistDatagridSettings]", inputs: { appfxPersistDatagridSettings: "appfxPersistDatagridSettings", persistPageSize: "persistPageSize", persistSortOrder: "persistSortOrder" }, ngImport: i0 }); }
599
+ }
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPersistSettingsDirective, decorators: [{
601
+ type: Directive,
602
+ args: [{
603
+ selector: 'appfx-datagrid[appfxPersistDatagridSettings]',
604
+ standalone: false,
605
+ }]
606
+ }], propDecorators: { appfxPersistDatagridSettings: [{
607
+ type: Input
608
+ }], persistPageSize: [{
609
+ type: Input
610
+ }], persistSortOrder: [{
611
+ type: Input
612
+ }] } });
613
+
614
+ /*
615
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
616
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
617
+ * This software is released under MIT license.
618
+ * The full license information can be found in LICENSE in the root directory of this project.
619
+ */
620
+ class MockDatagridPreserveSelectionDirective {
621
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPreserveSelectionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
622
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridPreserveSelectionDirective, isStandalone: false, selector: "[appfxPreserveSelection]", inputs: { preserveExistingSelection: "preserveExistingSelection" }, ngImport: i0 }); }
623
+ }
624
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridPreserveSelectionDirective, decorators: [{
625
+ type: Directive,
626
+ args: [{
627
+ selector: '[appfxPreserveSelection]',
628
+ standalone: false,
629
+ }]
630
+ }], propDecorators: { preserveExistingSelection: [{
631
+ type: Input
632
+ }] } });
633
+
634
+ /*
635
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
636
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
637
+ * This software is released under MIT license.
638
+ * The full license information can be found in LICENSE in the root directory of this project.
639
+ */
640
+ class GridHelper {
641
+ constructor(contextDebugElement, indexedEntry) {
642
+ this.indexedEntry = indexedEntry;
643
+ this.isExpandable = false;
644
+ const gridMatches = contextDebugElement.queryAll(By.directive(HermesDatagrid));
645
+ if (!gridMatches.length) {
646
+ throw Error('No grid found by scoped context');
647
+ }
648
+ else if (gridMatches.length > 1 && indexedEntry === undefined) {
649
+ throw Error(`${gridMatches.length} multiple grids under the passed context`);
650
+ }
651
+ else {
652
+ this.componentDebugElement = gridMatches[indexedEntry || 0];
653
+ this.component = this.componentDebugElement.injector.get(HermesDatagrid);
654
+ this.gridElement = this.componentDebugElement.nativeElement;
655
+ this.isExpandable = this.isRowDetailConfigured();
656
+ }
657
+ }
658
+ /**
659
+ * validate grid component that is undefined. If it is defined, its data items collection must be empty
660
+ * @param gridParentDebugElement
661
+ */
662
+ static assertEmpty(gridParentDebugElement) {
663
+ const matchedGrid = gridParentDebugElement.query(By.directive(HermesDatagrid));
664
+ if (!matchedGrid) {
665
+ expect(matchedGrid).toBeNull();
666
+ return;
667
+ }
668
+ const hermesGrid = matchedGrid.injector.get(HermesDatagrid);
669
+ if (hermesGrid) {
670
+ expect(hermesGrid.items.all.length).toBeFalsy();
671
+ }
672
+ }
673
+ // many internal rendering changes occur throughout the Grid rendering pipeline. After sorting and filtering rows changes occur
674
+ detectChanges(fixture) {
675
+ fixture.detectChanges();
676
+ this.component.resize();
677
+ fixture.detectChanges();
678
+ }
679
+ getGridElement() {
680
+ return this.gridElement;
681
+ }
682
+ getGridInternalInstance() {
683
+ return this.component;
684
+ }
685
+ // team developers should annotate grids when multiple exist
686
+ getTestId() {
687
+ return this.getGridElement().dataset['testId'] || undefined;
688
+ }
689
+ // omits control columns such as selector and expandable row toggle
690
+ getHeaders() {
691
+ return Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header hermes-dg-column .datagrid-column-title')).map((element) => (element.textContent ? element.textContent.trim() : ''));
692
+ }
693
+ // omits control columns such as selector and expandable row toggle
694
+ getHiddenHeaders() {
695
+ return Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header hermes-dg-column.datagrid-hidden-column .datagrid-column-title')).map((element) => (element.textContent ? element.textContent.trim() : ''));
696
+ }
697
+ // testing utility logic to verify presence of label, optionally ensuring certain columns are not present
698
+ assertHeaderLabels(includeLabelList, excludeLabelList) {
699
+ const gridHeaderLabelList = this.getHeaders();
700
+ // these columns are present
701
+ if (Array.isArray(includeLabelList)) {
702
+ gridHeaderLabelList.forEach((headerLabel, index) => {
703
+ expect(headerLabel).toEqual(includeLabelList[index], `Cannot find "${headerLabel}" column.`);
704
+ });
705
+ }
706
+ // these columns are not present ( in the DOM ). Currently ignores hidden attribute
707
+ if (Array.isArray(excludeLabelList)) {
708
+ excludeLabelList.forEach(undefinedLabel => {
709
+ expect(gridHeaderLabelList.indexOf(undefinedLabel)).toBeLessThan(0, `There is a "${undefinedLabel}" column.`);
710
+ });
711
+ }
712
+ }
713
+ isRowDetailConfigured() {
714
+ return !!this.gridElement.querySelector('.datagrid-table .datagrid-header .datagrid-column.datagrid-expandable-caret');
715
+ }
716
+ // omits control columns such as selector and expandable row toggle
717
+ getHeaderElements() {
718
+ return Array.from(this.gridElement.querySelectorAll('hermes-dg-column')).map((element) => element);
719
+ }
720
+ // omits control columns such as selector and expandable row toggle
721
+ getHeaderElementAt(headerIndex) {
722
+ return this.getHeaderElements()[headerIndex] || undefined;
723
+ }
724
+ getSelectAllElement() {
725
+ return this.gridElement.querySelector(".datagrid-table .datagrid-header .datagrid-column.datagrid-select input[type='checkbox']");
726
+ }
727
+ // only if column title is within a button, consider it as a column sort action
728
+ isColumnSortable(header) {
729
+ const columnIndex = Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header button.datagrid-column-title'))
730
+ .map((element) => (element.textContent ? element.textContent.trim() : ''))
731
+ .indexOf(header);
732
+ return columnIndex !== -1;
733
+ }
734
+ sortByColumn(header) {
735
+ const headerElements = Array.from(this.gridElement.querySelectorAll('.datagrid-table .datagrid-header button.datagrid-column-title')).filter((element) => {
736
+ return element.textContent && header === element.textContent.trim();
737
+ });
738
+ if (!headerElements || headerElements.length === 0) {
739
+ return false;
740
+ }
741
+ const headerElement = headerElements[0];
742
+ headerElement.click();
743
+ return true;
744
+ }
745
+ sortByColumnIndex(colIndex) {
746
+ const headerElement = this.getHeaderElementAt(colIndex);
747
+ if (!headerElement) {
748
+ throw Error(`The grid does not have column with index ${colIndex}`);
749
+ }
750
+ const columnSortButton = headerElement.querySelector('button.datagrid-column-title');
751
+ if (!columnSortButton) {
752
+ throw Error(`The column is not sortable at ${colIndex}`);
753
+ }
754
+ columnSortButton.click(); // toggle sort
755
+ return true;
756
+ }
757
+ // open filter overlay from icon in the right corner of header cell
758
+ openFilter(header) {
759
+ const headerElement = this.getHeaderElements().find((element) => {
760
+ const columnTitle = element.querySelector('.datagrid-column-title');
761
+ return !!(columnTitle && columnTitle.textContent && columnTitle.textContent.trim() === header);
762
+ });
763
+ if (headerElement) {
764
+ const filterButton = headerElement.querySelector('hermes-dg-filter .datagrid-filter-toggle');
765
+ if (filterButton) {
766
+ filterButton.click();
767
+ }
768
+ }
769
+ }
770
+ // shut down filter overlay
771
+ closeFilter() {
772
+ const closeButton = document.body.querySelector('.datagrid-filter button.close');
773
+ if (closeButton) {
774
+ closeButton.click();
775
+ }
776
+ }
777
+ openFilterByColumnIndex(colIndex) {
778
+ const headerElements = this.getHeaderElements();
779
+ if (!headerElements || headerElements.length - 1 < colIndex) {
780
+ throw Error(`The grid does not have column with index ${colIndex}`);
781
+ }
782
+ const filterButton = headerElements[colIndex].querySelector('hermes-dg-filter > .datagrid-filter-toggle');
783
+ filterButton.click();
784
+ }
785
+ getFilterInput() {
786
+ const inputElement = document.body.querySelector('.datagrid-filter input');
787
+ return new FilterInputTestHelper(inputElement);
788
+ }
789
+ getRows() {
790
+ const rowElements = this.gridElement.querySelectorAll('hermes-dg-row');
791
+ return Array.from(rowElements).map((element) => new GridRowTestHelper(this, element));
792
+ }
793
+ getFooter() {
794
+ const footerElement = this.gridElement.querySelector('hermes-dg-footer');
795
+ return new GridFooterTestHelper(footerElement);
796
+ }
797
+ getPlaceholder() {
798
+ const placeholderElement = this.gridElement.querySelector('hermes-dg-placeholder');
799
+ if (!placeholderElement) {
800
+ throw Error('No placeholder located in grid');
801
+ }
802
+ return new GridPlaceholder(placeholderElement);
803
+ }
804
+ // visible in the grid on the current page only. to get the actual model of selected items only the component state can determine array
805
+ getSelectedRows() {
806
+ const rowElements = this.gridElement.querySelectorAll('hermes-dg-row.datagrid-selected');
807
+ return Array.from(rowElements).map((element) => new GridRowTestHelper(this, element));
808
+ }
809
+ // if datagrid supports row selection mode, force all "visible" rows in view to be checked
810
+ selectAllRows() {
811
+ const canPerform = this.component.selection.rowSelectionMode;
812
+ if (canPerform) {
813
+ this.component.selection.toggleAll();
814
+ }
815
+ return canPerform;
816
+ }
817
+ // if datagrid supports row selection mode, force all "visible" rows in view to be unchecked
818
+ unselectAllRows() {
819
+ const canPerform = this.component.selection.rowSelectionMode;
820
+ if (canPerform) {
821
+ this.component.selection.clearSelection();
822
+ }
823
+ return canPerform;
824
+ }
825
+ clickActionBarButton(label) {
826
+ const btn = this.findActionBarButton(this.getButtonIdentifier(label));
827
+ if (btn) {
828
+ btn.click();
829
+ }
830
+ else {
831
+ throw Error("The action button '" + label + "' does not exist");
832
+ }
833
+ }
834
+ isActionBarButtonDisabled(label) {
835
+ const btn = this.findActionBarButton(this.getButtonIdentifier(label));
836
+ if (btn) {
837
+ return btn.disabled;
838
+ }
839
+ else {
840
+ throw Error("The action button '" + label + "' does not exist");
841
+ }
842
+ }
843
+ getActionBarActionLabels(hasSpan) {
844
+ const buttonElements = this.gridElement.querySelectorAll('hermes-dg-action-bar button' + (hasSpan ? ' > span' : ''));
845
+ return Array.from(buttonElements).map((element) => {
846
+ return element && element.innerText ? element.innerText.trim() : '';
847
+ });
848
+ }
849
+ isDataLoading() {
850
+ return this.component.loading;
851
+ }
852
+ findActionBarButton(label) {
853
+ const menuItems = this.gridElement.querySelectorAll('hermes-dg-action-bar button');
854
+ const matched = Array.from(menuItems)
855
+ .map(e => (e.textContent ? e.textContent.trim() : ''))
856
+ .indexOf(label);
857
+ return matched >= 0 ? menuItems[matched] : undefined;
858
+ }
859
+ findFooterButton(label) {
860
+ const buttons = this.gridElement.querySelectorAll('hermes-dg-footer button');
861
+ const matched = Array.from(buttons)
862
+ .map(e => (e.textContent ? e.textContent.trim() : ''))
863
+ .indexOf(label);
864
+ return matched >= 0 ? buttons[matched] : undefined;
865
+ }
866
+ findFooterDropdownChildButton(label) {
867
+ const buttons = document.querySelectorAll('hermes-dropdown-menu button');
868
+ const matched = Array.from(buttons)
869
+ .map(e => (e.textContent ? e.textContent.trim() : ''))
870
+ .indexOf(label);
871
+ return matched >= 0 ? buttons[matched] : undefined;
872
+ }
873
+ /**
874
+ * handle string and array-based i18n bundle-key structures
875
+ */
876
+ getButtonIdentifier(label) {
877
+ if (typeof label === 'string') {
878
+ return label;
879
+ }
880
+ else {
881
+ throw Error('invalid i18n tuple argument');
882
+ }
883
+ }
884
+ }
885
+ class FilterInputTestHelper {
886
+ constructor(inputElement) {
887
+ this.inputElement = inputElement;
888
+ }
889
+ // presence (or not) of the filter control
890
+ assert(validFlag) {
891
+ if (validFlag) {
892
+ expect(this.inputElement).not.toBeNull();
893
+ expect(this.inputElement.disabled).toEqual(false);
894
+ }
895
+ else {
896
+ expect(this.inputElement).toBeNull();
897
+ }
898
+ }
899
+ inputText(text, triggerEvent) {
900
+ let eventName = 'input';
901
+ if (triggerEvent) {
902
+ eventName = triggerEvent;
903
+ }
904
+ this.inputElement.value = text;
905
+ this.inputElement.dispatchEvent(this.newEvent(eventName));
906
+ // should sync grid??
907
+ }
908
+ // note: should leverage the DebugElement eventing system instead of DOM directly
909
+ newEvent(eventName, bubbles = false, cancelable = false) {
910
+ const evt = document.createEvent('CustomEvent');
911
+ evt.initCustomEvent(eventName, bubbles, cancelable, null);
912
+ return evt;
913
+ }
914
+ }
915
+ class GridFooterTestHelper {
916
+ constructor(footerElement) {
917
+ this.footerElement = footerElement;
918
+ }
919
+ getElement() {
920
+ return this.footerElement;
921
+ }
922
+ getFooterText() {
923
+ return this.footerElement && this.footerElement.textContent ? this.footerElement.textContent.trim() : '';
924
+ }
925
+ openShowHideColumnsMenu() {
926
+ if (!this.footerElement) {
927
+ return;
928
+ }
929
+ const showHideColumnButton = this.footerElement.querySelector('button[cdkOverlayOrigin]');
930
+ showHideColumnButton.click();
931
+ }
932
+ clickShowHideColumnsItem(name) {
933
+ this.getShowHideColumnsItems();
934
+ const showHideColumnsItem = this.findShowHideColumnsItemByName(name);
935
+ if (showHideColumnsItem) {
936
+ showHideColumnsItem.click();
937
+ }
938
+ }
939
+ findShowHideColumnsItemByName(name) {
940
+ const checkBoxLabels = this.getShowHideColumnsItems();
941
+ const labelIndex = checkBoxLabels
942
+ .map((element) => (element.textContent ? element.textContent.trim() : ''))
943
+ .indexOf(name);
944
+ return labelIndex !== -1 ? checkBoxLabels[labelIndex] : null;
945
+ }
946
+ getShowHideColumnsItems() {
947
+ if (!this.footerElement) {
948
+ return [];
949
+ }
950
+ const checkBoxLabels = document.body.querySelectorAll('.column-switch hermes-checkbox-wrapper > label');
951
+ return Array.from(checkBoxLabels);
952
+ }
953
+ clickPreviousPaginationButton() {
954
+ if (!this.footerElement) {
955
+ return;
956
+ }
957
+ const button = this.footerElement.querySelector('hermes-dg-pagination button.pagination-previous');
958
+ if (button && !button.disabled) {
959
+ button.click();
960
+ }
961
+ }
962
+ clickNextPaginationButton() {
963
+ if (!this.footerElement) {
964
+ return;
965
+ }
966
+ const button = this.footerElement.querySelector('hermes-dg-pagination button.pagination-next');
967
+ if (button && !button.disabled) {
968
+ button.click();
969
+ }
970
+ }
971
+ clickPaginationButton(label) {
972
+ if (!this.footerElement) {
973
+ return;
974
+ }
975
+ const paginationButtons = this.footerElement.querySelectorAll('hermes-dg-pagination li button');
976
+ const paginationButtonIndex = Array.from(paginationButtons)
977
+ .map((element) => (element.textContent ? element.textContent.trim() : ''))
978
+ .indexOf(label);
979
+ if (paginationButtonIndex !== -1) {
980
+ paginationButtons[paginationButtonIndex].click();
981
+ }
982
+ }
983
+ }
984
+ class GridRowTestHelper {
985
+ constructor(grid, rowElement) {
986
+ this.grid = grid;
987
+ this.rowElement = rowElement;
988
+ }
989
+ // ignores control datagrid cells, which do not display data
990
+ getCell(header) {
991
+ const columnIndex = this.grid.getHeaders().indexOf(header);
992
+ return this.getCellAt(columnIndex);
993
+ }
994
+ // ignores control datagrid cells, which do not display data
995
+ getCellAt(index) {
996
+ return new GridCellTestHelper(this.rowElement.querySelectorAll('hermes-dg-cell').item(index));
997
+ }
998
+ getCellTextAt(index) {
999
+ const cellText = this.rowElement
1000
+ .querySelectorAll('hermes-dg-cell > span')
1001
+ .item(index).textContent;
1002
+ return cellText ? cellText.trim() : '';
1003
+ }
1004
+ getElement() {
1005
+ return this.rowElement;
1006
+ }
1007
+ isSelected() {
1008
+ return this.rowElement.classList.contains('datagrid-selected');
1009
+ }
1010
+ // testing utility logic to verify grid cell value (or substring ) match, and alternatively a negative (non-matching) way to exclude
1011
+ assertCellValues(includeValueList, excludeValueList) {
1012
+ // these cells are present for equality matching
1013
+ if (Array.isArray(includeValueList)) {
1014
+ includeValueList.forEach((cellValue, index) => {
1015
+ const gridCell = this.getCellAt(index);
1016
+ if (cellValue !== undefined) {
1017
+ if (Array.isArray(cellValue)) {
1018
+ // substring containment
1019
+ expect(cellValue.reduce((matched, phrase) => matched && gridCell.getText().includes(phrase), true)).toBe(true);
1020
+ }
1021
+ else {
1022
+ // scalar value
1023
+ expect(gridCell.getText()).toEqual(String(cellValue));
1024
+ }
1025
+ }
1026
+ else {
1027
+ // undefined means the cell must not be present
1028
+ if (Array.isArray(cellValue)) {
1029
+ // substring containment (negated)
1030
+ expect(cellValue.reduce((matched, phrase) => matched && gridCell.getText().includes(phrase), true)).toBe(false);
1031
+ }
1032
+ else {
1033
+ expect(gridCell.getElement()).toBeNull(`There is no cell at position index ${index}.`);
1034
+ }
1035
+ }
1036
+ });
1037
+ }
1038
+ // these cells do not match the actual value in the data cell
1039
+ if (Array.isArray(excludeValueList)) {
1040
+ excludeValueList.forEach((cellValue, index) => {
1041
+ const gridCell = this.getCellAt(index);
1042
+ if (cellValue !== undefined) {
1043
+ expect(gridCell.getText()).not.toEqual(String(cellValue));
1044
+ }
1045
+ else {
1046
+ // undefined means the cell must not be present
1047
+ expect(gridCell.getElement()).not.toBeNull(`There is a no cell at position index ${index}.`);
1048
+ }
1049
+ });
1050
+ }
1051
+ }
1052
+ // find the row selector for single/multiple actions. Action performed programmatically on label ( despite it being empty )
1053
+ select() {
1054
+ const selectionElement = this.rowElement.querySelector('.datagrid-cell.datagrid-select .hermes-control-label');
1055
+ if (!selectionElement) {
1056
+ throw Error('The row is not selectable.');
1057
+ }
1058
+ selectionElement.click();
1059
+ }
1060
+ /**
1061
+ * In case the row selection in the Clarity grid is enabled for multiple selection,
1062
+ * ex. [hermesDgRowSelection]="true" clicking on the checkbox's input causes both the
1063
+ * events for the row selection and the checkbox to be triggered causing the select
1064
+ * and deselect of the element immediately one after the other
1065
+ */
1066
+ selectMultiWithRowSelectionEnabled() {
1067
+ const selectionElement = this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-checkbox-wrapper');
1068
+ if (!selectionElement) {
1069
+ throw Error('The row is not selectable.');
1070
+ }
1071
+ selectionElement.click();
1072
+ }
1073
+ // clicking the row achieves what? focus
1074
+ click() {
1075
+ const selectionElement = this.rowElement.querySelector('div.datagrid-row-clickable');
1076
+ if (!selectionElement) {
1077
+ throw Error('The row is not clickable.');
1078
+ }
1079
+ selectionElement.click();
1080
+ }
1081
+ isRowClickable() {
1082
+ const selectionElement = this.rowElement.querySelector('div.datagrid-row-clickable');
1083
+ return !!selectionElement;
1084
+ }
1085
+ // check whether the row element has a nested input
1086
+ isSelectionAvailable() {
1087
+ const selectionInput = this.rowElement.querySelector('input');
1088
+ return selectionInput ? true : false;
1089
+ }
1090
+ // check whether the row element has a nested disabled input
1091
+ isSelectionDisabled() {
1092
+ const disabledSelectionInput = this.rowElement.querySelector('input[aria-disabled]');
1093
+ return disabledSelectionInput ? true : false;
1094
+ }
1095
+ expand() {
1096
+ const expandElement = this.rowElement.querySelector('.datagrid-expandable-caret > button.datagrid-expandable-caret-button');
1097
+ if (!expandElement) {
1098
+ throw Error('The row is not expandable.');
1099
+ }
1100
+ expandElement.click();
1101
+ }
1102
+ isExpanded() {
1103
+ return !!this.rowElement.querySelector('hermes-dg-row-detail');
1104
+ }
1105
+ isRowExpandable() {
1106
+ return (this.rowElement.querySelectorAll('.datagrid-expandable-caret > button.datagrid-expandable-caret-button').length >
1107
+ 0);
1108
+ }
1109
+ getSingleRowActionMenuButton() {
1110
+ return this.rowElement.querySelector('.datagrid-action-toggle > hermes-icon');
1111
+ }
1112
+ openSingleRowActionMenu() {
1113
+ const menuItems = this.rowElement.querySelectorAll('hermes-dg-action-overflow button.datagrid-action-toggle');
1114
+ if (menuItems && menuItems.length > 0) {
1115
+ menuItems.item(0).click();
1116
+ return true;
1117
+ }
1118
+ return false;
1119
+ }
1120
+ // retrieve action menu item by name
1121
+ getSingleRowActionMenuItem(menuItemName) {
1122
+ const menuItems = document.querySelectorAll('div.datagrid-action-overflow button');
1123
+ const menuItemIndex = Array.from(menuItems)
1124
+ .map((element) => (element.textContent ? element.textContent.trim() : ''))
1125
+ .indexOf(menuItemName);
1126
+ if (menuItemIndex !== -1) {
1127
+ return menuItems[menuItemIndex];
1128
+ }
1129
+ return undefined;
1130
+ }
1131
+ clickOnSingleRowActionMenuItem(menuItemName) {
1132
+ const menuItem = this.getSingleRowActionMenuItem(menuItemName);
1133
+ if (menuItem) {
1134
+ menuItem.click();
1135
+ }
1136
+ }
1137
+ isRowSingleSelectable() {
1138
+ return (!!this.rowElement.querySelector('.datagrid-select.datagrid-cell > .hermes-radio-wrapper') &&
1139
+ !!this.grid
1140
+ .getGridElement()
1141
+ .querySelector('.datagrid-table .datagrid-header > .datagrid-row .datagrid-select.datagrid-column > .datagrid-column-separator'));
1142
+ }
1143
+ }
1144
+ class GridCellTestHelper {
1145
+ constructor(cellElement) {
1146
+ this.cellElement = cellElement;
1147
+ }
1148
+ getElement() {
1149
+ return this.cellElement;
1150
+ }
1151
+ getText() {
1152
+ const cellElement = this.cellElement;
1153
+ return cellElement.innerText ? cellElement.innerText.trim() : '';
1154
+ }
1155
+ getChildElementText(selector) {
1156
+ const childElement = this.cellElement.querySelector(selector);
1157
+ if (childElement) {
1158
+ return childElement.innerText ? childElement.innerText.trim() : '';
1159
+ }
1160
+ return '';
1161
+ }
1162
+ // datagrid wrapper uses a custom cell objects to project client defined cell formatter
1163
+ // optionally query deeper into the custom cell component as defined by column registry
1164
+ getCellWrapperElement(selector) {
1165
+ const matchedElement = this.cellElement.querySelector('appfx-dg-cell-container');
1166
+ if (!matchedElement) {
1167
+ return null;
1168
+ }
1169
+ return selector ? matchedElement.querySelector(selector) : matchedElement;
1170
+ }
1171
+ // common icons follow the accepted practice of being wrapped in spanned element annotated with "object"
1172
+ getObjectIconElement() {
1173
+ return this.getElement().querySelector('span.object > i') || undefined;
1174
+ }
1175
+ // finds the first simple anchor link and fires a click event if found
1176
+ clickChildLink() {
1177
+ const selectionElement = this.cellElement.querySelector('A');
1178
+ if (!selectionElement) {
1179
+ throw Error('The cell is not clickable.');
1180
+ }
1181
+ else {
1182
+ selectionElement.click();
1183
+ }
1184
+ }
1185
+ }
1186
+ class GridPlaceholder {
1187
+ constructor(placeholderComponentElement) {
1188
+ this.placeholderComponentElement = placeholderComponentElement;
1189
+ }
1190
+ getElement() {
1191
+ return this.placeholderComponentElement;
1192
+ }
1193
+ getText() {
1194
+ return this.placeholderComponentElement ? this.placeholderComponentElement.textContent.trim() : undefined;
1195
+ }
1196
+ }
1197
+
1198
+ /*
1199
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1200
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1201
+ * This software is released under MIT license.
1202
+ * The full license information can be found in LICENSE in the root directory of this project.
1203
+ */
1204
+ class MockIsRowSelectablePipe {
1205
+ transform(rowItem, isLocked, disabled) {
1206
+ return !isLocked?.(rowItem) || !!disabled;
1207
+ }
1208
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1209
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, isStandalone: false, name: "isRowSelectable" }); }
1210
+ }
1211
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockIsRowSelectablePipe, decorators: [{
1212
+ type: Pipe,
1213
+ args: [{ name: 'isRowSelectable', standalone: false }]
1214
+ }] });
1215
+
1216
+ /*
1217
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1218
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1219
+ * This software is released under MIT license.
1220
+ * The full license information can be found in LICENSE in the root directory of this project.
1221
+ */
1222
+
1223
+ /*
1224
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1225
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1226
+ * This software is released under MIT license.
1227
+ * The full license information can be found in LICENSE in the root directory of this project.
1228
+ */
1229
+ class MockDatagridFiltersComponent {
1230
+ constructor() {
1231
+ this.filterMode = FilterMode.Quick;
1232
+ this.searchTermChange = new EventEmitter();
1233
+ this.propertyFiltersChange = new EventEmitter();
1234
+ }
1235
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1236
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridFiltersComponent, isStandalone: false, selector: "appfx-datagrid-filters", inputs: { filterMode: "filterMode", filterableProperties: "filterableProperties" }, outputs: { searchTermChange: "searchTermChange", propertyFiltersChange: "propertyFiltersChange" }, ngImport: i0, template: '', isInline: true }); }
1237
+ }
1238
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersComponent, decorators: [{
1239
+ type: Component,
1240
+ args: [{
1241
+ selector: 'appfx-datagrid-filters',
1242
+ standalone: false,
1243
+ template: '',
1244
+ }]
1245
+ }], propDecorators: { filterMode: [{
1246
+ type: Input
1247
+ }], filterableProperties: [{
1248
+ type: Input
1249
+ }], searchTermChange: [{
1250
+ type: Output
1251
+ }], propertyFiltersChange: [{
1252
+ type: Output
1253
+ }] } });
1254
+ class MockDatagridFiltersStandaloneComponent extends MockDatagridFiltersComponent {
1255
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1256
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockDatagridFiltersStandaloneComponent, isStandalone: true, selector: "appfx-datagrid-filters", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1257
+ }
1258
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDatagridFiltersStandaloneComponent, decorators: [{
1259
+ type: Component,
1260
+ args: [{
1261
+ selector: 'appfx-datagrid-filters',
1262
+ standalone: true,
1263
+ template: '',
1264
+ }]
1265
+ }] });
1266
+
1267
+ /*
1268
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1269
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1270
+ * This software is released under MIT license.
1271
+ * The full license information can be found in LICENSE in the root directory of this project.
1272
+ */
1273
+
1274
+ /*
1275
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1276
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1277
+ * This software is released under MIT license.
1278
+ * The full license information can be found in LICENSE in the root directory of this project.
1279
+ */
1280
+ class MockAppfxDialogComponent {
1281
+ constructor() {
1282
+ this.onModelChange = new EventEmitter();
1283
+ this.onClose = new EventEmitter();
1284
+ this.openedChange = new EventEmitter();
1285
+ }
1286
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1287
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogComponent, isStandalone: false, selector: "appfx-dialog", inputs: { title: "title", subTitle: "subTitle", size: "size", height: "height", defaultButton: "defaultButton", cancelButtonLabel: "cancelButtonLabel", okButtonLabel: "okButtonLabel", tabLayout: "tabLayout", disableTabsContent: "disableTabsContent", loading: "loading", steps: "steps", model: "model", closeHandler: "closeHandler", showTabLinks: "showTabLinks", opened: "opened" }, outputs: { onModelChange: "onModelChange", onClose: "onClose", openedChange: "openedChange" }, ngImport: i0, template: '', isInline: true }); }
1288
+ }
1289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogComponent, decorators: [{
1290
+ type: Component,
1291
+ args: [{
1292
+ selector: 'appfx-dialog',
1293
+ standalone: false,
1294
+ template: '',
1295
+ }]
1296
+ }], propDecorators: { title: [{
1297
+ type: Input
1298
+ }], subTitle: [{
1299
+ type: Input
1300
+ }], size: [{
1301
+ type: Input
1302
+ }], height: [{
1303
+ type: Input
1304
+ }], defaultButton: [{
1305
+ type: Input
1306
+ }], cancelButtonLabel: [{
1307
+ type: Input
1308
+ }], okButtonLabel: [{
1309
+ type: Input
1310
+ }], tabLayout: [{
1311
+ type: Input
1312
+ }], disableTabsContent: [{
1313
+ type: Input
1314
+ }], loading: [{
1315
+ type: Input
1316
+ }], steps: [{
1317
+ type: Input
1318
+ }], model: [{
1319
+ type: Input
1320
+ }], closeHandler: [{
1321
+ type: Input
1322
+ }], showTabLinks: [{
1323
+ type: Input
1324
+ }], opened: [{
1325
+ type: Input
1326
+ }], onModelChange: [{
1327
+ type: Output
1328
+ }], onClose: [{
1329
+ type: Output
1330
+ }], openedChange: [{
1331
+ type: Output
1332
+ }] } });
1333
+ class MockAppfxDialogStandaloneComponent extends MockAppfxDialogComponent {
1334
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1335
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogStandaloneComponent, isStandalone: true, selector: "appfx-dialog", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1336
+ }
1337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogStandaloneComponent, decorators: [{
1338
+ type: Component,
1339
+ args: [{
1340
+ selector: 'appfx-dialog',
1341
+ standalone: true,
1342
+ template: '',
1343
+ }]
1344
+ }] });
1345
+
1346
+ /*
1347
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1348
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1349
+ * This software is released under MIT license.
1350
+ * The full license information can be found in LICENSE in the root directory of this project.
1351
+ */
1352
+ class MockAppfxDialogHeaderComponent {
1353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1354
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogHeaderComponent, isStandalone: false, selector: "appfx-dialog-header", ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
1355
+ }
1356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderComponent, decorators: [{
1357
+ type: Component,
1358
+ args: [{
1359
+ selector: 'appfx-dialog-header',
1360
+ standalone: false,
1361
+ template: `<ng-content></ng-content>`,
1362
+ }]
1363
+ }] });
1364
+ class MockAppfxDialogHeaderStandaloneComponent extends MockAppfxDialogHeaderComponent {
1365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1366
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxDialogHeaderStandaloneComponent, isStandalone: true, selector: "appfx-dialog-header", usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true }); }
1367
+ }
1368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxDialogHeaderStandaloneComponent, decorators: [{
1369
+ type: Component,
1370
+ args: [{
1371
+ selector: 'appfx-dialog-header',
1372
+ standalone: true,
1373
+ template: `<ng-content></ng-content>`,
1374
+ }]
1375
+ }] });
1376
+
1377
+ /*
1378
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1379
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1380
+ * This software is released under MIT license.
1381
+ * The full license information can be found in LICENSE in the root directory of this project.
1382
+ */
1383
+
1384
+ /*
1385
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1386
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1387
+ * This software is released under MIT license.
1388
+ * The full license information can be found in LICENSE in the root directory of this project.
1389
+ */
1390
+ class MockAppfxMenuActionComponent {
1391
+ constructor() {
1392
+ this.enabled = true;
1393
+ this.handle = new EventEmitter(true);
1394
+ }
1395
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1396
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuActionComponent, isStandalone: false, selector: "appfx-menu-action", inputs: { actionId: "actionId", iconClass: "iconClass", text: "text", shortcut: "shortcut", enabled: "enabled" }, outputs: { handle: "handle" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1397
+ }
1398
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionComponent, decorators: [{
1399
+ type: Component,
1400
+ args: [{
1401
+ selector: 'appfx-menu-action',
1402
+ standalone: false,
1403
+ template: '<ng-content></ng-content>',
1404
+ }]
1405
+ }], propDecorators: { actionId: [{
1406
+ type: Input
1407
+ }], iconClass: [{
1408
+ type: Input
1409
+ }], text: [{
1410
+ type: Input
1411
+ }], shortcut: [{
1412
+ type: Input
1413
+ }], enabled: [{
1414
+ type: Input
1415
+ }], handle: [{
1416
+ type: Output
1417
+ }] } });
1418
+ class MockAppfxMenuActionStandaloneComponent extends MockAppfxMenuActionComponent {
1419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuActionStandaloneComponent, isStandalone: true, selector: "appfx-menu-action", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1421
+ }
1422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuActionStandaloneComponent, decorators: [{
1423
+ type: Component,
1424
+ args: [{
1425
+ selector: 'appfx-menu-action',
1426
+ standalone: true,
1427
+ template: '<ng-content></ng-content>',
1428
+ }]
1429
+ }] });
1430
+
1431
+ /*
1432
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1433
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1434
+ * This software is released under MIT license.
1435
+ * The full license information can be found in LICENSE in the root directory of this project.
1436
+ */
1437
+ class MockAppfxMenuComponent {
1438
+ constructor() {
1439
+ this.opened = new EventEmitter();
1440
+ this.closed = new EventEmitter();
1441
+ }
1442
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1443
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuComponent, isStandalone: false, selector: "appfx-menu", inputs: { text: "text" }, outputs: { opened: "opened", closed: "closed" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1444
+ }
1445
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuComponent, decorators: [{
1446
+ type: Component,
1447
+ args: [{
1448
+ selector: 'appfx-menu',
1449
+ standalone: false,
1450
+ template: '<ng-content></ng-content>',
1451
+ }]
1452
+ }], propDecorators: { text: [{
1453
+ type: Input
1454
+ }], opened: [{
1455
+ type: Output
1456
+ }], closed: [{
1457
+ type: Output
1458
+ }] } });
1459
+ class MockAppfxMenuStandaloneComponent extends MockAppfxMenuComponent {
1460
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1461
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxMenuStandaloneComponent, isStandalone: true, selector: "appfx-menu", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1462
+ }
1463
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxMenuStandaloneComponent, decorators: [{
1464
+ type: Component,
1465
+ args: [{
1466
+ selector: 'appfx-menu',
1467
+ standalone: true,
1468
+ template: '<ng-content></ng-content>',
1469
+ }]
1470
+ }] });
1471
+
1472
+ /*
1473
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1474
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1475
+ * This software is released under MIT license.
1476
+ * The full license information can be found in LICENSE in the root directory of this project.
1477
+ */
1478
+
1479
+ /*
1480
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1481
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1482
+ * This software is released under MIT license.
1483
+ * The full license information can be found in LICENSE in the root directory of this project.
1484
+ */
1485
+ class MockPropertyViewComponent {
1486
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1487
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockPropertyViewComponent, isStandalone: false, selector: "appfx-property-view", inputs: { data: "data", config: "config" }, ngImport: i0, template: '', isInline: true }); }
1488
+ }
1489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewComponent, decorators: [{
1490
+ type: Component,
1491
+ args: [{
1492
+ selector: 'appfx-property-view',
1493
+ standalone: false,
1494
+ template: '',
1495
+ }]
1496
+ }], propDecorators: { data: [{
1497
+ type: Input
1498
+ }], config: [{
1499
+ type: Input
1500
+ }] } });
1501
+ class MockPropertyViewStandaloneComponent extends MockPropertyViewComponent {
1502
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1503
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockPropertyViewStandaloneComponent, isStandalone: true, selector: "appfx-property-view", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1504
+ }
1505
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStandaloneComponent, decorators: [{
1506
+ type: Component,
1507
+ args: [{
1508
+ selector: 'appfx-property-view',
1509
+ standalone: true,
1510
+ template: '',
1511
+ }]
1512
+ }] });
1513
+
1514
+ /*
1515
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1516
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1517
+ * This software is released under MIT license.
1518
+ * The full license information can be found in LICENSE in the root directory of this project.
1519
+ */
1520
+ /**
1521
+ * Mock user-visible strings used in the 'appfx-property-view' library.
1522
+ */
1523
+ class MockPropertyViewStrings extends PropertyViewStrings {
1524
+ constructor() {
1525
+ super(...arguments);
1526
+ this.toggle = 'Toggle {0} section';
1527
+ this.actions = 'Actions';
1528
+ this.categoryListItemsAreaLabel = '{0} items grouped in {1} sections.';
1529
+ this.categoryListItemAreaLabel = '{0} items grouped in 1 section.';
1530
+ }
1531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1532
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings }); }
1533
+ }
1534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockPropertyViewStrings, decorators: [{
1535
+ type: Injectable
1536
+ }] });
1537
+
1538
+ /*
1539
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1540
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1541
+ * This software is released under MIT license.
1542
+ * The full license information can be found in LICENSE in the root directory of this project.
1543
+ */
1544
+ function verifyPropertyViewProperty(key, value, propertyModel) {
1545
+ expect(propertyModel.type).toEqual(PropertyViewModelType.Property);
1546
+ expect(propertyModel.key.text).toEqual(key);
1547
+ for (let i = 0; i < value.length; i++) {
1548
+ expect(propertyModel.content[i].text).toEqual(value[i]);
1549
+ }
1550
+ }
1551
+ function verifyPropertyViewMessage(textValue, icon, messageModel) {
1552
+ expect(messageModel.type).toEqual(PropertyViewModelType.Message);
1553
+ expect(messageModel.text).toEqual(textValue);
1554
+ expect(messageModel.icon).toEqual(icon);
1555
+ }
1556
+
1557
+ /*
1558
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1559
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1560
+ * This software is released under MIT license.
1561
+ * The full license information can be found in LICENSE in the root directory of this project.
1562
+ */
1563
+
1564
+ /*
1565
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1566
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1567
+ * This software is released under MIT license.
1568
+ * The full license information can be found in LICENSE in the root directory of this project.
1569
+ */
1570
+ class MockStepperComponent {
1571
+ constructor() {
1572
+ this.onModelChange = new EventEmitter();
1573
+ this.onFinish = new EventEmitter();
1574
+ }
1575
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1576
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepperComponent, isStandalone: false, selector: "appfx-stepper", inputs: { steps: "steps", wizardModel: "wizardModel", loading: "loading" }, outputs: { onModelChange: "onModelChange", onFinish: "onFinish" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1577
+ }
1578
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperComponent, decorators: [{
1579
+ type: Component,
1580
+ args: [{
1581
+ selector: 'appfx-stepper',
1582
+ standalone: false,
1583
+ template: '<ng-content></ng-content>',
1584
+ }]
1585
+ }], propDecorators: { steps: [{
1586
+ type: Input
1587
+ }], wizardModel: [{
1588
+ type: Input
1589
+ }], loading: [{
1590
+ type: Input
1591
+ }], onModelChange: [{
1592
+ type: Output
1593
+ }], onFinish: [{
1594
+ type: Output
1595
+ }] } });
1596
+ class MockStepperStandaloneComponent extends MockStepperComponent {
1597
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1598
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepperStandaloneComponent, isStandalone: true, selector: "appfx-stepper", usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1599
+ }
1600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepperStandaloneComponent, decorators: [{
1601
+ type: Component,
1602
+ args: [{
1603
+ selector: 'appfx-stepper',
1604
+ standalone: true,
1605
+ template: '<ng-content></ng-content>',
1606
+ }]
1607
+ }] });
1608
+
1609
+ /*
1610
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1611
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1612
+ * This software is released under MIT license.
1613
+ * The full license information can be found in LICENSE in the root directory of this project.
1614
+ */
1615
+
1616
+ /*
1617
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1618
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1619
+ * This software is released under MIT license.
1620
+ * The full license information can be found in LICENSE in the root directory of this project.
1621
+ */
1622
+ class TabsHelper {
1623
+ constructor(contextDebugElement) {
1624
+ const tabsElementMatches = contextDebugElement.queryAll(By.directive(HermesTabs));
1625
+ if (!tabsElementMatches.length) {
1626
+ throw Error('No tabs found under passed context element');
1627
+ }
1628
+ else if (tabsElementMatches.length > 1) {
1629
+ throw Error('Unable to isolate targeted instance of tabs widget');
1630
+ }
1631
+ else {
1632
+ this.tabs = tabsElementMatches[0];
1633
+ this.component = this.tabs.injector.get(HermesTabs);
1634
+ }
1635
+ }
1636
+ /**
1637
+ * Discover clarity tab links of (zero or more) items within the tabs.
1638
+ */
1639
+ getLinkList() {
1640
+ return this.tabs.queryAll(By.css(`[role="tablist"] > [role="presentation"] > [hermesTabLink]`));
1641
+ }
1642
+ /**
1643
+ * A DOM pointer to a tab link, as afforded by supplied index into collection.
1644
+ */
1645
+ findLink(linkIndex) {
1646
+ return this.getLinkList()[linkIndex];
1647
+ }
1648
+ /**
1649
+ * Retrieves the active Clarity Tab instance.
1650
+ */
1651
+ getActiveTab() {
1652
+ return this.component.tabsService.activeTab;
1653
+ }
1654
+ /**
1655
+ * Determines the active shown tab using relative sequences that map directly to DOM source order.
1656
+ */
1657
+ getActiveTabIndex() {
1658
+ return this.component.tabLinkDirectives.findIndex(tabLink => tabLink.tabLinkId === this.component.tabsService.activeTab.tabLink.tabLinkId);
1659
+ }
1660
+ /**
1661
+ * Extract located projected content as provided for the active tab.
1662
+ */
1663
+ getActiveTabContentElement() {
1664
+ const evr = this.getActiveTab().tabContent['viewRef'];
1665
+ return evr ? evr.rootNodes[0].firstElementChild || undefined : undefined;
1666
+ }
1667
+ /**
1668
+ * Clicks a tab link given the tab index.
1669
+ */
1670
+ clickLink(linkIndex) {
1671
+ const tabLink = this.component.tabLinkDirectives[linkIndex];
1672
+ try {
1673
+ tabLink.activate();
1674
+ }
1675
+ catch {
1676
+ throw Error('No tab link found at index ' + linkIndex);
1677
+ }
1678
+ }
1679
+ /**
1680
+ * Searches for tab link text, as applied to a tab button.
1681
+ */
1682
+ findLinkText(linkIndex) {
1683
+ const tabLinkElement = this.findLink(linkIndex);
1684
+ return tabLinkElement ? tabLinkElement.nativeElement.textContent.trim() : undefined;
1685
+ }
1686
+ /**
1687
+ * Debug element for the icon found inside the tab link.
1688
+ */
1689
+ findLinkIcon(linkIndex) {
1690
+ const tabLinkElement = this.findLink(linkIndex);
1691
+ return (tabLinkElement && tabLinkElement.query(By.css('hermes-icon'))) || undefined;
1692
+ }
1693
+ /**
1694
+ * Optionally find the custom component or desired HTML element within the active panel.
1695
+ */
1696
+ findContentView(childTabContentQuery) {
1697
+ const panel = this.tabs.query(By.css(`section.active`));
1698
+ return panel && childTabContentQuery ? panel.query(childTabContentQuery) || undefined : panel || undefined;
1699
+ }
1700
+ areTabsVisible() {
1701
+ const tabsPanel = this.tabs.query(By.css(`.nav`));
1702
+ return getComputedStyle(tabsPanel.nativeElement)['display'] !== 'none';
1703
+ }
1704
+ }
1705
+
1706
+ /*
1707
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1708
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1709
+ * This software is released under MIT license.
1710
+ * The full license information can be found in LICENSE in the root directory of this project.
1711
+ */
1712
+
1713
+ /*
1714
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1715
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1716
+ * This software is released under MIT license.
1717
+ * The full license information can be found in LICENSE in the root directory of this project.
1718
+ */
1719
+ class MockStepComponent {
1720
+ activate() {
1721
+ this.model.isActivated = true;
1722
+ }
1723
+ validate() {
1724
+ return of(true).pipe(tap(() => {
1725
+ this.model.isValidated = true;
1726
+ }));
1727
+ }
1728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1729
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockStepComponent, isStandalone: false, selector: "appfx-mock-page-page", ngImport: i0, template: '<div>{{ model.mockPropertyValue }}</div>', isInline: true }); }
1730
+ }
1731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockStepComponent, decorators: [{
1732
+ type: Component,
1733
+ args: [{
1734
+ selector: 'appfx-mock-page-page',
1735
+ standalone: false,
1736
+ template: '<div>{{ model.mockPropertyValue }}</div>',
1737
+ }]
1738
+ }] });
1739
+ class InvalidMockComponent extends MockStepComponent {
1740
+ validate() {
1741
+ return of(false).pipe(tap(() => {
1742
+ this.model.isValidated = true;
1743
+ }));
1744
+ }
1745
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: InvalidMockComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1746
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: InvalidMockComponent, isStandalone: false, selector: "appfx-invalid-mock-page-page", usesInheritance: true, ngImport: i0, template: '<div></div>', isInline: true }); }
1747
+ }
1748
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: InvalidMockComponent, decorators: [{
1749
+ type: Component,
1750
+ args: [{
1751
+ selector: 'appfx-invalid-mock-page-page',
1752
+ standalone: false,
1753
+ template: '<div></div>',
1754
+ }]
1755
+ }] });
1756
+ class MockStepModel {
1757
+ constructor(mockPropertyValue) {
1758
+ this.mockPropertyValue = mockPropertyValue;
1759
+ this.isActivated = false;
1760
+ this.isValidated = false;
1761
+ this.validationState = new StepValidationState();
1762
+ }
1763
+ }
1764
+ /** Simple mock of {@link WorkflowConfigurationService} used by workflow-dependent tests. */
1765
+ class MockWorkflowConfigurationService {
1766
+ constructor() {
1767
+ this.debugValue = false;
1768
+ }
1769
+ get debug() {
1770
+ return this.debugValue;
1771
+ }
1772
+ set debug(newValue) {
1773
+ this.debugValue = newValue;
1774
+ }
1775
+ }
1776
+ class MockWorkflowTestModule {
1777
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1778
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, declarations: [InvalidMockComponent, MockStepComponent], imports: [NoopAnimationsModule] }); }
1779
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, imports: [NoopAnimationsModule] }); }
1780
+ }
1781
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWorkflowTestModule, decorators: [{
1782
+ type: NgModule,
1783
+ args: [{
1784
+ imports: [NoopAnimationsModule],
1785
+ declarations: [InvalidMockComponent, MockStepComponent],
1786
+ }]
1787
+ }] });
1788
+
1789
+ /*
1790
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1791
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1792
+ * This software is released under MIT license.
1793
+ * The full license information can be found in LICENSE in the root directory of this project.
1794
+ */
1795
+
1796
+ /*
1797
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1798
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1799
+ * This software is released under MIT license.
1800
+ * The full license information can be found in LICENSE in the root directory of this project.
1801
+ */
1802
+ class MockAppfxWizardComponent {
1803
+ constructor() {
1804
+ this.openedChange = new EventEmitter();
1805
+ this.onModelChange = new EventEmitter();
1806
+ this.onFinish = new EventEmitter();
1807
+ this.onClose = new EventEmitter();
1808
+ }
1809
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxWizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1810
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockAppfxWizardComponent, isStandalone: false, selector: "appfx-wizard", inputs: { title: "title", pages: "pages", wizardModel: "wizardModel", loading: "loading", size: "size", opened: "opened" }, outputs: { openedChange: "openedChange", onModelChange: "onModelChange", onFinish: "onFinish", onClose: "onClose" }, ngImport: i0, template: '', isInline: true }); }
1811
+ }
1812
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockAppfxWizardComponent, decorators: [{
1813
+ type: Component,
1814
+ args: [{
1815
+ selector: 'appfx-wizard',
1816
+ standalone: false,
1817
+ template: '',
1818
+ }]
1819
+ }], propDecorators: { title: [{
1820
+ type: Input
1821
+ }], pages: [{
1822
+ type: Input
1823
+ }], wizardModel: [{
1824
+ type: Input
1825
+ }], loading: [{
1826
+ type: Input
1827
+ }], size: [{
1828
+ type: Input
1829
+ }], opened: [{
1830
+ type: Input
1831
+ }], openedChange: [{
1832
+ type: Output
1833
+ }], onModelChange: [{
1834
+ type: Output
1835
+ }], onFinish: [{
1836
+ type: Output
1837
+ }], onClose: [{
1838
+ type: Output
1839
+ }] } });
1840
+ class MockWizardStandaloneComponent extends MockAppfxWizardComponent {
1841
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWizardStandaloneComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1842
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: MockWizardStandaloneComponent, isStandalone: true, selector: "appfx-wizard", usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
1843
+ }
1844
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockWizardStandaloneComponent, decorators: [{
1845
+ type: Component,
1846
+ args: [{
1847
+ selector: 'appfx-wizard',
1848
+ standalone: true,
1849
+ template: '',
1850
+ }]
1851
+ }] });
1852
+
1853
+ /*
1854
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1855
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1856
+ * This software is released under MIT license.
1857
+ * The full license information can be found in LICENSE in the root directory of this project.
1858
+ */
1859
+ class WizardHelper {
1860
+ #navPanelSelector = '.hermes-wizard-stepnav-wrapper';
1861
+ #navitemSelector = 'hermes-wizard-stepnav .hermes-wizard-stepnav-item';
1862
+ #showStepNavBinSelector = '.btn-show-stepnav';
1863
+ #closeStepNavBinSelector = '.btn-close-stepnav';
1864
+ constructor(wizard) {
1865
+ this.wizard = wizard;
1866
+ }
1867
+ get pageNavTitles() {
1868
+ // getlastTextNode is needed because hermes-icon contains a span with text labels for
1869
+ // the icons which we don't care about.
1870
+ return this.wizard
1871
+ .queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link-title'))
1872
+ .map((v) => this.getLastTextNode(v));
1873
+ }
1874
+ get isVisible() {
1875
+ return getComputedStyle(this.wizard.nativeElement)['visibility'] === 'visible';
1876
+ }
1877
+ get activePageNavTitle() {
1878
+ const activeNavItem = this.wizard.query(By.css(this.#navitemSelector + '.active .hermes-wizard-stepnav-link-title'));
1879
+ if (!activeNavItem) {
1880
+ return '';
1881
+ }
1882
+ return this.getLastTextNode(activeNavItem);
1883
+ }
1884
+ get activePageTitle() {
1885
+ return this.wizard.query(By.css('.hermes-wizard-page-title')).nativeElement.innerText.trim();
1886
+ }
1887
+ get size() {
1888
+ return Array.from(this.wizard.nativeElement.classList)
1889
+ .map((value) => {
1890
+ const matches = value.match(/^wizard-(sm|md|lg|xl)$/);
1891
+ return (matches || [])[1];
1892
+ })
1893
+ .filter(v => !!v)
1894
+ .pop();
1895
+ }
1896
+ get buttons() {
1897
+ return this.wizard.queryAll(By.css('hermes-wizard-button button'));
1898
+ }
1899
+ get visibleButtons() {
1900
+ return this.buttons.filter((value) => {
1901
+ return value.nativeElement.parentElement.getAttribute('aria-hidden') === 'false';
1902
+ });
1903
+ }
1904
+ get cancelButton() {
1905
+ return this.buttons[0];
1906
+ }
1907
+ get cancelButtonText() {
1908
+ return this.cancelButton.nativeElement.innerText.trim();
1909
+ }
1910
+ get backButton() {
1911
+ return this.buttons[1];
1912
+ }
1913
+ get backButtonText() {
1914
+ return this.backButton.nativeElement.innerText.trim();
1915
+ }
1916
+ get nextButton() {
1917
+ return this.buttons[2];
1918
+ }
1919
+ get nextButtonText() {
1920
+ return this.nextButton.nativeElement.innerText.trim();
1921
+ }
1922
+ get finishButton() {
1923
+ return this.buttons[3];
1924
+ }
1925
+ get finishButtonText() {
1926
+ return this.finishButton.nativeElement.innerText.trim();
1927
+ }
1928
+ get stepNavPanel() {
1929
+ return this.wizard.query(By.css(this.#navPanelSelector));
1930
+ }
1931
+ get stepNavs() {
1932
+ return this.wizard.queryAll(By.css(this.#navitemSelector + ' .hermes-wizard-stepnav-link'));
1933
+ }
1934
+ get showStepNavBtn() {
1935
+ return this.wizard.query(By.css(this.#showStepNavBinSelector));
1936
+ }
1937
+ get closeStepNavBtn() {
1938
+ return this.wizard.query(By.css(this.#closeStepNavBinSelector));
1939
+ }
1940
+ navigateToStep(stepIndex) {
1941
+ this.click(this.stepNavs[stepIndex]);
1942
+ }
1943
+ isNavVisible() {
1944
+ return getComputedStyle(this.stepNavPanel.nativeElement)['display'] !== 'none';
1945
+ }
1946
+ isStepNavEnabled(stepIndex) {
1947
+ return this.stepNavs[stepIndex].attributes['disabled'] === undefined;
1948
+ }
1949
+ isShowNavIconVisible() {
1950
+ return getComputedStyle(this.showStepNavBtn.nativeElement)['display'] !== 'none';
1951
+ }
1952
+ showNavigator() {
1953
+ this.click(this.showStepNavBtn);
1954
+ }
1955
+ closeNavigator() {
1956
+ this.click(this.closeStepNavBtn);
1957
+ }
1958
+ cancel() {
1959
+ this.click(this.cancelButton);
1960
+ }
1961
+ back() {
1962
+ this.click(this.backButton);
1963
+ }
1964
+ next() {
1965
+ this.click(this.nextButton);
1966
+ }
1967
+ finish() {
1968
+ this.click(this.finishButton);
1969
+ }
1970
+ click(el) {
1971
+ el.triggerEventHandler('click', null);
1972
+ }
1973
+ getLastTextNode(debugElement) {
1974
+ // Find the last child node of type text (3)
1975
+ const childNodes = debugElement.nativeElement.childNodes;
1976
+ let result = '';
1977
+ childNodes.forEach((node) => {
1978
+ if (node.nodeType === 3) {
1979
+ const text = node.textContent?.trim() || '';
1980
+ // comments included by Angular are seen as text nodes, but terxtContent returns
1981
+ // an empty string. We should ignore those.
1982
+ if (text !== '') {
1983
+ result = text;
1984
+ }
1985
+ }
1986
+ });
1987
+ return result;
1988
+ }
1989
+ }
1990
+
1991
+ /*
1992
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1993
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1994
+ * This software is released under MIT license.
1995
+ * The full license information can be found in LICENSE in the root directory of this project.
1996
+ */
1997
+
1998
+ /*
1999
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2000
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2001
+ * This software is released under MIT license.
2002
+ * The full license information can be found in LICENSE in the root directory of this project.
2003
+ */
2004
+
2005
+ /**
2006
+ * Generated bundle index. Do not edit.
2007
+ */
2008
+
2009
+ export { FilterInputTestHelper, GridCellTestHelper, GridFooterTestHelper, GridHelper, GridPlaceholder, GridRowTestHelper, InvalidMockComponent, MockA11yService, MockAppfxCardContainerComponent, MockAppfxCardContainerStandaloneComponent, MockAppfxDatagridComponent, MockAppfxDialogComponent, MockAppfxDialogHeaderComponent, MockAppfxDialogHeaderStandaloneComponent, MockAppfxDialogStandaloneComponent, MockAppfxMenuActionComponent, MockAppfxMenuActionStandaloneComponent, MockAppfxMenuComponent, MockAppfxMenuStandaloneComponent, MockAppfxWizardComponent, MockCardContainerComponent, MockContainerService, MockDatagridActionBarComponent, MockDatagridCellContainerComponent, MockDatagridColumnToggleComponent, MockDatagridFiltersComponent, MockDatagridFiltersStandaloneComponent, MockDatagridPersistSettingsDirective, MockDatagridPreserveSelectionDirective, MockDragDropService, MockElementRef, MockIsRowSelectablePipe, MockLayoutService, MockPropertyViewComponent, MockPropertyViewStandaloneComponent, MockPropertyViewStrings, MockRenderer2, MockRequiredFieldLegendComponent, MockRequiredFieldLegendStandaloneComponent, MockStandaloneDatagridComponent, MockStepComponent, MockStepModel, MockStepperComponent, MockStepperStandaloneComponent, MockWizardStandaloneComponent, MockWorkflowConfigurationService, MockWorkflowTestModule, SampleCardComponent, SampleCardWithoutFooterComponent, SampleCardWithoutHeaderComponent, TabsHelper, WizardHelper, ZoomLevelServiceMock, cardIdToOrder, sampleCards, sampleCardsSettings, sortCardsFn, verifyPropertyViewMessage, verifyPropertyViewProperty };
2010
+ //# sourceMappingURL=hermes-ui-angular-addons-testing.mjs.map