@clr/angular 18.3.0 → 18.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/fesm2022/clr-angular-accordion.mjs +28 -28
  2. package/fesm2022/clr-angular-accordion.mjs.map +1 -1
  3. package/fesm2022/clr-angular-button.mjs +27 -27
  4. package/fesm2022/clr-angular-button.mjs.map +1 -1
  5. package/fesm2022/clr-angular-card.mjs +417 -0
  6. package/fesm2022/clr-angular-card.mjs.map +1 -0
  7. package/fesm2022/clr-angular-collapsible-panel.mjs +6 -6
  8. package/fesm2022/clr-angular-collapsible-panel.mjs.map +1 -1
  9. package/fesm2022/clr-angular-data-datagrid.mjs +1105 -352
  10. package/fesm2022/clr-angular-data-datagrid.mjs.map +1 -1
  11. package/fesm2022/clr-angular-data-stack-view.mjs +23 -23
  12. package/fesm2022/clr-angular-data-stack-view.mjs.map +1 -1
  13. package/fesm2022/clr-angular-data-tree-view.mjs +283 -48
  14. package/fesm2022/clr-angular-data-tree-view.mjs.map +1 -1
  15. package/fesm2022/clr-angular-data.mjs +4 -4
  16. package/fesm2022/clr-angular-data.mjs.map +1 -1
  17. package/fesm2022/clr-angular-emphasis-alert.mjs +26 -26
  18. package/fesm2022/clr-angular-emphasis-alert.mjs.map +1 -1
  19. package/fesm2022/clr-angular-emphasis-badge.mjs +3 -3
  20. package/fesm2022/clr-angular-emphasis-badge.mjs.map +1 -1
  21. package/fesm2022/clr-angular-emphasis-label.mjs +3 -3
  22. package/fesm2022/clr-angular-emphasis-label.mjs.map +1 -1
  23. package/fesm2022/clr-angular-emphasis.mjs +4 -4
  24. package/fesm2022/clr-angular-emphasis.mjs.map +1 -1
  25. package/fesm2022/clr-angular-forms-checkbox.mjs +13 -13
  26. package/fesm2022/clr-angular-forms-checkbox.mjs.map +1 -1
  27. package/fesm2022/clr-angular-forms-combobox.mjs +35 -35
  28. package/fesm2022/clr-angular-forms-combobox.mjs.map +1 -1
  29. package/fesm2022/clr-angular-forms-common.mjs +69 -69
  30. package/fesm2022/clr-angular-forms-common.mjs.map +1 -1
  31. package/fesm2022/clr-angular-forms-datalist.mjs +17 -17
  32. package/fesm2022/clr-angular-forms-datalist.mjs.map +1 -1
  33. package/fesm2022/clr-angular-forms-datepicker.mjs +73 -73
  34. package/fesm2022/clr-angular-forms-datepicker.mjs.map +1 -1
  35. package/fesm2022/clr-angular-forms-file-input.mjs +36 -36
  36. package/fesm2022/clr-angular-forms-file-input.mjs.map +1 -1
  37. package/fesm2022/clr-angular-forms-input.mjs +10 -10
  38. package/fesm2022/clr-angular-forms-input.mjs.map +1 -1
  39. package/fesm2022/clr-angular-forms-number-input.mjs +11 -11
  40. package/fesm2022/clr-angular-forms-number-input.mjs.map +1 -1
  41. package/fesm2022/clr-angular-forms-password.mjs +11 -11
  42. package/fesm2022/clr-angular-forms-password.mjs.map +1 -1
  43. package/fesm2022/clr-angular-forms-radio.mjs +13 -13
  44. package/fesm2022/clr-angular-forms-radio.mjs.map +1 -1
  45. package/fesm2022/clr-angular-forms-range.mjs +10 -10
  46. package/fesm2022/clr-angular-forms-range.mjs.map +1 -1
  47. package/fesm2022/clr-angular-forms-select.mjs +10 -10
  48. package/fesm2022/clr-angular-forms-select.mjs.map +1 -1
  49. package/fesm2022/clr-angular-forms-textarea.mjs +10 -10
  50. package/fesm2022/clr-angular-forms-textarea.mjs.map +1 -1
  51. package/fesm2022/clr-angular-forms.mjs +4 -4
  52. package/fesm2022/clr-angular-forms.mjs.map +1 -1
  53. package/fesm2022/clr-angular-icon.mjs +81 -41
  54. package/fesm2022/clr-angular-icon.mjs.map +1 -1
  55. package/fesm2022/clr-angular-layout-breadcrumbs.mjs +10 -10
  56. package/fesm2022/clr-angular-layout-breadcrumbs.mjs.map +1 -1
  57. package/fesm2022/clr-angular-layout-main-container.mjs +7 -7
  58. package/fesm2022/clr-angular-layout-main-container.mjs.map +1 -1
  59. package/fesm2022/clr-angular-layout-nav.mjs +22 -22
  60. package/fesm2022/clr-angular-layout-nav.mjs.map +1 -1
  61. package/fesm2022/clr-angular-layout-tabs.mjs +35 -35
  62. package/fesm2022/clr-angular-layout-tabs.mjs.map +1 -1
  63. package/fesm2022/clr-angular-layout-vertical-nav.mjs +31 -31
  64. package/fesm2022/clr-angular-layout-vertical-nav.mjs.map +1 -1
  65. package/fesm2022/clr-angular-layout.mjs +4 -4
  66. package/fesm2022/clr-angular-layout.mjs.map +1 -1
  67. package/fesm2022/clr-angular-modal.mjs +26 -26
  68. package/fesm2022/clr-angular-modal.mjs.map +1 -1
  69. package/fesm2022/clr-angular-popover-common.mjs +69 -34
  70. package/fesm2022/clr-angular-popover-common.mjs.map +1 -1
  71. package/fesm2022/clr-angular-popover-dropdown.mjs +63 -26
  72. package/fesm2022/clr-angular-popover-dropdown.mjs.map +1 -1
  73. package/fesm2022/clr-angular-popover-signpost.mjs +27 -25
  74. package/fesm2022/clr-angular-popover-signpost.mjs.map +1 -1
  75. package/fesm2022/clr-angular-popover-tooltip.mjs +19 -19
  76. package/fesm2022/clr-angular-popover-tooltip.mjs.map +1 -1
  77. package/fesm2022/clr-angular-popover.mjs +4 -4
  78. package/fesm2022/clr-angular-popover.mjs.map +1 -1
  79. package/fesm2022/clr-angular-progress-progress-bars.mjs +7 -7
  80. package/fesm2022/clr-angular-progress-progress-bars.mjs.map +1 -1
  81. package/fesm2022/clr-angular-progress-spinner.mjs +7 -7
  82. package/fesm2022/clr-angular-progress-spinner.mjs.map +1 -1
  83. package/fesm2022/clr-angular-stepper.mjs +31 -31
  84. package/fesm2022/clr-angular-stepper.mjs.map +1 -1
  85. package/fesm2022/clr-angular-timeline.mjs +23 -23
  86. package/fesm2022/clr-angular-timeline.mjs.map +1 -1
  87. package/fesm2022/clr-angular-utils-conditional.mjs +16 -16
  88. package/fesm2022/clr-angular-utils-conditional.mjs.map +1 -1
  89. package/fesm2022/clr-angular-utils-loading.mjs +7 -7
  90. package/fesm2022/clr-angular-utils-loading.mjs.map +1 -1
  91. package/fesm2022/clr-angular-utils.mjs +144 -152
  92. package/fesm2022/clr-angular-utils.mjs.map +1 -1
  93. package/fesm2022/clr-angular-wizard.mjs +51 -51
  94. package/fesm2022/clr-angular-wizard.mjs.map +1 -1
  95. package/fesm2022/clr-angular.mjs +9 -4
  96. package/fesm2022/clr-angular.mjs.map +1 -1
  97. package/package.json +9 -5
  98. package/types/clr-angular-card.d.ts +110 -0
  99. package/types/clr-angular-data-datagrid.d.ts +293 -17
  100. package/types/clr-angular-data-tree-view.d.ts +126 -88
  101. package/types/clr-angular-forms-datepicker.d.ts +1 -1
  102. package/types/clr-angular-forms-file-input.d.ts +1 -1
  103. package/types/clr-angular-icon.d.ts +14 -2
  104. package/types/clr-angular-popover-common.d.ts +6 -0
  105. package/types/clr-angular-popover-dropdown.d.ts +33 -4
  106. package/types/clr-angular-utils.d.ts +61 -20
  107. package/types/clr-angular.d.ts +8 -6
  108. package/schematics/vitest.config.d.ts +0 -2
  109. package/schematics/vitest.config.js +0 -17
  110. package/schematics/vitest.config.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"clr-angular-modal.mjs","sources":["../../../projects/angular/modal/modal-stack.service.ts","../../../projects/angular/modal/modal-configuration.service.ts","../../../projects/angular/modal/modal.ts","../../../projects/angular/modal/modal.html","../../../projects/angular/modal/modal-body.ts","../../../projects/angular/modal/modal-host.component.ts","../../../projects/angular/modal/modal.module.ts","../../../projects/angular/modal/side-panel.ts","../../../projects/angular/modal/side-panel.html","../../../projects/angular/modal/side-panel.module.ts","../../../projects/angular/modal/index.ts","../../../projects/angular/modal/clr-angular-modal.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 { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Keys } from '@clr/angular/utils';\n\nexport interface Closable {\n close(): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private readonly modalStack: Closable[] = [];\n private readonly keyUpEventListener = this.onKeyUp.bind(this);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: unknown) {}\n\n trackModalOpen(openedModal: Closable) {\n if (this.modalStack.includes(openedModal) === false) {\n this.modalStack.unshift(openedModal);\n }\n\n if (isPlatformBrowser(this.platformId)) {\n document.body.addEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n trackModalClose(closedModal: Closable) {\n const closedModalIndex = this.modalStack.indexOf(closedModal);\n\n if (closedModalIndex > -1) {\n this.modalStack.splice(closedModalIndex, 1);\n }\n\n if (this.modalStack.length === 0 && isPlatformBrowser(this.platformId)) {\n document.body.removeEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n private onKeyUp(event: KeyboardEvent) {\n if (this.modalStack.length && event.key === Keys.Escape) {\n // We blur the active element because escaping with an input element in focus could cause\n // an ExpressionChangedAfterItHasBeenCheckedError for the touched state. (CDE-1662)\n (document.activeElement as HTMLElement).blur();\n\n this.modalStack[0].close();\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 { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ClrModalConfigurationService {\n fadeMove = 'fadeDown';\n backdrop = true;\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 { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChange,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService, ScrollingService, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ClrModalConfigurationService } from './modal-configuration.service';\nimport { ModalStackService } from './modal-stack.service';\n\n@Component({\n selector: 'clr-modal',\n viewProviders: [ScrollingService],\n templateUrl: './modal.html',\n styles: [\n `\n :host {\n display: none;\n }\n :host.open {\n display: inline;\n }\n `,\n ],\n animations: [\n trigger('fadeMove', [\n transition('* => fadeDown', [\n style({ opacity: 0, transform: 'translate(0, -25%)' }),\n animate('0.2s ease-in-out'),\n ]),\n transition('fadeDown => *', [\n animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' })),\n ]),\n transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),\n transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),\n transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),\n transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),\n ]),\n trigger('fade', [\n transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),\n transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),\n ]),\n ],\n standalone: false,\n})\nexport class ClrModal implements OnChanges, OnDestroy {\n modalId = uniqueIdFactory();\n @ViewChild('title') title: ElementRef<HTMLElement>;\n\n @Input('clrModalOpen') @HostBinding('class.open') _open = false;\n @Output('clrModalOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n @Input('clrModalClosable') closable = true;\n @Input('clrModalCloseButtonAriaLabel') closeButtonAriaLabel = this.commonStrings.keys.close;\n @Input('clrModalSize') size = 'md';\n @Input('clrModalStaticBackdrop') staticBackdrop = true;\n @Input('clrModalSkipAnimation') skipAnimation = false;\n\n @Input('clrModalPreventClose') stopClose = false;\n @Output('clrModalAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n @Input('clrModalLabelledById') labelledBy: string;\n\n // presently this is only used by inline wizards\n @Input('clrModalOverrideScrollService') bypassScrollService = false;\n\n // Provide raw modal content. This is used by the wizard so that the same template can be rendered with and without a modal.\n @ContentChild('clrInternalModalContentTemplate') protected readonly modalContentTemplate: TemplateRef<any>;\n\n @ViewChild('body') private readonly bodyElementRef: ElementRef<HTMLElement>;\n\n constructor(\n private _scrollingService: ScrollingService,\n public commonStrings: ClrCommonStringsService,\n private modalStackService: ModalStackService,\n private configuration: ClrModalConfigurationService\n ) {}\n\n get fadeMove(): string {\n return this.skipAnimation ? '' : this.configuration.fadeMove;\n }\n set fadeMove(move: string) {\n this.configuration.fadeMove = move;\n }\n\n get backdrop(): boolean {\n return this.configuration.backdrop;\n }\n\n // Detect when _open is set to true and set no-scrolling to true\n ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n if (!this.bypassScrollService && changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {\n if (changes._open.currentValue) {\n this._scrollingService.stopScrolling();\n this.modalStackService.trackModalOpen(this);\n } else {\n this._scrollingService.resumeScrolling();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._scrollingService.resumeScrolling();\n }\n\n open(): void {\n if (this._open) {\n return;\n }\n this._open = true;\n this._openChanged.emit(true);\n this.modalStackService.trackModalOpen(this);\n }\n\n backdropClick(): void {\n if (this.staticBackdrop) {\n return;\n }\n\n this.close();\n }\n\n close(): void {\n if (this.stopClose) {\n this.altClose.emit(false);\n return;\n }\n if (!this.closable || !this._open) {\n return;\n }\n this._open = false;\n }\n\n fadeDone(e: AnimationEvent) {\n if (e.toState === 'void') {\n // TODO: Investigate if we can decouple from animation events\n this._openChanged.emit(false);\n this.modalStackService.trackModalClose(this);\n }\n }\n\n scrollTop() {\n this.bodyElementRef.nativeElement.scrollTo(0, 0);\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\n@if (_open) {\n<div class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n @if (!modalContentTemplate) {\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n @if (closable) {\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"modalContentTemplate\"></ng-template>\n }\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n @if (backdrop) {\n <div\n [@fade]\n class=\"modal-backdrop\"\n [class.static]=\"staticBackdrop\"\n aria-hidden=\"true\"\n (click)=\"backdropClick()\"\n ></div>\n }\n</div>\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 { Directive, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';\n\n/**\n * Allows modal overflow area to be scrollable via keyboard.\n * The modal body will focus with keyboard navigation only.\n * This allows inner focusable items to be focused without\n * the overflow scroll being focused.\n */\n@Directive({\n selector: '.modal-body',\n standalone: false,\n})\nexport class ClrModalBody implements OnDestroy {\n private tabindex = '0';\n private unlisteners: VoidFunction[] = [];\n private observer: ResizeObserver;\n\n constructor(\n private readonly renderer: Renderer2,\n private readonly host: ElementRef<HTMLElement>,\n ngZone: NgZone\n ) {\n ngZone.runOutsideAngular(() => {\n this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());\n this.observer.observe(host.nativeElement);\n\n this.unlisteners.push(\n renderer.listen(host.nativeElement, 'mouseup', () => {\n // set the tabindex binding back when click is completed with mouseup\n this.addOrRemoveTabIndex();\n }),\n renderer.listen(host.nativeElement, 'mousedown', () => {\n // tabindex = 0 binding should be removed\n // so it won't be focused when click starts with mousedown\n this.removeTabIndex();\n })\n );\n });\n }\n\n ngOnDestroy(): void {\n while (this.unlisteners.length) {\n this.unlisteners.pop()();\n }\n\n this.observer.disconnect();\n this.observer = null;\n }\n\n private addTabIndex() {\n this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);\n }\n\n private removeTabIndex() {\n this.renderer.removeAttribute(this.host.nativeElement, 'tabindex');\n }\n\n private addOrRemoveTabIndex() {\n const modalBody = this.host.nativeElement.parentElement;\n\n if (modalBody && modalBody.clientHeight < modalBody.scrollHeight) {\n this.addTabIndex();\n } else {\n this.removeTabIndex();\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 { Component } from '@angular/core';\n\n@Component({\n selector: '[clrModalHost]',\n host: { '[class.clr-modal-host]': 'true' },\n template: `\n <div class=\"clr-modal-host-scrollable\">\n <ng-content></ng-content>\n </div>\n `,\n standalone: false,\n})\nexport class ClrModalHostComponent {}\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 { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, ClrIcon, windowCloseIcon } from '@clr/angular/icon';\nimport { CdkTrapFocusModule } from '@clr/angular/utils';\n\nimport { ClrModal } from './modal';\nimport { ClrModalBody } from './modal-body';\nimport { ClrModalHostComponent } from './modal-host.component';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody, ClrModalHostComponent];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIcon],\n declarations: [CLR_MODAL_DIRECTIVES],\n exports: [CLR_MODAL_DIRECTIVES, ClrIcon],\n})\nexport class ClrModalModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon);\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 {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrModal } from './modal';\nimport { ClrModalConfigurationService } from './modal-configuration.service';\n\n@Component({\n selector: 'clr-side-panel',\n templateUrl: 'side-panel.html',\n host: {\n '[class.side-panel]': 'true',\n },\n standalone: false,\n})\nexport class ClrSidePanel implements OnInit, OnDestroy {\n @Output('clrSidePanelOpenChange') openChange = new EventEmitter<boolean>(false);\n @Input('clrSidePanelCloseButtonAriaLabel') closeButtonAriaLabel: string | undefined;\n @Input('clrSidePanelSkipAnimation') skipAnimation = false;\n @Input('clrSidePanelLabelledById') labelledById: string;\n @Input('clrSidePanelStaticBackdrop') staticBackdrop = false;\n @Input('clrSidePanelClosable') closable = true;\n @Input('clrSidePanelPreventClose') preventClose = false;\n @Output('clrSidePanelAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n private _pinnable = false;\n private _pinned = false;\n private originalStopClose: boolean;\n private _position = 'right';\n private _modal: ClrModal;\n private __open = false;\n\n private _size = 'md';\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private configuration: ClrModalConfigurationService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrSidePanelOpen')\n get _open(): boolean {\n return this.__open;\n }\n set _open(open: boolean) {\n if (open !== this.__open) {\n this.__open = open;\n if (this.pinned) {\n this.updateModalState();\n }\n }\n }\n\n @Input('clrSidePanelSize')\n get size(): string {\n return this._size;\n }\n\n set size(value: string) {\n if (!value) {\n value = 'md';\n }\n if (this._size !== value) {\n this._size = value;\n if (this.pinned) {\n this.updateModalState();\n }\n }\n }\n\n @Input('clrSidePanelPosition')\n get position(): string {\n return this._position;\n }\n\n set position(position: string) {\n if (position && position !== this._position) {\n this._position = position;\n if (this._position === 'right') {\n this.configuration.fadeMove = 'fadeLeft';\n } else if (this._position === 'bottom') {\n this.configuration.fadeMove = 'fadeUp';\n }\n }\n }\n\n @Input('clrSidePanelPinned')\n get pinned(): boolean {\n return this._pinned;\n }\n\n set pinned(pinned: boolean) {\n this._pinned = pinned;\n if (this.modal) {\n this.updateModalState();\n }\n }\n\n @Input()\n get clrSidePanelBackdrop(): boolean {\n return this.configuration.backdrop;\n }\n\n set clrSidePanelBackdrop(backdrop: boolean) {\n if (backdrop !== undefined) {\n this.configuration.backdrop = backdrop;\n }\n }\n\n @Input()\n get clrSidePanelPinnable(): boolean {\n return this._pinnable;\n }\n\n set clrSidePanelPinnable(pinnable: boolean) {\n this._pinnable = pinnable;\n }\n\n @ViewChild(ClrModal)\n private get modal(): ClrModal {\n return this._modal;\n }\n\n private set modal(modal: ClrModal) {\n this._modal = modal;\n this.originalStopClose = this.modal.stopClose;\n this.updateModalState();\n }\n\n private get hostElement(): HTMLElement {\n return (this.element.nativeElement as HTMLElement).closest('.clr-modal-host') || document.body;\n }\n\n @HostBinding('class.side-panel-bottom')\n private get bottomPositionCssClass() {\n return this.position === 'bottom';\n }\n\n ngOnInit(): void {\n this.configuration.fadeMove = 'fadeLeft';\n if (this.position === 'bottom') {\n this.configuration.fadeMove = 'fadeUp';\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupPinnedClasses();\n }\n\n handleModalOpen(open: boolean) {\n if (open) {\n this.updateModalState();\n } else {\n this.cleanupPinnedClasses();\n }\n this.openChange.emit(open);\n }\n\n open() {\n this.modal.open();\n }\n\n close() {\n this.modal.close();\n }\n\n togglePinned() {\n this.pinned = !this.pinned;\n }\n\n @HostListener('document:pointerup', ['$event'])\n private documentClick(event: Event) {\n if (\n !this.element.nativeElement.contains(event.target as Node) &&\n this.modal._open &&\n !this.configuration.backdrop\n ) {\n this.modal.close();\n }\n }\n\n private updateModalState() {\n if (!this.modal) {\n return;\n }\n if (this.pinned) {\n this.modal.stopClose = true;\n if (this.__open) {\n this.updatePinnedClasses();\n }\n } else {\n this.modal.stopClose = this.originalStopClose;\n this.cleanupPinnedClasses();\n }\n }\n\n private cleanupPinnedClasses() {\n [this.hostElement, document.body].forEach(host => {\n host.classList.forEach(className => {\n if (className.startsWith('clr-side-panel-pinned-')) {\n host.classList.remove(className);\n }\n });\n });\n }\n\n private updatePinnedClasses() {\n this.cleanupPinnedClasses();\n this.hostElement.classList.add(`clr-side-panel-pinned-${this.position}-${this.size}`);\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<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n @if (clrSidePanelPinnable) {\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n }\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\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 { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrIcon } from '@clr/angular/icon';\nimport { CdkTrapFocusModule } from '@clr/angular/utils';\n\nimport { ClrModalModule } from './modal.module';\nimport { ClrSidePanel } from './side-panel';\n\nexport const CLR_SIDEPANEL_DIRECTIVES: Type<any>[] = [ClrSidePanel];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIcon, ClrModalModule],\n declarations: [CLR_SIDEPANEL_DIRECTIVES],\n exports: [CLR_SIDEPANEL_DIRECTIVES, ClrModalModule, ClrIcon],\n})\nexport class ClrSidePanelModule {}\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\nexport * from './modal';\nexport * from './modal.module';\nexport * from './modal-configuration.service';\nexport * from './modal-host.component';\nexport * from './side-panel.module';\nexport * from './modal-body';\nexport * from './side-panel';\nexport * from './modal-stack.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.ModalStackService","i3.ClrModalConfigurationService","i1.ClrModalConfigurationService","i2","i3","i4.ClrModal","i5.ClrModalBody"],"mappings":"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"}
