@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,716 @@
1
+ import * as i9 from '@angular/common';
2
+ import { CommonModule } from '@angular/common';
3
+ import * as i0 from '@angular/core';
4
+ import { Injectable, EventEmitter, ViewChild, ViewChildren, Input, Output, Component, NgModule } from '@angular/core';
5
+ import * as i4 from '@angular/forms';
6
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
7
+ import * as i7 from '@hermes-ui/angular/addons/a11y';
8
+ import { AppfxA11yModule } from '@hermes-ui/angular/addons/a11y';
9
+ import * as i6 from '@hermes-ui/angular/addons/property-view';
10
+ import { PropertyViewBuilder, AppfxPropertyViewModule } from '@hermes-ui/angular/addons/property-view';
11
+ import * as i3 from '@hermes-ui/angular/addons/var';
12
+ import { StepContainer, RelevanceService, WorkflowModelManager, AppfxWorkflowCoreModule } from '@hermes-ui/angular/addons/var';
13
+ import * as i8 from '@hermes-ui/angular/stepper';
14
+ import { StepperPanelStatus, HermesStepper, HermesStepperPanel, HermesStepButton, HermesStepperModule } from '@hermes-ui/angular/stepper';
15
+ import { BehaviorSubject, ReplaySubject, Subject, Subscription, combineLatest, of } from 'rxjs';
16
+ import { debounceTime, map, filter, take, switchMap, tap, first } from 'rxjs/operators';
17
+ import * as i2 from '@hermes-ui/angular/addons/workflow/strings';
18
+
19
+ /*
20
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
21
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
22
+ * This software is released under MIT license.
23
+ * The full license information can be found in LICENSE in the root directory of this project.
24
+ */
25
+ /**
26
+ * SummaryService provides methods to build data required to display Step summary using appfx-property-view.
27
+ */
28
+ class SummaryService {
29
+ /**
30
+ * Builds {@link PropertyViewModel} for the Step passed using Step#description field.
31
+ */
32
+ getDescription(step) {
33
+ if (step.description) {
34
+ return this.getPropertyViewModelFromMessage(step.description);
35
+ }
36
+ return undefined;
37
+ }
38
+ /**
39
+ * Builds {@link PropertyViewModel} for the Step passed using Step#summary method.
40
+ */
41
+ getSummary(step) {
42
+ if (step.summary) {
43
+ const stepSummary = step.summary(this.getPropertyViewSectionBuilder(), step.modelInstance);
44
+ return this.getPropertyViewModelFromPropertyViewSectionModel(stepSummary);
45
+ }
46
+ return undefined;
47
+ }
48
+ getPropertyViewModelFromMessage(data) {
49
+ const builder = this.getPropertyViewBuilder();
50
+ const categoryBuilder = builder.generateAllCategory('');
51
+ categoryBuilder.section('defaultSection').message(data).renderAsHtml(true);
52
+ return builder.build();
53
+ }
54
+ getPropertyViewModelFromPropertyViewSectionModel(data) {
55
+ const categoryBuilder = this.getPropertyViewCategoryBuilder();
56
+ const category = categoryBuilder.build();
57
+ category.content = [data];
58
+ return {
59
+ categories: [category],
60
+ };
61
+ }
62
+ getPropertyViewSectionBuilder() {
63
+ return this.getPropertyViewCategoryBuilder().section('defaultSection');
64
+ }
65
+ getPropertyViewCategoryBuilder() {
66
+ return this.getPropertyViewBuilder().generateAllCategory('');
67
+ }
68
+ getPropertyViewBuilder() {
69
+ return new PropertyViewBuilder();
70
+ }
71
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SummaryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
72
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SummaryService }); }
73
+ }
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: SummaryService, decorators: [{
75
+ type: Injectable
76
+ }] });
77
+
78
+ /*
79
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
80
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
81
+ * This software is released under MIT license.
82
+ * The full license information can be found in LICENSE in the root directory of this project.
83
+ */
84
+ /**
85
+ * HermesStepper component has very limited API. It does not provide public information
86
+ * about the expanded state of the step panels. Also it does not provide straight forward
87
+ * API for notification when a panel get expanded.
88
+ * This class is responsible for exposing the state of Clarity stepper component.
89
+ * It monitors the current state of all panels. When a panel is expanded,
90
+ * {@link onStepActivated$} observable emits.
91
+ */
92
+ class StepperStateService {
93
+ constructor(summaryService) {
94
+ this.summaryService = summaryService;
95
+ /**
96
+ * Current state of all panels.
97
+ */
98
+ this.panelState$ = new BehaviorSubject([]);
99
+ /**
100
+ * Panel state on the previous user interaction.
101
+ */
102
+ this.lastExpandedState = [];
103
+ this.onStepActivated$ = this.initOnStepActivated$();
104
+ }
105
+ /**
106
+ * Must be invoked when {@link HermesAccordionPanel#panelOpenChange} EventEmitter emits.
107
+ * `panelOpenChange` emits when a panel changes its opened state.
108
+ * One would expect this listener to be invoked once per panel transition (current panel
109
+ * is closed and the next is opened). Unfortunately this is not the case. The listener
110
+ * is invoked every time for all panels on every transition and sometimes even multiple times
111
+ * for one and the same panel just for a single transition.
112
+ * The panels states are pushed to {@link panelState$} subject, that is debounced.
113
+ *
114
+ * @param step Step, rendered by the Clarity stepper
115
+ * @param expanded Expanded state of the step
116
+ * @param index Step index (different than the panel index, as some steps might be skipped)
117
+ */
118
+ stepActivated(step, expanded, index) {
119
+ const expandedState = this.panelState$.value;
120
+ if (expandedState[index] && expandedState[index].expanded === expanded) {
121
+ // Current and previous expanded state is the same. Do nothing.
122
+ return;
123
+ }
124
+ const isStepValid = expandedState[index] ? expandedState[index].valid : false;
125
+ // console.log(`Step ${name} expanded: ${expanded} index: ${index}`);
126
+ expandedState[index] = {
127
+ step: step,
128
+ expanded: expanded,
129
+ index: index,
130
+ valid: isStepValid,
131
+ };
132
+ this.panelState$.next(expandedState);
133
+ }
134
+ /**
135
+ * Marks a step as valid or not depending on the passed state.
136
+ * @param {Step} step Step, which has be marked as valid
137
+ * @param {boolean} isValid The valid state of the step
138
+ */
139
+ markStepValid(step, isValid) {
140
+ const stepState = this.panelState$.value.find((panelState) => panelState && panelState.step === step);
141
+ if (stepState) {
142
+ stepState.valid = isValid;
143
+ }
144
+ }
145
+ /**
146
+ * Reset the valid states of the next steps
147
+ * @param {Step} step Step after which all next steps to be reset
148
+ */
149
+ resetNextStepsValidStates(step) {
150
+ const stepStateIndex = this.panelState$.value.findIndex(currentStepState => currentStepState && currentStepState.step === step);
151
+ this.panelState$.value.forEach(currentStepState => {
152
+ if (currentStepState && currentStepState.index > stepStateIndex) {
153
+ currentStepState.valid = false;
154
+ currentStepState.step.initialDescription = this.summaryService.getDescription(currentStepState.step);
155
+ }
156
+ });
157
+ }
158
+ /**
159
+ * Finds the index of the first step in the list which is not skipped and not-valid/incomplete.
160
+ * This method always considers the last not skipped step in the stepper as incomplete.
161
+ * @returns {number} The index of the first incomplete step or the index of the last step if all are completed.
162
+ */
163
+ getIndexOfFirstIncompleteStep() {
164
+ const notValidStep = this.panelState$.value.find(stepState => stepState && !stepState.step.isSkipped && !stepState.valid);
165
+ if (notValidStep) {
166
+ return notValidStep.index;
167
+ }
168
+ else {
169
+ // If all steps are valid then return the last valid step as incomplete.
170
+ const validSteps = this.panelState$.value.filter(stepState => stepState && !stepState.step.isSkipped && stepState.valid);
171
+ return validSteps.length ? validSteps[validSteps.length - 1].index : 0;
172
+ }
173
+ }
174
+ /**
175
+ * Finds the index of the first visible step container which is not-valid/incomplete.
176
+ * This method always considers the last visible step in the stepper as incomplete.
177
+ *
178
+ * Note that since skipped steps are not rendered there are no step containers for those.
179
+ * E.g if we have the following steps:
180
+ * 0 - step 1, valid
181
+ * 1 - step 2, valid & skipped,
182
+ * 2 - step 3, invalid
183
+ * The method will return 1 because step 2 will not be rendered at all and we will have only
184
+ * two step containers.
185
+ *
186
+ * @returns {number} The index of the first incomplete step container or the index of the
187
+ * last one if all are completed.
188
+ */
189
+ getFirstIncompleteStepContainerIndex() {
190
+ // filter out all skipped steps as they are not rendered.
191
+ const visibleSteps = this.panelState$.value.filter(stepState => stepState && !stepState.step.isSkipped);
192
+ const firstInvalidStepIndex = visibleSteps.findIndex(stepState => !stepState.valid);
193
+ if (firstInvalidStepIndex >= 0) {
194
+ return firstInvalidStepIndex;
195
+ }
196
+ return visibleSteps.length ? visibleSteps.length - 1 : 0;
197
+ }
198
+ /**
199
+ * Checks if all steps are in completed state.
200
+ * @returns {boolean} True if all steps are completed, False otherwise.
201
+ */
202
+ areAllStepsCompleted() {
203
+ return this.panelState$.value.every(stepState => stepState && (stepState.step.isSkipped || stepState.valid));
204
+ }
205
+ /**
206
+ * Method to find out if the step at a given index is expanded or not.
207
+ * List of step states are retrieved and based on the index; 'expanded'
208
+ * property lets us know if the step is currently open or not.
209
+ * @param {number} index of the step
210
+ * @returns {boolean}
211
+ */
212
+ isStepActivated(index) {
213
+ const panelState = this.panelState$.value;
214
+ if (panelState[index]) {
215
+ return panelState[index].expanded;
216
+ }
217
+ else {
218
+ return true;
219
+ }
220
+ }
221
+ /**
222
+ * Determines if a step at a specific index is the first visible step in the provided list.
223
+ * @param index The index to check.
224
+ * @param steps The list of internal steps to evaluate for skipped status.
225
+ * @returns True if the index is the first non-skipped step, false otherwise.
226
+ */
227
+ isFirstVisibleStep(index, steps) {
228
+ const firstVisible = steps.findIndex(s => !s.isSkipped);
229
+ return index === firstVisible;
230
+ }
231
+ initOnStepActivated$() {
232
+ return this.panelState$.pipe(debounceTime(50), map((currentState) => {
233
+ // Find a step that is now expanded and was previously collapsed.
234
+ const expandedStep = currentState.find((currExpanded, index) =>
235
+ // current state is expanded
236
+ currExpanded &&
237
+ currExpanded.expanded &&
238
+ // AND previous state was collapsed or it is a newly added panel
239
+ (!this.lastExpandedState[index] || !this.lastExpandedState[index].expanded));
240
+ this.lastExpandedState = currentState.concat();
241
+ return expandedStep;
242
+ }), filter((stepState) => !!stepState));
243
+ }
244
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StepperStateService, deps: [{ token: SummaryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
245
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StepperStateService }); }
246
+ }
247
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StepperStateService, decorators: [{
248
+ type: Injectable
249
+ }], ctorParameters: () => [{ type: SummaryService }] });
250
+
251
+ /**
252
+ * Component used to render the composition of step components as inline wizard
253
+ * (using Clarity stepper component). Workflow of the steps is handled by the
254
+ * {@link WorkflowModelManager} - the same responsible for the {@link AppfxWizardComponent} workflow.
255
+ * This guarantees the same API and UX for the inline and dialog wizards.
256
+ */
257
+ class StepperComponent {
258
+ #steps;
259
+ #wizardModel;
260
+ constructor(stateService, workflowStrings, modelMgr, relevanceService, formBuilder, cdr, summaryService) {
261
+ this.stateService = stateService;
262
+ this.workflowStrings = workflowStrings;
263
+ this.modelMgr = modelMgr;
264
+ this.relevanceService = relevanceService;
265
+ this.formBuilder = formBuilder;
266
+ this.cdr = cdr;
267
+ this.summaryService = summaryService;
268
+ /**
269
+ * Display loading indicator.
270
+ */
271
+ this.loading = false;
272
+ /**
273
+ * If set to true, the Next button will use the primary (solid) button style.
274
+ * Defaults to false to maintain backward compatibility for existing consumers.
275
+ */
276
+ this.usePrimaryNextButton = false;
277
+ /**
278
+ * If set to true, a "Back" button is displayed in every step except the first visible one.
279
+ * This allows users to navigate to the previous non-skipped step.
280
+ */
281
+ this.showBackButton = false;
282
+ /**
283
+ * If set to true, a "Cancel" button is displayed in all steps.
284
+ * This allows users to terminate the workflow before completion.
285
+ */
286
+ this.showCancelButton = false;
287
+ /**
288
+ * Dispatches when any of the workflow state's variables changes.
289
+ */
290
+ this.onModelChange = new EventEmitter();
291
+ /**
292
+ * Dispatched when the workflow is finished via the Finish button.
293
+ * You can perform the actions you want there (i.e modify or create something)
294
+ */
295
+ this.onFinish = new EventEmitter();
296
+ /**
297
+ * Dispatched when the user clicks the "Cancel" button.
298
+ * Use this to handle navigation away from the stepper or closing the containing view.
299
+ */
300
+ this.onCancel = new EventEmitter();
301
+ this.awaitingWizardPageOnLoad$ = new ReplaySubject(Infinity);
302
+ this.componentAfterViewInit$ = new Subject();
303
+ this.subscriptions = new Subscription();
304
+ this.errorActivatingStep = false;
305
+ this.form = formBuilder.group({});
306
+ this.subscriptions.add(modelMgr.onModelChange$.subscribe((changes) => {
307
+ this.onModelChange.emit(changes);
308
+ this.invalidateNextSteps();
309
+ }));
310
+ this.subscriptions.add(modelMgr.loading$.subscribe(loading => (this.loading = loading)));
311
+ this.subscriptions.add(stateService.onStepActivated$.subscribe((stepState) => {
312
+ // When navigated back to a previous step and user clicks next without doing any changes
313
+ // all future steps are invalidated and their completion step is reset.
314
+ // To workaround this and to preserve the state of the future steps as completed when there are no changes
315
+ // the Stepper#completePreviousSteps function is invoked, which marks all previous steps as complete.
316
+ // It has to be invoked with the index of the step which is right after
317
+ // the last step known as complete in the list as this method marks all previous steps as completed, along
318
+ // with the index of the step that is currently being expanded, so as not to be marked as closed (open=false).
319
+ // After this the initialStep value has to be set to name of the step currently being activated to open it
320
+ // in the stepper.
321
+ // e.g. if step 6 is the first incomplete step in the list meaning the previous steps are all completed and
322
+ // it is navigated back to step 2, after clicking next when step 3 is being activated
323
+ // invoking Stepper#completePreviousSteps with the index of step 6 as the source and index of step 3 as the target,
324
+ // it will mark all steps up to and including 5 as completed. After this the initialStep value has to be set
325
+ // to the form group name of step 3 to open it in the stepper.
326
+ // Caveat: when all steps are completed and it is navigated back, stateService#getIndexOfFirstIncompleteStep
327
+ // returns the index of the last not skipped step in the stepper as if it returns 0 the valid states
328
+ // of the steps that come after the current step will be lost and there is no public method in the stepper API
329
+ // which to mark all steps as complete.
330
+ const indexOfFirstIncompleteStep = stateService.getIndexOfFirstIncompleteStep();
331
+ if (stepState.index !== indexOfFirstIncompleteStep) {
332
+ this.completePreviousSteps(indexOfFirstIncompleteStep, stepState.index);
333
+ }
334
+ this.initialStep = this.getFormGroupNameForStep(stepState.index);
335
+ this.onStepActivated(stepState.step);
336
+ // On step activation reset the dynamic description with step's description.
337
+ stepState.step.initialDescription = summaryService.getDescription(stepState.step);
338
+ }));
339
+ this.stepPanelOverriddenStrings = {
340
+ success: workflowStrings.step.completed,
341
+ danger: workflowStrings.step.error,
342
+ };
343
+ }
344
+ /**
345
+ * The descriptions of the pages that are visualized.
346
+ */
347
+ get steps() {
348
+ return this.#steps;
349
+ }
350
+ set steps(value) {
351
+ this.relevanceService.steps = value;
352
+ this.relevanceService
353
+ .checkComplete$()
354
+ .pipe(take(1))
355
+ .subscribe((steps) => {
356
+ this.#steps = steps;
357
+ this.modelMgr.steps = steps;
358
+ this.initForm(steps);
359
+ this.#steps.forEach(step => (step.initialDescription = this.summaryService.getDescription(step)));
360
+ });
361
+ }
362
+ get stepsInternal() {
363
+ return this.#steps;
364
+ }
365
+ /**
366
+ * You can supply here any structure you like. As long as it has the
367
+ * needed properties to inject to the page models and eject back from
368
+ * the page models.
369
+ */
370
+ get wizardModel() {
371
+ return this.#wizardModel;
372
+ }
373
+ set wizardModel(value) {
374
+ this.#wizardModel = value;
375
+ this.modelMgr.model = value;
376
+ }
377
+ set hermesStepButtons(hermesStepButtons) {
378
+ hermesStepButtons.forEach((button) => {
379
+ // Check if button's navigateToNextPanel has already been patched with the additional validation logic.
380
+ if (!button['navigatePatched']) {
381
+ const hermesStepButtonNavigateToNextPanelFn = button.navigateToNextPanel.bind(button);
382
+ button.navigateToNextPanel = this.onHermesStepButtonClickedWrapperFn(hermesStepButtonNavigateToNextPanelFn);
383
+ button['navigatePatched'] = true;
384
+ }
385
+ });
386
+ }
387
+ set stepper(value) {
388
+ this.stepperService = value['stepperService'];
389
+ this.patchStepperService();
390
+ this.subscribeForPanelChanges();
391
+ }
392
+ // Maps to Wizard.isLoading
393
+ get isLoading() {
394
+ return (this.loading || // explicitly set as busy
395
+ this.relevanceService.loading || // check if relevanceCheck computation in progress
396
+ // additionally inspect pages containers and see if any one is loading
397
+ (!!this.pagesContainers &&
398
+ this.pagesContainers.some((value) => !!value.step.modelInstance && !!value.step.modelInstance.loading)));
399
+ }
400
+ get pageProgressDetails() {
401
+ return this.activePage?.step?.modelInstance?.progressStatus || '';
402
+ }
403
+ get showProgressCancelButton() {
404
+ return typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function';
405
+ }
406
+ get cancelValidationButtonLabel() {
407
+ return this.activePage?.step?.modelInstance?.cancelableValidation?.cancelButtonLabel || '';
408
+ }
409
+ cancelPageValidation() {
410
+ if (typeof this.activePage?.step?.modelInstance?.cancelableValidation?.cancelValidation === 'function') {
411
+ this.activePage?.step?.modelInstance?.cancelableValidation.cancelValidation();
412
+ }
413
+ }
414
+ isNextButtonDisabled(step) {
415
+ const activeContainer = this.pagesContainers && this.pagesContainers.find(item => item.step === step);
416
+ return this.isLoading || this.errorActivatingStep || (activeContainer ? !activeContainer.readyToComplete : false);
417
+ }
418
+ ngOnDestroy() {
419
+ this.#steps = [];
420
+ this.activeStep = undefined;
421
+ this.subscriptions.unsubscribe();
422
+ this.unsubscribeRetry();
423
+ this.modelMgr.destroy();
424
+ }
425
+ ngAfterViewInit() {
426
+ if (this.pagesContainers.length) {
427
+ // If relevance checks are fast enough (or there are no relevance checks), _pagesContainers will be initialized.
428
+ this.componentAfterViewInit$.next();
429
+ }
430
+ else {
431
+ // Relevance checks may take some time, wait for _pagesContainers to initialize
432
+ this.pagesContainers.changes.pipe(take(1)).subscribe(() => this.componentAfterViewInit$.next());
433
+ }
434
+ }
435
+ ngAfterContentInit() {
436
+ // upon getting a wizard page onLoad signal and safely ensuring component has instantiated itself with `AppfxWizardPage`
437
+ // elements in the template, only then activate the pending container
438
+ this.subscriptions.add(combineLatest([this.componentAfterViewInit$, this.awaitingWizardPageOnLoad$])
439
+ .pipe(filter(() => !!this.pagesContainers), switchMap(([, pendingStep]) => this.modelMgr.injectPropertiesToPendingStep(pendingStep)))
440
+ .subscribe(result => {
441
+ this.errorActivatingStep = !!result.error;
442
+ this.activatePendingContainer(result);
443
+ }));
444
+ }
445
+ // Maps to Wizard.onWizardPageActivated
446
+ onStepActivated(step) {
447
+ this.awaitingWizardPageOnLoad$.next(step);
448
+ }
449
+ /**
450
+ * Wrapper function which to wrap the handler of the "Next/Finish" button of every step and
451
+ * to add additional validation and data extraction logic.
452
+ */
453
+ onHermesStepButtonClickedWrapperFn(callbackFn) {
454
+ return () => {
455
+ this.commitActiveStep()
456
+ .pipe(take(1))
457
+ .subscribe(() => {
458
+ callbackFn();
459
+ });
460
+ };
461
+ }
462
+ /**
463
+ * Handler invoked when the form is submitted. This happens when
464
+ * all steps are in completed state.
465
+ */
466
+ onFormSubmit() {
467
+ if (this.stateService.areAllStepsCompleted()) {
468
+ this.onFinish.emit();
469
+ }
470
+ }
471
+ /**
472
+ * Checks if the given step index corresponds to the first visible (non-skipped) step in the workflow.
473
+ * Used to conditionally hide the Back button on the initial page.
474
+ * @param stepIndex The index of the step in the stepsInternal array.
475
+ */
476
+ isFirstVisibleStep(stepIndex) {
477
+ return this.stateService.isFirstVisibleStep(stepIndex, this.stepsInternal);
478
+ }
479
+ /**
480
+ * When user clicks on already completed steps, Stepper should call validate method of current step before navigation.
481
+ * Patches stepperService.togglePanel method which calls this.commitActiveStep before calling the original togglePanel method.
482
+ */
483
+ patchStepperService() {
484
+ const originalTogglePanelFunc = this.stepperService.togglePanel;
485
+ if (!this.stepperService['togglePanelPatched']) {
486
+ this.stepperService.togglePanel = (...args) => {
487
+ const firstIncompleteContainerIndex = this.stateService.getFirstIncompleteStepContainerIndex();
488
+ const activeContainerIndex = this.pagesContainers.toArray().findIndex(item => item === this.activePage);
489
+ if (firstIncompleteContainerIndex === activeContainerIndex) {
490
+ // When moving from incomplete step to previous steps, do not call commit
491
+ originalTogglePanelFunc.apply(this.stepperService, args);
492
+ }
493
+ else {
494
+ this.commitActiveStep()
495
+ .pipe(take(1), filter(isValid => isValid))
496
+ .subscribe(() => {
497
+ originalTogglePanelFunc.apply(this.stepperService, args);
498
+ });
499
+ }
500
+ };
501
+ this.stepperService['togglePanelPatched'] = true;
502
+ }
503
+ }
504
+ commitActiveStep() {
505
+ if (!this.activePage) {
506
+ return of(false);
507
+ }
508
+ this.loading = true;
509
+ return this.activePage.onCommit().pipe(tap(isValid => {
510
+ const activeStep = this.activePage.step;
511
+ // Mark the current step as valid/invalid.
512
+ this.stateService.markStepValid(activeStep, isValid);
513
+ // If not valid, mark the next steps as invalid too.
514
+ if (!isValid) {
515
+ this.stateService.resetNextStepsValidStates(activeStep);
516
+ }
517
+ else if (activeStep.summary) {
518
+ // retrieve step summary on successful validation of step.
519
+ activeStep.initialDescription = this.summaryService.getSummary(activeStep);
520
+ }
521
+ else {
522
+ // no action
523
+ }
524
+ this.form.controls[this.initialStep].setErrors(isValid ? null : { formInvalid: true });
525
+ this.form.controls[this.initialStep].markAsDirty();
526
+ }), switchMap((isValid) => {
527
+ if (isValid) {
528
+ this.modelMgr.ejectPropertiesFromCurrentStep(this.activeStep);
529
+ return this.relevanceService.checkComplete$().pipe(switchMap(() => of(isValid)));
530
+ }
531
+ return of(isValid);
532
+ }), tap(() => {
533
+ this.loading = false;
534
+ this.cdr.detectChanges();
535
+ }));
536
+ }
537
+ activatePendingContainer(result) {
538
+ this.unsubscribeRetry();
539
+ const pendingPage = this.pagesContainers.find((item) => item.step === result.pendingStep);
540
+ if (pendingPage) {
541
+ if (result.error) {
542
+ this.retrySubscription = pendingPage.onRetry
543
+ .pipe(take(1))
544
+ .subscribe((step) => this.retryStepTransition(step));
545
+ }
546
+ else {
547
+ this.activeStep = result.pendingStep;
548
+ this.activePage = this.pagesContainers.find(item => item.step === this.activeStep);
549
+ }
550
+ // Finally activate the container
551
+ pendingPage.onActivate(result.error, result.stepModelChanges, result.recreateComponent);
552
+ // Force digest as activation trigger changes Clarity wizard. template conditionals must re-evaluate
553
+ this.cdr.detectChanges();
554
+ }
555
+ }
556
+ retryStepTransition(step) {
557
+ this.onStepActivated(step);
558
+ }
559
+ invalidateNextSteps() {
560
+ if (!this.activeStep) {
561
+ return;
562
+ }
563
+ this.stateService.resetNextStepsValidStates(this.activeStep);
564
+ this.stepperService.resetPanels();
565
+ this.stepperService.overrideInitialPanel(this.initialStep);
566
+ }
567
+ /**
568
+ * Marks steps that come before the provided source index as complete, internally
569
+ * in the Clarity panel component.
570
+ * It will mark all panels as closed, except the one that is being expanded,
571
+ * passed in as the target index.
572
+ *
573
+ * DOM order of steps is assumed with regard to indices.
574
+ *
575
+ * @param sourceIndex indices that come before this will be marked as complete.
576
+ * @param openPanelIndex index of the panel set to be opened.
577
+ */
578
+ completePreviousSteps(sourceIndex, openPanelIndex) {
579
+ const hermesStepperPanels = this.stepperPanels.toArray();
580
+ const sourcePanelId = this.getFormGroupNameForStep(sourceIndex);
581
+ for (let stepIndex = 0; stepIndex < hermesStepperPanels.length; stepIndex++) {
582
+ const stepperPanel = hermesStepperPanels[stepIndex];
583
+ if (stepperPanel.id === sourcePanelId) {
584
+ break;
585
+ }
586
+ stepperPanel.panel.pipe(first()).subscribe(panel => {
587
+ panel.disabled = false;
588
+ panel.status = StepperPanelStatus.Complete;
589
+ if (stepIndex !== openPanelIndex) {
590
+ panel.open = false;
591
+ }
592
+ });
593
+ }
594
+ }
595
+ unsubscribeRetry() {
596
+ if (this.retrySubscription && !this.retrySubscription.closed) {
597
+ this.retrySubscription.unsubscribe();
598
+ }
599
+ }
600
+ /**
601
+ * HermesStepper requires a child FormGroup for every step. This method creates one dummy
602
+ * FormGroup for every step. In future these form groups must be used to indicate
603
+ * the error state of each step.
604
+ */
605
+ initForm(steps) {
606
+ if (steps && steps.length) {
607
+ const childFormGroups = {};
608
+ steps.forEach((step, index) => {
609
+ childFormGroups[this.getFormGroupNameForStep(index)] = this.formBuilder.group({});
610
+ });
611
+ this.form = this.formBuilder.group(childFormGroups);
612
+ this.initialStep = this.getFormGroupNameForStep(0);
613
+ }
614
+ }
615
+ /**
616
+ * In Clarity 4.x the implementation was:
617
+ * <code>
618
+ * <hermes-stepper-panel (hermesAccordionPanelOpenChange)="stateService.stepActivated(step, $event, i)"
619
+ * </code>
620
+ * In Clarity 5.x "hermesAccordionPanelOpenChange" was regressed:
621
+ * https://github.com/vmware/clarity/issues/5957
622
+ * This is temporary fix until the above issue gets fixed.
623
+ *
624
+ * In future this logic can be changed. Instead of listening for all panels states
625
+ * (that triggers too many times), we can use combination of:
626
+ * - StepperService.activeStep (invoked on Next) AND
627
+ * - StepperService.togglePanel (invoked on previous panel click)
628
+ */
629
+ subscribeForPanelChanges() {
630
+ const panelsChanges = this.stepperService['_panelsChanges'];
631
+ this.subscriptions.add(panelsChanges.subscribe((panels) => {
632
+ panels.forEach((panelModel) => {
633
+ const panelId = panelModel.id;
634
+ const stepIndex = +panelId.replace('step', '');
635
+ const step = this.#steps[stepIndex];
636
+ this.stateService.stepActivated(step, panelModel.open, stepIndex);
637
+ });
638
+ }));
639
+ }
640
+ getFormGroupNameForStep(stepIndex) {
641
+ return 'step' + stepIndex;
642
+ }
643
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StepperComponent, deps: [{ token: StepperStateService }, { token: i2.WorkflowStrings }, { token: i3.WorkflowModelManager }, { token: i3.RelevanceService }, { token: i4.UntypedFormBuilder }, { token: i0.ChangeDetectorRef }, { token: SummaryService }], target: i0.ɵɵFactoryTarget.Component }); }
644
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: StepperComponent, isStandalone: false, selector: "appfx-stepper", inputs: { loading: "loading", usePrimaryNextButton: "usePrimaryNextButton", showBackButton: "showBackButton", showCancelButton: "showCancelButton", steps: "steps", wizardModel: "wizardModel" }, outputs: { onModelChange: "onModelChange", onFinish: "onFinish", onCancel: "onCancel" }, providers: [RelevanceService, StepperStateService, SummaryService, WorkflowModelManager], viewQueries: [{ propertyName: "stepper", first: true, predicate: HermesStepper, descendants: true }, { propertyName: "pagesContainers", predicate: StepContainer, descendants: true }, { propertyName: "stepperPanels", predicate: HermesStepperPanel, descendants: true }, { propertyName: "hermesStepButtons", predicate: HermesStepButton, descendants: true }], ngImport: i0, template: "<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<form\r\n hermesStepper\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n [hermesInitialStep]=\"initialStep\"\r\n [ngClass]=\"{ 'disable-form': isLoading }\"\r\n>\r\n <ng-container *ngFor=\"let step of stepsInternal; let i = index; let last = last\">\r\n <hermes-stepper-panel\r\n *ngIf=\"!step.isSkipped\"\r\n formGroupName=\"step{{ i }}\"\r\n [appfxOverrideHermesStrings]=\"stepPanelOverriddenStrings\"\r\n >\r\n <hermes-step-title>{{ step.title }}</hermes-step-title>\r\n <hermes-step-description>\r\n <appfx-property-view\r\n *ngIf=\"step.initialDescription\"\r\n [data]=\"step.initialDescription\"\r\n [attr.aria-label]=\"step.description\"\r\n ></appfx-property-view>\r\n </hermes-step-description>\r\n\r\n <hermes-step-content>\r\n <appfx-step-container [step]=\"step\"> </appfx-step-container>\r\n\r\n <button\r\n *ngIf=\"!last\"\r\n [disabled]=\"isNextButtonDisabled(step)\"\r\n hermesStepButton=\"next\"\r\n [ngClass]=\"{ 'btn-primary': usePrimaryNextButton }\"\r\n >\r\n {{ workflowStrings.next }}\r\n </button>\r\n <button *ngIf=\"last\" [disabled]=\"isNextButtonDisabled(step)\" hermesStepButton=\"submit\">\r\n {{ workflowStrings.finish }}\r\n </button>\r\n <button *ngIf=\"showBackButton && !isFirstVisibleStep(i)\" hermesStepButton=\"previous\">\r\n {{ workflowStrings.back }}\r\n </button>\r\n <button *ngIf=\"showCancelButton\" (click)=\"onCancel.emit()\" type=\"button\" class=\"hermes-step-button btn btn-link\">\r\n {{ workflowStrings.cancel }}\r\n </button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </ng-container>\r\n</form>\r\n\r\n<appfx-spinner\r\n *ngIf=\"isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [progressDetails]=\"pageProgressDetails\"\r\n [showActionButton]=\"showProgressCancelButton\"\r\n [actionButtonLabel]=\"cancelValidationButtonLabel\"\r\n (actionClick)=\"cancelPageValidation()\"\r\n>\r\n</appfx-spinner>\r\n", styles: [".disable-form{left:0;top:0;z-index:10;pointer-events:none;opacity:.5}form appfx-spinner{position:absolute;top:50%;left:50%;z-index:999}hermes-step-description ::ng-deep appfx-property-view-category{padding:0}hermes-step-description ::ng-deep td.pv-message-container{padding:0!important}hermes-step-description ::ng-deep .pv-message-text{line-height:1.2rem}hermes-step-description ::ng-deep .table td,hermes-step-description ::ng-deep .table th{background:none}:host button[hermesStepButton=previous]{border:1px solid var(--hermes-btn-primary-outline-color)}\n"], dependencies: [{ kind: "component", type: i6.PropertyViewComponent, selector: "appfx-property-view", inputs: ["data", "config"] }, { kind: "directive", type: i7.OverrideHermesStringsDirective, selector: "hermes-stepper-panel [appfxOverrideHermesStrings]", inputs: ["appfxOverrideHermesStrings"] }, { kind: "component", type: i3.StepContainerComponent, selector: "appfx-step-container", inputs: ["step", "description"], outputs: ["onRetry"] }, { kind: "component", type: i3.SpinnerComponent, selector: "appfx-spinner", inputs: ["message", "politeness", "isModal", "progressDetails", "showActionButton", "actionButtonLabel"], outputs: ["actionClick"] }, { kind: "component", type: i8.HermesStepper, selector: "form[hermesStepper]", inputs: ["hermesInitialStep"] }, { kind: "directive", type: i8.HermesStepButton, selector: "[hermesStepButton]", inputs: ["hermesStepButton"] }, { kind: "component", type: i8.HermesStepTitle, selector: "hermes-step-title" }, { kind: "component", type: i8.HermesStepDescription, selector: "hermes-step-description" }, { kind: "component", type: i8.HermesStepContent, selector: "hermes-step-content" }, { kind: "component", type: i8.HermesStepperPanel, selector: "hermes-stepper-panel" }, { kind: "directive", type: i8.StepperOompaLoompa, selector: "hermes-stepper-panel, [hermesStepButton]" }, { kind: "directive", type: i8.StepperWillyWonka, selector: "form[hermesStepper]" }, { kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }] }); }
645
+ }
646
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: StepperComponent, decorators: [{
647
+ type: Component,
648
+ args: [{ selector: 'appfx-stepper', standalone: false, providers: [RelevanceService, StepperStateService, SummaryService, WorkflowModelManager], template: "<!--\r\n ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n ~ This software is released under MIT license.\r\n ~ The full license information can be found in LICENSE in the root directory of this project.\r\n -->\r\n<form\r\n hermesStepper\r\n [formGroup]=\"form\"\r\n (ngSubmit)=\"onFormSubmit()\"\r\n [hermesInitialStep]=\"initialStep\"\r\n [ngClass]=\"{ 'disable-form': isLoading }\"\r\n>\r\n <ng-container *ngFor=\"let step of stepsInternal; let i = index; let last = last\">\r\n <hermes-stepper-panel\r\n *ngIf=\"!step.isSkipped\"\r\n formGroupName=\"step{{ i }}\"\r\n [appfxOverrideHermesStrings]=\"stepPanelOverriddenStrings\"\r\n >\r\n <hermes-step-title>{{ step.title }}</hermes-step-title>\r\n <hermes-step-description>\r\n <appfx-property-view\r\n *ngIf=\"step.initialDescription\"\r\n [data]=\"step.initialDescription\"\r\n [attr.aria-label]=\"step.description\"\r\n ></appfx-property-view>\r\n </hermes-step-description>\r\n\r\n <hermes-step-content>\r\n <appfx-step-container [step]=\"step\"> </appfx-step-container>\r\n\r\n <button\r\n *ngIf=\"!last\"\r\n [disabled]=\"isNextButtonDisabled(step)\"\r\n hermesStepButton=\"next\"\r\n [ngClass]=\"{ 'btn-primary': usePrimaryNextButton }\"\r\n >\r\n {{ workflowStrings.next }}\r\n </button>\r\n <button *ngIf=\"last\" [disabled]=\"isNextButtonDisabled(step)\" hermesStepButton=\"submit\">\r\n {{ workflowStrings.finish }}\r\n </button>\r\n <button *ngIf=\"showBackButton && !isFirstVisibleStep(i)\" hermesStepButton=\"previous\">\r\n {{ workflowStrings.back }}\r\n </button>\r\n <button *ngIf=\"showCancelButton\" (click)=\"onCancel.emit()\" type=\"button\" class=\"hermes-step-button btn btn-link\">\r\n {{ workflowStrings.cancel }}\r\n </button>\r\n </hermes-step-content>\r\n </hermes-stepper-panel>\r\n </ng-container>\r\n</form>\r\n\r\n<appfx-spinner\r\n *ngIf=\"isLoading\"\r\n [message]=\"workflowStrings.loading\"\r\n [progressDetails]=\"pageProgressDetails\"\r\n [showActionButton]=\"showProgressCancelButton\"\r\n [actionButtonLabel]=\"cancelValidationButtonLabel\"\r\n (actionClick)=\"cancelPageValidation()\"\r\n>\r\n</appfx-spinner>\r\n", styles: [".disable-form{left:0;top:0;z-index:10;pointer-events:none;opacity:.5}form appfx-spinner{position:absolute;top:50%;left:50%;z-index:999}hermes-step-description ::ng-deep appfx-property-view-category{padding:0}hermes-step-description ::ng-deep td.pv-message-container{padding:0!important}hermes-step-description ::ng-deep .pv-message-text{line-height:1.2rem}hermes-step-description ::ng-deep .table td,hermes-step-description ::ng-deep .table th{background:none}:host button[hermesStepButton=previous]{border:1px solid var(--hermes-btn-primary-outline-color)}\n"] }]
649
+ }], ctorParameters: () => [{ type: StepperStateService }, { type: i2.WorkflowStrings }, { type: i3.WorkflowModelManager }, { type: i3.RelevanceService }, { type: i4.UntypedFormBuilder }, { type: i0.ChangeDetectorRef }, { type: SummaryService }], propDecorators: { loading: [{
650
+ type: Input
651
+ }], usePrimaryNextButton: [{
652
+ type: Input
653
+ }], showBackButton: [{
654
+ type: Input
655
+ }], showCancelButton: [{
656
+ type: Input
657
+ }], onModelChange: [{
658
+ type: Output
659
+ }], onFinish: [{
660
+ type: Output
661
+ }], onCancel: [{
662
+ type: Output
663
+ }], pagesContainers: [{
664
+ type: ViewChildren,
665
+ args: [StepContainer]
666
+ }], stepperPanels: [{
667
+ type: ViewChildren,
668
+ args: [HermesStepperPanel]
669
+ }], steps: [{
670
+ type: Input
671
+ }], wizardModel: [{
672
+ type: Input
673
+ }], hermesStepButtons: [{
674
+ type: ViewChildren,
675
+ args: [HermesStepButton]
676
+ }], stepper: [{
677
+ type: ViewChild,
678
+ args: [HermesStepper, { static: false }]
679
+ }] } });
680
+
681
+ /*
682
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
683
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
684
+ * This software is released under MIT license.
685
+ * The full license information can be found in LICENSE in the root directory of this project.
686
+ */
687
+ const clarityDependencies = [HermesStepperModule];
688
+ const appfxDependencies = [AppfxPropertyViewModule, AppfxA11yModule, AppfxWorkflowCoreModule];
689
+ class AppfxStepperModule {
690
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: AppfxStepperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
691
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: AppfxStepperModule, declarations: [StepperComponent], imports: [AppfxPropertyViewModule, AppfxA11yModule, AppfxWorkflowCoreModule, HermesStepperModule, CommonModule, FormsModule, ReactiveFormsModule], exports: [StepperComponent] }); }
692
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: AppfxStepperModule, providers: [StepperStateService, SummaryService], imports: [appfxDependencies, clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule] }); }
693
+ }
694
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: AppfxStepperModule, decorators: [{
695
+ type: NgModule,
696
+ args: [{
697
+ imports: [...appfxDependencies, ...clarityDependencies, CommonModule, FormsModule, ReactiveFormsModule],
698
+ declarations: [StepperComponent],
699
+ providers: [StepperStateService, SummaryService],
700
+ exports: [StepperComponent],
701
+ }]
702
+ }] });
703
+
704
+ /*
705
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
706
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
707
+ * This software is released under MIT license.
708
+ * The full license information can be found in LICENSE in the root directory of this project.
709
+ */
710
+
711
+ /**
712
+ * Generated bundle index. Do not edit.
713
+ */
714
+
715
+ export { AppfxStepperModule, StepperComponent as Stepper, StepperComponent, StepperStateService, SummaryService };
716
+ //# sourceMappingURL=hermes-ui-angular-addons-stepper.mjs.map