@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,2086 @@
1
+ import { FormControl, FormGroup } from '@angular/forms';
2
+ import * as i0 from '@angular/core';
3
+ import { Injectable, EventEmitter, Output, Input, Directive, NgModule, TemplateRef, ViewChild, Component, ElementRef, HostListener, HostBinding, InjectionToken, PLATFORM_ID, DOCUMENT, Inject, Optional, ContentChildren, SkipSelf, Renderer2 } from '@angular/core';
4
+ import { CommonModule, isPlatformBrowser } from '@angular/common';
5
+ import * as i2 from '@angular/animations';
6
+ import { animation, style, animate, state, transition, trigger, useAnimation } from '@angular/animations';
7
+ export * from '@hermes-ui/angular/utils/loading';
8
+ export * from '@hermes-ui/angular/utils/conditional';
9
+ import { Subject, fromEvent, Observable, isObservable, of } from 'rxjs';
10
+ import { takeUntil } from 'rxjs/operators';
11
+ import * as i1 from '@angular/cdk/a11y';
12
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
13
+ import * as i2$1 from '@angular/cdk/drag-drop';
14
+ import { CdkDrag, CDK_DROP_LIST, CDK_DRAG_CONFIG } from '@angular/cdk/drag-drop';
15
+ import * as i1$1 from '@angular/cdk/bidi';
16
+
17
+ /*
18
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
19
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
20
+ * This software is released under MIT license.
21
+ * The full license information can be found in LICENSE in the root directory of this project.
22
+ */
23
+ function triggerAllFormControlValidation(formGroup) {
24
+ Object.keys(formGroup.controls).forEach(field => {
25
+ const control = formGroup.get(field);
26
+ if (control instanceof FormControl) {
27
+ control.markAsTouched();
28
+ control.markAsDirty();
29
+ control.updateValueAndValidity();
30
+ }
31
+ else if (control instanceof FormGroup) {
32
+ triggerAllFormControlValidation(control);
33
+ }
34
+ });
35
+ }
36
+
37
+ /*
38
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
39
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
40
+ * This software is released under MIT license.
41
+ * The full license information can be found in LICENSE in the root directory of this project.
42
+ */
43
+ /*
44
+ * If we someday want to be able to render the datagrid in a webworker,
45
+ * this is where we would test if we're in headless mode. Right now it's not testing anything, but any access
46
+ * to native DOM elements' methods and properties in the Datagrid happens here.
47
+ */
48
+ class DomAdapter {
49
+ /*
50
+ We clone the element and take its measurements from outside the grid
51
+ so we don't trigger reflow for the whole datagrid.
52
+ */
53
+ userDefinedWidth(element) {
54
+ const clonedElement = element.cloneNode(true);
55
+ if (clonedElement.id) {
56
+ clonedElement.id = clonedElement.id + '-clone';
57
+ }
58
+ clonedElement.classList.add('datagrid-cell-width-zero');
59
+ document.body.appendChild(clonedElement);
60
+ const userDefinedWidth = this.clientRect(clonedElement).width;
61
+ clonedElement.remove();
62
+ return userDefinedWidth;
63
+ }
64
+ scrollBarWidth(element) {
65
+ return element.offsetWidth - element.clientWidth;
66
+ }
67
+ scrollWidth(element) {
68
+ return element.scrollWidth || 0;
69
+ }
70
+ computedHeight(element) {
71
+ return parseInt(getComputedStyle(element).getPropertyValue('height'), 10);
72
+ }
73
+ clientRect(element) {
74
+ const elementClientRect = element.getBoundingClientRect();
75
+ return {
76
+ top: parseInt(elementClientRect.top, 10),
77
+ bottom: parseInt(elementClientRect.bottom, 10),
78
+ left: parseInt(elementClientRect.left, 10),
79
+ right: parseInt(elementClientRect.right, 10),
80
+ width: parseInt(elementClientRect.width, 10),
81
+ height: parseInt(elementClientRect.height, 10),
82
+ };
83
+ }
84
+ minWidth(element) {
85
+ return parseInt(getComputedStyle(element).getPropertyValue('min-width'), 10);
86
+ }
87
+ focus(element) {
88
+ element.focus();
89
+ }
90
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DomAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
91
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DomAdapter }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: DomAdapter, decorators: [{
94
+ type: Injectable
95
+ }] });
96
+
97
+ /*
98
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
99
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
100
+ * This software is released under MIT license.
101
+ * The full license information can be found in LICENSE in the root directory of this project.
102
+ */
103
+ class MockDomAdapter extends DomAdapter {
104
+ constructor() {
105
+ super(...arguments);
106
+ this._userDefinedWidth = 0;
107
+ this._scrollBarWidth = 0;
108
+ this._scrollWidth = 0;
109
+ this._computedHeight = 0;
110
+ }
111
+ userDefinedWidth(_element) {
112
+ return this._userDefinedWidth;
113
+ }
114
+ scrollBarWidth(_element) {
115
+ return this._scrollBarWidth;
116
+ }
117
+ scrollWidth(_element) {
118
+ return this._scrollWidth;
119
+ }
120
+ computedHeight(_element) {
121
+ return this._computedHeight;
122
+ }
123
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDomAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
124
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDomAdapter }); }
125
+ }
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: MockDomAdapter, decorators: [{
127
+ type: Injectable
128
+ }] });
129
+ const MOCK_DOM_ADAPTER_PROVIDER = {
130
+ provide: DomAdapter,
131
+ useClass: MockDomAdapter,
132
+ };
133
+
134
+ /*
135
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
136
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
137
+ * This software is released under MIT license.
138
+ * The full license information can be found in LICENSE in the root directory of this project.
139
+ */
140
+ class OutsideClick {
141
+ constructor(host, renderer, ngZone) {
142
+ this.strict = false;
143
+ this.outsideClick = new EventEmitter(false);
144
+ ngZone.runOutsideAngular(() => {
145
+ this.documentClickListener = renderer.listen('document', 'click', (event) => {
146
+ // Compare the element in the DOM on which the mouse was clicked
147
+ // with the current actionMenu native HTML element.
148
+ if (host.nativeElement === event.target) {
149
+ return;
150
+ }
151
+ if (!this.strict && host.nativeElement.contains(event.target)) {
152
+ return;
153
+ }
154
+ // We'll run change detection only if the click event actually happened outside of
155
+ // the host element.
156
+ ngZone.run(() => {
157
+ this.outsideClick.emit(event);
158
+ });
159
+ });
160
+ });
161
+ }
162
+ ngOnDestroy() {
163
+ this.documentClickListener();
164
+ }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: OutsideClick, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
166
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: OutsideClick, isStandalone: false, selector: "[hermesOutsideClick]", inputs: { strict: ["hermesStrict", "strict"] }, outputs: { outsideClick: "hermesOutsideClick" }, ngImport: i0 }); }
167
+ }
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: OutsideClick, decorators: [{
169
+ type: Directive,
170
+ args: [{
171
+ selector: '[hermesOutsideClick]',
172
+ standalone: false,
173
+ }]
174
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { strict: [{
175
+ type: Input,
176
+ args: ['hermesStrict']
177
+ }], outsideClick: [{
178
+ type: Output,
179
+ args: ['hermesOutsideClick']
180
+ }] } });
181
+
182
+ /*
183
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
184
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
185
+ * This software is released under MIT license.
186
+ * The full license information can be found in LICENSE in the root directory of this project.
187
+ */
188
+ const OUSTIDE_CLICK_DIRECTIVES = [OutsideClick];
189
+ class HermesOutsideClickModule {
190
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesOutsideClickModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
191
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesOutsideClickModule, declarations: [OutsideClick], imports: [CommonModule], exports: [OutsideClick] }); }
192
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesOutsideClickModule, imports: [CommonModule] }); }
193
+ }
194
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesOutsideClickModule, decorators: [{
195
+ type: NgModule,
196
+ args: [{
197
+ imports: [CommonModule],
198
+ declarations: [OUSTIDE_CLICK_DIRECTIVES],
199
+ exports: [OUSTIDE_CLICK_DIRECTIVES],
200
+ }]
201
+ }] });
202
+
203
+ /*
204
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
205
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
206
+ * This software is released under MIT license.
207
+ * The full license information can be found in LICENSE in the root directory of this project.
208
+ */
209
+
210
+ /*
211
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
212
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
213
+ * This software is released under MIT license.
214
+ * The full license information can be found in LICENSE in the root directory of this project.
215
+ */
216
+ class TemplateRefContainer {
217
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: TemplateRefContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
218
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: TemplateRefContainer, isStandalone: false, selector: "ng-component", viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: `
219
+ <ng-template>
220
+ <ng-content></ng-content>
221
+ </ng-template>
222
+ `, isInline: true }); }
223
+ }
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: TemplateRefContainer, decorators: [{
225
+ type: Component,
226
+ args: [{
227
+ template: `
228
+ <ng-template>
229
+ <ng-content></ng-content>
230
+ </ng-template>
231
+ `,
232
+ standalone: false,
233
+ }]
234
+ }], propDecorators: { template: [{
235
+ type: ViewChild,
236
+ args: [TemplateRef]
237
+ }] } });
238
+
239
+ /*
240
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
241
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
242
+ * This software is released under MIT license.
243
+ * The full license information can be found in LICENSE in the root directory of this project.
244
+ */
245
+ class HermesTemplateRefModule {
246
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesTemplateRefModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
247
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesTemplateRefModule, declarations: [TemplateRefContainer], imports: [CommonModule], exports: [TemplateRefContainer] }); }
248
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesTemplateRefModule, imports: [CommonModule] }); }
249
+ }
250
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesTemplateRefModule, decorators: [{
251
+ type: NgModule,
252
+ args: [{
253
+ imports: [CommonModule],
254
+ declarations: [TemplateRefContainer],
255
+ exports: [TemplateRefContainer],
256
+ }]
257
+ }] });
258
+
259
+ /*
260
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
261
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
262
+ * This software is released under MIT license.
263
+ * The full license information can be found in LICENSE in the root directory of this project.
264
+ */
265
+
266
+ /*
267
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
268
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
269
+ * This software is released under MIT license.
270
+ * The full license information can be found in LICENSE in the root directory of this project.
271
+ */
272
+ /**
273
+ * TODO:
274
+ * Using core functions like:
275
+ * - pluckPixelValue
276
+ * - getCssPropertyValue
277
+ *
278
+ * to get the value of the design token.
279
+ *
280
+ * Note: Memoization/Cache usage possible.
281
+ */
282
+ // iPad mini screen width
283
+ // http://stephen.io/mediaqueries/#iPadMini
284
+ const DATEPICKER_ENABLE_BREAKPOINT = 768;
285
+ const SMALL_BREAKPOINT = 576;
286
+ const MEDIUM_BREAKPOINT = 768;
287
+ const LARGE_BREAKPOINT = 992;
288
+ const EXTRA_LARGE_BREAKPOINT = 1200;
289
+
290
+ /*
291
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
292
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
293
+ * This software is released under MIT license.
294
+ * The full license information can be found in LICENSE in the root directory of this project.
295
+ */
296
+ class EmptyAnchor {
297
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: EmptyAnchor, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: EmptyAnchor, isStandalone: false, selector: "ng-component", ngImport: i0, template: '', isInline: true }); }
299
+ }
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: EmptyAnchor, decorators: [{
301
+ type: Component,
302
+ args: [{
303
+ template: '',
304
+ standalone: false,
305
+ }]
306
+ }] });
307
+
308
+ /*
309
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
310
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
311
+ * This software is released under MIT license.
312
+ * The full license information can be found in LICENSE in the root directory of this project.
313
+ */
314
+ /**
315
+ * HostWrapper must be called in OnInit to ensure that the Views are ready. If its called in a constructor the view is
316
+ * still undefined.
317
+ */
318
+ class HostWrapper {
319
+ constructor(containerType, vcr, index = 0) {
320
+ this.injector = vcr.injector;
321
+ // If the host is already wrapped, we don't do anything
322
+ if (!this.injector.get(containerType, null)) {
323
+ const el = this.injector.get(ElementRef);
324
+ // We need a new anchor, since we're projecting the current one.
325
+ vcr.createComponent(EmptyAnchor);
326
+ // Craft the element array based on what slot to use. Angular only uses the index to determine
327
+ // which ng-content to project into, so if you have more than one ng-content you'll need to set
328
+ // the index in the constructor appropriately
329
+ const element = [];
330
+ element[index] = [el.nativeElement];
331
+ // We're assuming only one projection slot, but in more complex cases we might want to provide
332
+ // a different array of projected elements.
333
+ const containerRef = vcr.createComponent(containerType, {
334
+ projectableNodes: element,
335
+ });
336
+ // We can now remove the useless anchor
337
+ vcr.remove(0);
338
+ // We keep the wrapper's injector to access the dependencies that weren't available before.
339
+ this.injector = containerRef.injector;
340
+ }
341
+ }
342
+ get(token, notFoundValue) {
343
+ return this.injector.get(token, notFoundValue);
344
+ }
345
+ }
346
+
347
+ /*
348
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
349
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
350
+ * This software is released under MIT license.
351
+ * The full license information can be found in LICENSE in the root directory of this project.
352
+ */
353
+ /**
354
+ * Internal module, please do not export!
355
+ */
356
+ class HermesHostWrappingModule {
357
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesHostWrappingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
358
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesHostWrappingModule, declarations: [EmptyAnchor], exports: [EmptyAnchor] }); }
359
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesHostWrappingModule }); }
360
+ }
361
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesHostWrappingModule, decorators: [{
362
+ type: NgModule,
363
+ args: [{
364
+ declarations: [EmptyAnchor],
365
+ exports: [EmptyAnchor],
366
+ }]
367
+ }] });
368
+
369
+ /*
370
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
371
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
372
+ * This software is released under MIT license.
373
+ * The full license information can be found in LICENSE in the root directory of this project.
374
+ */
375
+
376
+ /*
377
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
378
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
379
+ * This software is released under MIT license.
380
+ * The full license information can be found in LICENSE in the root directory of this project.
381
+ */
382
+ function assertNever(value) {
383
+ throw new Error(`Unhandled value: ${value}`);
384
+ }
385
+
386
+ /*
387
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
388
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
389
+ * This software is released under MIT license.
390
+ * The full license information can be found in LICENSE in the root directory of this project.
391
+ */
392
+ function isBooleanAttributeSet(value) {
393
+ // for null just return false no need to check anything
394
+ if (value === null) {
395
+ return false;
396
+ }
397
+ if (typeof value === 'string') {
398
+ // Empty string is valid, 'true' as string is also valid
399
+ return value.length >= 0;
400
+ }
401
+ // Boolean value will be read as it is, everything else is false
402
+ return typeof value === 'boolean' ? value : false;
403
+ }
404
+
405
+ /*
406
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
407
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
408
+ * This software is released under MIT license.
409
+ * The full license information can be found in LICENSE in the root directory of this project.
410
+ */
411
+ const defaultAnimationTiming = '0.2s ease-in-out';
412
+ const defaultExpandAnimation = animation([style({ height: '{{ startHeight }}px' }), animate(defaultAnimationTiming, style({ height: '*' }))], {
413
+ params: {
414
+ startHeight: 0, // default
415
+ },
416
+ });
417
+
418
+ /*
419
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
420
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
421
+ * This software is released under MIT license.
422
+ * The full license information can be found in LICENSE in the root directory of this project.
423
+ */
424
+ function collapse() {
425
+ 'use strict';
426
+ return [
427
+ state('true', style({ height: 0, 'overflow-y': 'hidden' })),
428
+ transition('true => false', [animate(defaultAnimationTiming, style({ height: '*', 'overflow-y': 'hidden' }))]),
429
+ transition('false => true', [style({ height: '*', 'overflow-y': 'hidden' }), animate(defaultAnimationTiming)]),
430
+ ];
431
+ }
432
+
433
+ /*
434
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
435
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
436
+ * This software is released under MIT license.
437
+ * The full license information can be found in LICENSE in the root directory of this project.
438
+ */
439
+
440
+ /*
441
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
442
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
443
+ * This software is released under MIT license.
444
+ * The full license information can be found in LICENSE in the root directory of this project.
445
+ */
446
+ class BaseExpandableAnimation {
447
+ constructor(element, domAdapter, renderer) {
448
+ this.element = element;
449
+ this.domAdapter = domAdapter;
450
+ this.renderer = renderer;
451
+ this.startHeight = 0;
452
+ }
453
+ updateStartHeight() {
454
+ this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;
455
+ }
456
+ initAnimationEffects() {
457
+ // `clip` rather than `hidden`: both clip the content that grows past the animated height, but
458
+ // `hidden` also turns this element into a scroll container, and a scroll container is what a
459
+ // `position: sticky` descendant anchors itself to. Anything sticky inside would come loose for
460
+ // the length of the animation - which is what the datagrid's static columns do. See CDE-3127.
461
+ this.renderer.setStyle(this.element.nativeElement, 'overflow', 'clip');
462
+ }
463
+ cleanupAnimationEffects(cancelAnimations = false) {
464
+ this.renderer.removeStyle(this.element.nativeElement, 'overflow');
465
+ // A "safe" auto-update of the height ensuring basic OOTB user experience .
466
+ // Prone to small jumps in initial animation height if data was changed in the meantime, the window was resized, etc.
467
+ // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.
468
+ this.updateStartHeight();
469
+ if (cancelAnimations) {
470
+ this.cancelElementAnimations();
471
+ }
472
+ }
473
+ cancelElementAnimations() {
474
+ this.element.nativeElement.getAnimations().forEach(animation => {
475
+ if (animation.playState === 'finished') {
476
+ animation.cancel(); // clears animation-style set on the element
477
+ }
478
+ });
479
+ }
480
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: BaseExpandableAnimation, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
481
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: BaseExpandableAnimation, isStandalone: true, ngImport: i0 }); }
482
+ }
483
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: BaseExpandableAnimation, decorators: [{
484
+ type: Directive
485
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }] });
486
+
487
+ /*
488
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
489
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
490
+ * This software is released under MIT license.
491
+ * The full license information can be found in LICENSE in the root directory of this project.
492
+ */
493
+ class HermesExpandableAnimation extends BaseExpandableAnimation {
494
+ constructor() {
495
+ super(...arguments);
496
+ this.hermesExpandTrigger = false;
497
+ }
498
+ get expandAnimation() {
499
+ return { value: this.hermesExpandTrigger, params: { startHeight: this.startHeight } };
500
+ }
501
+ animationStart(event) {
502
+ if (event.fromState !== 'void') {
503
+ this.initAnimationEffects();
504
+ }
505
+ }
506
+ animationDone(event) {
507
+ if (event.fromState !== 'void') {
508
+ this.cleanupAnimationEffects();
509
+ }
510
+ }
511
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimation, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
512
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: HermesExpandableAnimation, isStandalone: false, selector: "hermes-expandable-animation", inputs: { hermesExpandTrigger: "hermesExpandTrigger" }, host: { listeners: { "@expandAnimation.start": "animationStart($event)", "@expandAnimation.done": "animationDone($event)" }, properties: { "@expandAnimation": "this.expandAnimation" } }, providers: [DomAdapter], usesInheritance: true, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block}\n"], animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])] }); }
513
+ }
514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimation, decorators: [{
515
+ type: Component,
516
+ args: [{ selector: 'hermes-expandable-animation', template: `<ng-content></ng-content>`, animations: [trigger('expandAnimation', [transition('true <=> false', [useAnimation(defaultExpandAnimation)])])], providers: [DomAdapter], standalone: false, styles: [":host{display:block}\n"] }]
517
+ }], propDecorators: { hermesExpandTrigger: [{
518
+ type: Input
519
+ }], expandAnimation: [{
520
+ type: HostBinding,
521
+ args: ['@expandAnimation']
522
+ }], animationStart: [{
523
+ type: HostListener,
524
+ args: ['@expandAnimation.start', ['$event']]
525
+ }], animationDone: [{
526
+ type: HostListener,
527
+ args: ['@expandAnimation.done', ['$event']]
528
+ }] } });
529
+
530
+ /*
531
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
532
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
533
+ * This software is released under MIT license.
534
+ * The full license information can be found in LICENSE in the root directory of this project.
535
+ */
536
+ class HermesExpandableAnimationDirective extends BaseExpandableAnimation {
537
+ constructor(element, domAdapter, renderer, builder) {
538
+ super(element, domAdapter, renderer);
539
+ this.builder = builder;
540
+ this.expanded = false;
541
+ }
542
+ ngOnChanges(changes) {
543
+ if (changes['expanded'] && !changes['expanded'].firstChange) {
544
+ Promise.resolve().then(() => this.playAnimation());
545
+ }
546
+ }
547
+ ngOnDestroy() {
548
+ this.player?.destroy();
549
+ }
550
+ playAnimation() {
551
+ if (this.player) {
552
+ this.player.destroy();
553
+ }
554
+ this.player = this.builder
555
+ .build([useAnimation(defaultExpandAnimation, { params: { startHeight: this.startHeight } })])
556
+ .create(this.element.nativeElement);
557
+ this.player.onStart(() => this.initAnimationEffects());
558
+ this.player.onDone(() => this.cleanupAnimationEffects(true));
559
+ this.player.play();
560
+ }
561
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationDirective, deps: [{ token: i0.ElementRef }, { token: DomAdapter }, { token: i0.Renderer2 }, { token: i2.AnimationBuilder }], target: i0.ɵɵFactoryTarget.Directive }); }
562
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: HermesExpandableAnimationDirective, isStandalone: false, selector: "[hermesExpandableAnimation]", inputs: { expanded: ["hermesExpandableAnimation", "expanded"] }, host: { properties: { "class.hermes-expandable-animation": "true" } }, providers: [DomAdapter], usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
563
+ }
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationDirective, decorators: [{
565
+ type: Directive,
566
+ args: [{
567
+ selector: '[hermesExpandableAnimation]',
568
+ providers: [DomAdapter],
569
+ host: {
570
+ '[class.hermes-expandable-animation]': 'true',
571
+ },
572
+ standalone: false,
573
+ }]
574
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: DomAdapter }, { type: i0.Renderer2 }, { type: i2.AnimationBuilder }], propDecorators: { expanded: [{
575
+ type: Input,
576
+ args: ['hermesExpandableAnimation']
577
+ }] } });
578
+
579
+ /*
580
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
581
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
582
+ * This software is released under MIT license.
583
+ * The full license information can be found in LICENSE in the root directory of this project.
584
+ */
585
+ const EXPANDABLE_ANIMATION_DIRECTIVES = [HermesExpandableAnimation, HermesExpandableAnimationDirective];
586
+ class HermesExpandableAnimationModule {
587
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
588
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationModule, declarations: [HermesExpandableAnimation, HermesExpandableAnimationDirective], imports: [CommonModule], exports: [HermesExpandableAnimation, HermesExpandableAnimationDirective] }); }
589
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationModule, imports: [CommonModule] }); }
590
+ }
591
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesExpandableAnimationModule, decorators: [{
592
+ type: NgModule,
593
+ args: [{
594
+ imports: [CommonModule],
595
+ declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],
596
+ exports: [EXPANDABLE_ANIMATION_DIRECTIVES],
597
+ }]
598
+ }] });
599
+
600
+ /*
601
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
602
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
603
+ * This software is released under MIT license.
604
+ * The full license information can be found in LICENSE in the root directory of this project.
605
+ */
606
+
607
+ /*
608
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
609
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
610
+ * This software is released under MIT license.
611
+ * The full license information can be found in LICENSE in the root directory of this project.
612
+ */
613
+ function fade(opacity = 1) {
614
+ return [
615
+ transition('void => *', [style({ opacity: 0 }), animate(defaultAnimationTiming, style({ opacity: opacity }))]),
616
+ transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0 }))]),
617
+ ];
618
+ }
619
+
620
+ /*
621
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
622
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
623
+ * This software is released under MIT license.
624
+ * The full license information can be found in LICENSE in the root directory of this project.
625
+ */
626
+
627
+ /*
628
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
629
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
630
+ * This software is released under MIT license.
631
+ * The full license information can be found in LICENSE in the root directory of this project.
632
+ */
633
+ function fadeSlide(direction) {
634
+ let transform = null;
635
+ if (direction === 'up') {
636
+ transform = 'translate(0, 25%)';
637
+ }
638
+ else if (direction === 'down') {
639
+ transform = 'translate(0, -25%)';
640
+ }
641
+ else if (direction === 'left') {
642
+ transform = 'translate(25%, 0)';
643
+ }
644
+ else if (direction === 'right') {
645
+ transform = 'translate(-25%, 0)';
646
+ }
647
+ else {
648
+ throw new Error('Unknown direction ' + direction + ' for slide animation.');
649
+ }
650
+ return [
651
+ transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),
652
+ transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),
653
+ ];
654
+ }
655
+
656
+ /*
657
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
658
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
659
+ * This software is released under MIT license.
660
+ * The full license information can be found in LICENSE in the root directory of this project.
661
+ */
662
+
663
+ /*
664
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
665
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
666
+ * This software is released under MIT license.
667
+ * The full license information can be found in LICENSE in the root directory of this project.
668
+ */
669
+ function slide(direction) {
670
+ let transform = null;
671
+ if (direction === 'up') {
672
+ transform = 'translate(0, 25%)';
673
+ }
674
+ else if (direction === 'down') {
675
+ transform = 'translate(0, -25%)';
676
+ }
677
+ else if (direction === 'left') {
678
+ transform = 'translate(25%, 0)';
679
+ }
680
+ else if (direction === 'right') {
681
+ transform = 'translate(-25%, 0)';
682
+ }
683
+ else {
684
+ throw new Error('Unknown direction ' + direction + ' for slide animation.');
685
+ }
686
+ return [
687
+ transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),
688
+ transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),
689
+ ];
690
+ }
691
+
692
+ /*
693
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
694
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
695
+ * This software is released under MIT license.
696
+ * The full license information can be found in LICENSE in the root directory of this project.
697
+ */
698
+
699
+ /*
700
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
701
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
702
+ * This software is released under MIT license.
703
+ * The full license information can be found in LICENSE in the root directory of this project.
704
+ */
705
+
706
+ /*
707
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
708
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
709
+ * This software is released under MIT license.
710
+ * The full license information can be found in LICENSE in the root directory of this project.
711
+ */
712
+ const commonStringsDefault = {
713
+ open: 'Open',
714
+ close: 'Close',
715
+ show: 'Show',
716
+ hide: 'Hide',
717
+ apply: 'Apply',
718
+ cancel: 'Cancel',
719
+ expand: 'Expand',
720
+ collapse: 'Collapse',
721
+ more: 'More',
722
+ select: 'Select',
723
+ selectAll: 'Select All',
724
+ previous: 'Previous',
725
+ next: 'Next',
726
+ current: 'Jump to current',
727
+ info: 'Info',
728
+ success: 'Success',
729
+ warning: 'Warning',
730
+ danger: 'Error',
731
+ neutral: 'Neutral',
732
+ unknown: 'Unknown',
733
+ rowActions: 'Available actions',
734
+ pickColumns: 'Manage Columns',
735
+ showColumns: 'Show Columns',
736
+ sortColumn: 'Sort Column',
737
+ // Only the hermesDgPinnable toggle used these, so they are disabled along with it.
738
+ // pinColumn: 'Pin Column',
739
+ // unpinColumn: 'Unpin Column',
740
+ firstPage: 'First Page',
741
+ lastPage: 'Last Page',
742
+ nextPage: 'Next Page',
743
+ previousPage: 'Previous Page',
744
+ currentPage: 'Current Page',
745
+ totalPages: 'Total Pages',
746
+ filterItems: 'Filter items',
747
+ minValue: 'Min value',
748
+ maxValue: 'Max value',
749
+ modalContentStart: 'Beginning of Modal Content',
750
+ modalContentEnd: 'End of Modal Content',
751
+ sidePanelPin: 'Pin Side Panel',
752
+ showColumnsMenuDescription: 'Show or hide columns menu',
753
+ allColumnsSelected: 'All columns selected',
754
+ signpostToggle: 'Signpost Toggle',
755
+ signpostClose: 'Close',
756
+ loading: 'Loading',
757
+ // Datagrid
758
+ detailPaneStart: 'Start of row details',
759
+ detailPaneEnd: 'End of row details',
760
+ singleSelectionAriaLabel: 'Single selection header',
761
+ singleActionableAriaLabel: 'Single actionable header',
762
+ detailExpandableAriaLabel: 'Toggle more row content',
763
+ datagridFilterAriaLabel: '{COLUMN} filter',
764
+ datagridFilterLabel: '{COLUMN} filter',
765
+ datagridFilterDialogAriaLabel: 'Filter dialog',
766
+ columnSeparatorAriaLabel: 'Column resize handle',
767
+ columnSeparatorDescription: 'Use left or right key to resize the column',
768
+ fromLabel: 'From',
769
+ toLabel: 'To',
770
+ // Alert
771
+ alertCloseButtonAriaLabel: 'Close alert',
772
+ alertNextAlertAriaLabel: 'Next alert message, {CURRENT} of {COUNT}',
773
+ alertPreviousAlertAriaLabel: 'Previous alert message, {CURRENT} of {COUNT}',
774
+ // Date Picker
775
+ datepickerDialogLabel: 'Choose date',
776
+ datepickerToggleChooseDateLabel: 'Choose date',
777
+ datepickerToggleChangeDateLabel: 'Change date, {SELECTED_DATE}',
778
+ datepickerPreviousMonth: 'Previous month',
779
+ datepickerCurrentMonth: 'Current month',
780
+ datepickerNextMonth: 'Next month',
781
+ datepickerPreviousDecade: 'Previous decade',
782
+ datepickerNextDecade: 'Next decade',
783
+ datepickerCurrentDecade: 'Current decade',
784
+ datepickerSelectMonthText: 'Select month, the current month is {CALENDAR_MONTH}',
785
+ datepickerSelectYearText: 'Select year, the current year is {CALENDAR_YEAR}',
786
+ datepickerSelectedLabel: '{FULL_DATE} - Selected',
787
+ // Stack View
788
+ stackViewChanged: 'Value changed.',
789
+ // Responsive Nav
790
+ responsiveNavToggleOpen: 'Open navigation menu',
791
+ responsiveNavToggleClose: 'Close navigation menu',
792
+ responsiveNavOverflowOpen: 'Open navigation overflow menu',
793
+ responsiveNavOverflowClose: 'Close navigation overflow menu',
794
+ //Vertical Nav
795
+ verticalNavToggle: 'Toggle vertical navigation',
796
+ // Timeline steps
797
+ timelineStepNotStarted: 'Not started',
798
+ timelineStepCurrent: 'Current',
799
+ timelineStepSuccess: 'Completed',
800
+ timelineStepError: 'Error',
801
+ timelineStepProcessing: 'In progress',
802
+ // Combobox
803
+ comboboxDelete: 'Delete selected option',
804
+ comboboxSearching: 'Searching for matches for "{INPUT}"',
805
+ comboboxSelection: 'Selection',
806
+ comboboxSelected: 'Selected',
807
+ comboboxNoResults: 'No results',
808
+ comboboxOpen: 'Show options',
809
+ comboboxSelectAll: 'Select All',
810
+ comboboxUnselectAll: 'Unselect All',
811
+ comboboxShowAll: 'Show all {ITEMS} selected',
812
+ comboboxAllSelected: 'All {ITEMS} selected',
813
+ comboboxShowLess: 'Show less',
814
+ // Datagrid expandable rows
815
+ datagridExpandableBeginningOf: 'Beginning of',
816
+ datagridExpandableEndOf: 'End of',
817
+ datagridExpandableRowContent: 'Expandable row content',
818
+ datagridExpandableRowsHelperText: `Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button`,
819
+ // Wizard
820
+ wizardStep: 'Step',
821
+ wizardStepCurrent: 'Current',
822
+ wizardStepSuccess: 'Completed',
823
+ wizardStepError: 'Error',
824
+ wizardStepnavAriaLabel: 'Wizard steps',
825
+ /**
826
+ * Password Input
827
+ * Screen-reader text for the hide/show password field button
828
+ */
829
+ passwordHide: 'Hide password for {LABEL}',
830
+ passwordShow: 'Show password for {LABEL}',
831
+ /**
832
+ * Datagrid footer; sr-only text after the number of selected rows.
833
+ */
834
+ selectedRows: 'Selected rows',
835
+ // Accordion/Stepper
836
+ stepComplete: 'Step {STEP} complete',
837
+ stepError: 'Error in step {STEP}',
838
+ // File input
839
+ browse: 'Browse',
840
+ fileCount: '{COUNT} files',
841
+ clearFile: 'Clear {FILE}',
842
+ clearFiles: 'Clear {COUNT} files',
843
+ // Tree
844
+ selectedTreeNode: 'selected',
845
+ unselectedTreeNode: 'unselected',
846
+ // Breadcrumbs
847
+ breadcrumbsLabel: 'breadcrumbs',
848
+ expandBreadcrumbsLabel: 'Expand breadcrumbs',
849
+ };
850
+
851
+ /*
852
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
853
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
854
+ * This software is released under MIT license.
855
+ * The full license information can be found in LICENSE in the root directory of this project.
856
+ */
857
+ class HermesCommonStringsService {
858
+ constructor() {
859
+ this._strings = commonStringsDefault;
860
+ }
861
+ /**
862
+ * Access to all of the keys as strings
863
+ */
864
+ get keys() {
865
+ return this._strings;
866
+ }
867
+ /**
868
+ * Allows you to pass in new overrides for localization
869
+ */
870
+ localize(overrides) {
871
+ this._strings = { ...this._strings, ...overrides };
872
+ }
873
+ /**
874
+ * Parse a string with a set of tokens to replace
875
+ */
876
+ parse(source, tokens = {}) {
877
+ const names = Object.keys(tokens);
878
+ let output = source;
879
+ if (names.length) {
880
+ names.forEach(name => {
881
+ output = output.replace(`{${name}}`, tokens[name]);
882
+ });
883
+ }
884
+ return output;
885
+ }
886
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesCommonStringsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
887
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesCommonStringsService, providedIn: 'root' }); }
888
+ }
889
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesCommonStringsService, decorators: [{
890
+ type: Injectable,
891
+ args: [{
892
+ providedIn: 'root',
893
+ }]
894
+ }] });
895
+
896
+ /*
897
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
898
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
899
+ * This software is released under MIT license.
900
+ * The full license information can be found in LICENSE in the root directory of this project.
901
+ */
902
+
903
+ /*
904
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
905
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
906
+ * This software is released under MIT license.
907
+ * The full license information can be found in LICENSE in the root directory of this project.
908
+ */
909
+
910
+ /*
911
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
912
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
913
+ * This software is released under MIT license.
914
+ * The full license information can be found in LICENSE in the root directory of this project.
915
+ */
916
+ const FOCUS_ON_VIEW_INIT = new InjectionToken('FOCUS_ON_VIEW_INIT');
917
+ // This provider holds the default value for hermesFocusOnViewInit directive's isEnabled property.
918
+ // So users can interject this provider and set their own value for this provider.
919
+ const FOCUS_ON_VIEW_INIT_PROVIDER = {
920
+ provide: FOCUS_ON_VIEW_INIT,
921
+ useValue: true,
922
+ };
923
+
924
+ /*
925
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
926
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
927
+ * This software is released under MIT license.
928
+ * The full license information can be found in LICENSE in the root directory of this project.
929
+ */
930
+ /* This directive is for guiding the document focus to the newly added content when its view is initialized
931
+ so that assistive technologies can read its content. */
932
+ class HermesFocusOnViewInit {
933
+ constructor(el, platformId, focusOnViewInit, document, renderer, ngZone) {
934
+ this.el = el;
935
+ this.platformId = platformId;
936
+ this.focusOnViewInit = focusOnViewInit;
937
+ this.renderer = renderer;
938
+ this.directFocus = true; // true if the element gets focused without need to set tabindex;
939
+ this.destroy$ = new Subject();
940
+ this._isEnabled = focusOnViewInit;
941
+ // Angular compiler doesn't understand the type Document
942
+ // when working out the metadata for injectable parameters,
943
+ // even though it understands the injection token DOCUMENT
944
+ // https://github.com/angular/angular/issues/20351
945
+ this.document = document;
946
+ ngZone.runOutsideAngular(() => fromEvent(el.nativeElement, 'focusout')
947
+ .pipe(takeUntil(this.destroy$))
948
+ .subscribe(() => {
949
+ if (!this.directFocus) {
950
+ // manually set attributes and styles should be removed
951
+ renderer.removeAttribute(el.nativeElement, 'tabindex');
952
+ renderer.setStyle(el.nativeElement, 'outline', null);
953
+ }
954
+ }));
955
+ }
956
+ set isEnabled(value) {
957
+ if (this.focusOnViewInit && typeof value === 'boolean') {
958
+ this._isEnabled = value;
959
+ }
960
+ }
961
+ ngAfterViewInit() {
962
+ this.focus();
963
+ }
964
+ ngOnDestroy() {
965
+ this.destroy$.next();
966
+ }
967
+ focus() {
968
+ if (!isPlatformBrowser(this.platformId)) {
969
+ return;
970
+ }
971
+ if (!this._isEnabled) {
972
+ return;
973
+ }
974
+ if (this.document && this.document.activeElement !== this.el.nativeElement) {
975
+ this.el.nativeElement.focus();
976
+ if (this.document.activeElement !== this.el.nativeElement) {
977
+ // if it's not directly focused now, it means it was a non-interactive element
978
+ // so we need to give it a tabindex.
979
+ this.directFocus = false;
980
+ this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');
981
+ this.renderer.setStyle(this.el.nativeElement, 'outline', 'none');
982
+ this.el.nativeElement.focus();
983
+ }
984
+ }
985
+ }
986
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInit, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }, { token: FOCUS_ON_VIEW_INIT }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
987
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: HermesFocusOnViewInit, isStandalone: false, selector: "[hermesFocusOnViewInit]", inputs: { isEnabled: ["hermesFocusOnViewInit", "isEnabled"] }, ngImport: i0 }); }
988
+ }
989
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInit, decorators: [{
990
+ type: Directive,
991
+ args: [{
992
+ selector: '[hermesFocusOnViewInit]',
993
+ standalone: false,
994
+ }]
995
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
996
+ type: Inject,
997
+ args: [PLATFORM_ID]
998
+ }] }, { type: undefined, decorators: [{
999
+ type: Inject,
1000
+ args: [FOCUS_ON_VIEW_INIT]
1001
+ }] }, { type: undefined, decorators: [{
1002
+ type: Inject,
1003
+ args: [DOCUMENT]
1004
+ }] }, { type: i0.Renderer2 }, { type: i0.NgZone }], propDecorators: { isEnabled: [{
1005
+ type: Input,
1006
+ args: ['hermesFocusOnViewInit']
1007
+ }] } });
1008
+
1009
+ /*
1010
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1011
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1012
+ * This software is released under MIT license.
1013
+ * The full license information can be found in LICENSE in the root directory of this project.
1014
+ */
1015
+ const FOCUS_ON_VIEW_INIT_DIRECTIVES = [HermesFocusOnViewInit];
1016
+ class HermesFocusOnViewInitModule {
1017
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInitModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1018
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInitModule, declarations: [HermesFocusOnViewInit], imports: [CommonModule], exports: [HermesFocusOnViewInit] }); }
1019
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInitModule, providers: [FOCUS_ON_VIEW_INIT_PROVIDER], imports: [CommonModule] }); }
1020
+ }
1021
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesFocusOnViewInitModule, decorators: [{
1022
+ type: NgModule,
1023
+ args: [{
1024
+ imports: [CommonModule],
1025
+ declarations: [FOCUS_ON_VIEW_INIT_DIRECTIVES],
1026
+ providers: [FOCUS_ON_VIEW_INIT_PROVIDER],
1027
+ exports: [FOCUS_ON_VIEW_INIT_DIRECTIVES],
1028
+ }]
1029
+ }] });
1030
+
1031
+ /*
1032
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1033
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1034
+ * This software is released under MIT license.
1035
+ * The full license information can be found in LICENSE in the root directory of this project.
1036
+ */
1037
+
1038
+ /*
1039
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1040
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1041
+ * This software is released under MIT license.
1042
+ * The full license information can be found in LICENSE in the root directory of this project.
1043
+ */
1044
+ class HermesStandaloneCdkTrapFocus extends CdkTrapFocus {
1045
+ /**
1046
+ * Include the constructor to forward all the dependencies to the base class
1047
+ * as a workaround to fix Angular "ɵɵinvalidFactoryDep" error after upgrading storybook
1048
+ * https://github.com/storybookjs/storybook/issues/23534
1049
+ */
1050
+ constructor(elementRef, focusTrapFactory, document) {
1051
+ super(elementRef, focusTrapFactory, document);
1052
+ }
1053
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesStandaloneCdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1054
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: HermesStandaloneCdkTrapFocus, isStandalone: true, usesInheritance: true, ngImport: i0 }); }
1055
+ }
1056
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesStandaloneCdkTrapFocus, decorators: [{
1057
+ type: Directive,
1058
+ args: [{
1059
+ standalone: true,
1060
+ }]
1061
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: undefined, decorators: [{
1062
+ type: Optional
1063
+ }, {
1064
+ type: Inject,
1065
+ args: [DOCUMENT]
1066
+ }] }] });
1067
+
1068
+ /*
1069
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1070
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1071
+ * This software is released under MIT license.
1072
+ * The full license information can be found in LICENSE in the root directory of this project.
1073
+ */
1074
+
1075
+ /*
1076
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1077
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1078
+ * This software is released under MIT license.
1079
+ * The full license information can be found in LICENSE in the root directory of this project.
1080
+ */
1081
+ var HermesFocusDirection;
1082
+ (function (HermesFocusDirection) {
1083
+ HermesFocusDirection["VERTICAL"] = "vertical";
1084
+ HermesFocusDirection["HORIZONTAL"] = "horizontal";
1085
+ HermesFocusDirection["BOTH"] = "both";
1086
+ })(HermesFocusDirection || (HermesFocusDirection = {}));
1087
+
1088
+ /*
1089
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1090
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1091
+ * This software is released under MIT license.
1092
+ * The full license information can be found in LICENSE in the root directory of this project.
1093
+ */
1094
+ class HermesKeyFocusItem {
1095
+ constructor(elementRef, platformId) {
1096
+ this.elementRef = elementRef;
1097
+ this.platformId = platformId;
1098
+ }
1099
+ get nativeElement() {
1100
+ return this.elementRef.nativeElement;
1101
+ }
1102
+ focus() {
1103
+ if (isPlatformBrowser(this.platformId)) {
1104
+ this.elementRef.nativeElement.focus();
1105
+ }
1106
+ }
1107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusItem, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
1108
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: HermesKeyFocusItem, isStandalone: false, selector: "[hermesKeyFocusItem]", ngImport: i0 }); }
1109
+ }
1110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusItem, decorators: [{
1111
+ type: Directive,
1112
+ args: [{
1113
+ selector: '[hermesKeyFocusItem]',
1114
+ standalone: false,
1115
+ }]
1116
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
1117
+ type: Inject,
1118
+ args: [PLATFORM_ID]
1119
+ }] }] });
1120
+
1121
+ /*
1122
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1123
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1124
+ * This software is released under MIT license.
1125
+ * The full license information can be found in LICENSE in the root directory of this project.
1126
+ */
1127
+ var Keys;
1128
+ (function (Keys) {
1129
+ Keys["ArrowLeft"] = "ArrowLeft";
1130
+ Keys["ArrowUp"] = "ArrowUp";
1131
+ Keys["ArrowRight"] = "ArrowRight";
1132
+ Keys["ArrowDown"] = "ArrowDown";
1133
+ Keys["Backspace"] = "Backspace";
1134
+ Keys["Tab"] = "Tab";
1135
+ Keys["Enter"] = "Enter";
1136
+ Keys["Escape"] = "Escape";
1137
+ Keys["Space"] = "Space";
1138
+ Keys["Spacebar"] = " ";
1139
+ Keys["Home"] = "Home";
1140
+ Keys["End"] = "End";
1141
+ Keys["PageDown"] = "PageDown";
1142
+ Keys["PageUp"] = "PageUp";
1143
+ })(Keys || (Keys = {}));
1144
+
1145
+ /*
1146
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1147
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1148
+ * This software is released under MIT license.
1149
+ * The full license information can be found in LICENSE in the root directory of this project.
1150
+ */
1151
+ function preventArrowKeyScroll(event) {
1152
+ const key = event.key;
1153
+ if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {
1154
+ // prevent element container scroll
1155
+ // MDN references this is really the only way to prevent native browser interactions
1156
+ // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets
1157
+ event.preventDefault();
1158
+ }
1159
+ }
1160
+ function isKeyEitherLetterOrNumber(event) {
1161
+ const char = event.key;
1162
+ // Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.
1163
+ return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');
1164
+ }
1165
+
1166
+ /*
1167
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1168
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1169
+ * This software is released under MIT license.
1170
+ * The full license information can be found in LICENSE in the root directory of this project.
1171
+ */
1172
+ class HermesKeyFocus {
1173
+ constructor(elementRef) {
1174
+ this.elementRef = elementRef;
1175
+ this.direction = HermesFocusDirection.VERTICAL;
1176
+ this.focusOnLoad = false;
1177
+ this.subscriptions = [];
1178
+ this.focusChange = new EventEmitter();
1179
+ this._current = 0;
1180
+ }
1181
+ /**
1182
+ * Here we use `any` cause any other type require reworking all methods below and a lot of more ifs.
1183
+ * this method will only work with array with FocusableItems anyway so any other value will be ignored.
1184
+ */
1185
+ get focusableItems() {
1186
+ if (this._focusableItems) {
1187
+ return this._focusableItems;
1188
+ }
1189
+ else if (this.hermesKeyFocusItems) {
1190
+ return this.hermesKeyFocusItems.toArray();
1191
+ }
1192
+ return [];
1193
+ }
1194
+ set focusableItems(elements) {
1195
+ // We accept a list of focusable elements (HTMLElements or existing Directives) or auto query for hermesKeyFocusItem
1196
+ // We accept a list reference in the cases where we cannot use ContentChildren to query
1197
+ // ContentChildren can be unavailable if content is projected outside the scope of the component (see tabs).
1198
+ if (Array.isArray(elements) && elements.length) {
1199
+ this._focusableItems = elements;
1200
+ this.initializeFocus();
1201
+ }
1202
+ }
1203
+ get nativeElement() {
1204
+ return this.elementRef.nativeElement;
1205
+ }
1206
+ get current() {
1207
+ return this._current;
1208
+ }
1209
+ set current(value) {
1210
+ if (this._current !== value) {
1211
+ this._current = value;
1212
+ }
1213
+ }
1214
+ get currentItem() {
1215
+ return this.focusableItems[this._current];
1216
+ }
1217
+ get currentItemElement() {
1218
+ return this.currentItem.nativeElement ? this.currentItem.nativeElement : this.currentItem;
1219
+ }
1220
+ ngAfterContentInit() {
1221
+ this.subscriptions.push(this.listenForItemUpdates());
1222
+ this.initializeFocus();
1223
+ }
1224
+ ngOnDestroy() {
1225
+ this.subscriptions.forEach(s => s.unsubscribe());
1226
+ }
1227
+ handleKeyboardEvent(event) {
1228
+ // Make sure event was originated on the current item's element
1229
+ if (this.currentItemElement !== event.target) {
1230
+ const position = this.getItemPosition(event.target);
1231
+ if (this.positionInRange(position)) {
1232
+ this.current = position;
1233
+ }
1234
+ }
1235
+ if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {
1236
+ this.moveTo(this.current - 1);
1237
+ }
1238
+ else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
1239
+ this.moveTo(this.current + 1);
1240
+ }
1241
+ else if (event.code === Keys.Home) {
1242
+ this.moveTo(0);
1243
+ }
1244
+ else if (event.code === Keys.End) {
1245
+ this.moveTo(this.focusableItems.length - 1);
1246
+ }
1247
+ preventArrowKeyScroll(event);
1248
+ }
1249
+ setClickedItemCurrent(event) {
1250
+ const position = this.getItemPosition(event.target);
1251
+ if (position > -1) {
1252
+ this.moveTo(position);
1253
+ }
1254
+ }
1255
+ focusCurrent() {
1256
+ this.currentItem.focus();
1257
+ this.focusChange.emit(this._current);
1258
+ }
1259
+ moveTo(position) {
1260
+ if (this.positionInRange(position)) {
1261
+ this.current = position;
1262
+ this.focusCurrent();
1263
+ }
1264
+ }
1265
+ positionInRange(position) {
1266
+ return position >= 0 && position < this.focusableItems.length;
1267
+ }
1268
+ currentFocusIsNotFirstItem() {
1269
+ return this._current - 1 >= 0;
1270
+ }
1271
+ currentFocusIsNotLastItem() {
1272
+ return this._current + 1 < this.focusableItems.length;
1273
+ }
1274
+ initializeFocus() {
1275
+ if (this.focusableItems && this.focusableItems.length) {
1276
+ // It is possible that the focus was on an element, whose index is no longer available.
1277
+ // This can happen when some of the focusable elements are being removed.
1278
+ // In such cases, the new focus is initialized on the last focusable element.
1279
+ if (this._current >= this.focusableItems.length) {
1280
+ this._current = this.focusableItems.length - 1;
1281
+ }
1282
+ if (this.focusOnLoad) {
1283
+ this.currentItem.focus();
1284
+ this.focusChange.emit();
1285
+ }
1286
+ }
1287
+ }
1288
+ nextKeyPressed(event) {
1289
+ switch (this.direction) {
1290
+ case HermesFocusDirection.VERTICAL:
1291
+ return event.key === Keys.ArrowDown;
1292
+ case HermesFocusDirection.HORIZONTAL:
1293
+ return event.key === Keys.ArrowRight;
1294
+ case HermesFocusDirection.BOTH:
1295
+ return event.key === Keys.ArrowDown || event.key === Keys.ArrowRight;
1296
+ default:
1297
+ return false;
1298
+ }
1299
+ }
1300
+ prevKeyPressed(event) {
1301
+ switch (this.direction) {
1302
+ case HermesFocusDirection.VERTICAL:
1303
+ return event.key === Keys.ArrowUp;
1304
+ case HermesFocusDirection.HORIZONTAL:
1305
+ return event.key === Keys.ArrowLeft;
1306
+ case HermesFocusDirection.BOTH:
1307
+ return event.key === Keys.ArrowUp || event.key === Keys.ArrowLeft;
1308
+ default:
1309
+ return false;
1310
+ }
1311
+ }
1312
+ getItemPosition(item) {
1313
+ if (this._focusableItems) {
1314
+ return this.focusableItems.indexOf(item);
1315
+ }
1316
+ else {
1317
+ return this.focusableItems.map(_item => _item.nativeElement).indexOf(item);
1318
+ }
1319
+ }
1320
+ listenForItemUpdates() {
1321
+ return this.hermesKeyFocusItems.changes.subscribe(() => {
1322
+ this.initializeFocus();
1323
+ });
1324
+ }
1325
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocus, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
1326
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: HermesKeyFocus, isStandalone: false, selector: "[hermesKeyFocus]", inputs: { direction: ["hermesDirection", "direction"], focusOnLoad: ["hermesFocusOnLoad", "focusOnLoad"], focusableItems: ["hermesKeyFocus", "focusableItems"] }, outputs: { focusChange: "hermesFocusChange" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)", "click": "setClickedItemCurrent($event)" } }, queries: [{ propertyName: "hermesKeyFocusItems", predicate: HermesKeyFocusItem, descendants: true }], ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1327
+ }
1328
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocus, decorators: [{
1329
+ type: Component,
1330
+ args: [{
1331
+ selector: '[hermesKeyFocus]',
1332
+ template: '<ng-content></ng-content>',
1333
+ standalone: false,
1334
+ }]
1335
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { direction: [{
1336
+ type: Input,
1337
+ args: ['hermesDirection']
1338
+ }], focusOnLoad: [{
1339
+ type: Input,
1340
+ args: ['hermesFocusOnLoad']
1341
+ }], hermesKeyFocusItems: [{
1342
+ type: ContentChildren,
1343
+ args: [HermesKeyFocusItem, { descendants: true }]
1344
+ }], focusChange: [{
1345
+ type: Output,
1346
+ args: ['hermesFocusChange']
1347
+ }], focusableItems: [{
1348
+ type: Input,
1349
+ args: ['hermesKeyFocus']
1350
+ }], handleKeyboardEvent: [{
1351
+ type: HostListener,
1352
+ args: ['keydown', ['$event']]
1353
+ }], setClickedItemCurrent: [{
1354
+ type: HostListener,
1355
+ args: ['click', ['$event']]
1356
+ }] } });
1357
+
1358
+ /*
1359
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1360
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1361
+ * This software is released under MIT license.
1362
+ * The full license information can be found in LICENSE in the root directory of this project.
1363
+ */
1364
+ class HermesRovingTabindex extends HermesKeyFocus {
1365
+ constructor(elementRef, renderer) {
1366
+ super(elementRef);
1367
+ this.renderer = renderer;
1368
+ this.disabled = false;
1369
+ }
1370
+ // Proxy the input, as the selector name from parent class will still be "hermesKeyFocus".
1371
+ get rovingIndexItems() {
1372
+ return this.focusableItems;
1373
+ }
1374
+ set rovingIndexItems(elements) {
1375
+ this.focusableItems = elements;
1376
+ }
1377
+ set rovingTabindexDisabled(disabled) {
1378
+ this.disabled = disabled;
1379
+ if (this.currentItem) {
1380
+ this.setTabindex(this.currentItem, disabled ? -1 : 0);
1381
+ }
1382
+ }
1383
+ handleKeyboardEvent(event) {
1384
+ if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {
1385
+ this.updateTabindex(this.current - 1);
1386
+ }
1387
+ else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {
1388
+ this.updateTabindex(this.current + 1);
1389
+ }
1390
+ else if (event.code === Keys.Home) {
1391
+ this.updateTabindex(0);
1392
+ }
1393
+ else if (event.code === Keys.End) {
1394
+ this.updateTabindex(this.focusableItems.length - 1);
1395
+ }
1396
+ super.handleKeyboardEvent(event);
1397
+ }
1398
+ setClickedItemCurrent(event) {
1399
+ let position;
1400
+ if (this.focusableItems[0].nativeElement) {
1401
+ position = this.focusableItems.map(item => item.nativeElement).indexOf(event.target);
1402
+ }
1403
+ else {
1404
+ position = this.focusableItems.indexOf(event.target);
1405
+ }
1406
+ if (position > -1) {
1407
+ this.updateTabindex(position);
1408
+ }
1409
+ super.setClickedItemCurrent(event);
1410
+ }
1411
+ initializeFocus() {
1412
+ if (this.focusableItems && this.focusableItems.length) {
1413
+ this.focusableItems.forEach(item => {
1414
+ this.setTabindex(item, -1);
1415
+ });
1416
+ // It is possible that the focus was on an element, whose index is no longer available.
1417
+ // This can happen when some of the focusable elements are being removed.
1418
+ // In such cases, the new focus is initialized on the last focusable element.
1419
+ if (this.current >= this.focusableItems.length) {
1420
+ this.current = this.focusableItems.length - 1;
1421
+ }
1422
+ if (!this.disabled && this.currentItem) {
1423
+ this.setTabindex(this.currentItem, 0);
1424
+ }
1425
+ }
1426
+ super.initializeFocus();
1427
+ }
1428
+ updateTabindex(newIndex) {
1429
+ this.setTabindex(this.currentItem, -1);
1430
+ this.setTabindex(this.focusableItems[newIndex], 0);
1431
+ }
1432
+ setTabindex(item, value) {
1433
+ if (item instanceof HTMLElement) {
1434
+ this.renderer.setAttribute(item, 'tabindex', value.toString());
1435
+ }
1436
+ else {
1437
+ this.renderer.setAttribute(item.nativeElement, 'tabindex', value.toString());
1438
+ }
1439
+ }
1440
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesRovingTabindex, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
1441
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.22", type: HermesRovingTabindex, isStandalone: false, selector: "[hermesRovingTabindex]", inputs: { rovingIndexItems: ["hermesRovingTabindex", "rovingIndexItems"], rovingTabindexDisabled: ["hermesRovingTabindexDisabled", "rovingTabindexDisabled"] }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true }); }
1442
+ }
1443
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesRovingTabindex, decorators: [{
1444
+ type: Component,
1445
+ args: [{
1446
+ selector: '[hermesRovingTabindex]',
1447
+ template: '<ng-content></ng-content>',
1448
+ standalone: false,
1449
+ }]
1450
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { rovingIndexItems: [{
1451
+ type: Input,
1452
+ args: ['hermesRovingTabindex']
1453
+ }], rovingTabindexDisabled: [{
1454
+ type: Input,
1455
+ args: ['hermesRovingTabindexDisabled']
1456
+ }] } });
1457
+
1458
+ /*
1459
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1460
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1461
+ * This software is released under MIT license.
1462
+ * The full license information can be found in LICENSE in the root directory of this project.
1463
+ */
1464
+ const KEY_FOCUS_DIRECTIVES = [HermesKeyFocus, HermesRovingTabindex, HermesKeyFocusItem];
1465
+ class HermesKeyFocusModule {
1466
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1467
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusModule, declarations: [HermesKeyFocus, HermesRovingTabindex, HermesKeyFocusItem], imports: [CommonModule], exports: [HermesKeyFocus, HermesRovingTabindex, HermesKeyFocusItem] }); }
1468
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusModule, imports: [CommonModule] }); }
1469
+ }
1470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesKeyFocusModule, decorators: [{
1471
+ type: NgModule,
1472
+ args: [{
1473
+ imports: [CommonModule],
1474
+ declarations: [KEY_FOCUS_DIRECTIVES],
1475
+ exports: [KEY_FOCUS_DIRECTIVES],
1476
+ }]
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
+
1486
+ /*
1487
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1488
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1489
+ * This software is released under MIT license.
1490
+ * The full license information can be found in LICENSE in the root directory of this project.
1491
+ */
1492
+ class FocusableItem {
1493
+ }
1494
+
1495
+ /*
1496
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1497
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1498
+ * This software is released under MIT license.
1499
+ * The full license information can be found in LICENSE in the root directory of this project.
1500
+ */
1501
+ class MockFocusableItem {
1502
+ constructor(id) {
1503
+ this.id = id;
1504
+ this.disabled = false;
1505
+ }
1506
+ focus() {
1507
+ // Do nothing
1508
+ }
1509
+ blur() {
1510
+ // Do nothing
1511
+ }
1512
+ activate() {
1513
+ // Do nothing
1514
+ }
1515
+ }
1516
+
1517
+ /*
1518
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1519
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1520
+ * This software is released under MIT license.
1521
+ * The full license information can be found in LICENSE in the root directory of this project.
1522
+ */
1523
+ let NB_INSTANCES = 0;
1524
+ function uniqueIdFactory() {
1525
+ return 'hermes-id-' + NB_INSTANCES++;
1526
+ }
1527
+
1528
+ /*
1529
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1530
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1531
+ * This software is released under MIT license.
1532
+ * The full license information can be found in LICENSE in the root directory of this project.
1533
+ */
1534
+ class BasicFocusableItem {
1535
+ constructor(el, renderer, platformId) {
1536
+ this.el = el;
1537
+ this.renderer = renderer;
1538
+ this.platformId = platformId;
1539
+ this.id = uniqueIdFactory();
1540
+ this.disabled = false;
1541
+ renderer.setAttribute(el.nativeElement, 'id', this.id);
1542
+ renderer.setAttribute(el.nativeElement, 'tabindex', '-1');
1543
+ }
1544
+ focus() {
1545
+ if (isPlatformBrowser(this.platformId)) {
1546
+ this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');
1547
+ this.el.nativeElement.focus();
1548
+ this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'nearest' });
1549
+ }
1550
+ }
1551
+ blur() {
1552
+ if (isPlatformBrowser(this.platformId)) {
1553
+ this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');
1554
+ this.el.nativeElement.blur();
1555
+ }
1556
+ }
1557
+ activate() {
1558
+ if (isPlatformBrowser(this.platformId)) {
1559
+ this.el.nativeElement.click();
1560
+ }
1561
+ }
1562
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: BasicFocusableItem, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
1563
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: BasicFocusableItem }); }
1564
+ }
1565
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: BasicFocusableItem, decorators: [{
1566
+ type: Injectable
1567
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
1568
+ type: Inject,
1569
+ args: [PLATFORM_ID]
1570
+ }] }] });
1571
+ const BASIC_FOCUSABLE_ITEM_PROVIDER = [
1572
+ {
1573
+ provide: FocusableItem,
1574
+ useClass: BasicFocusableItem,
1575
+ },
1576
+ ];
1577
+
1578
+ /*
1579
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1580
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1581
+ * This software is released under MIT license.
1582
+ * The full license information can be found in LICENSE in the root directory of this project.
1583
+ */
1584
+ function customFocusableItemProvider(implementation) {
1585
+ return [
1586
+ implementation,
1587
+ {
1588
+ provide: FocusableItem,
1589
+ useExisting: implementation,
1590
+ },
1591
+ ];
1592
+ }
1593
+
1594
+ /*
1595
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1596
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1597
+ * This software is released under MIT license.
1598
+ * The full license information can be found in LICENSE in the root directory of this project.
1599
+ */
1600
+ class Linkers {
1601
+ /**
1602
+ * Links a set of focusable items to a parent along one direction
1603
+ */
1604
+ static linkParent(items, parent, direction) {
1605
+ items.forEach(item => (item[direction] = parent));
1606
+ }
1607
+ /**
1608
+ * Double-links a set of focusable items vertically, possibly looping
1609
+ */
1610
+ static linkVertical(items, loop = true) {
1611
+ items.forEach((item, index) => {
1612
+ if (index > 0) {
1613
+ item.up = items[index - 1];
1614
+ }
1615
+ if (index < items.length - 1) {
1616
+ item.down = items[index + 1];
1617
+ }
1618
+ });
1619
+ if (loop && items.length > 1) {
1620
+ items[0].up = items[items.length - 1];
1621
+ items[items.length - 1].down = items[0];
1622
+ }
1623
+ }
1624
+ }
1625
+ // Right now I only need the two linkers above, but we can easily add more linkers. A couple examples:
1626
+ // export function linkHorizontal(items: FocusableItem[], loop = true);
1627
+ // export function linkTable(items: FocusableItem[][]);
1628
+
1629
+ /*
1630
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1631
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1632
+ * This software is released under MIT license.
1633
+ * The full license information can be found in LICENSE in the root directory of this project.
1634
+ */
1635
+ function wrapObservable(observable, onSubscribe, onUnsubscribe) {
1636
+ return Observable.create((observer) => {
1637
+ onSubscribe(observer);
1638
+ const subscription = observable.subscribe(observer);
1639
+ return () => {
1640
+ subscription.unsubscribe();
1641
+ if (onUnsubscribe) {
1642
+ onUnsubscribe(observer);
1643
+ }
1644
+ };
1645
+ });
1646
+ }
1647
+
1648
+ /*
1649
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1650
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1651
+ * This software is released under MIT license.
1652
+ * The full license information can be found in LICENSE in the root directory of this project.
1653
+ */
1654
+ var ArrowKeyDirection;
1655
+ (function (ArrowKeyDirection) {
1656
+ ArrowKeyDirection["UP"] = "up";
1657
+ ArrowKeyDirection["DOWN"] = "down";
1658
+ ArrowKeyDirection["LEFT"] = "left";
1659
+ ArrowKeyDirection["RIGHT"] = "right";
1660
+ })(ArrowKeyDirection || (ArrowKeyDirection = {}));
1661
+
1662
+ /*
1663
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1664
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1665
+ * This software is released under MIT license.
1666
+ * The full license information can be found in LICENSE in the root directory of this project.
1667
+ */
1668
+ class FocusService {
1669
+ constructor(renderer) {
1670
+ this.renderer = renderer;
1671
+ this._unlistenFuncsMap = new Map();
1672
+ }
1673
+ get current() {
1674
+ return this._current;
1675
+ }
1676
+ reset(first) {
1677
+ this._current = first;
1678
+ }
1679
+ registerContainer(el) {
1680
+ // The following listeners return false when there was an action to take for the key pressed,
1681
+ // in order to prevent the default behavior of that key.
1682
+ const unlistenFuncs = [];
1683
+ unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowup', () => !this.move(ArrowKeyDirection.UP)));
1684
+ unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowdown', () => !this.move(ArrowKeyDirection.DOWN)));
1685
+ unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowleft', () => !this.move(ArrowKeyDirection.LEFT)));
1686
+ // arrow right can be used only for nested triggers.
1687
+ // unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowright', () => !this.move(ArrowKeyDirection.RIGHT)));
1688
+ unlistenFuncs.push(this.renderer.listen(el, 'keydown.space', () => !this.activateCurrent()));
1689
+ unlistenFuncs.push(this.renderer.listen(el, 'keydown.enter', () => !this.activateCurrent()));
1690
+ this._unlistenFuncsMap.set(el, unlistenFuncs);
1691
+ }
1692
+ moveTo(item) {
1693
+ /**
1694
+ * Make sure that item is not undefined,
1695
+ * This is safety net in the case that someone sometime decide to
1696
+ * call this method without having FocusableItem.
1697
+ */
1698
+ if (item === undefined) {
1699
+ return;
1700
+ }
1701
+ if (this.current) {
1702
+ this.current.blur();
1703
+ }
1704
+ item.focus();
1705
+ this._current = item;
1706
+ }
1707
+ move(direction) {
1708
+ let moved = false;
1709
+ if (this.current) {
1710
+ const next = this.current[direction];
1711
+ if (next) {
1712
+ // Turning the value into an Observable isn't great, but it's the fastest way to avoid code duplication.
1713
+ // If performance ever matters for this, we can refactor using additional private methods.
1714
+ const nextObs = isObservable(next) ? next : of(next);
1715
+ nextObs.subscribe(item => {
1716
+ if (item) {
1717
+ this.moveTo(item);
1718
+ moved = true;
1719
+ }
1720
+ });
1721
+ }
1722
+ }
1723
+ return moved;
1724
+ }
1725
+ activateCurrent() {
1726
+ if (this.current && this.current.activate) {
1727
+ this.current.activate();
1728
+ return true;
1729
+ }
1730
+ return false;
1731
+ }
1732
+ detachListeners(el) {
1733
+ const unlistenFuncs = this._unlistenFuncsMap.get(el);
1734
+ unlistenFuncs?.forEach(unlisten => unlisten());
1735
+ this._unlistenFuncsMap.delete(el);
1736
+ }
1737
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: FocusService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable }); }
1738
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: FocusService }); }
1739
+ }
1740
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: FocusService, decorators: [{
1741
+ type: Injectable
1742
+ }], ctorParameters: () => [{ type: i0.Renderer2 }] });
1743
+ function hermesFocusServiceFactory(existing, renderer) {
1744
+ return existing || new FocusService(renderer);
1745
+ }
1746
+ const FOCUS_SERVICE_PROVIDER = {
1747
+ provide: FocusService,
1748
+ useFactory: hermesFocusServiceFactory,
1749
+ deps: [[new Optional(), new SkipSelf(), FocusService], Renderer2],
1750
+ };
1751
+
1752
+ /*
1753
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1754
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1755
+ * This software is released under MIT license.
1756
+ * The full license information can be found in LICENSE in the root directory of this project.
1757
+ */
1758
+ class ScrollingService {
1759
+ constructor(_document) {
1760
+ this._document = _document;
1761
+ }
1762
+ stopScrolling() {
1763
+ this._document.body.classList.add('no-scrolling');
1764
+ }
1765
+ resumeScrolling() {
1766
+ if (this._document.body.classList.contains('no-scrolling')) {
1767
+ this._document.body.classList.remove('no-scrolling');
1768
+ }
1769
+ }
1770
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ScrollingService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
1771
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ScrollingService }); }
1772
+ }
1773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: ScrollingService, decorators: [{
1774
+ type: Injectable
1775
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
1776
+ type: Inject,
1777
+ args: [DOCUMENT]
1778
+ }] }] });
1779
+
1780
+ /**
1781
+ * This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.
1782
+ */
1783
+ class CdkDragModule_CdkDrag extends CdkDrag {
1784
+ /**
1785
+ * Include the constructor to forward all the dependencies to the base class
1786
+ * as a workaround to fix Angular "ɵɵinvalidFactoryDep" error after upgrading storybook
1787
+ * https://github.com/storybookjs/storybook/issues/23534
1788
+ */
1789
+ constructor(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef) {
1790
+ super(elementRef, dropContainer, document, ngZone, viewContainerRef, config, dir, dragDrop, changeDetectorRef);
1791
+ }
1792
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule_CdkDrag, deps: [{ token: i0.ElementRef }, { token: CDK_DROP_LIST, optional: true }, { token: DOCUMENT, optional: true }, { token: i0.NgZone }, { token: i0.ViewContainerRef }, { token: CDK_DRAG_CONFIG, optional: true }, { token: i1$1.Directionality }, { token: i2$1.DragDrop }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1793
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: CdkDragModule_CdkDrag, isStandalone: false, selector: "[cdkDrag]", usesInheritance: true, ngImport: i0 }); }
1794
+ }
1795
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule_CdkDrag, decorators: [{
1796
+ type: Directive,
1797
+ args: [{
1798
+ selector: '[cdkDrag]',
1799
+ standalone: false,
1800
+ }]
1801
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
1802
+ type: Optional
1803
+ }, {
1804
+ type: Inject,
1805
+ args: [CDK_DROP_LIST]
1806
+ }] }, { type: undefined, decorators: [{
1807
+ type: Optional
1808
+ }, {
1809
+ type: Inject,
1810
+ args: [DOCUMENT]
1811
+ }] }, { type: i0.NgZone }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
1812
+ type: Optional
1813
+ }, {
1814
+ type: Inject,
1815
+ args: [CDK_DRAG_CONFIG]
1816
+ }] }, { type: i1$1.Directionality }, { type: i2$1.DragDrop }, { type: i0.ChangeDetectorRef }] });
1817
+ /**
1818
+ * This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.
1819
+ */
1820
+ class CdkDragModule {
1821
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1822
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule, declarations: [CdkDragModule_CdkDrag], exports: [CdkDragModule_CdkDrag] }); }
1823
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule }); }
1824
+ }
1825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkDragModule, decorators: [{
1826
+ type: NgModule,
1827
+ args: [{
1828
+ declarations: [CdkDragModule_CdkDrag],
1829
+ exports: [CdkDragModule_CdkDrag],
1830
+ }]
1831
+ }] });
1832
+
1833
+ /*
1834
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1835
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1836
+ * This software is released under MIT license.
1837
+ * The full license information can be found in LICENSE in the root directory of this project.
1838
+ */
1839
+ /**
1840
+ * This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.
1841
+ */
1842
+ class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {
1843
+ /**
1844
+ * Include the constructor to forward all the dependencies to the base class
1845
+ * as a workaround to fix Angular "ɵɵinvalidFactoryDep" error after upgrading storybook
1846
+ * https://github.com/storybookjs/storybook/issues/23534
1847
+ */
1848
+ constructor(elementRef, focusTrapFactory, document) {
1849
+ super(elementRef, focusTrapFactory, document);
1850
+ }
1851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, deps: [{ token: i0.ElementRef }, { token: i1.FocusTrapFactory }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1852
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: CdkTrapFocusModule_CdkTrapFocus, isStandalone: false, selector: "[cdkTrapFocus]", usesInheritance: true, ngImport: i0 }); }
1853
+ }
1854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule_CdkTrapFocus, decorators: [{
1855
+ type: Directive,
1856
+ args: [{
1857
+ selector: '[cdkTrapFocus]',
1858
+ standalone: false,
1859
+ }]
1860
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.FocusTrapFactory }, { type: undefined, decorators: [{
1861
+ type: Optional
1862
+ }, {
1863
+ type: Inject,
1864
+ args: [DOCUMENT]
1865
+ }] }] });
1866
+ /**
1867
+ * This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.
1868
+ */
1869
+ class CdkTrapFocusModule {
1870
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1871
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule, declarations: [CdkTrapFocusModule_CdkTrapFocus], exports: [CdkTrapFocusModule_CdkTrapFocus] }); }
1872
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule }); }
1873
+ }
1874
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: CdkTrapFocusModule, decorators: [{
1875
+ type: NgModule,
1876
+ args: [{
1877
+ declarations: [CdkTrapFocusModule_CdkTrapFocus],
1878
+ exports: [CdkTrapFocusModule_CdkTrapFocus],
1879
+ }]
1880
+ }] });
1881
+
1882
+ /*
1883
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1884
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1885
+ * This software is released under MIT license.
1886
+ * The full license information can be found in LICENSE in the root directory of this project.
1887
+ */
1888
+ /**
1889
+ * @description
1890
+ *
1891
+ * Developers should explicitly add this service to providers; it then can be injected
1892
+ * into a constructor and used as a notifier for the `takeUntil` operator. This eliminates
1893
+ * the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`
1894
+ * interface and teardown subscriptions there.
1895
+ *
1896
+ * This can be used as follows:
1897
+ * ```ts
1898
+ * @Component({
1899
+ * selector: 'hermes-button-group',
1900
+ * templateUrl: 'button-group.html',
1901
+ * providers: [HermesDestroyService],
1902
+ * })
1903
+ * export class HermesButtonGroup {
1904
+ * constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: HermesDestroyService) {}
1905
+ *
1906
+ * ngAfterContentInit() {
1907
+ * this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));
1908
+ * }
1909
+ * }
1910
+ * ```
1911
+ */
1912
+ class HermesDestroyService extends Subject {
1913
+ ngOnDestroy() {
1914
+ this.next();
1915
+ this.complete();
1916
+ }
1917
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
1918
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesDestroyService }); }
1919
+ }
1920
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: HermesDestroyService, decorators: [{
1921
+ type: Injectable
1922
+ }] });
1923
+
1924
+ /*
1925
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1926
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1927
+ * This software is released under MIT license.
1928
+ * The full license information can be found in LICENSE in the root directory of this project.
1929
+ */
1930
+
1931
+ /*
1932
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1933
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1934
+ * This software is released under MIT license.
1935
+ * The full license information can be found in LICENSE in the root directory of this project.
1936
+ */
1937
+
1938
+ /*
1939
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
1940
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
1941
+ * This software is released under MIT license.
1942
+ * The full license information can be found in LICENSE in the root directory of this project.
1943
+ */
1944
+ /**
1945
+ * A (clockwise) enumeration for positions around an element.
1946
+ *
1947
+ * A B C
1948
+ * L ----------- D
1949
+ * | |
1950
+ * | |
1951
+ * K | | E
1952
+ * | |
1953
+ * | |
1954
+ * J ----------- F
1955
+ * I H G
1956
+ *
1957
+ * TOP_LEFT = A
1958
+ * TOP_CENTER = B
1959
+ * TOP_RIGHT = C
1960
+ * RIGHT_TOP = D
1961
+ * RIGHT_CENTER = E
1962
+ * RIGHT_BOTTOM = F
1963
+ * BOTTOM_RIGHT = G
1964
+ * BOTTOM_CENTER = H
1965
+ * BOTTOM_LEFT = I
1966
+ * LEFT_BOTTOM = J
1967
+ * LEFT_CENTER = K
1968
+ * LEFT_TOP = L
1969
+ *
1970
+ *
1971
+ * Consumers tell us that they want something to display on the TOP_LEFT of the trigger and that they want the
1972
+ * _content_ container to orient AT the bottom left.
1973
+ * In order to calculate the position for the content I need to match up the origin/trigger HermesPosition with the
1974
+ * content HermesPosition.
1975
+ *
1976
+ * Origin TOP_LEFT **AT** Content BOTTOM_LEFT.
1977
+ * -----------
1978
+ * | |
1979
+ * | |
1980
+ * | content |
1981
+ * | |
1982
+ * | |
1983
+ * -----------
1984
+ * |/
1985
+ * -----------
1986
+ * | |
1987
+ * | |
1988
+ * | trigger |
1989
+ * | |
1990
+ * | |
1991
+ * -----------
1992
+ *
1993
+ */
1994
+ var HermesPosition;
1995
+ (function (HermesPosition) {
1996
+ HermesPosition[HermesPosition["TOP_LEFT"] = 0] = "TOP_LEFT";
1997
+ HermesPosition[HermesPosition["TOP_CENTER"] = 1] = "TOP_CENTER";
1998
+ HermesPosition[HermesPosition["TOP_RIGHT"] = 2] = "TOP_RIGHT";
1999
+ HermesPosition[HermesPosition["RIGHT_TOP"] = 3] = "RIGHT_TOP";
2000
+ HermesPosition[HermesPosition["RIGHT_CENTER"] = 4] = "RIGHT_CENTER";
2001
+ HermesPosition[HermesPosition["RIGHT_BOTTOM"] = 5] = "RIGHT_BOTTOM";
2002
+ HermesPosition[HermesPosition["BOTTOM_RIGHT"] = 6] = "BOTTOM_RIGHT";
2003
+ HermesPosition[HermesPosition["BOTTOM_CENTER"] = 7] = "BOTTOM_CENTER";
2004
+ HermesPosition[HermesPosition["BOTTOM_LEFT"] = 8] = "BOTTOM_LEFT";
2005
+ HermesPosition[HermesPosition["LEFT_BOTTOM"] = 9] = "LEFT_BOTTOM";
2006
+ HermesPosition[HermesPosition["LEFT_CENTER"] = 10] = "LEFT_CENTER";
2007
+ HermesPosition[HermesPosition["LEFT_TOP"] = 11] = "LEFT_TOP";
2008
+ })(HermesPosition || (HermesPosition = {}));
2009
+
2010
+ /*
2011
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2012
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2013
+ * This software is released under MIT license.
2014
+ * The full license information can be found in LICENSE in the root directory of this project.
2015
+ */
2016
+ /*
2017
+ * After a conversation with the Angular core team, it turns out we don't have much of a choice for our
2018
+ * declarative API, we need to fight against change detection and its one-way flow. This is
2019
+ * currently the least dirty solution to do what we want.
2020
+ *
2021
+ * Do not modify or even use this class unless you know exactly what you're doing.
2022
+ * It has the potential to trigger change detection loops or kill app performances.
2023
+ */
2024
+ class WillyWonka {
2025
+ constructor() {
2026
+ this.disableChocolateCheck = false;
2027
+ this._chocolate = new Subject();
2028
+ }
2029
+ get chocolate() {
2030
+ return this._chocolate.asObservable();
2031
+ }
2032
+ ngAfterViewChecked() {
2033
+ if (!this.disableChocolateCheck) {
2034
+ this._chocolate.next();
2035
+ }
2036
+ }
2037
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: WillyWonka, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2038
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: WillyWonka, isStandalone: true, ngImport: i0 }); }
2039
+ }
2040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: WillyWonka, decorators: [{
2041
+ type: Directive
2042
+ }] });
2043
+
2044
+ /*
2045
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2046
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2047
+ * This software is released under MIT license.
2048
+ * The full license information can be found in LICENSE in the root directory of this project.
2049
+ */
2050
+ class OompaLoompa {
2051
+ // FIXME: Request Injector once we move to Angular 4.2+, it'll allow easier refactors
2052
+ constructor(cdr, willyWonka) {
2053
+ this.subscription = willyWonka.chocolate.subscribe(() => {
2054
+ if (this.latestFlavor !== this.flavor) {
2055
+ willyWonka.disableChocolateCheck = true;
2056
+ cdr.detectChanges();
2057
+ willyWonka.disableChocolateCheck = false;
2058
+ }
2059
+ });
2060
+ }
2061
+ ngAfterContentChecked() {
2062
+ this.latestFlavor = this.flavor;
2063
+ }
2064
+ ngOnDestroy() {
2065
+ this.subscription.unsubscribe();
2066
+ }
2067
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: OompaLoompa, deps: [{ token: i0.ChangeDetectorRef }, { token: WillyWonka }], target: i0.ɵɵFactoryTarget.Directive }); }
2068
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.22", type: OompaLoompa, isStandalone: true, ngImport: i0 }); }
2069
+ }
2070
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.22", ngImport: i0, type: OompaLoompa, decorators: [{
2071
+ type: Directive
2072
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: WillyWonka }] });
2073
+
2074
+ /*
2075
+ * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.
2076
+ * The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
2077
+ * This software is released under MIT license.
2078
+ * The full license information can be found in LICENSE in the root directory of this project.
2079
+ */
2080
+
2081
+ /**
2082
+ * Generated bundle index. Do not edit.
2083
+ */
2084
+
2085
+ export { ArrowKeyDirection, BASIC_FOCUSABLE_ITEM_PROVIDER, BaseExpandableAnimation, BasicFocusableItem, CdkDragModule, CdkDragModule_CdkDrag, CdkTrapFocusModule, CdkTrapFocusModule_CdkTrapFocus, DATEPICKER_ENABLE_BREAKPOINT, DomAdapter, EXPANDABLE_ANIMATION_DIRECTIVES, EXTRA_LARGE_BREAKPOINT, EmptyAnchor, FOCUS_ON_VIEW_INIT, FOCUS_ON_VIEW_INIT_DIRECTIVES, FOCUS_SERVICE_PROVIDER, FocusService, FocusableItem, HermesCommonStringsService, HermesDestroyService, HermesExpandableAnimation, HermesExpandableAnimationDirective, HermesExpandableAnimationModule, HermesFocusOnViewInit, HermesFocusOnViewInitModule, HermesHostWrappingModule, HermesKeyFocus, HermesKeyFocusItem, HermesKeyFocusModule, HermesOutsideClickModule, HermesPosition, HermesRovingTabindex, HermesStandaloneCdkTrapFocus, HermesTemplateRefModule, HostWrapper, Keys, LARGE_BREAKPOINT, Linkers, MEDIUM_BREAKPOINT, MOCK_DOM_ADAPTER_PROVIDER, MockDomAdapter, MockFocusableItem, OUSTIDE_CLICK_DIRECTIVES, OompaLoompa, OutsideClick, SMALL_BREAKPOINT, ScrollingService, TemplateRefContainer, WillyWonka, assertNever, collapse, commonStringsDefault, customFocusableItemProvider, defaultAnimationTiming, defaultExpandAnimation, fade, fadeSlide, hermesFocusServiceFactory, isBooleanAttributeSet, isKeyEitherLetterOrNumber, preventArrowKeyScroll, slide, triggerAllFormControlValidation, uniqueIdFactory, wrapObservable };
2086
+ //# sourceMappingURL=hermes-ui-angular-utils.mjs.map