@hermes-ui/angular 0.1.6 → 0.1.7

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 (108) hide show
  1. package/README.md +52 -52
  2. package/button/_properties.buttons.scss +387 -387
  3. package/fesm2022/hermes-ui-angular-accordion.mjs.map +1 -1
  4. package/fesm2022/hermes-ui-angular-addons-a11y.mjs.map +1 -1
  5. package/fesm2022/hermes-ui-angular-addons-card-container.mjs.map +1 -1
  6. package/fesm2022/hermes-ui-angular-addons-certificate-viewer.mjs.map +1 -1
  7. package/fesm2022/hermes-ui-angular-addons-datagrid-filters.mjs.map +1 -1
  8. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs +28 -28
  9. package/fesm2022/hermes-ui-angular-addons-datagrid.mjs.map +1 -1
  10. package/fesm2022/hermes-ui-angular-addons-dialog.mjs.map +1 -1
  11. package/fesm2022/hermes-ui-angular-addons-menu.mjs +8 -8
  12. package/fesm2022/hermes-ui-angular-addons-menu.mjs.map +1 -1
  13. package/fesm2022/hermes-ui-angular-addons-property-view.mjs.map +1 -1
  14. package/fesm2022/hermes-ui-angular-addons-stepper.mjs.map +1 -1
  15. package/fesm2022/hermes-ui-angular-addons-tabs.mjs.map +1 -1
  16. package/fesm2022/hermes-ui-angular-addons-testing.mjs +78 -78
  17. package/fesm2022/hermes-ui-angular-addons-testing.mjs.map +1 -1
  18. package/fesm2022/hermes-ui-angular-addons-theme-builder.mjs.map +1 -1
  19. package/fesm2022/hermes-ui-angular-addons-var.mjs.map +1 -1
  20. package/fesm2022/hermes-ui-angular-addons-wizard.mjs.map +1 -1
  21. package/fesm2022/hermes-ui-angular-addons-workflow.mjs.map +1 -1
  22. package/fesm2022/hermes-ui-angular-button.mjs +74 -74
  23. package/fesm2022/hermes-ui-angular-button.mjs.map +1 -1
  24. package/fesm2022/hermes-ui-angular-card.mjs.map +1 -1
  25. package/fesm2022/hermes-ui-angular-collapsible-panel.mjs.map +1 -1
  26. package/fesm2022/hermes-ui-angular-data-datagrid.mjs +926 -926
  27. package/fesm2022/hermes-ui-angular-data-datagrid.mjs.map +1 -1
  28. package/fesm2022/hermes-ui-angular-data-stack-view.mjs +114 -114
  29. package/fesm2022/hermes-ui-angular-data-stack-view.mjs.map +1 -1
  30. package/fesm2022/hermes-ui-angular-data-tree-view.mjs +12 -12
  31. package/fesm2022/hermes-ui-angular-data-tree-view.mjs.map +1 -1
  32. package/fesm2022/hermes-ui-angular-data.mjs.map +1 -1
  33. package/fesm2022/hermes-ui-angular-divider.mjs +2 -2
  34. package/fesm2022/hermes-ui-angular-divider.mjs.map +1 -1
  35. package/fesm2022/hermes-ui-angular-emphasis-alert.mjs.map +1 -1
  36. package/fesm2022/hermes-ui-angular-emphasis-badge.mjs.map +1 -1
  37. package/fesm2022/hermes-ui-angular-emphasis-label.mjs +16 -16
  38. package/fesm2022/hermes-ui-angular-emphasis-label.mjs.map +1 -1
  39. package/fesm2022/hermes-ui-angular-emphasis.mjs.map +1 -1
  40. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs +50 -50
  41. package/fesm2022/hermes-ui-angular-forms-checkbox.mjs.map +1 -1
  42. package/fesm2022/hermes-ui-angular-forms-combobox.mjs +126 -126
  43. package/fesm2022/hermes-ui-angular-forms-combobox.mjs.map +1 -1
  44. package/fesm2022/hermes-ui-angular-forms-common.mjs.map +1 -1
  45. package/fesm2022/hermes-ui-angular-forms-datalist.mjs +46 -46
  46. package/fesm2022/hermes-ui-angular-forms-datalist.mjs.map +1 -1
  47. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs +374 -374
  48. package/fesm2022/hermes-ui-angular-forms-datepicker.mjs.map +1 -1
  49. package/fesm2022/hermes-ui-angular-forms-file-input.mjs +190 -190
  50. package/fesm2022/hermes-ui-angular-forms-file-input.mjs.map +1 -1
  51. package/fesm2022/hermes-ui-angular-forms-input.mjs +52 -52
  52. package/fesm2022/hermes-ui-angular-forms-input.mjs.map +1 -1
  53. package/fesm2022/hermes-ui-angular-forms-native-select.mjs +38 -38
  54. package/fesm2022/hermes-ui-angular-forms-native-select.mjs.map +1 -1
  55. package/fesm2022/hermes-ui-angular-forms-number-input.mjs +80 -80
  56. package/fesm2022/hermes-ui-angular-forms-number-input.mjs.map +1 -1
  57. package/fesm2022/hermes-ui-angular-forms-password.mjs +58 -58
  58. package/fesm2022/hermes-ui-angular-forms-password.mjs.map +1 -1
  59. package/fesm2022/hermes-ui-angular-forms-radio.mjs +50 -50
  60. package/fesm2022/hermes-ui-angular-forms-radio.mjs.map +1 -1
  61. package/fesm2022/hermes-ui-angular-forms-range.mjs +44 -44
  62. package/fesm2022/hermes-ui-angular-forms-range.mjs.map +1 -1
  63. package/fesm2022/hermes-ui-angular-forms-select.mjs +8 -8
  64. package/fesm2022/hermes-ui-angular-forms-select.mjs.map +1 -1
  65. package/fesm2022/hermes-ui-angular-forms-textarea.mjs +38 -38
  66. package/fesm2022/hermes-ui-angular-forms-textarea.mjs.map +1 -1
  67. package/fesm2022/hermes-ui-angular-forms.mjs.map +1 -1
  68. package/fesm2022/hermes-ui-angular-icon.mjs.map +1 -1
  69. package/fesm2022/hermes-ui-angular-layout-breadcrumbs.mjs.map +1 -1
  70. package/fesm2022/hermes-ui-angular-layout-main-container.mjs.map +1 -1
  71. package/fesm2022/hermes-ui-angular-layout-nav.mjs +46 -46
  72. package/fesm2022/hermes-ui-angular-layout-nav.mjs.map +1 -1
  73. package/fesm2022/hermes-ui-angular-layout-tabs.mjs +146 -146
  74. package/fesm2022/hermes-ui-angular-layout-tabs.mjs.map +1 -1
  75. package/fesm2022/hermes-ui-angular-layout-vertical-nav.mjs.map +1 -1
  76. package/fesm2022/hermes-ui-angular-layout.mjs.map +1 -1
  77. package/fesm2022/hermes-ui-angular-modal.mjs.map +1 -1
  78. package/fesm2022/hermes-ui-angular-pagination.mjs +8 -8
  79. package/fesm2022/hermes-ui-angular-pagination.mjs.map +1 -1
  80. package/fesm2022/hermes-ui-angular-popover-common.mjs +26 -3
  81. package/fesm2022/hermes-ui-angular-popover-common.mjs.map +1 -1
  82. package/fesm2022/hermes-ui-angular-popover-dropdown.mjs.map +1 -1
  83. package/fesm2022/hermes-ui-angular-popover-signpost.mjs +66 -66
  84. package/fesm2022/hermes-ui-angular-popover-signpost.mjs.map +1 -1
  85. package/fesm2022/hermes-ui-angular-popover-tooltip.mjs.map +1 -1
  86. package/fesm2022/hermes-ui-angular-popover.mjs.map +1 -1
  87. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs +10 -10
  88. package/fesm2022/hermes-ui-angular-progress-progress-bars.mjs.map +1 -1
  89. package/fesm2022/hermes-ui-angular-progress-spinner.mjs.map +1 -1
  90. package/fesm2022/hermes-ui-angular-stepper.mjs.map +1 -1
  91. package/fesm2022/hermes-ui-angular-timeline.mjs.map +1 -1
  92. package/fesm2022/hermes-ui-angular-toast.mjs +4 -4
  93. package/fesm2022/hermes-ui-angular-toast.mjs.map +1 -1
  94. package/fesm2022/hermes-ui-angular-utils-conditional.mjs.map +1 -1
  95. package/fesm2022/hermes-ui-angular-utils.mjs.map +1 -1
  96. package/fesm2022/hermes-ui-angular-wizard.mjs +56 -56
  97. package/fesm2022/hermes-ui-angular-wizard.mjs.map +1 -1
  98. package/fesm2022/hermes-ui-angular.mjs.map +1 -1
  99. package/hermes-ui.scss +7 -7
  100. package/package.json +1 -1
  101. package/toast/README.md +65 -65
  102. package/toast/_properties.toast.scss +56 -56
  103. package/toast/_toast.clarity.scss +190 -190
  104. package/toast/_variables.toast.scss +33 -33
  105. package/types/hermes-ui-angular-data-datagrid.d.ts.map +1 -1
  106. package/types/hermes-ui-angular-popover-common.d.ts +4 -3
  107. package/types/hermes-ui-angular-popover-common.d.ts.map +1 -1
  108. package/types/hermes-ui-angular-wizard.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"hermes-ui-angular-popover-common.mjs","sources":["../../../popover/common/providers/popover.service.ts","../../../popover/common/utils/dom-realm.ts","../../../popover/common/utils/cross-window-origin.ts","../../../popover/common/utils/popover-positions.ts","../../../popover/common/popover-content.ts","../../../popover/common/popover-origin.ts","../../../popover/common/popover-host-origin.token.ts","../../../popover/common/stop-escape-propagation.directive.ts","../../../popover/common/popover-host.directive.ts","../../../popover/common/if-open.directive.ts","../../../popover/common/popover-close-button.ts","../../../popover/common/popover-open-close-button.ts","../../../popover/common/popover.module.ts","../../../popover/common/index.ts","../../../popover/common/hermes-ui-angular-popover-common.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';\nimport { ElementRef, Injectable } from '@angular/core';\nimport { preventArrowKeyScroll } from '@hermes-ui/angular/utils';\nimport { Observable, Subject } from 'rxjs';\n\nimport { HermesPopoverPosition } from '../utils/popover-positions';\n\nexport interface HermesPopoverPoint {\n x: number;\n y: number;\n}\n\n@Injectable()\nexport class HermesPopoverService {\n pointTargetElement: HTMLElement | undefined;\n origin: FlexibleConnectedPositionStrategyOrigin;\n closeButtonRef: ElementRef;\n panelClass: string[] = [];\n\n private _open = false;\n private _openChange = new Subject<boolean>();\n private _openEvent: Event;\n private _openEventChange = new Subject<Event>();\n private _positionChange = new Subject<string>();\n private _resetPositions = new Subject<void>();\n private _updatePosition = new Subject<void>();\n private _popoverVisible = new Subject<boolean>();\n\n get originElement(): ElementRef<HTMLElement> | null {\n return this.origin instanceof ElementRef ? this.origin : null;\n }\n\n get originPoint(): HermesPopoverPoint | null {\n return this.origin && 'x' in this.origin && 'y' in this.origin ? (this.origin as HermesPopoverPoint) : null;\n }\n\n get openChange(): Observable<boolean> {\n return this._openChange.asObservable();\n }\n\n get popoverVisible(): Observable<boolean> {\n return this._popoverVisible.asObservable();\n }\n\n get openEvent(): Event {\n return this._openEvent;\n }\n set openEvent(event: Event) {\n this._openEvent = event;\n this._openEventChange.next(event);\n }\n\n get open(): boolean {\n return this._open;\n }\n set open(value: boolean) {\n value = !!value;\n if (this._open !== value) {\n this._open = value;\n this._openChange.next(value);\n }\n }\n\n get resetPositionsChange(): Observable<void> {\n return this._resetPositions.asObservable();\n }\n\n positionChange(position: HermesPopoverPosition) {\n this._positionChange.next(position);\n }\n\n updatePositionChange(): Observable<void> {\n return this._updatePosition.asObservable();\n }\n\n getPositionChange(): Observable<string> {\n return this._positionChange.asObservable();\n }\n\n getEventChange(): Observable<Event> {\n return this._openEventChange.asObservable();\n }\n\n /**\n * Sometimes, we need to remember the event that triggered the toggling to avoid loops.\n * This is for instance the case of components that open on a click, but close on a click outside.\n */\n toggleWithEvent(event: any) {\n preventArrowKeyScroll(event);\n\n this.openEvent = event;\n this.open = !this.open;\n }\n\n /**\n * Opens the popover at a specific screen coordinate.\n * Useful for context menus where the popover should appear at the cursor position.\n */\n openAtPoint(point: HermesPopoverPoint, targetElement?: HTMLElement) {\n if (this._open) {\n this._open = false;\n this._openChange.next(false);\n }\n\n this.origin = point;\n this.pointTargetElement = targetElement;\n this.open = true;\n }\n\n popoverVisibleEmit(visible: boolean) {\n this._popoverVisible.next(visible);\n }\n\n resetPositions() {\n this._resetPositions.next();\n }\n\n updatePosition() {\n this._updatePosition.next();\n }\n\n focusCloseButton(): void {\n this.closeButtonRef.nativeElement?.focus();\n }\n\n focusOrigin(): void {\n this.originElement?.nativeElement?.focus({ preventScroll: true });\n }\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n// Realm-independent shape checks for getScrollableParents(): `instanceof` fails for\r\n// nodes created by a different window's constructors (e.g. an iframe's own Element,\r\n// ShadowRoot, or HTMLHtmlElement classes), so these duck-type via nodeType/tagName\r\n// instead, which works the same regardless of which window created the node.\r\n\r\nexport function isElementOrShadowRoot(node: Node): boolean {\r\n return node.nodeType === Node.ELEMENT_NODE || isShadowRoot(node);\r\n}\r\n\r\nexport function isShadowRoot(node: Node): node is ShadowRoot {\r\n return node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\r\n}\r\n\r\nexport function isHtmlElement(node: Node): boolean {\r\n return node.nodeType === Node.ELEMENT_NODE && (node as Element).tagName === 'HTML';\r\n}\r\n\r\n// Same-origin-safe: returns null (rather than throwing) if `frameElement` can't be\r\n// read, which happens when `win` is embedded in a cross-origin parent window.\r\nexport function getFrameElement(win: Window): Element | null {\r\n try {\r\n return win.frameElement;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';\r\nimport { ElementRef } from '@angular/core';\r\n\r\nimport { getFrameElement } from './dom-realm';\r\n\r\n/**\r\n * Resolves an origin to its element and owning window, but only when that window differs\r\n * from this one - i.e. the origin lives inside an iframe. Returns null for same-window\r\n * origins and for non-element (point) origins, so a single check lets callers skip all\r\n * cross-window handling for the overwhelming majority of popovers.\r\n *\r\n * Cheap: a few property reads, no layout access.\r\n */\r\nexport function getCrossWindowOriginContext(\r\n origin: FlexibleConnectedPositionStrategyOrigin\r\n): { element: Element; elementWindow: Window } | null {\r\n const element = getOriginElement(origin);\r\n const elementWindow = element?.ownerDocument?.defaultView;\r\n\r\n return element && elementWindow && elementWindow !== window ? { element, elementWindow } : null;\r\n}\r\n\r\n/**\r\n * CDK's FlexibleConnectedPositionStrategy anchors the overlay by reading\r\n * origin.getBoundingClientRect() (for an Element/ElementRef origin) directly off the\r\n * origin, relative to the origin's own window. That only matches the overlay panel's\r\n * window (always the one this code runs in) when the origin lives in the same document.\r\n * When the origin sits inside an iframe (e.g. a micro-frontend mounting its trigger in a\r\n * nested document, possibly combined with a ShadowRoot), the raw rect is relative to the\r\n * wrong viewport and the overlay is mispositioned.\r\n *\r\n * If the origin is same-window (or not an Element/ElementRef at all), this returns it\r\n * unchanged. Otherwise it returns a Point-based origin (the other shape\r\n * FlexibleConnectedPositionStrategy natively supports) whose x/y/width/height are live\r\n * getters that recompute the element's rect plus the cumulative offset of every ancestor\r\n * iframe between the origin's window and this one, so the overlay still anchors\r\n * correctly across repositions (scroll, resize). This has no effect on anything besides\r\n * overlay positioning math - it never replaces the origin ElementRef consumers rely on\r\n * elsewhere (e.g. scroll listeners), since it only wraps a local copy used for\r\n * positioning.\r\n *\r\n * If the ancestor iframe chain can't be safely resolved (e.g. a cross-origin frame\r\n * boundary this code can't introspect), the getters fall back to the element's own\r\n * un-translated rect - the exact numbers CDK would compute if given the raw\r\n * Element/ElementRef directly, so behavior for that case is unchanged.\r\n */\r\nexport function resolveCrossWindowOrigin(\r\n origin: FlexibleConnectedPositionStrategyOrigin\r\n): FlexibleConnectedPositionStrategyOrigin {\r\n const crossWindowOrigin = getCrossWindowOriginContext(origin);\r\n\r\n // Same-window origins (and point origins) are handed back untouched - no wrapping, no\r\n // translation, no behavior change from a popover that never crosses a window boundary.\r\n if (!crossWindowOrigin) {\r\n return origin;\r\n }\r\n\r\n const { element, elementWindow } = crossWindowOrigin;\r\n\r\n let cached: { x: number; y: number; width: number; height: number } | null = null;\r\n\r\n // CDK's position strategy reads x/y/width/height several times per apply() (it builds\r\n // a rect from a Point origin as {top: y, bottom: y + height, left: x, right: x + width}).\r\n // Memoizing per microtask collapses that into a single rect/offset computation instead\r\n // of one forced layout read per property access, while still recomputing fresh on the\r\n // next reposition (scroll, resize), since the cache clears before the next microtask.\r\n const read = () => {\r\n if (!cached) {\r\n const rect = element.getBoundingClientRect();\r\n const offset = getCumulativeFrameOffset(elementWindow) ?? { x: 0, y: 0 };\r\n cached = { x: rect.left + offset.x, y: rect.top + offset.y, width: rect.width, height: rect.height };\r\n queueMicrotask(() => (cached = null));\r\n }\r\n\r\n return cached;\r\n };\r\n\r\n return {\r\n get x(): number {\r\n return read().x;\r\n },\r\n get y(): number {\r\n return read().y;\r\n },\r\n get width(): number {\r\n return read().width;\r\n },\r\n get height(): number {\r\n return read().height;\r\n },\r\n };\r\n}\r\n\r\nfunction getOriginElement(origin: FlexibleConnectedPositionStrategyOrigin): Element | null {\r\n if (origin instanceof ElementRef) {\r\n return origin.nativeElement;\r\n }\r\n\r\n // `instanceof Element` is realm-sensitive and misses raw elements belonging to\r\n // another window - exactly the population this util targets - so duck-type instead.\r\n if ((origin as Node)?.nodeType === Node.ELEMENT_NODE) {\r\n return origin as Element;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Walks the chain of window.frameElement references from `originWindow` up to this\r\n * code's own window, summing each ancestor iframe's position. Returns null if the\r\n * chain can't be fully resolved (cross-origin boundary, or `originWindow` isn't\r\n * actually embedded within this window).\r\n */\r\nfunction getCumulativeFrameOffset(originWindow: Window): { x: number; y: number } | null {\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n let currentWindow: Window | null = originWindow;\r\n\r\n while (currentWindow && currentWindow !== window) {\r\n const frameElement = getFrameElement(currentWindow);\r\n\r\n if (!frameElement) {\r\n return null;\r\n }\r\n\r\n const frameRect = frameElement.getBoundingClientRect();\r\n // clientLeft/clientTop only cover the frame's border, not any CSS padding, which\r\n // would otherwise skew the anchor - read computed style through the frame's own\r\n // window for realm-safety.\r\n const frameWindow = frameElement.ownerDocument?.defaultView ?? window;\r\n const { borderLeftWidth, borderTopWidth, paddingLeft, paddingTop } = frameWindow.getComputedStyle(frameElement);\r\n offsetX += frameRect.left + (parseFloat(borderLeftWidth) || 0) + (parseFloat(paddingLeft) || 0);\r\n offsetY += frameRect.top + (parseFloat(borderTopWidth) || 0) + (parseFloat(paddingTop) || 0);\r\n currentWindow = frameElement.ownerDocument?.defaultView ?? null;\r\n }\r\n\r\n return currentWindow === window ? { x: offsetX, y: offsetY } : null;\r\n}\r\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { HermesPosition } from '@hermes-ui/angular/utils';\n\nexport enum HermesPopoverType {\n SIGNPOST,\n TOOLTIP,\n DROPDOWN,\n DEFAULT,\n}\n\nexport enum HermesPopoverPosition {\n TOP_RIGHT = 'top-right',\n TOP_MIDDLE = 'top-middle',\n TOP_LEFT = 'top-left',\n RIGHT = 'right',\n RIGHT_TOP = 'right-top',\n RIGHT_MIDDLE = 'right-middle',\n RIGHT_BOTTOM = 'right-bottom',\n LEFT = 'left',\n LEFT_TOP = 'left-top',\n LEFT_MIDDLE = 'left-middle',\n LEFT_BOTTOM = 'left-bottom',\n BOTTOM_RIGHT = 'bottom-right',\n BOTTOM_MIDDLE = 'bottom-middle',\n BOTTOM_LEFT = 'bottom-left',\n}\n\nexport const TOOLTIP_POSITIONS: HermesPopoverPosition[] = [\n HermesPopoverPosition.RIGHT, // default. must be at index 0\n HermesPopoverPosition.LEFT,\n HermesPopoverPosition.BOTTOM_RIGHT,\n HermesPopoverPosition.BOTTOM_LEFT,\n HermesPopoverPosition.TOP_RIGHT,\n HermesPopoverPosition.TOP_LEFT,\n];\n\nexport const DROPDOWN_POSITIONS: HermesPopoverPosition[] = [\n HermesPopoverPosition.BOTTOM_LEFT, // default. must be at index 0\n HermesPopoverPosition.BOTTOM_RIGHT,\n HermesPopoverPosition.TOP_LEFT,\n HermesPopoverPosition.TOP_RIGHT,\n HermesPopoverPosition.RIGHT_TOP,\n HermesPopoverPosition.RIGHT_BOTTOM,\n HermesPopoverPosition.LEFT_TOP,\n HermesPopoverPosition.LEFT_BOTTOM,\n];\n\nexport const SIGNPOST_POSITIONS: HermesPopoverPosition[] = [\n HermesPopoverPosition.RIGHT_MIDDLE, // default. must be at index 0\n HermesPopoverPosition.RIGHT_TOP,\n HermesPopoverPosition.RIGHT_BOTTOM,\n HermesPopoverPosition.TOP_RIGHT,\n HermesPopoverPosition.TOP_LEFT,\n HermesPopoverPosition.TOP_MIDDLE,\n HermesPopoverPosition.BOTTOM_RIGHT,\n HermesPopoverPosition.BOTTOM_MIDDLE,\n HermesPopoverPosition.BOTTOM_LEFT,\n HermesPopoverPosition.LEFT_BOTTOM,\n HermesPopoverPosition.LEFT_MIDDLE,\n HermesPopoverPosition.LEFT_TOP,\n];\n\nexport function getPositionsArray(type: HermesPopoverType) {\n switch (type) {\n case HermesPopoverType.TOOLTIP:\n return TOOLTIP_POSITIONS;\n case HermesPopoverType.DROPDOWN:\n return DROPDOWN_POSITIONS;\n case HermesPopoverType.SIGNPOST:\n case HermesPopoverType.DEFAULT:\n default:\n return SIGNPOST_POSITIONS;\n }\n}\n\nexport function getConnectedPositions(type: HermesPopoverType): ConnectedPosition[] {\n const result: ConnectedPosition[] = [];\n\n getPositionsArray(type).forEach(position => {\n result.push(mapPopoverKeyToPosition(position, type));\n });\n\n return result;\n}\n\nconst POPOVER_OFFSETS: Record<HermesPopoverType, number> = {\n [HermesPopoverType.SIGNPOST]: 16,\n [HermesPopoverType.TOOLTIP]: 21,\n [HermesPopoverType.DROPDOWN]: 2,\n [HermesPopoverType.DEFAULT]: 0,\n};\n\nfunction getOffset(key: HermesPopoverPosition, type: HermesPopoverType): Partial<ConnectedPosition> {\n const offset = POPOVER_OFFSETS[type] || 0;\n\n switch (key) {\n // TOP\n case HermesPopoverPosition.TOP_LEFT:\n case HermesPopoverPosition.TOP_MIDDLE:\n case HermesPopoverPosition.TOP_RIGHT:\n return {\n offsetY: -offset,\n offsetX: 0,\n } as ConnectedPosition;\n\n // LEFT\n case HermesPopoverPosition.LEFT_TOP:\n case HermesPopoverPosition.LEFT_MIDDLE:\n case HermesPopoverPosition.LEFT:\n case HermesPopoverPosition.LEFT_BOTTOM:\n return {\n offsetY: 0,\n offsetX: -offset,\n } as ConnectedPosition;\n\n // RIGHT\n case HermesPopoverPosition.RIGHT_TOP:\n case HermesPopoverPosition.RIGHT_MIDDLE:\n case HermesPopoverPosition.RIGHT:\n case HermesPopoverPosition.RIGHT_BOTTOM:\n return {\n offsetY: 0,\n offsetX: offset,\n } as ConnectedPosition;\n\n // BOTTOM and DEFAULT\n case HermesPopoverPosition.BOTTOM_RIGHT:\n case HermesPopoverPosition.BOTTOM_MIDDLE:\n case HermesPopoverPosition.BOTTOM_LEFT:\n default:\n return {\n offsetY: offset,\n offsetX: 0,\n } as ConnectedPosition;\n }\n}\n\nconst STANDARD_ORIGINS = {\n // TOP\n [HermesPopoverPosition.TOP_RIGHT]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_LEFT },\n [HermesPopoverPosition.TOP_MIDDLE]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_CENTER },\n [HermesPopoverPosition.TOP_LEFT]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_RIGHT },\n\n // LEFT\n [HermesPopoverPosition.LEFT]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_TOP },\n [HermesPopoverPosition.LEFT_TOP]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_BOTTOM },\n [HermesPopoverPosition.LEFT_MIDDLE]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_CENTER },\n [HermesPopoverPosition.LEFT_BOTTOM]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_TOP },\n\n // RIGHT\n [HermesPopoverPosition.RIGHT]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_TOP },\n [HermesPopoverPosition.RIGHT_TOP]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_BOTTOM },\n [HermesPopoverPosition.RIGHT_MIDDLE]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_CENTER },\n [HermesPopoverPosition.RIGHT_BOTTOM]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_TOP },\n\n // BOTTOM\n [HermesPopoverPosition.BOTTOM_RIGHT]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_LEFT },\n [HermesPopoverPosition.BOTTOM_MIDDLE]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_CENTER },\n [HermesPopoverPosition.BOTTOM_LEFT]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_RIGHT },\n};\n\nconst DROPDOWN_ORIGINS = {\n // TOP\n [HermesPopoverPosition.TOP_RIGHT]: { origin: HermesPosition.TOP_RIGHT, content: HermesPosition.BOTTOM_RIGHT },\n [HermesPopoverPosition.TOP_LEFT]: { origin: HermesPosition.TOP_LEFT, content: HermesPosition.BOTTOM_LEFT },\n\n // LEFT\n [HermesPopoverPosition.LEFT_TOP]: { origin: HermesPosition.LEFT_TOP, content: HermesPosition.TOP_RIGHT },\n [HermesPopoverPosition.LEFT_BOTTOM]: { origin: HermesPosition.LEFT_BOTTOM, content: HermesPosition.BOTTOM_RIGHT },\n\n // RIGHT\n [HermesPopoverPosition.RIGHT_TOP]: { origin: HermesPosition.RIGHT_TOP, content: HermesPosition.LEFT_TOP },\n [HermesPopoverPosition.RIGHT_BOTTOM]: { origin: HermesPosition.RIGHT_BOTTOM, content: HermesPosition.LEFT_BOTTOM },\n\n // BOTTOM\n [HermesPopoverPosition.BOTTOM_RIGHT]: { origin: HermesPosition.BOTTOM_LEFT, content: HermesPosition.TOP_RIGHT },\n [HermesPopoverPosition.BOTTOM_LEFT]: { origin: HermesPosition.BOTTOM_RIGHT, content: HermesPosition.TOP_LEFT },\n};\n\nexport function mapPopoverKeyToPosition(key: HermesPopoverPosition, type: HermesPopoverType): ConnectedPosition {\n let offset = getOffset(key, type);\n\n const defaultPosition = { origin: HermesPosition.BOTTOM_LEFT, content: HermesPosition.TOP_LEFT };\n const { origin, content } =\n (type === HermesPopoverType.DROPDOWN ? DROPDOWN_ORIGINS[key] : STANDARD_ORIGINS[key]) ?? defaultPosition;\n\n return {\n ...getOriginPosition(origin),\n ...getContentPosition(content),\n ...offset,\n panelClass: key,\n } as ConnectedPosition;\n}\n\nexport function getOriginPosition(key: HermesPosition): Partial<ConnectedPosition> {\n switch (key) {\n // TOP Positions\n case HermesPosition.TOP_LEFT:\n return {\n originX: 'start',\n originY: 'top',\n };\n case HermesPosition.TOP_CENTER:\n return {\n originX: 'center',\n originY: 'top',\n };\n case HermesPosition.TOP_RIGHT:\n return {\n originX: 'end',\n originY: 'top',\n };\n // LEFT Positions\n case HermesPosition.LEFT_TOP:\n return {\n originX: 'start',\n originY: 'top',\n };\n case HermesPosition.LEFT_CENTER:\n return {\n originX: 'start',\n originY: 'center',\n };\n case HermesPosition.LEFT_BOTTOM:\n return {\n originX: 'start',\n originY: 'bottom',\n };\n // RIGHT Positions\n case HermesPosition.RIGHT_TOP:\n return {\n originX: 'end',\n originY: 'top',\n };\n case HermesPosition.RIGHT_CENTER:\n return {\n originX: 'end',\n originY: 'center',\n };\n case HermesPosition.RIGHT_BOTTOM:\n return {\n originX: 'end',\n originY: 'bottom',\n };\n // BOTTOM positions and default\n case HermesPosition.BOTTOM_LEFT:\n return {\n originX: 'end',\n originY: 'bottom',\n };\n case HermesPosition.BOTTOM_CENTER:\n return {\n originX: 'center',\n originY: 'bottom',\n };\n case HermesPosition.BOTTOM_RIGHT:\n default:\n return {\n originX: 'start',\n originY: 'bottom',\n };\n }\n}\n\nexport function getContentPosition(key: HermesPosition): Partial<ConnectedPosition> {\n switch (key) {\n // TOP Positions\n case HermesPosition.TOP_LEFT:\n return {\n overlayX: 'start',\n overlayY: 'top',\n };\n case HermesPosition.TOP_CENTER:\n return {\n overlayX: 'center',\n overlayY: 'top',\n };\n case HermesPosition.TOP_RIGHT:\n return {\n overlayX: 'end',\n overlayY: 'top',\n };\n\n // LEFT Positions\n case HermesPosition.LEFT_TOP:\n return {\n overlayX: 'start',\n overlayY: 'top',\n };\n case HermesPosition.LEFT_CENTER:\n return {\n overlayX: 'start',\n overlayY: 'center',\n };\n case HermesPosition.LEFT_BOTTOM:\n return {\n overlayX: 'start',\n overlayY: 'bottom',\n };\n\n // RIGHT Positions\n case HermesPosition.RIGHT_TOP:\n return {\n overlayX: 'end',\n overlayY: 'top',\n };\n case HermesPosition.RIGHT_CENTER:\n return {\n overlayX: 'end',\n overlayY: 'center',\n };\n case HermesPosition.RIGHT_BOTTOM:\n return {\n overlayX: 'end',\n overlayY: 'bottom',\n };\n\n // BOTTOM positions and default\n case HermesPosition.BOTTOM_LEFT:\n return {\n overlayX: 'start',\n overlayY: 'bottom',\n };\n case HermesPosition.BOTTOM_CENTER:\n return {\n overlayX: 'center',\n overlayY: 'bottom',\n };\n case HermesPosition.BOTTOM_RIGHT:\n default:\n return {\n overlayX: 'end',\n overlayY: 'bottom',\n };\n }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n ConnectedPosition,\n FlexibleConnectedPositionStrategyOrigin,\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n} from '@angular/cdk/overlay';\nimport { DomPortal } from '@angular/cdk/portal';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EmbeddedViewRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Optional,\n PLATFORM_ID,\n SkipSelf,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Keys } from '@hermes-ui/angular/utils';\nimport { fromEvent, merge, Subscription, switchMap, timer } from 'rxjs';\n\nimport { HermesPopoverService } from './providers/popover.service';\nimport { getCrossWindowOriginContext, resolveCrossWindowOrigin } from './utils/cross-window-origin';\nimport { getFrameElement, isElementOrShadowRoot, isHtmlElement, isShadowRoot } from './utils/dom-realm';\nimport {\n HermesPopoverPosition,\n HermesPopoverType,\n getConnectedPositions,\n mapPopoverKeyToPosition,\n} from './utils/popover-positions';\n\n/** @dynamic */\n@Directive({\n selector: '[hermesPopoverContent]',\n})\nexport class HermesPopoverContent implements OnDestroy, AfterViewInit {\n private _outsideClickClose = true;\n private _scrollToClose = false;\n private view: EmbeddedViewRef<void>;\n private elementRef: ElementRef;\n private overlayRef: OverlayRef;\n private popoverType: HermesPopoverType = HermesPopoverType.DEFAULT;\n private _availablePositions: ConnectedPosition[] = [];\n private _position = HermesPopoverPosition.BOTTOM_LEFT;\n\n private subscriptions: Subscription[] = [];\n private openCloseSubscription: Subscription;\n private domPortal: DomPortal;\n private preferredPositionIsSet = false;\n private availablePositionsAreSet = false;\n private _preferredPosition: ConnectedPosition = {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n panelClass: HermesPopoverPosition.LEFT_TOP,\n };\n private intersectionObserver: IntersectionObserver;\n\n constructor(\n element: ElementRef,\n private container: ViewContainerRef,\n @Optional() private template: TemplateRef<any>,\n overlayContainer: OverlayContainer,\n\n @Optional() @SkipSelf() private parent: HermesPopoverContent,\n private overlay: Overlay,\n @Inject(HermesPopoverService) private popoverService: HermesPopoverService,\n private zone: NgZone,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n popoverService.panelClass.push('hermes-popover-content');\n\n overlayContainer.getContainerElement().classList.add('hermes-overlay-container');\n\n if (!template) {\n this.elementRef = element;\n }\n }\n\n @Input('hermesPopoverContent')\n set open(value: boolean) {\n this.popoverService.open = !!value;\n }\n\n @Input('hermesPopoverContentAt')\n get contentAt(): string | HermesPopoverPosition | ConnectedPosition {\n return this.preferredPositionIsSet ? this._preferredPosition : this._position;\n }\n set contentAt(position: string | HermesPopoverPosition | ConnectedPosition) {\n if (typeof position === 'string') {\n if (!position || Object.values(HermesPopoverPosition).indexOf(position as HermesPopoverPosition) === -1) {\n return;\n }\n\n // set the popover values based on menu position\n this._position = position as HermesPopoverPosition;\n this.popoverService.positionChange(this._position);\n } else {\n this.preferredPositionIsSet = true;\n this._preferredPosition = position;\n }\n }\n\n @Input('hermesPopoverContentAvailablePositions')\n set availablePositions(positions: ConnectedPosition[]) {\n this.availablePositionsAreSet = true;\n\n this._availablePositions = positions;\n }\n\n @Input('hermesPopoverContentType')\n set contentType(type: HermesPopoverType) {\n this.popoverType = type;\n\n if (!this.availablePositionsAreSet) {\n this._availablePositions = getConnectedPositions(type);\n }\n }\n\n @Input('hermesPopoverContentOutsideClickToClose')\n get outsideClickClose() {\n return this._outsideClickClose;\n }\n set outsideClickClose(clickToClose: boolean) {\n this._outsideClickClose = !!clickToClose;\n }\n\n @Input('hermesPopoverContentScrollToClose')\n get scrollToClose() {\n return this._scrollToClose;\n }\n set scrollToClose(scrollToClose: boolean) {\n this._scrollToClose = !!scrollToClose;\n }\n\n @Input('hermesPopoverContentOrigin')\n set contentOrigin(origin: FlexibleConnectedPositionStrategyOrigin) {\n // `instanceof Element` is realm-sensitive and misses a raw element belonging to\n // another window, so a consumer passing one here would bypass the ElementRef wrap\n // resolveCrossWindowOrigin() relies on to detect a cross-window origin.\n if ((origin as Node)?.nodeType === Node.ELEMENT_NODE) {\n this.popoverService.origin = new ElementRef(origin as HTMLElement);\n } else {\n this.popoverService.origin = origin;\n }\n }\n\n private get positionStrategy() {\n const origin = resolveCrossWindowOrigin(this.popoverService.origin);\n\n return this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .setOrigin(origin)\n .withPush(true)\n .withPositions([this.preferredPosition, ...this._availablePositions])\n .withFlexibleDimensions(true);\n }\n\n private get preferredPosition(): ConnectedPosition {\n if (this.preferredPositionIsSet) {\n return this._preferredPosition;\n }\n\n // Default position is \"bottom-left\"\n return mapPopoverKeyToPosition(this._position, this.popoverType);\n }\n\n ngAfterViewInit() {\n if (this.popoverService.open) {\n this.showOverlay();\n }\n\n this.openCloseSubscription = this.popoverService.openChange.subscribe(change => {\n if (change) {\n this.showOverlay();\n } else {\n this.closePopover();\n }\n });\n }\n\n ngOnDestroy() {\n this.removeOverlay();\n this.openCloseSubscription?.unsubscribe();\n }\n\n private _createOverlayRef() {\n this.overlayRef = this.overlay.create(\n new OverlayConfig({\n // This is where we can pass externally facing inputs into the angular overlay API, and essentially proxy behaviors our users want directly to the CDK if they have them.\n positionStrategy: this.positionStrategy,\n // the scrolling behaviour is controlled by this popover content directive\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n panelClass: this.popoverService.panelClass,\n hasBackdrop: false,\n })\n );\n\n this.subscriptions.push(\n merge(this.popoverService.resetPositionsChange, this.popoverService.getPositionChange()).subscribe(() => {\n this.resetPosition();\n }),\n this.popoverService.updatePositionChange().subscribe(() => {\n this.overlayRef?.updatePosition();\n }),\n this.createEscapeSubscription(),\n\n this.popoverService.originPoint\n ? this.createPointBasedOutsideClickSubscription()\n : this.createElementBasedOutsideClickSubscription()\n );\n }\n\n /**\n * Point-based origins (context menus) delay the subscription to avoid the\n * mouseup from the same right-click that opened the popover.\n */\n private createPointBasedOutsideClickSubscription(): Subscription {\n const subscription = timer(500)\n .pipe(switchMap(() => this.overlayRef.outsidePointerEvents()))\n .subscribe(event => this.handlePointOutsideClick(event));\n\n const crossWindowSubscription = this.createCrossWindowPointOutsideClickSubscription();\n if (crossWindowSubscription) {\n subscription.add(crossWindowSubscription);\n }\n\n return subscription;\n }\n\n private handlePointOutsideClick(event: Event): void {\n if (this.elementRef?.nativeElement?.contains(event.target as Node)) {\n return;\n }\n\n if (this._outsideClickClose) {\n this.closePopover();\n }\n }\n\n /**\n * Mirrors createCrossWindowOutsideClickSubscription for point-based origins (context\n * menus): pointTargetElement - the element the point was derived from, e.g. the\n * right-clicked element - can itself live inside a foreign iframe document, and CDK's\n * outsidePointerEvents() only listens on this window's document, so a click elsewhere\n * in that foreign document would otherwise never dismiss the menu. Delayed by the same\n * 500ms as the same-window stream, for the same reason: avoid the click that opened the\n * menu immediately closing it again.\n */\n private createCrossWindowPointOutsideClickSubscription(): Subscription | null {\n const pointTargetElement = this.popoverService.pointTargetElement;\n const crossWindowOrigin = pointTargetElement ? getCrossWindowOriginContext(pointTargetElement) : null;\n\n if (!crossWindowOrigin) {\n return null;\n }\n\n const originWindow = crossWindowOrigin.elementWindow;\n\n return timer(500)\n .pipe(\n switchMap(() =>\n this.zone.runOutsideAngular(() =>\n merge(\n fromEvent(originWindow.document, 'click', { capture: true }),\n fromEvent(originWindow.document, 'auxclick', { capture: true })\n )\n )\n )\n )\n .subscribe(event => this.zone.run(() => this.handlePointOutsideClick(event)));\n }\n\n /**\n * Element-based origins close on outside clicks and suppress toggle-button\n * re-clicks so the popover doesn't immediately reopen.\n */\n private createElementBasedOutsideClickSubscription(): Subscription {\n const subscription = this.overlayRef.outsidePointerEvents().subscribe(event => this.handleOutsideClick(event));\n\n const crossWindowSubscription = this.createCrossWindowOutsideClickSubscription();\n if (crossWindowSubscription) {\n subscription.add(crossWindowSubscription);\n }\n\n return subscription;\n }\n\n private handleOutsideClick(event: Event): void {\n // The very click that opened this popover must never be treated as an outside click.\n // CDK's OverlayOutsideClickDispatcher listens in the capture phase on this window's\n // document.body, so it normally runs *before* the trigger's own click handler has\n // attached the overlay, and the opening click is therefore never delivered here.\n // That ordering does not hold everywhere: when the trigger lives in a ShadowRoot\n // owned by a separately bootstrapped Angular application (an ESM micro-frontend\n // plugin with its own CDK instance), the overlay can already be attached by the time\n // the dispatcher sees the click, which delivers the opening click straight back as an\n // \"outside\" click and tears the popover down microseconds after it opened.\n // Comparing against the stored open event is exact - CDK re-emits the same Event\n // object - and it leaves toggle-to-close untouched, since a later click on the\n // trigger is always a different Event instance.\n if (event === this.popoverService.openEvent) {\n return;\n }\n\n // web components (hermes-icon) register as outside pointer events, so if the event target is inside the content panel return early\n if (this.elementRef?.nativeElement?.contains(event.target as Node)) {\n return;\n }\n\n // Check if the same element that opened the popover is the same element triggering the outside pointer events (toggle button)\n // openEvent.target can itself be null (e.g. the original toggle button was removed\n // from the DOM before this handler runs), so every access below is optional - an\n // unguarded `.contains()` call here throws and aborts the whole handler, which is\n // exactly what stops closePopover() from ever running.\n const openEventTarget = this.popoverService.openEvent?.target as Element | undefined;\n const isToggleButton =\n !!openEventTarget &&\n (openEventTarget.contains(event.target as Element) ||\n openEventTarget.parentElement?.contains(event.target as Element) ||\n openEventTarget === event.target);\n\n if (isToggleButton) {\n event.stopPropagation();\n }\n\n if (this._outsideClickClose || isToggleButton) {\n this.closePopover();\n }\n }\n\n /**\n * CDK's outsidePointerEvents() only listens on the document that owns the overlay\n * (this window's), so clicks inside a cross-window origin's own document (e.g. a\n * ShadowRoot hosted in an iframe) are invisible to it - see resolveCrossWindowOrigin\n * for the same cross-window scenario affecting positioning instead. Any pointer event\n * dispatched in that foreign document is guaranteed to be outside the overlay panel,\n * since the panel always renders in this window's document, so this only needs the\n * toggle-button exclusion handleOutsideClick already does, not the content-panel\n * containment check (which can never be true across documents).\n *\n * Listens on capture-phase click/auxclick, mirroring CDK's own OverlayOutsideClickDispatcher.\n * Capture phase matters: for a toggle re-click, this listener must run and\n * stopPropagation() BEFORE the trigger's own bubble-phase click handler\n * (HermesDropdownTrigger's toggleWithEvent) gets a chance to fire, otherwise the popover\n * closes here and immediately reopens there. A bubble-phase or pointerdown-based\n * listener can't suppress that handler at all, since pointerdown and click are separate\n * events and stopping one doesn't affect the other.\n *\n * The foreign document's own addEventListener isn't zone-patched (zone.js only patches\n * the window it's loaded into), so the listener is registered directly and the handler\n * is explicitly run back inside NgZone.\n */\n private createCrossWindowOutsideClickSubscription(): Subscription | null {\n // Same-window origins bail out here, so a popover that never crosses a window\n // boundary registers no extra listeners at all.\n const crossWindowOrigin = getCrossWindowOriginContext(this.popoverService.origin);\n\n if (!crossWindowOrigin) {\n return null;\n }\n\n const originWindow = crossWindowOrigin.elementWindow;\n\n return this.zone.runOutsideAngular(() =>\n merge(\n fromEvent(originWindow.document, 'click', { capture: true }),\n fromEvent(originWindow.document, 'auxclick', { capture: true })\n ).subscribe(event => this.zone.run(() => this.handleOutsideClick(event)))\n );\n }\n\n /**\n * CDK's OverlayKeyboardDispatcher (the source behind `overlayRef.keydownEvents()`)\n * attaches a single keydown listener on this window's document.body once, at app\n * bootstrap - see its `add()`/`_keydownListener`. A keydown fired while focus sits\n * inside a cross-window origin's own document (e.g. a ShadowRoot hosted in an iframe)\n * never bubbles there, since events don't cross document boundaries, so Escape silently\n * does nothing once the trigger (and focus) has moved into that foreign document. This\n * mirrors createCrossWindowOutsideClickSubscription's rationale for outside clicks -\n * merged into a single stream/handler here since both ultimately just detect Escape and\n * close.\n */\n private createEscapeSubscription(): Subscription {\n const crossWindowOrigin = getCrossWindowOriginContext(this.popoverService.origin);\n const keydownEvents = crossWindowOrigin\n ? merge(\n this.overlayRef.keydownEvents(),\n this.zone.runOutsideAngular(() =>\n fromEvent<KeyboardEvent>(crossWindowOrigin.elementWindow.document, 'keydown')\n )\n )\n : this.overlayRef.keydownEvents();\n\n return keydownEvents.subscribe(event => {\n if (isEscapeKey(event)) {\n this.zone.run(() => {\n event.preventDefault();\n this.closePopover();\n });\n }\n });\n }\n\n private resetPosition() {\n if (this.overlayRef) {\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\n this.overlayRef.updatePosition();\n }\n }\n\n private closePopover() {\n if (!this.overlayRef) {\n return;\n }\n\n this.removeOverlay();\n this.popoverService.popoverVisibleEmit(false);\n this.popoverService.open = false;\n\n if (this.popoverService.originElement) {\n const shouldFocusTrigger =\n this.popoverType !== HermesPopoverType.TOOLTIP &&\n (document.activeElement === document.body ||\n document.activeElement === this.popoverService.originElement.nativeElement);\n\n if (shouldFocusTrigger) {\n this.popoverService.focusOrigin();\n }\n }\n }\n\n private showOverlay() {\n if (!this.overlayRef) {\n this._createOverlayRef();\n }\n\n if (!this.view && this.template) {\n this.view = this.container.createEmbeddedView(this.template);\n\n if (!this.elementRef) {\n const [rootNode] = this.view.rootNodes;\n this.elementRef = new ElementRef(rootNode); // So we know where/what to set close focus on\n }\n }\n\n if (!this.domPortal) {\n this.domPortal = new DomPortal<HTMLElement>(this.elementRef);\n this.overlayRef.attach(this.domPortal);\n }\n\n if (this.popoverService.originElement) {\n this.popoverService.originElement.nativeElement.scrollIntoView({\n behavior: 'instant',\n block: 'nearest',\n inline: 'nearest',\n });\n\n this.setupIntersectionObserver();\n }\n\n setTimeout(() => {\n // Get Scrollable Parents\n this.listenToScrollEvents();\n\n this.popoverService.popoverVisibleEmit(true);\n\n if (this.elementRef?.nativeElement?.focus) {\n this.elementRef.nativeElement.focus();\n }\n });\n }\n\n private removeOverlay(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n this.subscriptions = [];\n\n if (this.overlayRef?.hasAttached()) {\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n\n if (this.domPortal?.isAttached) {\n this.domPortal.detach();\n }\n\n if (this.view) {\n this.view.destroy();\n }\n\n this.overlayRef = null;\n this.domPortal = null;\n if (this.template) {\n this.elementRef = null;\n }\n this.view = null;\n\n this.intersectionObserver?.disconnect();\n this.intersectionObserver = null;\n }\n\n /**\n * Walks ancestors looking for scrollable containers, following the node up through\n * ShadowRoots and, when the node's own ancestry crosses into an iframe (a different\n * window realm - e.g. a ShadowRoot hosted in a micro-frontend iframe), continuing the\n * walk into the parent window via window.frameElement, all the way up to the true\n * top-level document. Every embedded document passed through this way is added as its\n * own scrollable parent, so page-level scrolling inside an iframe is tracked too.\n *\n * `instanceof` checks are realm-sensitive (they fail for nodes created by a different\n * window's constructors), so this deliberately uses realm-independent shape checks\n * (nodeType, tagName, duck-typing ShadowRoot via `host`) instead, and always resolves\n * computed style through the node's own window rather than this one. This is what lets\n * the walk safely continue across a same-origin realm boundary instead of just\n * stopping at it.\n */\n private getScrollableParents(node: HTMLElement) {\n const overflowScrollKeys = ['auto', 'scroll', 'clip'];\n const scrollableParents: (Document | Element)[] = [window.document];\n\n let parent: Node | null = node;\n\n while (parent && isElementOrShadowRoot(parent)) {\n if (isShadowRoot(parent)) {\n parent = parent.host;\n continue;\n }\n\n const element = parent as Element;\n const elementWindow = element.ownerDocument?.defaultView;\n\n if (isHtmlElement(element)) {\n const frameElement = elementWindow && elementWindow !== window ? getFrameElement(elementWindow) : null;\n\n if (!frameElement) {\n break;\n }\n\n // Leaving this document for its parent window - track its own page-level scroll too.\n scrollableParents.push(element.ownerDocument);\n parent = frameElement;\n continue;\n }\n\n const { overflowY, overflowX } = (elementWindow ?? window).getComputedStyle(element);\n\n if (overflowScrollKeys.includes(overflowY) || overflowScrollKeys.includes(overflowX)) {\n scrollableParents.push(element);\n }\n\n parent = element.parentNode;\n }\n\n return scrollableParents;\n }\n\n /**\n * Uses IntersectionObserver to detect when the origin element leaves the screen.\n * This handles the \"Close on Scroll\" logic much cheaper than getBoundingClientRect.\n */\n private setupIntersectionObserver() {\n if (!this.popoverService.originElement || this.intersectionObserver) {\n return;\n }\n\n this.intersectionObserver = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n // If the origin is no longer visible (scrolled out of view)\n if (!entry.isIntersecting && this.popoverService.open) {\n this.zone.run(() => this.closePopover());\n }\n });\n },\n { root: null, threshold: 0.8 }\n );\n\n this.intersectionObserver.observe(this.popoverService.originElement.nativeElement);\n }\n\n private listenToScrollEvents() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n\n const originEl = this.popoverService.originPoint\n ? this.popoverService.pointTargetElement\n : this.getRootPopover(this)?.popoverService?.originElement?.nativeElement;\n\n this.listenToScrollForElementOrigin(originEl);\n }\n\n // Element origins track ancestor scroll containers to reposition or close.\n private listenToScrollForElementOrigin(originEl: HTMLElement) {\n const scrollableParents = this.getScrollableParents(originEl);\n\n this.zone.runOutsideAngular(() => {\n this.subscriptions.push(\n merge(...scrollableParents.map(parent => fromEvent(parent, 'scroll', { passive: true }))).subscribe(() => {\n if (this._scrollToClose) {\n this.zone.run(() => this.closePopover());\n return;\n }\n\n this.overlayRef?.updatePosition();\n })\n );\n });\n }\n\n private getRootPopover(popover: HermesPopoverContent): HermesPopoverContent {\n if (popover && popover.parent) {\n return this.getRootPopover(popover.parent);\n }\n\n return popover;\n }\n}\n\nfunction isEscapeKey(event: KeyboardEvent): boolean {\n return !!event && event.key === Keys.Escape && !hasModifierKey(event);\n}\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverOrigin]',\r\n host: {\r\n '[class.hermes-popover-origin]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverOrigin {\r\n constructor(popoverService: HermesPopoverService, element: ElementRef<HTMLButtonElement>) {\r\n popoverService.origin = element;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ElementRef, InjectionToken } from '@angular/core';\r\n\r\nexport const POPOVER_HOST_ORIGIN = new InjectionToken<ElementRef>('POPOVER_HOST_ORIGIN');\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class HermesStopEscapePropagationDirective implements OnInit, OnDestroy {\r\n private subscription: Subscription;\r\n private lastOpenChange: boolean | null = null;\r\n\r\n constructor(private popoverService: HermesPopoverService) {}\r\n\r\n ngOnInit() {\r\n this.subscription = this.popoverService.openChange.subscribe(open => {\r\n this.lastOpenChange = open;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup.escape', ['$event'])\r\n onEscapeKey(event: KeyboardEvent) {\r\n if (this.lastOpenChange !== null) {\r\n if (this.lastOpenChange === false) {\r\n event.stopPropagation();\r\n }\r\n\r\n this.lastOpenChange = null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { POPOVER_HOST_ORIGIN } from './popover-host-origin.token';\r\nimport { HermesPopoverService } from './providers/popover.service';\r\nimport { HermesStopEscapePropagationDirective } from './stop-escape-propagation.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n providers: [HermesPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }],\r\n hostDirectives: [HermesStopEscapePropagationDirective],\r\n})\r\nexport class HermesPopoverHostDirective {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n/**********\r\n *\r\n * @class HermesIfOpen\r\n *\r\n * @description\r\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\r\n * It makes use of a Component instance level service: HermesPopoverService to maintain state between itself and the component\r\n * using it in the component template.\r\n *\r\n */\r\n@Directive({\r\n selector: '[hermesIfOpen]',\r\n})\r\nexport class HermesIfOpen implements OnDestroy {\r\n static ngAcceptInputType_open: boolean | '';\r\n\r\n /**********\r\n * @property openChange\r\n *\r\n * @description\r\n * An event emitter that emits when the open property is set to allow for 2way binding when the directive is\r\n * used with de-structured / de-sugared syntax.\r\n */\r\n @Output('hermesIfOpenChange') openChange = new EventEmitter<boolean>(false);\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private popoverService: HermesPopoverService,\r\n private template: TemplateRef<any>,\r\n private container: ViewContainerRef\r\n ) {\r\n this.subscriptions.push(\r\n popoverService.openChange.subscribe(change => {\r\n // OPEN before overlay is built\r\n if (change) {\r\n container.createEmbeddedView(template);\r\n this.openChange.emit(change);\r\n }\r\n }),\r\n popoverService.popoverVisible.subscribe(change => {\r\n // CLOSE after overlay is destroyed\r\n if (!change) {\r\n container.clear();\r\n this.openChange.emit(change);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * @description\r\n * A property that gets/sets HermesPopoverService.open with value.\r\n */\r\n @Input('hermesIfOpen')\r\n get open() {\r\n return this.popoverService.open;\r\n }\r\n set open(value: boolean | string) {\r\n this.popoverService.open = value as boolean;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * @description\r\n * Function that takes a boolean value and either created an embedded view for the associated ViewContainerRef or,\r\n * Clears all views from the ViewContainerRef\r\n *\r\n * @param value\r\n */\r\n updateView(value: boolean) {\r\n if (value) {\r\n this.container.createEmbeddedView(this.template);\r\n } else {\r\n this.container.clear();\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverCloseButton]',\r\n host: {\r\n '[class.hermes-smart-close-button]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverCloseButton implements OnDestroy, AfterViewInit {\r\n @Output('hermesPopoverOnCloseChange') closeChange = new EventEmitter<void>();\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLButtonElement>,\r\n private popoverService: HermesPopoverService\r\n ) {\r\n this.subscriptions.push(\r\n popoverService.openChange.pipe(filter(value => !value)).subscribe(() => {\r\n this.closeChange.emit();\r\n })\r\n );\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClick(event: MouseEvent) {\r\n this.popoverService.toggleWithEvent(event);\r\n this.popoverService.focusOrigin();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.popoverService.closeButtonRef = this.elementRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverOpenCloseButton]',\r\n host: {\r\n '[class.hermes-smart-open-close]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverOpenCloseButton implements OnDestroy {\r\n @Output('hermesPopoverOpenCloseChange') openCloseChange = new EventEmitter<boolean>();\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(private popoverService: HermesPopoverService) {\r\n this.subscriptions.push(\r\n popoverService.openChange.subscribe(change => {\r\n this.openCloseChange.emit(change);\r\n })\r\n );\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClick(event: MouseEvent) {\r\n this.popoverService.toggleWithEvent(event);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { HermesIfOpen } from './if-open.directive';\r\nimport { HermesPopoverCloseButton } from './popover-close-button';\r\nimport { HermesPopoverContent } from './popover-content';\r\nimport { HermesPopoverOpenCloseButton } from './popover-open-close-button';\r\nimport { HermesPopoverOrigin } from './popover-origin';\r\n\r\n@NgModule({\r\n imports: [HermesPopoverContent, HermesIfOpen],\r\n declarations: [HermesPopoverOrigin, HermesPopoverCloseButton, HermesPopoverOpenCloseButton],\r\n exports: [HermesPopoverOrigin, HermesPopoverCloseButton, HermesPopoverOpenCloseButton, HermesPopoverContent, HermesIfOpen],\r\n})\r\nexport class HermesPopoverModuleNext {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport * from './popover-content';\r\nexport * from './providers/popover.service';\r\nexport * from './popover-origin';\r\nexport * from './popover-host.directive';\r\nexport * from './stop-escape-propagation.directive';\r\nexport * from './popover-host-origin.token';\r\nexport * from './if-open.directive';\r\nexport * from './utils/popover-positions';\r\n\r\nexport { HermesPopoverModuleNext } from './popover.module';\r\nexport { HermesPopoverCloseButton } from './popover-close-button';\r\nexport { HermesPopoverOpenCloseButton } from './popover-open-close-button';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HermesPopoverService","i1.HermesStopEscapePropagationDirective"],"mappings":"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"}