1
+ {"version":3,"file":"clr-angular-modal.mjs","sources":["../../../projects/angular/modal/modal-stack.service.ts","../../../projects/angular/modal/modal-configuration.service.ts","../../../projects/angular/modal/modal.ts","../../../projects/angular/modal/modal.html","../../../projects/angular/modal/modal-body.ts","../../../projects/angular/modal/modal-host.component.ts","../../../projects/angular/modal/modal.module.ts","../../../projects/angular/modal/side-panel.ts","../../../projects/angular/modal/side-panel.html","../../../projects/angular/modal/side-panel.module.ts","../../../projects/angular/modal/index.ts","../../../projects/angular/modal/clr-angular-modal.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 { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Keys } from '@clr/angular/utils';\n\nexport interface Closable {\n close(): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private readonly modalStack: Closable[] = [];\n private readonly keyUpEventListener = this.onKeyUp.bind(this);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: unknown) {}\n\n trackModalOpen(openedModal: Closable) {\n if (this.modalStack.includes(openedModal) === false) {\n this.modalStack.unshift(openedModal);\n }\n\n if (isPlatformBrowser(this.platformId)) {\n document.body.addEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n trackModalClose(closedModal: Closable) {\n const closedModalIndex = this.modalStack.indexOf(closedModal);\n\n if (closedModalIndex > -1) {\n this.modalStack.splice(closedModalIndex, 1);\n }\n\n if (this.modalStack.length === 0 && isPlatformBrowser(this.platformId)) {\n document.body.removeEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n private onKeyUp(event: KeyboardEvent) {\n if (this.modalStack.length && event.key === Keys.Escape) {\n // We blur the active element because escaping with an input element in focus could cause\n // an ExpressionChangedAfterItHasBeenCheckedError for the touched state. (CDE-1662)\n (document.activeElement as HTMLElement).blur();\n\n this.modalStack[0].close();\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 { Injectable } from '@angular/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ClrModalConfigurationService {\n fadeMove = 'fadeDown';\n backdrop = true;\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 { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n SimpleChange,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService, ScrollingService, uniqueIdFactory } from '@clr/angular/utils';\n\nimport { ClrModalConfigurationService } from './modal-configuration.service';\nimport { ModalStackService } from './modal-stack.service';\n\n@Component({\n selector: 'clr-modal',\n viewProviders: [ScrollingService],\n templateUrl: './modal.html',\n styles: [\n `\n :host {\n display: none;\n }\n :host.open {\n display: inline;\n }\n `,\n ],\n animations: [\n trigger('fadeMove', [\n transition('* => fadeDown', [\n style({ opacity: 0, transform: 'translate(0, -25%)' }),\n animate('0.2s ease-in-out'),\n ]),\n transition('fadeDown => *', [\n animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' })),\n ]),\n transition('* => fadeLeft', [style({ opacity: 0, transform: 'translate(25%, 0)' }), animate('0.2s ease-in-out')]),\n transition('fadeLeft => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(25%, 0)' }))]),\n transition('* => fadeUp', [style({ opacity: 0, transform: 'translate(0, 50%)' }), animate('0.2s ease-in-out')]),\n transition('fadeUp => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, 50%)' }))]),\n ]),\n trigger('fade', [\n transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),\n transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),\n ]),\n ],\n standalone: false,\n})\nexport class ClrModal implements OnChanges, OnDestroy {\n modalId = uniqueIdFactory();\n @ViewChild('title') title: ElementRef<HTMLElement>;\n\n @Input('clrModalOpen') @HostBinding('class.open') _open = false;\n @Output('clrModalOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n @Input('clrModalClosable') closable = true;\n @Input('clrModalCloseButtonAriaLabel') closeButtonAriaLabel = this.commonStrings.keys.close;\n @Input('clrModalSize') size = 'md';\n @Input('clrModalStaticBackdrop') staticBackdrop = true;\n @Input('clrModalSkipAnimation') skipAnimation = false;\n\n @Input('clrModalPreventClose') stopClose = false;\n @Output('clrModalAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n @Input('clrModalLabelledById') labelledBy: string;\n\n // presently this is only used by inline wizards\n @Input('clrModalOverrideScrollService') bypassScrollService = false;\n\n // Provide raw modal content. This is used by the wizard so that the same template can be rendered with and without a modal.\n @ContentChild('clrInternalModalContentTemplate') protected readonly modalContentTemplate: TemplateRef<any>;\n\n @ViewChild('body') private readonly bodyElementRef: ElementRef<HTMLElement>;\n\n constructor(\n private _scrollingService: ScrollingService,\n public commonStrings: ClrCommonStringsService,\n private modalStackService: ModalStackService,\n private configuration: ClrModalConfigurationService\n ) {}\n\n get fadeMove(): string {\n return this.skipAnimation ? '' : this.configuration.fadeMove;\n }\n set fadeMove(move: string) {\n this.configuration.fadeMove = move;\n }\n\n get backdrop(): boolean {\n return this.configuration.backdrop;\n }\n\n // Detect when _open is set to true and set no-scrolling to true\n ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n if (!this.bypassScrollService && changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {\n if (changes._open.currentValue) {\n this._scrollingService.stopScrolling();\n this.modalStackService.trackModalOpen(this);\n } else {\n this._scrollingService.resumeScrolling();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._scrollingService.resumeScrolling();\n }\n\n open(): void {\n if (this._open) {\n return;\n }\n this._open = true;\n this._openChanged.emit(true);\n this.modalStackService.trackModalOpen(this);\n }\n\n backdropClick(): void {\n if (this.staticBackdrop) {\n return;\n }\n\n this.close();\n }\n\n close(): void {\n if (this.stopClose) {\n this.altClose.emit(false);\n return;\n }\n if (!this.closable || !this._open) {\n return;\n }\n this._open = false;\n }\n\n fadeDone(e: AnimationEvent) {\n if (e.toState === 'void') {\n // TODO: Investigate if we can decouple from animation events\n this._openChanged.emit(false);\n this.modalStackService.trackModalClose(this);\n }\n }\n\n scrollTop() {\n this.bodyElementRef.nativeElement.scrollTo(0, 0);\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\n@if (_open) {\n<div class=\"modal\" [class.modal-full-screen]=\"size == 'full-screen'\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeMove]=\"fadeMove\"\n (@fadeMove.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy || modalId\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <!-- This wizard is tightly coupled to the modal styles, so changes here could require changes in the wizard. -->\n @if (!modalContentTemplate) {\n <div class=\"modal-content-wrapper\">\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <ng-content select=\".leading-button\"></ng-content>\n <div class=\"modal-title-wrapper\" #title [id]=\"modalId\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n @if (closable) {\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n }\n </div>\n <div #body class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n } @else {\n <ng-template [ngTemplateOutlet]=\"modalContentTemplate\"></ng-template>\n }\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n @if (backdrop) {\n <div\n [@fade]\n class=\"modal-backdrop\"\n [class.static]=\"staticBackdrop\"\n aria-hidden=\"true\"\n (click)=\"backdropClick()\"\n ></div>\n }\n</div>\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 { Directive, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';\n\n/**\n * Allows modal overflow area to be scrollable via keyboard.\n * The modal body will focus with keyboard navigation only.\n * This allows inner focusable items to be focused without\n * the overflow scroll being focused.\n */\n@Directive({\n selector: '.modal-body',\n standalone: false,\n})\nexport class ClrModalBody implements OnDestroy {\n private tabindex = '0';\n private unlisteners: VoidFunction[] = [];\n private observer: ResizeObserver;\n\n constructor(\n private readonly renderer: Renderer2,\n private readonly host: ElementRef<HTMLElement>,\n ngZone: NgZone\n ) {\n ngZone.runOutsideAngular(() => {\n this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());\n this.observer.observe(host.nativeElement);\n\n this.unlisteners.push(\n renderer.listen(host.nativeElement, 'mouseup', () => {\n // set the tabindex binding back when click is completed with mouseup\n this.addOrRemoveTabIndex();\n }),\n renderer.listen(host.nativeElement, 'mousedown', () => {\n // tabindex = 0 binding should be removed\n // so it won't be focused when click starts with mousedown\n this.removeTabIndex();\n })\n );\n });\n }\n\n ngOnDestroy(): void {\n while (this.unlisteners.length) {\n this.unlisteners.pop()();\n }\n\n this.observer.disconnect();\n this.observer = null;\n }\n\n private addTabIndex() {\n this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);\n }\n\n private removeTabIndex() {\n this.renderer.removeAttribute(this.host.nativeElement, 'tabindex');\n }\n\n private addOrRemoveTabIndex() {\n const modalBody = this.host.nativeElement.parentElement;\n\n if (modalBody && modalBody.clientHeight < modalBody.scrollHeight) {\n this.addTabIndex();\n } else {\n this.removeTabIndex();\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 { Component } from '@angular/core';\n\n@Component({\n selector: '[clrModalHost]',\n host: { '[class.clr-modal-host]': 'true' },\n template: `\n <div class=\"clr-modal-host-scrollable\">\n <ng-content></ng-content>\n </div>\n `,\n standalone: false,\n})\nexport class ClrModalHostComponent {}\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 { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, ClrIcon, windowCloseIcon } from '@clr/angular/icon';\nimport { CdkTrapFocusModule } from '@clr/angular/utils';\n\nimport { ClrModal } from './modal';\nimport { ClrModalBody } from './modal-body';\nimport { ClrModalHostComponent } from './modal-host.component';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody, ClrModalHostComponent];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIcon],\n declarations: [CLR_MODAL_DIRECTIVES],\n exports: [CLR_MODAL_DIRECTIVES, ClrIcon],\n})\nexport class ClrModalModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon);\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 {\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { ClrModal } from './modal';\nimport { ClrModalConfigurationService } from './modal-configuration.service';\n\n@Component({\n selector: 'clr-side-panel',\n templateUrl: 'side-panel.html',\n host: {\n '[class.side-panel]': 'true',\n },\n standalone: false,\n})\nexport class ClrSidePanel implements OnInit, OnDestroy {\n @Output('clrSidePanelOpenChange') openChange = new EventEmitter<boolean>(false);\n @Input('clrSidePanelCloseButtonAriaLabel') closeButtonAriaLabel: string | undefined;\n @Input('clrSidePanelSkipAnimation') skipAnimation = false;\n @Input('clrSidePanelLabelledById') labelledById: string;\n @Input('clrSidePanelStaticBackdrop') staticBackdrop = false;\n @Input('clrSidePanelClosable') closable = true;\n @Input('clrSidePanelPreventClose') preventClose = false;\n @Output('clrSidePanelAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n private _pinnable = false;\n private _pinned = false;\n private originalStopClose: boolean;\n private _position = 'right';\n private _modal: ClrModal;\n private __open = false;\n\n private _size = 'md';\n\n constructor(\n private element: ElementRef<HTMLElement>,\n private configuration: ClrModalConfigurationService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrSidePanelOpen')\n get _open(): boolean {\n return this.__open;\n }\n set _open(open: boolean) {\n if (open !== this.__open) {\n this.__open = open;\n if (this.pinned) {\n this.updateModalState();\n }\n }\n }\n\n @Input('clrSidePanelSize')\n get size(): string {\n return this._size;\n }\n\n set size(value: string) {\n if (!value) {\n value = 'md';\n }\n if (this._size !== value) {\n this._size = value;\n if (this.pinned) {\n this.updateModalState();\n }\n }\n }\n\n @Input('clrSidePanelPosition')\n get position(): string {\n return this._position;\n }\n\n set position(position: string) {\n if (position && position !== this._position) {\n this._position = position;\n if (this._position === 'right') {\n this.configuration.fadeMove = 'fadeLeft';\n } else if (this._position === 'bottom') {\n this.configuration.fadeMove = 'fadeUp';\n }\n }\n }\n\n @Input('clrSidePanelPinned')\n get pinned(): boolean {\n return this._pinned;\n }\n\n set pinned(pinned: boolean) {\n this._pinned = pinned;\n if (this.modal) {\n this.updateModalState();\n }\n }\n\n @Input()\n get clrSidePanelBackdrop(): boolean {\n return this.configuration.backdrop;\n }\n\n set clrSidePanelBackdrop(backdrop: boolean) {\n if (backdrop !== undefined) {\n this.configuration.backdrop = backdrop;\n }\n }\n\n @Input()\n get clrSidePanelPinnable(): boolean {\n return this._pinnable;\n }\n\n set clrSidePanelPinnable(pinnable: boolean) {\n this._pinnable = pinnable;\n }\n\n @ViewChild(ClrModal)\n private get modal(): ClrModal {\n return this._modal;\n }\n\n private set modal(modal: ClrModal) {\n this._modal = modal;\n this.originalStopClose = this.modal.stopClose;\n this.updateModalState();\n }\n\n private get hostElement(): HTMLElement {\n return (this.element.nativeElement as HTMLElement).closest('.clr-modal-host') || document.body;\n }\n\n @HostBinding('class.side-panel-bottom')\n private get bottomPositionCssClass() {\n return this.position === 'bottom';\n }\n\n ngOnInit(): void {\n this.configuration.fadeMove = 'fadeLeft';\n if (this.position === 'bottom') {\n this.configuration.fadeMove = 'fadeUp';\n }\n }\n\n ngOnDestroy(): void {\n this.cleanupPinnedClasses();\n }\n\n handleModalOpen(open: boolean) {\n if (open) {\n this.updateModalState();\n } else {\n this.cleanupPinnedClasses();\n }\n this.openChange.emit(open);\n }\n\n open() {\n this.modal.open();\n }\n\n close() {\n this.modal.close();\n }\n\n togglePinned() {\n this.pinned = !this.pinned;\n }\n\n @HostListener('document:pointerup', ['$event'])\n private documentClick(event: Event) {\n if (\n !this.element.nativeElement.contains(event.target as Node) &&\n this.modal._open &&\n !this.configuration.backdrop\n ) {\n this.modal.close();\n }\n }\n\n private updateModalState() {\n if (!this.modal) {\n return;\n }\n if (this.pinned) {\n this.modal.stopClose = true;\n if (this.__open) {\n this.updatePinnedClasses();\n }\n } else {\n this.modal.stopClose = this.originalStopClose;\n this.cleanupPinnedClasses();\n }\n }\n\n private cleanupPinnedClasses() {\n [this.hostElement, document.body].forEach(host => {\n host.classList.forEach(className => {\n if (className.startsWith('clr-side-panel-pinned-')) {\n host.classList.remove(className);\n }\n });\n });\n }\n\n private updatePinnedClasses() {\n this.cleanupPinnedClasses();\n this.hostElement.classList.add(`clr-side-panel-pinned-${this.position}-${this.size}`);\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<clr-modal\n [clrModalOpen]=\"_open\"\n (clrModalOpenChange)=\"handleModalOpen($event)\"\n [clrModalCloseButtonAriaLabel]=\"closeButtonAriaLabel\"\n [clrModalSize]=\"size\"\n [clrModalSkipAnimation]=\"skipAnimation\"\n [clrModalStaticBackdrop]=\"staticBackdrop\"\n [clrModalLabelledById]=\"labelledById\"\n [clrModalPreventClose]=\"preventClose\"\n [clrModalClosable]=\"closable\"\n (clrModalAlternateClose)=\"altClose.emit($event)\"\n [clrModalOverrideScrollService]=\"true\"\n>\n @if (clrSidePanelPinnable) {\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.sidePanelPin\"\n class=\"leading-button pinnable\"\n (click)=\"togglePinned()\"\n >\n <cds-icon [shape]=\"pinned ? 'unpin' : 'pin'\"></cds-icon>\n </button>\n }\n <div class=\"modal-title\"><ng-content select=\".side-panel-title\"></ng-content></div>\n <div class=\"modal-body\"><ng-content select=\".side-panel-body\"></ng-content></div>\n <div class=\"modal-footer\"><ng-content select=\".side-panel-footer\"></ng-content></div>\n</clr-modal>\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 { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrIcon } from '@clr/angular/icon';\nimport { CdkTrapFocusModule } from '@clr/angular/utils';\n\nimport { ClrModalModule } from './modal.module';\nimport { ClrSidePanel } from './side-panel';\n\nexport const CLR_SIDEPANEL_DIRECTIVES: Type<any>[] = [ClrSidePanel];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIcon, ClrModalModule],\n declarations: [CLR_SIDEPANEL_DIRECTIVES],\n exports: [CLR_SIDEPANEL_DIRECTIVES, ClrModalModule, ClrIcon],\n})\nexport class ClrSidePanelModule {}\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\nexport * from './modal';\nexport * from './modal.module';\nexport * from './modal-configuration.service';\nexport * from './modal-host.component';\nexport * from './side-panel.module';\nexport * from './modal-body';\nexport * from './side-panel';\nexport * from './modal-stack.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.ModalStackService","i3.ClrModalConfigurationService","i1.ClrModalConfigurationService","i2","i3","i4.ClrModal","i5.ClrModalBody"],"mappings":"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"}
@@ -11,6 +11,8 @@ import { filter } from 'rxjs/operators';
11
11
 
12
12
  class ClrPopoverService {
13
13
  constructor() {
14
+ // use to connect 2 unrelated (not nested) Popovers to make them nested
15
+ this.parent = null;
14
16
  this.panelClass = [];
15
17
  this._open = false;
16
18
  this._openChange = new Subject();
@@ -101,10 +103,10 @@ class ClrPopoverService {
101
103
  focusOrigin() {
102
104
  this.originElement?.nativeElement?.focus({ preventScroll: true });
103
105
  }
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
105
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService }); }
106
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
107
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverService }); }
106
108
  }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverService, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverService, decorators: [{
108
110
  type: Injectable
109
111
  }] });
110
112
 
@@ -981,19 +983,44 @@ class ClrPopoverContent {
981
983
  /**
982
984
  * Uses IntersectionObserver to detect when the origin element leaves the screen.
983
985
  * This handles the "Close on Scroll" logic much cheaper than getBoundingClientRect.
986
+ *
987
+ * An origin that is fully visible when the popover opens closes it once less than 80% of it is
988
+ * visible. An origin that is only partially visible (e.g. clipped on a narrow screen) closes it
989
+ * once it is completely out of view - reported by the 0 threshold. An origin that is completely
990
+ * hidden when the popover opens closes it right away.
984
991
  */
985
992
  setupIntersectionObserver() {
986
993
  if (!this.popoverService.originElement || this.intersectionObserver) {
987
994
  return;
988
995
  }
996
+ const fullyVisibleAtOpenRatio = 0.8;
997
+ const notFullyVisibleAtOpenRatio = 0;
998
+ let fullyVisibleAtOpen;
989
999
  this.intersectionObserver = new IntersectionObserver(entries => {
1000
+ // cycle through all possible entries, usually only one, but not to miss any by limiting to the first one.
990
1001
  entries.forEach(entry => {
991
- // If the origin is no longer visible (scrolled out of view)
992
- if (!entry.isIntersecting && this.popoverService.open) {
1002
+ // isIntersecting is not used: with the 0 threshold it is true for any partially visible origin
1003
+ const { rootBounds, intersectionRatio } = entry;
1004
+ // Screenshot tools briefly resize the window to 1x1. rootBounds is null in a cross-origin iframe
1005
+ // and empty (0x0) for a display: none origin, which still counts as hidden.
1006
+ if (rootBounds && rootBounds.width > 0 && (rootBounds.width <= 1 || rootBounds.height <= 1)) {
1007
+ return;
1008
+ }
1009
+ if (fullyVisibleAtOpen === undefined) {
1010
+ if (intersectionRatio === notFullyVisibleAtOpenRatio) {
1011
+ this.zone.run(() => this.closePopover());
1012
+ return;
1013
+ }
1014
+ fullyVisibleAtOpen = intersectionRatio === 1;
1015
+ }
1016
+ const outOfView = fullyVisibleAtOpen
1017
+ ? intersectionRatio < fullyVisibleAtOpenRatio
1018
+ : intersectionRatio === notFullyVisibleAtOpenRatio;
1019
+ if (outOfView && this.popoverService.open) {
993
1020
  this.zone.run(() => this.closePopover());
994
1021
  }
995
1022
  });
996
- }, { root: null, threshold: 0.8 });
1023
+ }, { root: null, threshold: [notFullyVisibleAtOpenRatio, fullyVisibleAtOpenRatio] });
997
1024
  this.intersectionObserver.observe(this.popoverService.originElement.nativeElement);
998
1025
  }