1
+ {"version":3,"file":"hermes-ui-angular-popover-common.mjs","sources":["../../../popover/common/providers/popover.service.ts","../../../popover/common/utils/dom-realm.ts","../../../popover/common/utils/cross-window-origin.ts","../../../popover/common/utils/popover-positions.ts","../../../popover/common/popover-content.ts","../../../popover/common/popover-origin.ts","../../../popover/common/popover-host-origin.token.ts","../../../popover/common/stop-escape-propagation.directive.ts","../../../popover/common/popover-host.directive.ts","../../../popover/common/if-open.directive.ts","../../../popover/common/popover-close-button.ts","../../../popover/common/popover-open-close-button.ts","../../../popover/common/popover.module.ts","../../../popover/common/index.ts","../../../popover/common/hermes-ui-angular-popover-common.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';\r\nimport { ElementRef, Injectable } from '@angular/core';\r\nimport { preventArrowKeyScroll } from '@hermes-ui/angular/utils';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nimport { HermesPopoverPosition } from '../utils/popover-positions';\r\n\r\nexport interface HermesPopoverPoint {\r\n x: number;\r\n y: number;\r\n}\r\n\r\n@Injectable()\r\nexport class HermesPopoverService {\r\n pointTargetElement: HTMLElement | undefined;\r\n origin: FlexibleConnectedPositionStrategyOrigin;\r\n closeButtonRef: ElementRef;\r\n panelClass: string[] = [];\r\n\r\n private _open = false;\r\n private _openChange = new Subject<boolean>();\r\n private _openEvent: Event;\r\n private _openEventChange = new Subject<Event>();\r\n private _positionChange = new Subject<string>();\r\n private _resetPositions = new Subject<void>();\r\n private _updatePosition = new Subject<void>();\r\n private _popoverVisible = new Subject<boolean>();\r\n\r\n get originElement(): ElementRef<HTMLElement> | null {\r\n return this.origin instanceof ElementRef ? this.origin : null;\r\n }\r\n\r\n get originPoint(): HermesPopoverPoint | null {\r\n return this.origin && 'x' in this.origin && 'y' in this.origin ? (this.origin as HermesPopoverPoint) : null;\r\n }\r\n\r\n get openChange(): Observable<boolean> {\r\n return this._openChange.asObservable();\r\n }\r\n\r\n get popoverVisible(): Observable<boolean> {\r\n return this._popoverVisible.asObservable();\r\n }\r\n\r\n get openEvent(): Event {\r\n return this._openEvent;\r\n }\r\n set openEvent(event: Event) {\r\n this._openEvent = event;\r\n this._openEventChange.next(event);\r\n }\r\n\r\n get open(): boolean {\r\n return this._open;\r\n }\r\n set open(value: boolean) {\r\n value = !!value;\r\n if (this._open !== value) {\r\n this._open = value;\r\n this._openChange.next(value);\r\n }\r\n }\r\n\r\n get resetPositionsChange(): Observable<void> {\r\n return this._resetPositions.asObservable();\r\n }\r\n\r\n positionChange(position: HermesPopoverPosition) {\r\n this._positionChange.next(position);\r\n }\r\n\r\n updatePositionChange(): Observable<void> {\r\n return this._updatePosition.asObservable();\r\n }\r\n\r\n getPositionChange(): Observable<string> {\r\n return this._positionChange.asObservable();\r\n }\r\n\r\n getEventChange(): Observable<Event> {\r\n return this._openEventChange.asObservable();\r\n }\r\n\r\n /**\r\n * Sometimes, we need to remember the event that triggered the toggling to avoid loops.\r\n * This is for instance the case of components that open on a click, but close on a click outside.\r\n */\r\n toggleWithEvent(event: any) {\r\n preventArrowKeyScroll(event);\r\n\r\n this.openEvent = event;\r\n this.open = !this.open;\r\n }\r\n\r\n /**\r\n * Opens the popover at a specific screen coordinate.\r\n * Useful for context menus where the popover should appear at the cursor position.\r\n */\r\n openAtPoint(point: HermesPopoverPoint, targetElement?: HTMLElement) {\r\n if (this._open) {\r\n this._open = false;\r\n this._openChange.next(false);\r\n }\r\n\r\n this.origin = point;\r\n this.pointTargetElement = targetElement;\r\n this.open = true;\r\n }\r\n\r\n popoverVisibleEmit(visible: boolean) {\r\n this._popoverVisible.next(visible);\r\n }\r\n\r\n resetPositions() {\r\n this._resetPositions.next();\r\n }\r\n\r\n updatePosition() {\r\n this._updatePosition.next();\r\n }\r\n\r\n focusCloseButton(): void {\r\n this.closeButtonRef.nativeElement?.focus();\r\n }\r\n\r\n focusOrigin(): void {\r\n this.originElement?.nativeElement?.focus({ preventScroll: true });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\n// Realm-independent shape checks for getScrollableParents(): `instanceof` fails for\r\n// nodes created by a different window's constructors (e.g. an iframe's own Element,\r\n// ShadowRoot, or HTMLHtmlElement classes), so these duck-type via nodeType/tagName\r\n// instead, which works the same regardless of which window created the node.\r\n\r\nexport function isElementOrShadowRoot(node: Node): boolean {\r\n return node.nodeType === Node.ELEMENT_NODE || isShadowRoot(node);\r\n}\r\n\r\nexport function isShadowRoot(node: Node): node is ShadowRoot {\r\n return node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && 'host' in node;\r\n}\r\n\r\nexport function isHtmlElement(node: Node): boolean {\r\n return node.nodeType === Node.ELEMENT_NODE && (node as Element).tagName === 'HTML';\r\n}\r\n\r\n// Same-origin-safe: returns null (rather than throwing) if `frameElement` can't be\r\n// read, which happens when `win` is embedded in a cross-origin parent window.\r\nexport function getFrameElement(win: Window): Element | null {\r\n try {\r\n return win.frameElement;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { FlexibleConnectedPositionStrategyOrigin } from '@angular/cdk/overlay';\r\nimport { ElementRef } from '@angular/core';\r\n\r\nimport { getFrameElement } from './dom-realm';\r\n\r\n/**\r\n * Resolves an origin to its element and owning window, but only when that window differs\r\n * from this one - i.e. the origin lives inside an iframe. Returns null for same-window\r\n * origins and for non-element (point) origins, so a single check lets callers skip all\r\n * cross-window handling for the overwhelming majority of popovers.\r\n *\r\n * Cheap: a few property reads, no layout access.\r\n */\r\nexport function getCrossWindowOriginContext(\r\n origin: FlexibleConnectedPositionStrategyOrigin\r\n): { element: Element; elementWindow: Window } | null {\r\n const element = getOriginElement(origin);\r\n const elementWindow = element?.ownerDocument?.defaultView;\r\n\r\n return element && elementWindow && elementWindow !== window ? { element, elementWindow } : null;\r\n}\r\n\r\n/**\r\n * CDK's FlexibleConnectedPositionStrategy anchors the overlay by reading\r\n * origin.getBoundingClientRect() (for an Element/ElementRef origin) directly off the\r\n * origin, relative to the origin's own window. That only matches the overlay panel's\r\n * window (always the one this code runs in) when the origin lives in the same document.\r\n * When the origin sits inside an iframe (e.g. a micro-frontend mounting its trigger in a\r\n * nested document, possibly combined with a ShadowRoot), the raw rect is relative to the\r\n * wrong viewport and the overlay is mispositioned.\r\n *\r\n * If the origin is same-window (or not an Element/ElementRef at all), this returns it\r\n * unchanged. Otherwise it returns a Point-based origin (the other shape\r\n * FlexibleConnectedPositionStrategy natively supports) whose x/y/width/height are live\r\n * getters that recompute the element's rect plus the cumulative offset of every ancestor\r\n * iframe between the origin's window and this one, so the overlay still anchors\r\n * correctly across repositions (scroll, resize). This has no effect on anything besides\r\n * overlay positioning math - it never replaces the origin ElementRef consumers rely on\r\n * elsewhere (e.g. scroll listeners), since it only wraps a local copy used for\r\n * positioning.\r\n *\r\n * If the ancestor iframe chain can't be safely resolved (e.g. a cross-origin frame\r\n * boundary this code can't introspect), the getters fall back to the element's own\r\n * un-translated rect - the exact numbers CDK would compute if given the raw\r\n * Element/ElementRef directly, so behavior for that case is unchanged.\r\n */\r\nexport function resolveCrossWindowOrigin(\r\n origin: FlexibleConnectedPositionStrategyOrigin\r\n): FlexibleConnectedPositionStrategyOrigin {\r\n const crossWindowOrigin = getCrossWindowOriginContext(origin);\r\n\r\n // Same-window origins (and point origins) are handed back untouched - no wrapping, no\r\n // translation, no behavior change from a popover that never crosses a window boundary.\r\n if (!crossWindowOrigin) {\r\n return origin;\r\n }\r\n\r\n const { element, elementWindow } = crossWindowOrigin;\r\n\r\n let cached: { x: number; y: number; width: number; height: number } | null = null;\r\n\r\n // CDK's position strategy reads x/y/width/height several times per apply() (it builds\r\n // a rect from a Point origin as {top: y, bottom: y + height, left: x, right: x + width}).\r\n // Memoizing per microtask collapses that into a single rect/offset computation instead\r\n // of one forced layout read per property access, while still recomputing fresh on the\r\n // next reposition (scroll, resize), since the cache clears before the next microtask.\r\n const read = () => {\r\n if (!cached) {\r\n const rect = element.getBoundingClientRect();\r\n const offset = getCumulativeFrameOffset(elementWindow) ?? { x: 0, y: 0 };\r\n cached = { x: rect.left + offset.x, y: rect.top + offset.y, width: rect.width, height: rect.height };\r\n queueMicrotask(() => (cached = null));\r\n }\r\n\r\n return cached;\r\n };\r\n\r\n return {\r\n get x(): number {\r\n return read().x;\r\n },\r\n get y(): number {\r\n return read().y;\r\n },\r\n get width(): number {\r\n return read().width;\r\n },\r\n get height(): number {\r\n return read().height;\r\n },\r\n };\r\n}\r\n\r\nfunction getOriginElement(origin: FlexibleConnectedPositionStrategyOrigin): Element | null {\r\n if (origin instanceof ElementRef) {\r\n return origin.nativeElement;\r\n }\r\n\r\n // `instanceof Element` is realm-sensitive and misses raw elements belonging to\r\n // another window - exactly the population this util targets - so duck-type instead.\r\n if ((origin as Node)?.nodeType === Node.ELEMENT_NODE) {\r\n return origin as Element;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Walks the chain of window.frameElement references from `originWindow` up to this\r\n * code's own window, summing each ancestor iframe's position. Returns null if the\r\n * chain can't be fully resolved (cross-origin boundary, or `originWindow` isn't\r\n * actually embedded within this window).\r\n */\r\nfunction getCumulativeFrameOffset(originWindow: Window): { x: number; y: number } | null {\r\n let offsetX = 0;\r\n let offsetY = 0;\r\n let currentWindow: Window | null = originWindow;\r\n\r\n while (currentWindow && currentWindow !== window) {\r\n const frameElement = getFrameElement(currentWindow);\r\n\r\n if (!frameElement) {\r\n return null;\r\n }\r\n\r\n const frameRect = frameElement.getBoundingClientRect();\r\n // clientLeft/clientTop only cover the frame's border, not any CSS padding, which\r\n // would otherwise skew the anchor - read computed style through the frame's own\r\n // window for realm-safety.\r\n const frameWindow = frameElement.ownerDocument?.defaultView ?? window;\r\n const { borderLeftWidth, borderTopWidth, paddingLeft, paddingTop } = frameWindow.getComputedStyle(frameElement);\r\n offsetX += frameRect.left + (parseFloat(borderLeftWidth) || 0) + (parseFloat(paddingLeft) || 0);\r\n offsetY += frameRect.top + (parseFloat(borderTopWidth) || 0) + (parseFloat(paddingTop) || 0);\r\n currentWindow = frameElement.ownerDocument?.defaultView ?? null;\r\n }\r\n\r\n return currentWindow === window ? { x: offsetX, y: offsetY } : null;\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { HermesPosition } from '@hermes-ui/angular/utils';\r\n\r\nexport enum HermesPopoverType {\r\n SIGNPOST,\r\n TOOLTIP,\r\n DROPDOWN,\r\n DEFAULT,\r\n}\r\n\r\nexport enum HermesPopoverPosition {\r\n TOP_RIGHT = 'top-right',\r\n TOP_MIDDLE = 'top-middle',\r\n TOP_LEFT = 'top-left',\r\n RIGHT = 'right',\r\n RIGHT_TOP = 'right-top',\r\n RIGHT_MIDDLE = 'right-middle',\r\n RIGHT_BOTTOM = 'right-bottom',\r\n LEFT = 'left',\r\n LEFT_TOP = 'left-top',\r\n LEFT_MIDDLE = 'left-middle',\r\n LEFT_BOTTOM = 'left-bottom',\r\n BOTTOM_RIGHT = 'bottom-right',\r\n BOTTOM_MIDDLE = 'bottom-middle',\r\n BOTTOM_LEFT = 'bottom-left',\r\n}\r\n\r\nexport const TOOLTIP_POSITIONS: HermesPopoverPosition[] = [\r\n HermesPopoverPosition.RIGHT, // default. must be at index 0\r\n HermesPopoverPosition.LEFT,\r\n HermesPopoverPosition.BOTTOM_RIGHT,\r\n HermesPopoverPosition.BOTTOM_LEFT,\r\n HermesPopoverPosition.TOP_RIGHT,\r\n HermesPopoverPosition.TOP_LEFT,\r\n];\r\n\r\nexport const DROPDOWN_POSITIONS: HermesPopoverPosition[] = [\r\n HermesPopoverPosition.BOTTOM_LEFT, // default. must be at index 0\r\n HermesPopoverPosition.BOTTOM_RIGHT,\r\n HermesPopoverPosition.TOP_LEFT,\r\n HermesPopoverPosition.TOP_RIGHT,\r\n HermesPopoverPosition.RIGHT_TOP,\r\n HermesPopoverPosition.RIGHT_BOTTOM,\r\n HermesPopoverPosition.LEFT_TOP,\r\n HermesPopoverPosition.LEFT_BOTTOM,\r\n];\r\n\r\nexport const SIGNPOST_POSITIONS: HermesPopoverPosition[] = [\r\n HermesPopoverPosition.RIGHT_MIDDLE, // default. must be at index 0\r\n HermesPopoverPosition.RIGHT_TOP,\r\n HermesPopoverPosition.RIGHT_BOTTOM,\r\n HermesPopoverPosition.TOP_RIGHT,\r\n HermesPopoverPosition.TOP_LEFT,\r\n HermesPopoverPosition.TOP_MIDDLE,\r\n HermesPopoverPosition.BOTTOM_RIGHT,\r\n HermesPopoverPosition.BOTTOM_MIDDLE,\r\n HermesPopoverPosition.BOTTOM_LEFT,\r\n HermesPopoverPosition.LEFT_BOTTOM,\r\n HermesPopoverPosition.LEFT_MIDDLE,\r\n HermesPopoverPosition.LEFT_TOP,\r\n];\r\n\r\nexport function getPositionsArray(type: HermesPopoverType) {\r\n switch (type) {\r\n case HermesPopoverType.TOOLTIP:\r\n return TOOLTIP_POSITIONS;\r\n case HermesPopoverType.DROPDOWN:\r\n return DROPDOWN_POSITIONS;\r\n case HermesPopoverType.SIGNPOST:\r\n case HermesPopoverType.DEFAULT:\r\n default:\r\n return SIGNPOST_POSITIONS;\r\n }\r\n}\r\n\r\nexport function getConnectedPositions(type: HermesPopoverType): ConnectedPosition[] {\r\n const result: ConnectedPosition[] = [];\r\n\r\n getPositionsArray(type).forEach(position => {\r\n result.push(mapPopoverKeyToPosition(position, type));\r\n });\r\n\r\n return result;\r\n}\r\n\r\nconst POPOVER_OFFSETS: Record<HermesPopoverType, number> = {\r\n [HermesPopoverType.SIGNPOST]: 16,\r\n [HermesPopoverType.TOOLTIP]: 21,\r\n [HermesPopoverType.DROPDOWN]: 2,\r\n [HermesPopoverType.DEFAULT]: 0,\r\n};\r\n\r\nfunction getOffset(key: HermesPopoverPosition, type: HermesPopoverType): Partial<ConnectedPosition> {\r\n const offset = POPOVER_OFFSETS[type] || 0;\r\n\r\n switch (key) {\r\n // TOP\r\n case HermesPopoverPosition.TOP_LEFT:\r\n case HermesPopoverPosition.TOP_MIDDLE:\r\n case HermesPopoverPosition.TOP_RIGHT:\r\n return {\r\n offsetY: -offset,\r\n offsetX: 0,\r\n } as ConnectedPosition;\r\n\r\n // LEFT\r\n case HermesPopoverPosition.LEFT_TOP:\r\n case HermesPopoverPosition.LEFT_MIDDLE:\r\n case HermesPopoverPosition.LEFT:\r\n case HermesPopoverPosition.LEFT_BOTTOM:\r\n return {\r\n offsetY: 0,\r\n offsetX: -offset,\r\n } as ConnectedPosition;\r\n\r\n // RIGHT\r\n case HermesPopoverPosition.RIGHT_TOP:\r\n case HermesPopoverPosition.RIGHT_MIDDLE:\r\n case HermesPopoverPosition.RIGHT:\r\n case HermesPopoverPosition.RIGHT_BOTTOM:\r\n return {\r\n offsetY: 0,\r\n offsetX: offset,\r\n } as ConnectedPosition;\r\n\r\n // BOTTOM and DEFAULT\r\n case HermesPopoverPosition.BOTTOM_RIGHT:\r\n case HermesPopoverPosition.BOTTOM_MIDDLE:\r\n case HermesPopoverPosition.BOTTOM_LEFT:\r\n default:\r\n return {\r\n offsetY: offset,\r\n offsetX: 0,\r\n } as ConnectedPosition;\r\n }\r\n}\r\n\r\nconst STANDARD_ORIGINS = {\r\n // TOP\r\n [HermesPopoverPosition.TOP_RIGHT]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_LEFT },\r\n [HermesPopoverPosition.TOP_MIDDLE]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_CENTER },\r\n [HermesPopoverPosition.TOP_LEFT]: { origin: HermesPosition.TOP_CENTER, content: HermesPosition.BOTTOM_RIGHT },\r\n\r\n // LEFT\r\n [HermesPopoverPosition.LEFT]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_TOP },\r\n [HermesPopoverPosition.LEFT_TOP]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_BOTTOM },\r\n [HermesPopoverPosition.LEFT_MIDDLE]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_CENTER },\r\n [HermesPopoverPosition.LEFT_BOTTOM]: { origin: HermesPosition.LEFT_CENTER, content: HermesPosition.RIGHT_TOP },\r\n\r\n // RIGHT\r\n [HermesPopoverPosition.RIGHT]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_TOP },\r\n [HermesPopoverPosition.RIGHT_TOP]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_BOTTOM },\r\n [HermesPopoverPosition.RIGHT_MIDDLE]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_CENTER },\r\n [HermesPopoverPosition.RIGHT_BOTTOM]: { origin: HermesPosition.RIGHT_CENTER, content: HermesPosition.LEFT_TOP },\r\n\r\n // BOTTOM\r\n [HermesPopoverPosition.BOTTOM_RIGHT]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_LEFT },\r\n [HermesPopoverPosition.BOTTOM_MIDDLE]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_CENTER },\r\n [HermesPopoverPosition.BOTTOM_LEFT]: { origin: HermesPosition.BOTTOM_CENTER, content: HermesPosition.TOP_RIGHT },\r\n};\r\n\r\nconst DROPDOWN_ORIGINS = {\r\n // TOP\r\n [HermesPopoverPosition.TOP_RIGHT]: { origin: HermesPosition.TOP_RIGHT, content: HermesPosition.BOTTOM_RIGHT },\r\n [HermesPopoverPosition.TOP_LEFT]: { origin: HermesPosition.TOP_LEFT, content: HermesPosition.BOTTOM_LEFT },\r\n\r\n // LEFT\r\n [HermesPopoverPosition.LEFT_TOP]: { origin: HermesPosition.LEFT_TOP, content: HermesPosition.TOP_RIGHT },\r\n [HermesPopoverPosition.LEFT_BOTTOM]: { origin: HermesPosition.LEFT_BOTTOM, content: HermesPosition.BOTTOM_RIGHT },\r\n\r\n // RIGHT\r\n [HermesPopoverPosition.RIGHT_TOP]: { origin: HermesPosition.RIGHT_TOP, content: HermesPosition.LEFT_TOP },\r\n [HermesPopoverPosition.RIGHT_BOTTOM]: { origin: HermesPosition.RIGHT_BOTTOM, content: HermesPosition.LEFT_BOTTOM },\r\n\r\n // BOTTOM\r\n [HermesPopoverPosition.BOTTOM_RIGHT]: { origin: HermesPosition.BOTTOM_LEFT, content: HermesPosition.TOP_RIGHT },\r\n [HermesPopoverPosition.BOTTOM_LEFT]: { origin: HermesPosition.BOTTOM_RIGHT, content: HermesPosition.TOP_LEFT },\r\n};\r\n\r\nexport function mapPopoverKeyToPosition(key: HermesPopoverPosition, type: HermesPopoverType): ConnectedPosition {\r\n let offset = getOffset(key, type);\r\n\r\n const defaultPosition = { origin: HermesPosition.BOTTOM_LEFT, content: HermesPosition.TOP_LEFT };\r\n const { origin, content } =\r\n (type === HermesPopoverType.DROPDOWN ? DROPDOWN_ORIGINS[key] : STANDARD_ORIGINS[key]) ?? defaultPosition;\r\n\r\n return {\r\n ...getOriginPosition(origin),\r\n ...getContentPosition(content),\r\n ...offset,\r\n panelClass: key,\r\n } as ConnectedPosition;\r\n}\r\n\r\nexport function getOriginPosition(key: HermesPosition): Partial<ConnectedPosition> {\r\n switch (key) {\r\n // TOP Positions\r\n case HermesPosition.TOP_LEFT:\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n };\r\n case HermesPosition.TOP_CENTER:\r\n return {\r\n originX: 'center',\r\n originY: 'top',\r\n };\r\n case HermesPosition.TOP_RIGHT:\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n };\r\n // LEFT Positions\r\n case HermesPosition.LEFT_TOP:\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n };\r\n case HermesPosition.LEFT_CENTER:\r\n return {\r\n originX: 'start',\r\n originY: 'center',\r\n };\r\n case HermesPosition.LEFT_BOTTOM:\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n };\r\n // RIGHT Positions\r\n case HermesPosition.RIGHT_TOP:\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n };\r\n case HermesPosition.RIGHT_CENTER:\r\n return {\r\n originX: 'end',\r\n originY: 'center',\r\n };\r\n case HermesPosition.RIGHT_BOTTOM:\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n };\r\n // BOTTOM positions and default\r\n case HermesPosition.BOTTOM_LEFT:\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n };\r\n case HermesPosition.BOTTOM_CENTER:\r\n return {\r\n originX: 'center',\r\n originY: 'bottom',\r\n };\r\n case HermesPosition.BOTTOM_RIGHT:\r\n default:\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n };\r\n }\r\n}\r\n\r\nexport function getContentPosition(key: HermesPosition): Partial<ConnectedPosition> {\r\n switch (key) {\r\n // TOP Positions\r\n case HermesPosition.TOP_LEFT:\r\n return {\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n };\r\n case HermesPosition.TOP_CENTER:\r\n return {\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n };\r\n case HermesPosition.TOP_RIGHT:\r\n return {\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n };\r\n\r\n // LEFT Positions\r\n case HermesPosition.LEFT_TOP:\r\n return {\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n };\r\n case HermesPosition.LEFT_CENTER:\r\n return {\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n };\r\n case HermesPosition.LEFT_BOTTOM:\r\n return {\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n };\r\n\r\n // RIGHT Positions\r\n case HermesPosition.RIGHT_TOP:\r\n return {\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n };\r\n case HermesPosition.RIGHT_CENTER:\r\n return {\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n };\r\n case HermesPosition.RIGHT_BOTTOM:\r\n return {\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n };\r\n\r\n // BOTTOM positions and default\r\n case HermesPosition.BOTTOM_LEFT:\r\n return {\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n };\r\n case HermesPosition.BOTTOM_CENTER:\r\n return {\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n };\r\n case HermesPosition.BOTTOM_RIGHT:\r\n default:\r\n return {\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { hasModifierKey } from '@angular/cdk/keycodes';\r\nimport {\r\n ConnectedPosition,\r\n FlexibleConnectedPositionStrategyOrigin,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayContainer,\r\n OverlayRef,\r\n} from '@angular/cdk/overlay';\r\nimport { DomPortal } from '@angular/cdk/portal';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport {\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n Directive,\r\n ElementRef,\r\n EmbeddedViewRef,\r\n Inject,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n PLATFORM_ID,\r\n SkipSelf,\r\n TemplateRef,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { Keys } from '@hermes-ui/angular/utils';\r\nimport { fromEvent, merge, Subscription, switchMap, timer } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\nimport { getCrossWindowOriginContext, resolveCrossWindowOrigin } from './utils/cross-window-origin';\r\nimport { getFrameElement, isElementOrShadowRoot, isHtmlElement, isShadowRoot } from './utils/dom-realm';\r\nimport {\r\n HermesPopoverPosition,\r\n HermesPopoverType,\r\n getConnectedPositions,\r\n mapPopoverKeyToPosition,\r\n} from './utils/popover-positions';\r\n\r\n/** @dynamic */\r\n@Directive({\r\n selector: '[hermesPopoverContent]',\r\n})\r\nexport class HermesPopoverContent implements OnDestroy, AfterViewInit {\r\n private _outsideClickClose = true;\r\n private _scrollToClose = false;\r\n private view: EmbeddedViewRef<void>;\r\n private elementRef: ElementRef;\r\n private overlayRef: OverlayRef;\r\n private popoverType: HermesPopoverType = HermesPopoverType.DEFAULT;\r\n private _availablePositions: ConnectedPosition[] = [];\r\n private _position = HermesPopoverPosition.BOTTOM_LEFT;\r\n\r\n private subscriptions: Subscription[] = [];\r\n private openCloseSubscription: Subscription;\r\n private domPortal: DomPortal;\r\n private preferredPositionIsSet = false;\r\n private availablePositionsAreSet = false;\r\n private _preferredPosition: ConnectedPosition = {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n panelClass: HermesPopoverPosition.LEFT_TOP,\r\n };\r\n private intersectionObserver: IntersectionObserver;\r\n\r\n constructor(\r\n element: ElementRef,\r\n private container: ViewContainerRef,\r\n @Optional() private template: TemplateRef<any>,\r\n overlayContainer: OverlayContainer,\r\n\r\n @Optional() @SkipSelf() private parent: HermesPopoverContent,\r\n private overlay: Overlay,\r\n @Inject(HermesPopoverService) private popoverService: HermesPopoverService,\r\n private zone: NgZone,\r\n @Inject(PLATFORM_ID) private platformId: any,\r\n // Host directive, so this resolves to the SAME change detector as whatever\r\n // component hosts it (HermesSelectContent, HermesDropdownMenu, etc).\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n popoverService.panelClass.push('hermes-popover-content');\r\n\r\n overlayContainer.getContainerElement().classList.add('hermes-overlay-container');\r\n\r\n if (!template) {\r\n this.elementRef = element;\r\n }\r\n }\r\n\r\n @Input('hermesPopoverContent')\r\n set open(value: boolean) {\r\n this.popoverService.open = !!value;\r\n }\r\n\r\n @Input('hermesPopoverContentAt')\r\n get contentAt(): string | HermesPopoverPosition | ConnectedPosition {\r\n return this.preferredPositionIsSet ? this._preferredPosition : this._position;\r\n }\r\n set contentAt(position: string | HermesPopoverPosition | ConnectedPosition) {\r\n if (typeof position === 'string') {\r\n if (!position || Object.values(HermesPopoverPosition).indexOf(position as HermesPopoverPosition) === -1) {\r\n return;\r\n }\r\n\r\n // set the popover values based on menu position\r\n this._position = position as HermesPopoverPosition;\r\n this.popoverService.positionChange(this._position);\r\n } else {\r\n this.preferredPositionIsSet = true;\r\n this._preferredPosition = position;\r\n }\r\n }\r\n\r\n @Input('hermesPopoverContentAvailablePositions')\r\n set availablePositions(positions: ConnectedPosition[]) {\r\n this.availablePositionsAreSet = true;\r\n\r\n this._availablePositions = positions;\r\n }\r\n\r\n @Input('hermesPopoverContentType')\r\n set contentType(type: HermesPopoverType) {\r\n this.popoverType = type;\r\n\r\n if (!this.availablePositionsAreSet) {\r\n this._availablePositions = getConnectedPositions(type);\r\n }\r\n }\r\n\r\n @Input('hermesPopoverContentOutsideClickToClose')\r\n get outsideClickClose() {\r\n return this._outsideClickClose;\r\n }\r\n set outsideClickClose(clickToClose: boolean) {\r\n this._outsideClickClose = !!clickToClose;\r\n }\r\n\r\n @Input('hermesPopoverContentScrollToClose')\r\n get scrollToClose() {\r\n return this._scrollToClose;\r\n }\r\n set scrollToClose(scrollToClose: boolean) {\r\n this._scrollToClose = !!scrollToClose;\r\n }\r\n\r\n @Input('hermesPopoverContentOrigin')\r\n set contentOrigin(origin: FlexibleConnectedPositionStrategyOrigin) {\r\n // `instanceof Element` is realm-sensitive and misses a raw element belonging to\r\n // another window, so a consumer passing one here would bypass the ElementRef wrap\r\n // resolveCrossWindowOrigin() relies on to detect a cross-window origin.\r\n if ((origin as Node)?.nodeType === Node.ELEMENT_NODE) {\r\n this.popoverService.origin = new ElementRef(origin as HTMLElement);\r\n } else {\r\n this.popoverService.origin = origin;\r\n }\r\n }\r\n\r\n private get positionStrategy() {\r\n const origin = resolveCrossWindowOrigin(this.popoverService.origin);\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(origin)\r\n .setOrigin(origin)\r\n .withPush(true)\r\n .withPositions([this.preferredPosition, ...this._availablePositions])\r\n .withFlexibleDimensions(true);\r\n }\r\n\r\n private get preferredPosition(): ConnectedPosition {\r\n if (this.preferredPositionIsSet) {\r\n return this._preferredPosition;\r\n }\r\n\r\n // Default position is \"bottom-left\"\r\n return mapPopoverKeyToPosition(this._position, this.popoverType);\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.popoverService.open) {\r\n this.showOverlay();\r\n }\r\n\r\n this.openCloseSubscription = this.popoverService.openChange.subscribe(change => {\r\n if (change) {\r\n this.showOverlay();\r\n } else {\r\n this.closePopover();\r\n }\r\n\r\n // `isOffScreen`/`is-off-screen`-style host bindings on the component hosting this\r\n // directive (HermesSelectContent, HermesDropdownMenu, HermesSignpostContent) read\r\n // `popoverService.open` directly, not through a signal or an Input - Angular has no\r\n // way to know that value changed on its own. The event that flips it is usually a\r\n // raw CDK-registered document listener (OverlayOutsideClickDispatcher), not a\r\n // compiled Angular template event binding, so it never marks this component (or its\r\n // OnPush ancestors) dirty by itself. Without this, closing/reopening a popover whose\r\n // OnPush ancestor chain isn't independently marked dirty by something else in the\r\n // same tick (e.g. a sibling value change) leaves the just-closed panel's host\r\n // bindings stale: still `position: static` in its original spot instead of the\r\n // off-screen-fixed placement `isOffScreen` is supposed to apply once closed.\r\n this.changeDetectorRef.markForCheck();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.removeOverlay();\r\n this.openCloseSubscription?.unsubscribe();\r\n }\r\n\r\n private _createOverlayRef() {\r\n this.overlayRef = this.overlay.create(\r\n new OverlayConfig({\r\n // This is where we can pass externally facing inputs into the angular overlay API, and essentially proxy behaviors our users want directly to the CDK if they have them.\r\n positionStrategy: this.positionStrategy,\r\n // the scrolling behaviour is controlled by this popover content directive\r\n scrollStrategy: this.overlay.scrollStrategies.noop(),\r\n panelClass: this.popoverService.panelClass,\r\n hasBackdrop: false,\r\n })\r\n );\r\n\r\n this.subscriptions.push(\r\n merge(this.popoverService.resetPositionsChange, this.popoverService.getPositionChange()).subscribe(() => {\r\n this.resetPosition();\r\n }),\r\n this.popoverService.updatePositionChange().subscribe(() => {\r\n this.overlayRef?.updatePosition();\r\n }),\r\n this.createEscapeSubscription(),\r\n\r\n this.popoverService.originPoint\r\n ? this.createPointBasedOutsideClickSubscription()\r\n : this.createElementBasedOutsideClickSubscription()\r\n );\r\n }\r\n\r\n /**\r\n * Point-based origins (context menus) delay the subscription to avoid the\r\n * mouseup from the same right-click that opened the popover.\r\n */\r\n private createPointBasedOutsideClickSubscription(): Subscription {\r\n const subscription = timer(500)\r\n .pipe(switchMap(() => this.overlayRef.outsidePointerEvents()))\r\n .subscribe(event => this.handlePointOutsideClick(event));\r\n\r\n const crossWindowSubscription = this.createCrossWindowPointOutsideClickSubscription();\r\n if (crossWindowSubscription) {\r\n subscription.add(crossWindowSubscription);\r\n }\r\n\r\n return subscription;\r\n }\r\n\r\n private handlePointOutsideClick(event: Event): void {\r\n if (this.elementRef?.nativeElement?.contains(event.target as Node)) {\r\n return;\r\n }\r\n\r\n if (this._outsideClickClose) {\r\n this.closePopover();\r\n }\r\n }\r\n\r\n /**\r\n * Mirrors createCrossWindowOutsideClickSubscription for point-based origins (context\r\n * menus): pointTargetElement - the element the point was derived from, e.g. the\r\n * right-clicked element - can itself live inside a foreign iframe document, and CDK's\r\n * outsidePointerEvents() only listens on this window's document, so a click elsewhere\r\n * in that foreign document would otherwise never dismiss the menu. Delayed by the same\r\n * 500ms as the same-window stream, for the same reason: avoid the click that opened the\r\n * menu immediately closing it again.\r\n */\r\n private createCrossWindowPointOutsideClickSubscription(): Subscription | null {\r\n const pointTargetElement = this.popoverService.pointTargetElement;\r\n const crossWindowOrigin = pointTargetElement ? getCrossWindowOriginContext(pointTargetElement) : null;\r\n\r\n if (!crossWindowOrigin) {\r\n return null;\r\n }\r\n\r\n const originWindow = crossWindowOrigin.elementWindow;\r\n\r\n return timer(500)\r\n .pipe(\r\n switchMap(() =>\r\n this.zone.runOutsideAngular(() =>\r\n merge(\r\n fromEvent(originWindow.document, 'click', { capture: true }),\r\n fromEvent(originWindow.document, 'auxclick', { capture: true })\r\n )\r\n )\r\n )\r\n )\r\n .subscribe(event => this.zone.run(() => this.handlePointOutsideClick(event)));\r\n }\r\n\r\n /**\r\n * Element-based origins close on outside clicks and suppress toggle-button\r\n * re-clicks so the popover doesn't immediately reopen.\r\n */\r\n private createElementBasedOutsideClickSubscription(): Subscription {\r\n const subscription = this.overlayRef.outsidePointerEvents().subscribe(event => this.handleOutsideClick(event));\r\n\r\n const crossWindowSubscription = this.createCrossWindowOutsideClickSubscription();\r\n if (crossWindowSubscription) {\r\n subscription.add(crossWindowSubscription);\r\n }\r\n\r\n return subscription;\r\n }\r\n\r\n private handleOutsideClick(event: Event): void {\r\n // The very click that opened this popover must never be treated as an outside click.\r\n // CDK's OverlayOutsideClickDispatcher listens in the capture phase on this window's\r\n // document.body, so it normally runs *before* the trigger's own click handler has\r\n // attached the overlay, and the opening click is therefore never delivered here.\r\n // That ordering does not hold everywhere: when the trigger lives in a ShadowRoot\r\n // owned by a separately bootstrapped Angular application (an ESM micro-frontend\r\n // plugin with its own CDK instance), the overlay can already be attached by the time\r\n // the dispatcher sees the click, which delivers the opening click straight back as an\r\n // \"outside\" click and tears the popover down microseconds after it opened.\r\n // Comparing against the stored open event is exact - CDK re-emits the same Event\r\n // object - and it leaves toggle-to-close untouched, since a later click on the\r\n // trigger is always a different Event instance.\r\n if (event === this.popoverService.openEvent) {\r\n return;\r\n }\r\n\r\n // web components (hermes-icon) register as outside pointer events, so if the event target is inside the content panel return early\r\n if (this.elementRef?.nativeElement?.contains(event.target as Node)) {\r\n return;\r\n }\r\n\r\n // Check if the same element that opened the popover is the same element triggering the outside pointer events (toggle button)\r\n // openEvent.target can itself be null (e.g. the original toggle button was removed\r\n // from the DOM before this handler runs), so every access below is optional - an\r\n // unguarded `.contains()` call here throws and aborts the whole handler, which is\r\n // exactly what stops closePopover() from ever running.\r\n const openEventTarget = this.popoverService.openEvent?.target as Element | undefined;\r\n const isToggleButton =\r\n !!openEventTarget &&\r\n (openEventTarget.contains(event.target as Element) ||\r\n openEventTarget.parentElement?.contains(event.target as Element) ||\r\n openEventTarget === event.target);\r\n\r\n if (isToggleButton) {\r\n event.stopPropagation();\r\n }\r\n\r\n if (this._outsideClickClose || isToggleButton) {\r\n this.closePopover();\r\n }\r\n }\r\n\r\n /**\r\n * CDK's outsidePointerEvents() only listens on the document that owns the overlay\r\n * (this window's), so clicks inside a cross-window origin's own document (e.g. a\r\n * ShadowRoot hosted in an iframe) are invisible to it - see resolveCrossWindowOrigin\r\n * for the same cross-window scenario affecting positioning instead. Any pointer event\r\n * dispatched in that foreign document is guaranteed to be outside the overlay panel,\r\n * since the panel always renders in this window's document, so this only needs the\r\n * toggle-button exclusion handleOutsideClick already does, not the content-panel\r\n * containment check (which can never be true across documents).\r\n *\r\n * Listens on capture-phase click/auxclick, mirroring CDK's own OverlayOutsideClickDispatcher.\r\n * Capture phase matters: for a toggle re-click, this listener must run and\r\n * stopPropagation() BEFORE the trigger's own bubble-phase click handler\r\n * (HermesDropdownTrigger's toggleWithEvent) gets a chance to fire, otherwise the popover\r\n * closes here and immediately reopens there. A bubble-phase or pointerdown-based\r\n * listener can't suppress that handler at all, since pointerdown and click are separate\r\n * events and stopping one doesn't affect the other.\r\n *\r\n * The foreign document's own addEventListener isn't zone-patched (zone.js only patches\r\n * the window it's loaded into), so the listener is registered directly and the handler\r\n * is explicitly run back inside NgZone.\r\n */\r\n private createCrossWindowOutsideClickSubscription(): Subscription | null {\r\n // Same-window origins bail out here, so a popover that never crosses a window\r\n // boundary registers no extra listeners at all.\r\n const crossWindowOrigin = getCrossWindowOriginContext(this.popoverService.origin);\r\n\r\n if (!crossWindowOrigin) {\r\n return null;\r\n }\r\n\r\n const originWindow = crossWindowOrigin.elementWindow;\r\n\r\n return this.zone.runOutsideAngular(() =>\r\n merge(\r\n fromEvent(originWindow.document, 'click', { capture: true }),\r\n fromEvent(originWindow.document, 'auxclick', { capture: true })\r\n ).subscribe(event => this.zone.run(() => this.handleOutsideClick(event)))\r\n );\r\n }\r\n\r\n /**\r\n * CDK's OverlayKeyboardDispatcher (the source behind `overlayRef.keydownEvents()`)\r\n * attaches a single keydown listener on this window's document.body once, at app\r\n * bootstrap - see its `add()`/`_keydownListener`. A keydown fired while focus sits\r\n * inside a cross-window origin's own document (e.g. a ShadowRoot hosted in an iframe)\r\n * never bubbles there, since events don't cross document boundaries, so Escape silently\r\n * does nothing once the trigger (and focus) has moved into that foreign document. This\r\n * mirrors createCrossWindowOutsideClickSubscription's rationale for outside clicks -\r\n * merged into a single stream/handler here since both ultimately just detect Escape and\r\n * close.\r\n */\r\n private createEscapeSubscription(): Subscription {\r\n const crossWindowOrigin = getCrossWindowOriginContext(this.popoverService.origin);\r\n const keydownEvents = crossWindowOrigin\r\n ? merge(\r\n this.overlayRef.keydownEvents(),\r\n this.zone.runOutsideAngular(() =>\r\n fromEvent<KeyboardEvent>(crossWindowOrigin.elementWindow.document, 'keydown')\r\n )\r\n )\r\n : this.overlayRef.keydownEvents();\r\n\r\n return keydownEvents.subscribe(event => {\r\n if (isEscapeKey(event)) {\r\n this.zone.run(() => {\r\n event.preventDefault();\r\n this.closePopover();\r\n });\r\n }\r\n });\r\n }\r\n\r\n private resetPosition() {\r\n if (this.overlayRef) {\r\n this.overlayRef.updatePositionStrategy(this.positionStrategy);\r\n this.overlayRef.updatePosition();\r\n }\r\n }\r\n\r\n private closePopover() {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n this.removeOverlay();\r\n this.popoverService.popoverVisibleEmit(false);\r\n this.popoverService.open = false;\r\n\r\n if (this.popoverService.originElement) {\r\n const shouldFocusTrigger =\r\n this.popoverType !== HermesPopoverType.TOOLTIP &&\r\n (document.activeElement === document.body ||\r\n document.activeElement === this.popoverService.originElement.nativeElement);\r\n\r\n if (shouldFocusTrigger) {\r\n this.popoverService.focusOrigin();\r\n }\r\n }\r\n }\r\n\r\n private showOverlay() {\r\n if (!this.overlayRef) {\r\n this._createOverlayRef();\r\n }\r\n\r\n if (!this.view && this.template) {\r\n this.view = this.container.createEmbeddedView(this.template);\r\n\r\n if (!this.elementRef) {\r\n const [rootNode] = this.view.rootNodes;\r\n this.elementRef = new ElementRef(rootNode); // So we know where/what to set close focus on\r\n }\r\n }\r\n\r\n if (!this.domPortal) {\r\n this.domPortal = new DomPortal<HTMLElement>(this.elementRef);\r\n this.overlayRef.attach(this.domPortal);\r\n }\r\n\r\n if (this.popoverService.originElement) {\r\n this.popoverService.originElement.nativeElement.scrollIntoView({\r\n behavior: 'instant',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n\r\n // scrollIntoView() can itself move the page (e.g. the origin was partially hidden\r\n // after a prior scroll), which happens after the overlay was already attached and\r\n // positioned above. The scroll listeners that would normally catch this and\r\n // reposition are only registered in the setTimeout below - too late for this\r\n // specific scroll - so without this the panel is left floating at the pre-scroll\r\n // coordinates instead of anchored to the origin's now-current position.\r\n this.overlayRef.updatePosition();\r\n\r\n this.setupIntersectionObserver();\r\n }\r\n\r\n setTimeout(() => {\r\n // Get Scrollable Parents\r\n this.listenToScrollEvents();\r\n\r\n this.popoverService.popoverVisibleEmit(true);\r\n\r\n if (this.elementRef?.nativeElement?.focus) {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n private removeOverlay(): void {\r\n this.subscriptions.forEach(s => s.unsubscribe());\r\n this.subscriptions = [];\r\n\r\n if (this.overlayRef?.hasAttached()) {\r\n this.overlayRef.detach();\r\n this.overlayRef.dispose();\r\n }\r\n\r\n if (this.domPortal?.isAttached) {\r\n this.domPortal.detach();\r\n }\r\n\r\n if (this.view) {\r\n this.view.destroy();\r\n }\r\n\r\n this.overlayRef = null;\r\n this.domPortal = null;\r\n if (this.template) {\r\n this.elementRef = null;\r\n }\r\n this.view = null;\r\n\r\n this.intersectionObserver?.disconnect();\r\n this.intersectionObserver = null;\r\n }\r\n\r\n /**\r\n * Walks ancestors looking for scrollable containers, following the node up through\r\n * ShadowRoots and, when the node's own ancestry crosses into an iframe (a different\r\n * window realm - e.g. a ShadowRoot hosted in a micro-frontend iframe), continuing the\r\n * walk into the parent window via window.frameElement, all the way up to the true\r\n * top-level document. Every embedded document passed through this way is added as its\r\n * own scrollable parent, so page-level scrolling inside an iframe is tracked too.\r\n *\r\n * `instanceof` checks are realm-sensitive (they fail for nodes created by a different\r\n * window's constructors), so this deliberately uses realm-independent shape checks\r\n * (nodeType, tagName, duck-typing ShadowRoot via `host`) instead, and always resolves\r\n * computed style through the node's own window rather than this one. This is what lets\r\n * the walk safely continue across a same-origin realm boundary instead of just\r\n * stopping at it.\r\n */\r\n private getScrollableParents(node: HTMLElement) {\r\n const overflowScrollKeys = ['auto', 'scroll', 'clip'];\r\n const scrollableParents: (Document | Element)[] = [window.document];\r\n\r\n let parent: Node | null = node;\r\n\r\n while (parent && isElementOrShadowRoot(parent)) {\r\n if (isShadowRoot(parent)) {\r\n parent = parent.host;\r\n continue;\r\n }\r\n\r\n const element = parent as Element;\r\n const elementWindow = element.ownerDocument?.defaultView;\r\n\r\n if (isHtmlElement(element)) {\r\n const frameElement = elementWindow && elementWindow !== window ? getFrameElement(elementWindow) : null;\r\n\r\n if (!frameElement) {\r\n break;\r\n }\r\n\r\n // Leaving this document for its parent window - track its own page-level scroll too.\r\n scrollableParents.push(element.ownerDocument);\r\n parent = frameElement;\r\n continue;\r\n }\r\n\r\n const { overflowY, overflowX } = (elementWindow ?? window).getComputedStyle(element);\r\n\r\n if (overflowScrollKeys.includes(overflowY) || overflowScrollKeys.includes(overflowX)) {\r\n scrollableParents.push(element);\r\n }\r\n\r\n parent = element.parentNode;\r\n }\r\n\r\n return scrollableParents;\r\n }\r\n\r\n /**\r\n * Uses IntersectionObserver to detect when the origin element leaves the screen.\r\n * This handles the \"Close on Scroll\" logic much cheaper than getBoundingClientRect.\r\n */\r\n private setupIntersectionObserver() {\r\n if (!this.popoverService.originElement || this.intersectionObserver) {\r\n return;\r\n }\r\n\r\n this.intersectionObserver = new IntersectionObserver(\r\n entries => {\r\n entries.forEach(entry => {\r\n // If the origin is no longer visible (scrolled out of view)\r\n if (!entry.isIntersecting && this.popoverService.open) {\r\n this.zone.run(() => this.closePopover());\r\n }\r\n });\r\n },\r\n { root: null, threshold: 0.8 }\r\n );\r\n\r\n this.intersectionObserver.observe(this.popoverService.originElement.nativeElement);\r\n }\r\n\r\n private listenToScrollEvents() {\r\n if (!isPlatformBrowser(this.platformId)) {\r\n return;\r\n }\r\n\r\n const originEl = this.popoverService.originPoint\r\n ? this.popoverService.pointTargetElement\r\n : this.getRootPopover(this)?.popoverService?.originElement?.nativeElement;\r\n\r\n this.listenToScrollForElementOrigin(originEl);\r\n }\r\n\r\n // Element origins track ancestor scroll containers to reposition or close.\r\n private listenToScrollForElementOrigin(originEl: HTMLElement) {\r\n const scrollableParents = this.getScrollableParents(originEl);\r\n\r\n this.zone.runOutsideAngular(() => {\r\n this.subscriptions.push(\r\n merge(...scrollableParents.map(parent => fromEvent(parent, 'scroll', { passive: true }))).subscribe(() => {\r\n if (this._scrollToClose) {\r\n this.zone.run(() => this.closePopover());\r\n return;\r\n }\r\n\r\n this.overlayRef?.updatePosition();\r\n })\r\n );\r\n });\r\n }\r\n\r\n private getRootPopover(popover: HermesPopoverContent): HermesPopoverContent {\r\n if (popover && popover.parent) {\r\n return this.getRootPopover(popover.parent);\r\n }\r\n\r\n return popover;\r\n }\r\n}\r\n\r\nfunction isEscapeKey(event: KeyboardEvent): boolean {\r\n return !!event && event.key === Keys.Escape && !hasModifierKey(event);\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverOrigin]',\r\n host: {\r\n '[class.hermes-popover-origin]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverOrigin {\r\n constructor(popoverService: HermesPopoverService, element: ElementRef<HTMLButtonElement>) {\r\n popoverService.origin = element;\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { ElementRef, InjectionToken } from '@angular/core';\r\n\r\nexport const POPOVER_HOST_ORIGIN = new InjectionToken<ElementRef>('POPOVER_HOST_ORIGIN');\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n standalone: true,\r\n})\r\nexport class HermesStopEscapePropagationDirective implements OnInit, OnDestroy {\r\n private subscription: Subscription;\r\n private lastOpenChange: boolean | null = null;\r\n\r\n constructor(private popoverService: HermesPopoverService) {}\r\n\r\n ngOnInit() {\r\n this.subscription = this.popoverService.openChange.subscribe(open => {\r\n this.lastOpenChange = open;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n @HostListener('keyup.escape', ['$event'])\r\n onEscapeKey(event: KeyboardEvent) {\r\n if (this.lastOpenChange !== null) {\r\n if (this.lastOpenChange === false) {\r\n event.stopPropagation();\r\n }\r\n\r\n this.lastOpenChange = null;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, ElementRef } from '@angular/core';\r\n\r\nimport { POPOVER_HOST_ORIGIN } from './popover-host-origin.token';\r\nimport { HermesPopoverService } from './providers/popover.service';\r\nimport { HermesStopEscapePropagationDirective } from './stop-escape-propagation.directive';\r\n\r\n@Directive({\r\n standalone: true,\r\n providers: [HermesPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }],\r\n hostDirectives: [HermesStopEscapePropagationDirective],\r\n})\r\nexport class HermesPopoverHostDirective {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n/**********\r\n *\r\n * @class HermesIfOpen\r\n *\r\n * @description\r\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\r\n * It makes use of a Component instance level service: HermesPopoverService to maintain state between itself and the component\r\n * using it in the component template.\r\n *\r\n */\r\n@Directive({\r\n selector: '[hermesIfOpen]',\r\n})\r\nexport class HermesIfOpen implements OnDestroy {\r\n static ngAcceptInputType_open: boolean | '';\r\n\r\n /**********\r\n * @property openChange\r\n *\r\n * @description\r\n * An event emitter that emits when the open property is set to allow for 2way binding when the directive is\r\n * used with de-structured / de-sugared syntax.\r\n */\r\n @Output('hermesIfOpenChange') openChange = new EventEmitter<boolean>(false);\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private popoverService: HermesPopoverService,\r\n private template: TemplateRef<any>,\r\n private container: ViewContainerRef\r\n ) {\r\n this.subscriptions.push(\r\n popoverService.openChange.subscribe(change => {\r\n // OPEN before overlay is built\r\n if (change) {\r\n container.createEmbeddedView(template);\r\n this.openChange.emit(change);\r\n }\r\n }),\r\n popoverService.popoverVisible.subscribe(change => {\r\n // CLOSE after overlay is destroyed\r\n if (!change) {\r\n container.clear();\r\n this.openChange.emit(change);\r\n }\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * @description\r\n * A property that gets/sets HermesPopoverService.open with value.\r\n */\r\n @Input('hermesIfOpen')\r\n get open() {\r\n return this.popoverService.open;\r\n }\r\n set open(value: boolean | string) {\r\n this.popoverService.open = value as boolean;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n\r\n /**\r\n * @description\r\n * Function that takes a boolean value and either created an embedded view for the associated ViewContainerRef or,\r\n * Clears all views from the ViewContainerRef\r\n *\r\n * @param value\r\n */\r\n updateView(value: boolean) {\r\n if (value) {\r\n this.container.createEmbeddedView(this.template);\r\n } else {\r\n this.container.clear();\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { filter } from 'rxjs/operators';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverCloseButton]',\r\n host: {\r\n '[class.hermes-smart-close-button]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverCloseButton implements OnDestroy, AfterViewInit {\r\n @Output('hermesPopoverOnCloseChange') closeChange = new EventEmitter<void>();\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLButtonElement>,\r\n private popoverService: HermesPopoverService\r\n ) {\r\n this.subscriptions.push(\r\n popoverService.openChange.pipe(filter(value => !value)).subscribe(() => {\r\n this.closeChange.emit();\r\n })\r\n );\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClick(event: MouseEvent) {\r\n this.popoverService.toggleWithEvent(event);\r\n this.popoverService.focusOrigin();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.popoverService.closeButtonRef = this.elementRef;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { Directive, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { HermesPopoverService } from './providers/popover.service';\r\n\r\n@Directive({\r\n selector: '[hermesPopoverOpenCloseButton]',\r\n host: {\r\n '[class.hermes-smart-open-close]': 'true',\r\n },\r\n standalone: false,\r\n})\r\nexport class HermesPopoverOpenCloseButton implements OnDestroy {\r\n @Output('hermesPopoverOpenCloseChange') openCloseChange = new EventEmitter<boolean>();\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(private popoverService: HermesPopoverService) {\r\n this.subscriptions.push(\r\n popoverService.openChange.subscribe(change => {\r\n this.openCloseChange.emit(change);\r\n })\r\n );\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClick(event: MouseEvent) {\r\n this.popoverService.toggleWithEvent(event);\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscriptions.forEach(sub => sub.unsubscribe());\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { HermesIfOpen } from './if-open.directive';\r\nimport { HermesPopoverCloseButton } from './popover-close-button';\r\nimport { HermesPopoverContent } from './popover-content';\r\nimport { HermesPopoverOpenCloseButton } from './popover-open-close-button';\r\nimport { HermesPopoverOrigin } from './popover-origin';\r\n\r\n@NgModule({\r\n imports: [HermesPopoverContent, HermesIfOpen],\r\n declarations: [HermesPopoverOrigin, HermesPopoverCloseButton, HermesPopoverOpenCloseButton],\r\n exports: [HermesPopoverOrigin, HermesPopoverCloseButton, HermesPopoverOpenCloseButton, HermesPopoverContent, HermesIfOpen],\r\n})\r\nexport class HermesPopoverModuleNext {}\r\n","/*\r\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\r\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\r\n * This software is released under MIT license.\r\n * The full license information can be found in LICENSE in the root directory of this project.\r\n */\r\n\r\nexport * from './popover-content';\r\nexport * from './providers/popover.service';\r\nexport * from './popover-origin';\r\nexport * from './popover-host.directive';\r\nexport * from './stop-escape-propagation.directive';\r\nexport * from './popover-host-origin.token';\r\nexport * from './if-open.directive';\r\nexport * from './utils/popover-positions';\r\n\r\nexport { HermesPopoverModuleNext } from './popover.module';\r\nexport { HermesPopoverCloseButton } from './popover-close-button';\r\nexport { HermesPopoverOpenCloseButton } from './popover-open-close-button';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HermesPopoverService","i1.HermesStopEscapePropagationDirective"],"mappings":"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"}