999
1026
  listenToScrollEvents() {
@@ -1018,16 +1045,24 @@ class ClrPopoverContent {
1018
1045
  }));
1019
1046
  });
1020
1047
  }
1021
- getRootPopover(popover) {
1022
- if (popover && popover.parent) {
1023
- return this.getRootPopover(popover.parent);
1048
+ getRootPopover(popover, seen = new Set()) {
1049
+ const parent = popover?.parent
1050
+ ? popover.parent
1051
+ : popover.popoverService.parent
1052
+ ? popover.popoverService.parent
1053
+ : null;
1054
+ // `popoverService.parent` is set manually to link otherwise-unrelated popovers together, so
1055
+ // nothing stops two of them pointing at each other - which would otherwise recurse forever.
1056
+ if (parent && !seen.has(popover)) {
1057
+ seen.add(popover);
1058
+ return this.getRootPopover(parent, seen);
1024
1059
  }
1025
1060
  return popover;
1026
1061
  }
1027
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }, { token: i1.OverlayContainer }, { token: ClrPopoverContent, optional: true, skipSelf: true }, { token: i1.Overlay }, { token: ClrPopoverService }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
1028
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverContent, isStandalone: true, selector: "[clrPopoverContent]", inputs: { open: ["clrPopoverContent", "open"], contentAt: ["clrPopoverContentAt", "contentAt"], availablePositions: ["clrPopoverContentAvailablePositions", "availablePositions"], contentType: ["clrPopoverContentType", "contentType"], outsideClickClose: ["clrPopoverContentOutsideClickToClose", "outsideClickClose"], scrollToClose: ["clrPopoverContentScrollToClose", "scrollToClose"], contentOrigin: ["clrPopoverContentOrigin", "contentOrigin"] }, ngImport: i0 }); }
1062
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverContent, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.TemplateRef, optional: true }, { token: i1.OverlayContainer }, { token: ClrPopoverContent, optional: true, skipSelf: true }, { token: i1.Overlay }, { token: ClrPopoverService }, { token: i0.NgZone }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
1063
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrPopoverContent, isStandalone: true, selector: "[clrPopoverContent]", inputs: { open: ["clrPopoverContent", "open"], contentAt: ["clrPopoverContentAt", "contentAt"], availablePositions: ["clrPopoverContentAvailablePositions", "availablePositions"], contentType: ["clrPopoverContentType", "contentType"], outsideClickClose: ["clrPopoverContentOutsideClickToClose", "outsideClickClose"], scrollToClose: ["clrPopoverContentScrollToClose", "scrollToClose"], contentOrigin: ["clrPopoverContentOrigin", "contentOrigin"] }, ngImport: i0 }); }
1029
1064
  }
1030
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverContent, decorators: [{
1065
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverContent, decorators: [{
1031
1066
  type: Directive,
1032
1067
  args: [{
1033
1068
  selector: '[clrPopoverContent]',
@@ -1080,10 +1115,10 @@ class ClrPopoverOrigin {
1080
1115
  constructor(popoverService, element) {
1081
1116
  popoverService.origin = element;
1082
1117
  }
1083
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOrigin, deps: [{ token: ClrPopoverService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1084
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverOrigin, isStandalone: false, selector: "[clrPopoverOrigin]", host: { properties: { "class.clr-popover-origin": "true" } }, ngImport: i0 }); }
1118
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverOrigin, deps: [{ token: ClrPopoverService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1119
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrPopoverOrigin, isStandalone: false, selector: "[clrPopoverOrigin]", host: { properties: { "class.clr-popover-origin": "true" } }, ngImport: i0 }); }
1085
1120
  }
1086
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOrigin, decorators: [{
1121
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverOrigin, decorators: [{
1087
1122
  type: Directive,
1088
1123
  args: [{
1089
1124
  selector: '[clrPopoverOrigin]',
@@ -1129,10 +1164,10 @@ class ClrStopEscapePropagationDirective {
1129
1164
  this.lastOpenChange = null;
1130
1165
  }
1131
1166
  }
1132
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStopEscapePropagationDirective, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1133
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrStopEscapePropagationDirective, isStandalone: true, host: { listeners: { "keyup.escape": "onEscapeKey($event)" } }, ngImport: i0 }); }
1167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrStopEscapePropagationDirective, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1168
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrStopEscapePropagationDirective, isStandalone: true, host: { listeners: { "keyup.escape": "onEscapeKey($event)" } }, ngImport: i0 }); }
1134
1169
  }
1135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrStopEscapePropagationDirective, decorators: [{
1170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrStopEscapePropagationDirective, decorators: [{
1136
1171
  type: Directive,
1137
1172
  args: [{
1138
1173
  standalone: true,
@@ -1149,10 +1184,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1149
1184
  * The full license information can be found in LICENSE in the root directory of this project.
1150
1185
  */
1151
1186
  class ClrPopoverHostDirective {
1152
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1153
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverHostDirective, isStandalone: true, providers: [ClrPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }], hostDirectives: [{ directive: ClrStopEscapePropagationDirective }], ngImport: i0 }); }
1187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverHostDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1188
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrPopoverHostDirective, isStandalone: true, providers: [ClrPopoverService, { provide: POPOVER_HOST_ORIGIN, useExisting: ElementRef }], hostDirectives: [{ directive: ClrStopEscapePropagationDirective }], ngImport: i0 }); }
1154
1189
  }
1155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverHostDirective, decorators: [{
1190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverHostDirective, decorators: [{
1156
1191
  type: Directive,
1157
1192
  args: [{
1158
1193
  standalone: true,
@@ -1233,10 +1268,10 @@ class ClrIfOpen {
1233
1268
  this.container.clear();
1234
1269
  }
1235
1270
  }
1236
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrIfOpen, deps: [{ token: ClrPopoverService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1237
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrIfOpen, isStandalone: true, selector: "[clrIfOpen]", inputs: { open: ["clrIfOpen", "open"] }, outputs: { openChange: "clrIfOpenChange" }, ngImport: i0 }); }
1271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrIfOpen, deps: [{ token: ClrPopoverService }, { token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
1272
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrIfOpen, isStandalone: true, selector: "[clrIfOpen]", inputs: { open: ["clrIfOpen", "open"] }, outputs: { openChange: "clrIfOpenChange" }, ngImport: i0 }); }
1238
1273
  }
1239
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrIfOpen, decorators: [{
1274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrIfOpen, decorators: [{
1240
1275
  type: Directive,
1241
1276
  args: [{
1242
1277
  selector: '[clrIfOpen]',
@@ -1275,10 +1310,10 @@ class ClrPopoverCloseButton {
1275
1310
  ngOnDestroy() {
1276
1311
  this.subscriptions.forEach(sub => sub.unsubscribe());
1277
1312
  }
1278
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverCloseButton, deps: [{ token: i0.ElementRef }, { token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1279
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverCloseButton, isStandalone: false, selector: "[clrPopoverCloseButton]", outputs: { closeChange: "clrPopoverOnCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-close-button": "true" } }, ngImport: i0 }); }
1313
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverCloseButton, deps: [{ token: i0.ElementRef }, { token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1314
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrPopoverCloseButton, isStandalone: false, selector: "[clrPopoverCloseButton]", outputs: { closeChange: "clrPopoverOnCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-close-button": "true" } }, ngImport: i0 }); }
1280
1315
  }
1281
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverCloseButton, decorators: [{
1316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverCloseButton, decorators: [{
1282
1317
  type: Directive,
1283
1318
  args: [{
1284
1319
  selector: '[clrPopoverCloseButton]',
@@ -1316,10 +1351,10 @@ class ClrPopoverOpenCloseButton {
1316
1351
  ngOnDestroy() {
1317
1352
  this.subscriptions.forEach(sub => sub.unsubscribe());
1318
1353
  }
1319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOpenCloseButton, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1320
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.3", type: ClrPopoverOpenCloseButton, isStandalone: false, selector: "[clrPopoverOpenCloseButton]", outputs: { openCloseChange: "clrPopoverOpenCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-open-close": "true" } }, ngImport: i0 }); }
1354
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverOpenCloseButton, deps: [{ token: ClrPopoverService }], target: i0.ɵɵFactoryTarget.Directive }); }
1355
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.25", type: ClrPopoverOpenCloseButton, isStandalone: false, selector: "[clrPopoverOpenCloseButton]", outputs: { openCloseChange: "clrPopoverOpenCloseChange" }, host: { listeners: { "click": "handleClick($event)" }, properties: { "class.clr-smart-open-close": "true" } }, ngImport: i0 }); }
1321
1356
  }
1322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverOpenCloseButton, decorators: [{
1357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverOpenCloseButton, decorators: [{
1323
1358
  type: Directive,
1324
1359
  args: [{
1325
1360
  selector: '[clrPopoverOpenCloseButton]',
@@ -1343,11 +1378,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImpor
1343
1378
  * The full license information can be found in LICENSE in the root directory of this project.
1344
1379
  */
1345
1380
  class ClrPopoverModuleNext {
1346
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1347
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, declarations: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton], imports: [ClrPopoverContent, ClrIfOpen], exports: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen] }); }
1348
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext }); }
1381
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverModuleNext, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1382
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverModuleNext, declarations: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton], imports: [ClrPopoverContent, ClrIfOpen], exports: [ClrPopoverOrigin, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent, ClrIfOpen] }); }
1383
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverModuleNext }); }
1349
1384
  }
1350
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.3", ngImport: i0, type: ClrPopoverModuleNext, decorators: [{
1385
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.25", ngImport: i0, type: ClrPopoverModuleNext, decorators: [{
1351
1386
  type: NgModule,
1352
1387
  args: [{
1353
1388
  imports: [ClrPopoverContent, ClrIfOpen],