@theseam/ui-common 1.0.0-beta.0 → 1.0.0-beta.10

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 (153) hide show
  1. package/breadcrumbs/index.d.ts +1 -2
  2. package/buttons/index.d.ts +20 -13
  3. package/datatable/index.d.ts +77 -39
  4. package/dynamic/index.d.ts +5 -5
  5. package/fesm2022/theseam-ui-common-asset-reader.mjs +28 -29
  6. package/fesm2022/theseam-ui-common-asset-reader.mjs.map +1 -1
  7. package/fesm2022/theseam-ui-common-breadcrumbs.mjs +25 -31
  8. package/fesm2022/theseam-ui-common-breadcrumbs.mjs.map +1 -1
  9. package/fesm2022/theseam-ui-common-buttons.mjs +108 -66
  10. package/fesm2022/theseam-ui-common-buttons.mjs.map +1 -1
  11. package/fesm2022/theseam-ui-common-card.mjs +21 -21
  12. package/fesm2022/theseam-ui-common-card.mjs.map +1 -1
  13. package/fesm2022/theseam-ui-common-carousel.mjs +28 -30
  14. package/fesm2022/theseam-ui-common-carousel.mjs.map +1 -1
  15. package/fesm2022/theseam-ui-common-checkbox.mjs +27 -27
  16. package/fesm2022/theseam-ui-common-checkbox.mjs.map +1 -1
  17. package/fesm2022/theseam-ui-common-confirm-dialog.mjs +23 -27
  18. package/fesm2022/theseam-ui-common-confirm-dialog.mjs.map +1 -1
  19. package/fesm2022/theseam-ui-common-core.mjs +31 -11
  20. package/fesm2022/theseam-ui-common-core.mjs.map +1 -1
  21. package/fesm2022/theseam-ui-common-data-exporter.mjs +18 -19
  22. package/fesm2022/theseam-ui-common-data-exporter.mjs.map +1 -1
  23. package/fesm2022/theseam-ui-common-data-filters.mjs +80 -64
  24. package/fesm2022/theseam-ui-common-data-filters.mjs.map +1 -1
  25. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs +51 -49
  26. package/fesm2022/theseam-ui-common-datatable-alterations-display.mjs.map +1 -1
  27. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs +145 -112
  28. package/fesm2022/theseam-ui-common-datatable-dynamic.mjs.map +1 -1
  29. package/fesm2022/theseam-ui-common-datatable.mjs +727 -420
  30. package/fesm2022/theseam-ui-common-datatable.mjs.map +1 -1
  31. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs +12 -14
  32. package/fesm2022/theseam-ui-common-dynamic-component-loader.mjs.map +1 -1
  33. package/fesm2022/theseam-ui-common-dynamic.mjs +60 -48
  34. package/fesm2022/theseam-ui-common-dynamic.mjs.map +1 -1
  35. package/fesm2022/theseam-ui-common-footer-bar.mjs +9 -15
  36. package/fesm2022/theseam-ui-common-footer-bar.mjs.map +1 -1
  37. package/fesm2022/theseam-ui-common-form-field-error.mjs +60 -43
  38. package/fesm2022/theseam-ui-common-form-field-error.mjs.map +1 -1
  39. package/fesm2022/theseam-ui-common-form-field.mjs +129 -76
  40. package/fesm2022/theseam-ui-common-form-field.mjs.map +1 -1
  41. package/fesm2022/theseam-ui-common-framework.mjs +669 -543
  42. package/fesm2022/theseam-ui-common-framework.mjs.map +1 -1
  43. package/fesm2022/theseam-ui-common-google-maps.mjs +206 -149
  44. package/fesm2022/theseam-ui-common-google-maps.mjs.map +1 -1
  45. package/fesm2022/theseam-ui-common-graphql.mjs +311 -254
  46. package/fesm2022/theseam-ui-common-graphql.mjs.map +1 -1
  47. package/fesm2022/theseam-ui-common-icon.mjs +125 -89
  48. package/fesm2022/theseam-ui-common-icon.mjs.map +1 -1
  49. package/fesm2022/theseam-ui-common-layout.mjs +18 -26
  50. package/fesm2022/theseam-ui-common-layout.mjs.map +1 -1
  51. package/fesm2022/theseam-ui-common-loading.mjs +19 -28
  52. package/fesm2022/theseam-ui-common-loading.mjs.map +1 -1
  53. package/fesm2022/theseam-ui-common-menu.mjs +124 -95
  54. package/fesm2022/theseam-ui-common-menu.mjs.map +1 -1
  55. package/fesm2022/theseam-ui-common-modal.mjs +178 -129
  56. package/fesm2022/theseam-ui-common-modal.mjs.map +1 -1
  57. package/fesm2022/theseam-ui-common-models.mjs +3 -3
  58. package/fesm2022/theseam-ui-common-models.mjs.map +1 -1
  59. package/fesm2022/theseam-ui-common-navigation-reload.mjs +13 -11
  60. package/fesm2022/theseam-ui-common-navigation-reload.mjs.map +1 -1
  61. package/fesm2022/theseam-ui-common-popover.mjs +81 -88
  62. package/fesm2022/theseam-ui-common-popover.mjs.map +1 -1
  63. package/fesm2022/theseam-ui-common-progress.mjs +15 -19
  64. package/fesm2022/theseam-ui-common-progress.mjs.map +1 -1
  65. package/fesm2022/theseam-ui-common-rich-text.mjs +65 -52
  66. package/fesm2022/theseam-ui-common-rich-text.mjs.map +1 -1
  67. package/fesm2022/theseam-ui-common-scrollbar.mjs +12 -9
  68. package/fesm2022/theseam-ui-common-scrollbar.mjs.map +1 -1
  69. package/fesm2022/theseam-ui-common-services.mjs +41 -26
  70. package/fesm2022/theseam-ui-common-services.mjs.map +1 -1
  71. package/fesm2022/theseam-ui-common-shared.mjs +149 -159
  72. package/fesm2022/theseam-ui-common-shared.mjs.map +1 -1
  73. package/fesm2022/theseam-ui-common-storage.mjs +9 -6
  74. package/fesm2022/theseam-ui-common-storage.mjs.map +1 -1
  75. package/fesm2022/theseam-ui-common-story-helpers.mjs +148 -86
  76. package/fesm2022/theseam-ui-common-story-helpers.mjs.map +1 -1
  77. package/fesm2022/theseam-ui-common-tabbed.mjs +43 -39
  78. package/fesm2022/theseam-ui-common-tabbed.mjs.map +1 -1
  79. package/fesm2022/theseam-ui-common-table-cell-type.mjs +63 -39
  80. package/fesm2022/theseam-ui-common-table-cell-type.mjs.map +1 -1
  81. package/fesm2022/theseam-ui-common-table-cell-types.mjs +182 -144
  82. package/fesm2022/theseam-ui-common-table-cell-types.mjs.map +1 -1
  83. package/fesm2022/theseam-ui-common-table.mjs +62 -41
  84. package/fesm2022/theseam-ui-common-table.mjs.map +1 -1
  85. package/fesm2022/theseam-ui-common-tel-input.mjs +98 -63
  86. package/fesm2022/theseam-ui-common-tel-input.mjs.map +1 -1
  87. package/fesm2022/theseam-ui-common-testing.mjs +13 -10
  88. package/fesm2022/theseam-ui-common-testing.mjs.map +1 -1
  89. package/fesm2022/theseam-ui-common-tiled-select.mjs +54 -50
  90. package/fesm2022/theseam-ui-common-tiled-select.mjs.map +1 -1
  91. package/fesm2022/theseam-ui-common-toggle-edit.mjs +41 -37
  92. package/fesm2022/theseam-ui-common-toggle-edit.mjs.map +1 -1
  93. package/fesm2022/theseam-ui-common-toggle-group.mjs +30 -31
  94. package/fesm2022/theseam-ui-common-toggle-group.mjs.map +1 -1
  95. package/fesm2022/theseam-ui-common-tooltip.mjs +225 -66
  96. package/fesm2022/theseam-ui-common-tooltip.mjs.map +1 -1
  97. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs +14 -12
  98. package/fesm2022/theseam-ui-common-unsaved-changes-dialog.mjs.map +1 -1
  99. package/fesm2022/theseam-ui-common-utils.mjs +113 -77
  100. package/fesm2022/theseam-ui-common-utils.mjs.map +1 -1
  101. package/fesm2022/theseam-ui-common-validators.mjs +10 -9
  102. package/fesm2022/theseam-ui-common-validators.mjs.map +1 -1
  103. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs +39 -17
  104. package/fesm2022/theseam-ui-common-vertical-list-filter.mjs.map +1 -1
  105. package/fesm2022/theseam-ui-common-viewers.mjs +80 -53
  106. package/fesm2022/theseam-ui-common-viewers.mjs.map +1 -1
  107. package/fesm2022/theseam-ui-common-widget.mjs +288 -314
  108. package/fesm2022/theseam-ui-common-widget.mjs.map +1 -1
  109. package/form-field/index.d.ts +1 -1
  110. package/framework/base-layout/base-layout.component.scss +9 -4
  111. package/framework/base-layout/styles/_variables.scss +4 -9
  112. package/framework/dashboard/dashboard-widgets/dashboard-widgets.component.scss +6 -4
  113. package/framework/index.d.ts +6 -6
  114. package/framework/nav/nav-item/nav-item.component.scss +7 -6
  115. package/framework/nav/styles/_themes/light/_variables.scss +21 -5
  116. package/framework/nav/styles/_themes/primary/_variables.scss +21 -5
  117. package/framework/side-nav/side-nav-item/side-nav-item.component.scss +5 -2
  118. package/framework/side-nav/styles/_themes/light/_variables.scss +5 -1
  119. package/framework/side-nav/styles/_themes/primary/_variables.scss +25 -5
  120. package/graphql/index.d.ts +49 -7
  121. package/modal/README.md +5 -5
  122. package/modal/index.d.ts +1 -1
  123. package/models/index.d.ts +1 -1
  124. package/package.json +59 -60
  125. package/popover/index.d.ts +0 -2
  126. package/progress/progress-circle/styles/_variables.scss +15 -3
  127. package/shared/index.d.ts +0 -13
  128. package/story-helpers/index.d.ts +11 -1
  129. package/styles/bootstrap/_bootstrap.scss +34 -34
  130. package/styles/bootstrap/_bs-styles.scss +4 -8
  131. package/styles/bootstrap/_bs-utilities.scss +4 -4
  132. package/styles/bootstrap/_bs-variables.scss +65 -70
  133. package/styles/common/_forms.scss +9 -10
  134. package/styles/common/_global.scss +0 -1
  135. package/styles/common/_hacks.scss +1 -1
  136. package/styles/common/_table.scss +0 -1
  137. package/styles/common/_text.scss +3 -1
  138. package/styles/theme.scss +1 -1
  139. package/styles/vendor/ng-select/_ng-select-bs4.scss +292 -294
  140. package/styles/vendor/ngx-datatable/_ngx-datatable.scss +63 -32
  141. package/styles/vendor/ngx-datatable/_themes/bootstrap/_variables.scss +37 -10
  142. package/styles/vendor/ngx-datatable/_themes/material/_variables.scss +3 -1
  143. package/styles/vendor/quill/_quill.scss +15 -9
  144. package/table/index.d.ts +4 -1
  145. package/table-cell-type/index.d.ts +27 -2
  146. package/tel-input/README.md +27 -27
  147. package/utils/index.d.ts +3 -3
  148. package/viewers/index.d.ts +9 -2
  149. package/widget/_widget-theme.scss +1 -1
  150. package/widget/styles/_variables.scss +2 -2
  151. package/widget/widget/widget.component.scss +0 -2
  152. package/widget/widget-content-components/widget-tile/widget-tile.component.scss +1 -3
  153. package/widget/widget-footer/widget-footer.component.scss +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-tooltip.mjs","sources":["../../../projects/ui-common/tooltip/tooltip.component.ts","../../../projects/ui-common/tooltip/tooltip.component.html","../../../projects/ui-common/tooltip/tooltip.directive.ts","../../../projects/ui-common/tooltip/tooltip.module.ts","../../../projects/ui-common/tooltip/theseam-ui-common-tooltip.ts"],"sourcesContent":["import { AnimationEvent, transition, trigger, style, animate } from '@angular/animations'\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport { Subject } from 'rxjs'\n\nexport type TheSeamTooltipPlacement =\n | 'top' | 'top-left' | 'top-right'\n | 'bottom' | 'bottom-left' | 'bottom-right'\n | 'left' | 'left-top' | 'left-bottom'\n | 'right' | 'right-top' | 'right-bottom'\n | 'auto'\n\n@Component({\n selector: 'seam-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('150ms ease-out', style({ opacity: 0.9 })),\n ]),\n transition(':leave', [\n style({ opacity: 0.9 }),\n animate('150ms ease-in', style({ opacity: 0 })),\n ]),\n ]),\n ],\n host: {\n class: 'tooltip show',\n '[id]': 'tooltipId',\n '[@fadeInOut]': '',\n '(@fadeInOut.start)': '_onAnimationStart($event)',\n '(@fadeInOut.done)': '_onAnimationDone($event)',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n NgIf,\n NgClass,\n NgTemplateOutlet,\n ],\n})\nexport class TheSeamTooltipComponent implements OnDestroy {\n\n @Input() content: string | TemplateRef<any> | null = null\n @Input() tooltipClass?: string\n @Input() context?: any\n @Input() placement: TheSeamTooltipPlacement = 'top'\n @Input() actualPlacement?: TheSeamTooltipPlacement // The actual placement determined by CDK Overlay\n @Input() tooltipId?: string\n @Input() triggerElement?: HTMLElement\n\n /** A subject emitting after the tooltip enters the view. */\n readonly _afterEnter: Subject<void> = new Subject()\n\n /** A subject emitting after the tooltip exits the view. */\n readonly _afterExit: Subject<void> = new Subject()\n\n @HostBinding('class')\n get hostClasses(): string {\n const baseClass = 'tooltip show'\n const placementClass = this._getPlacementClass()\n this._setArrowPosition()\n return `${baseClass} ${placementClass}`\n }\n\n @ViewChild('inner', { static: true }) innerElement!: ElementRef\n @ViewChild('arrow', { static: true }) arrowElement!: ElementRef\n\n ngOnDestroy() {\n this._afterEnter.complete()\n this._afterExit.complete()\n }\n\n get isStringContent(): boolean {\n return typeof this.content === 'string'\n }\n\n get isTemplateContent(): boolean {\n return this.content instanceof TemplateRef\n }\n\n get templateContent(): TemplateRef<any> | null {\n return this.isTemplateContent ? this.content as TemplateRef<any> : null\n }\n\n private _getPlacementClass(): string {\n // Use actualPlacement if available, otherwise fall back to initial placement\n const effectivePlacement = this.actualPlacement || this.placement\n\n switch (effectivePlacement) {\n case 'top':\n case 'top-left':\n case 'top-right':\n return 'bs-tooltip-top'\n case 'bottom':\n case 'bottom-left':\n case 'bottom-right':\n return 'bs-tooltip-bottom'\n case 'left':\n case 'left-top':\n case 'left-bottom':\n return 'bs-tooltip-left'\n case 'right':\n case 'right-top':\n case 'right-bottom':\n return 'bs-tooltip-right'\n case 'auto':\n return 'bs-tooltip-auto'\n default:\n return 'bs-tooltip-top'\n }\n }\n\n private _setArrowPosition() {\n if (!this.innerElement || !this.arrowElement || !this.triggerElement) {\n return\n }\n\n // Use actualPlacement if available, otherwise fall back to initial placement\n const effectivePlacement = this.actualPlacement || this.placement\n const paddingOffset = 8 // Default padding offset for arrow positioning\n const minDimension = 50 // Minimum tooltip width/height to use trigger-aligned positioning\n\n const triggerRect = this.triggerElement.getBoundingClientRect()\n const tooltipRect: DOMRect = this.innerElement.nativeElement.getBoundingClientRect()\n const arrowRect: DOMRect = this.arrowElement.nativeElement.getBoundingClientRect()\n\n // Default arrow offset (8px padding + half arrow size)\n const defaultArrowOffset = paddingOffset + (effectivePlacement.startsWith('top') || effectivePlacement.startsWith('bottom') ? arrowRect.width / 2 : arrowRect.height / 2)\n\n if (effectivePlacement.startsWith('top') || effectivePlacement.startsWith('bottom')) {\n // Check if tooltip is too narrow for trigger-aligned positioning\n if (tooltipRect.width < minDimension) {\n const arrowLeft = (tooltipRect.width - arrowRect.width) / 2\n this.arrowElement.nativeElement.style.left = `${arrowLeft}px`\n return\n }\n\n // Horizontal arrow positioning for top-* and bottom-* placements\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n const adjustedArrowLeft = triggerCenter - tooltipRect.left - arrowRect.width / 2\n const arrowCenter = tooltipRect.left + adjustedArrowLeft + arrowRect.width / 2\n\n // If arrow's center is outside trigger's horizontal bounds, use default\n if (arrowCenter < triggerRect.left || arrowCenter > triggerRect.right) {\n this.arrowElement.nativeElement.style.left = `${defaultArrowOffset}px`\n return\n }\n\n // Ensure arrow's left is within rounded corner bounds\n const maxArrowLeft = (tooltipRect.width - arrowRect.width) - defaultArrowOffset\n const arrowLeft = Math.min(maxArrowLeft, Math.max(defaultArrowOffset, adjustedArrowLeft))\n\n this.arrowElement.nativeElement.style.left = `${arrowLeft}px`\n } else if (effectivePlacement.startsWith('left') || effectivePlacement.startsWith('right')) {\n // Check if tooltip is too short for trigger-aligned positioning\n if (tooltipRect.height < minDimension) {\n const arrowTop = (tooltipRect.height - arrowRect.height) / 2\n this.arrowElement.nativeElement.style.top = `${arrowTop}px`\n return\n }\n\n // Vertical arrow positioning for left-* and right-* placements\n const triggerCenter = triggerRect.top + triggerRect.height / 2\n const adjustedArrowTop = triggerCenter - tooltipRect.top - arrowRect.height / 2\n const arrowCenter = tooltipRect.top + adjustedArrowTop + arrowRect.height / 2\n\n // If arrow's center is outside trigger's vertical bounds, use default\n if (arrowCenter < triggerRect.top || arrowCenter > triggerRect.bottom) {\n this.arrowElement.nativeElement.style.top = `${defaultArrowOffset}px`\n return\n }\n\n // Ensure arrow's top is within rounded corner bounds\n const maxArrowTop = (tooltipRect.height - arrowRect.height) - defaultArrowOffset\n const arrowTop = Math.min(maxArrowTop, Math.max(defaultArrowOffset, adjustedArrowTop))\n\n this.arrowElement.nativeElement.style.top = `${arrowTop}px`\n }\n }\n\n /** Emit lifecycle events based on animation `start` callback. */\n _onAnimationStart(event: AnimationEvent) {\n // Animation start handling if needed\n }\n\n /** Emit lifecycle events based on animation `done` callback. */\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'void') {\n this._afterExit.next()\n this._afterExit.complete()\n } else {\n this._afterEnter.next()\n this._afterEnter.complete()\n }\n }\n}\n","<div #inner class=\"tooltip-inner\" [ngClass]=\"tooltipClass\">\n <!-- String content -->\n <span *ngIf=\"isStringContent\">{{ content }}</span>\n\n <!-- Template content -->\n <ng-container *ngIf=\"isTemplateContent\">\n <ng-container *ngTemplateOutlet=\"templateContent; context: context\"></ng-container>\n </ng-container>\n</div>\n<div #arrow class=\"arrow\"></div>\n","import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion'\nimport { ESCAPE } from '@angular/cdk/keycodes'\nimport { ConnectionPositionPair, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay'\nimport { ComponentPortal } from '@angular/cdk/portal'\nimport { ComponentRef, Directive, ElementRef, inject, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, TemplateRef, ViewContainerRef } from '@angular/core'\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs'\nimport { takeUntil, filter } from 'rxjs/operators'\n\nimport { TheSeamTooltipComponent, TheSeamTooltipPlacement } from './tooltip.component'\n\nexport type TheSeamTooltipTrigger = 'hover' | 'focus' | 'both'\nexport type TheSeamTooltipPlacementInput = TheSeamTooltipPlacement | TheSeamTooltipPlacement[] | string\n\n/**\n * A custom tooltip directive that replaces \\`ngbTooltip\\` with zero dependencies.\n * Supports both string and template content with full Bootstrap 4.6 compatibility.\n *\n * ## Features\n * - **String & Template Content**: Support for both simple text and complex HTML content\n * - **Multiple Triggers**: Hover, focus, or both\n * - **Flexible Positioning**: 12 placement options with auto-fallback\n * - **Configurable Timing**: Customizable show/hide delays\n * - **Bootstrap Compatible**: Uses Bootstrap 4.6 classes for seamless integration\n * - **Accessibility**: Full ARIA support and keyboard navigation\n * - **Performance**: Lazy creation and proper cleanup\n *\n * ## Migration from ngbTooltip\n * ```typescript\n * // Before\n * <button ngbTooltip=\"Help text\" placement=\"top\" tooltipClass=\"custom\">\n *\n * // After\n * <button seamTooltip=\"Help text\" placement=\"top\" tooltipClass=\"custom\">\n * ```\n */\n@Directive({\n selector: '[seamTooltip]',\n host: {\n '[attr.aria-describedby]': 'tooltipOpen() ? _tooltipId : null',\n },\n exportAs: 'seamTooltip',\n})\nexport class TheSeamTooltipDirective implements OnInit, OnChanges, OnDestroy {\n\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _overlay = inject(Overlay)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n private readonly _tooltipId = `seam-tooltip-${Math.random().toString(36).slice(2, 11)}`\n\n @Input() seamTooltip: string | TemplateRef<any> | null = null\n\n @Input() tooltipClass?: string\n\n @Input() placement?: TheSeamTooltipPlacementInput | null = 'top'\n\n @Input() container?: string | HTMLElement\n\n @Input()\n get disableTooltip() { return this._disableTooltip.value }\n set disableTooltip(val: boolean) { this._disableTooltip.next(coerceBooleanProperty(val)) }\n private readonly _disableTooltip = new BehaviorSubject<boolean>(false)\n\n @Input()\n get showDelay() { return this._showDelay.value }\n set showDelay(val: number) { this._showDelay.next(coerceNumberProperty(val, 500)) }\n private readonly _showDelay = new BehaviorSubject<number>(500)\n\n @Input()\n get hideDelay() { return this._hideDelay.value }\n set hideDelay(val: number) { this._hideDelay.next(coerceNumberProperty(val, 0)) }\n private readonly _hideDelay = new BehaviorSubject<number>(0)\n\n @Input() trigger: TheSeamTooltipTrigger = 'both'\n\n private _active = false\n private _overlayRef: OverlayRef | null = null\n private _compRef: ComponentRef<TheSeamTooltipComponent> | null = null\n private _showTimeoutId: any = null\n private _hideTimeoutId: any = null\n private _eventListenersSubject = new Subject<void>()\n private _documentKeydownSubject = new Subject<void>()\n\n ngOnInit() {\n this._setupEventListeners()\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Re-setup event listeners if trigger changes\n if (changes['trigger'] && !changes['trigger'].firstChange) {\n // Clear any pending timeouts\n this._clearTimeouts()\n // Close any existing tooltip first\n this._closeTooltip()\n // Re-setup event listeners with new trigger\n this._setupEventListeners()\n }\n }\n\n ngOnDestroy() {\n this._clearTimeouts()\n this._closeTooltip()\n this._eventListenersSubject.next()\n this._eventListenersSubject.complete()\n this._documentKeydownSubject.next()\n this._documentKeydownSubject.complete()\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _setupEventListeners() {\n // Clean up existing event listeners\n this._eventListenersSubject.next()\n this._eventListenersSubject.complete()\n this._eventListenersSubject = new Subject<void>()\n\n const element = this._elementRef.nativeElement\n\n // Mouse events for hover trigger\n if (this.trigger === 'hover' || this.trigger === 'both') {\n fromEvent(element, 'mouseenter').pipe(\n filter(() => !this._disableTooltip.value && !!this.seamTooltip),\n takeUntil(this._eventListenersSubject),\n ).subscribe(() => this._scheduleShow())\n\n fromEvent(element, 'mouseleave').pipe(\n takeUntil(this._eventListenersSubject),\n ).subscribe(() => this._scheduleHide())\n }\n\n // Focus events for focus trigger\n if (this.trigger === 'focus' || this.trigger === 'both') {\n fromEvent(element, 'focus').pipe(\n filter(() => !this._disableTooltip.value && !!this.seamTooltip),\n takeUntil(this._eventListenersSubject),\n ).subscribe(() => this._scheduleShow())\n\n fromEvent(element, 'blur').pipe(\n takeUntil(this._eventListenersSubject),\n ).subscribe(() => this._scheduleHide())\n }\n }\n\n private _scheduleShow() {\n this._clearTimeouts()\n\n if (this._active) {\n return\n }\n\n this._showTimeoutId = setTimeout(() => {\n this._showTooltip()\n }, this.showDelay)\n }\n\n private _scheduleHide() {\n this._clearTimeouts()\n\n if (!this._active) {\n return\n }\n\n this._hideTimeoutId = setTimeout(() => {\n this._closeTooltip()\n }, this.hideDelay)\n }\n\n private _clearTimeouts() {\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId)\n this._showTimeoutId = null\n }\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId)\n this._hideTimeoutId = null\n }\n }\n\n private _showTooltip(): void {\n if (this._active || !this.seamTooltip || this._disableTooltip.value) {\n return\n }\n\n this._active = true\n\n const positionStrategy = this._getOverlayPosition()\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n })\n\n this._compRef = this._overlayRef.attach(new ComponentPortal(TheSeamTooltipComponent, this._viewContainerRef))\n\n // Set component properties\n const parsedPlacements = this._parsePlacementInput(this.placement)\n this._compRef.instance.content = this.seamTooltip\n this._compRef.instance.tooltipClass = this.tooltipClass\n this._compRef.instance.placement = parsedPlacements[0] || 'top' // Use first placement for initial display\n this._compRef.instance.tooltipId = this._tooltipId\n this._compRef.instance.triggerElement = this._elementRef.nativeElement\n this._compRef.changeDetectorRef.markForCheck()\n\n // Listen for position changes to update placement class\n positionStrategy.positionChanges.pipe(\n takeUntil(this._ngUnsubscribe),\n ).subscribe(positionChange => {\n if (this._compRef && positionChange.connectionPair) {\n const actualPlacement = this._getPlacementFromConnectionPair(positionChange.connectionPair)\n this._compRef.instance.actualPlacement = actualPlacement\n this._compRef.changeDetectorRef.markForCheck()\n }\n })\n\n // Listen for tooltip exit animation\n this._compRef.instance._afterExit.pipe(\n takeUntil(this._ngUnsubscribe),\n ).subscribe(() => {\n // Only detach if still attached (defensive check since _closeTooltip may have already detached)\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n // Ensure cleanup happens even if _closeTooltip didn't run\n if (this._active || this._overlayRef || this._compRef) {\n this._resetTooltip()\n }\n })\n\n // Set up document-level Escape key listener\n this._setupDocumentKeydownListener()\n }\n\n private _setupDocumentKeydownListener(): void {\n // Clean up any existing document listener\n this._documentKeydownSubject.next()\n this._documentKeydownSubject.complete()\n this._documentKeydownSubject = new Subject<void>()\n\n // Set up document-level Escape key listener\n fromEvent<KeyboardEvent>(document, 'keydown').pipe(\n filter(event => {\n // Check both keyCode and key for better compatibility\n return (event.keyCode === ESCAPE || event.key === 'Escape') && this._active\n }),\n takeUntil(this._documentKeydownSubject),\n takeUntil(this._ngUnsubscribe),\n ).subscribe(() => this._closeTooltip())\n }\n\n private _closeTooltip(): void {\n if (!this._active || !this._compRef) {\n return\n }\n\n // Mark as inactive immediately to prevent new tooltips from being blocked\n this._active = false\n\n // Clean up document listener\n this._documentKeydownSubject.next()\n\n // Immediately clean up for tests (when using NoopAnimationsModule)\n // In real usage, this will be handled by the animation callback\n this._resetTooltip()\n }\n\n private _resetTooltip(): void {\n this._active = false\n\n // Dispose of overlay if it exists and hasn't been disposed already\n if (this._overlayRef) {\n if (this._overlayRef.hasAttached()) {\n this._overlayRef.detach()\n }\n this._overlayRef.dispose()\n this._overlayRef = null\n }\n\n this._compRef = null\n }\n\n public tooltipOpen(): boolean {\n return this._active && this._compRef !== null\n }\n\n private _parsePlacementInput(placement?: TheSeamTooltipPlacementInput | null): TheSeamTooltipPlacement[] {\n if (placement === undefined || placement === null) {\n return ['top'] // Default placement\n }\n\n if (typeof placement === 'string') {\n if (placement === 'auto') {\n return ['auto']\n }\n // Parse space-delimited string\n const placements = placement.split(/\\s+/).filter(p => p.trim())\n return placements.filter(p => this._isValidPlacement(p)) as TheSeamTooltipPlacement[]\n }\n\n if (Array.isArray(placement)) {\n return placement.filter(p => this._isValidPlacement(p))\n }\n\n return [placement]\n }\n\n private _isValidPlacement(placement: string): placement is TheSeamTooltipPlacement {\n const validPlacements: TheSeamTooltipPlacement[] = [\n 'top', 'top-left', 'top-right',\n 'bottom', 'bottom-left', 'bottom-right',\n 'left', 'left-top', 'left-bottom',\n 'right', 'right-top', 'right-bottom',\n 'auto',\n ]\n return validPlacements.includes(placement as TheSeamTooltipPlacement)\n }\n\n private _getOverlayPosition(): FlexibleConnectedPositionStrategy {\n const positions = this._getPositions()\n\n return this._overlay.position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions(positions)\n .withFlexibleDimensions(false)\n .withPush(true)\n }\n\n private _getPositions(): ConnectionPositionPair[] {\n const parsedPlacements = this._parsePlacementInput(this.placement)\n\n // If 'auto' is specified or no valid placements, return all positions\n if (parsedPlacements.includes('auto') || parsedPlacements.length === 0) {\n return [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\n ]\n }\n\n // Return positions for specified placements only\n const positions: ConnectionPositionPair[] = []\n\n for (const placement of parsedPlacements) {\n const placementPositions = this._getPositionForPlacement(placement)\n positions.push(...placementPositions)\n }\n\n return positions\n }\n\n private _getPositionForPlacement(placement: TheSeamTooltipPlacement): ConnectionPositionPair[] {\n switch (placement) {\n case 'top':\n return [{ originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' }]\n case 'top-left':\n return [{ originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' }]\n case 'top-right':\n return [{ originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' }]\n case 'bottom':\n return [{ originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' }]\n case 'bottom-left':\n return [{ originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' }]\n case 'bottom-right':\n return [{ originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' }]\n case 'left':\n return [{ originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' }]\n case 'left-top':\n return [{ originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' }]\n case 'left-bottom':\n return [{ originX: 'start', originY: 'bottom', overlayX: 'end', overlayY: 'bottom' }]\n case 'right':\n return [{ originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' }]\n case 'right-top':\n return [{ originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' }]\n case 'right-bottom':\n return [{ originX: 'end', originY: 'bottom', overlayX: 'start', overlayY: 'bottom' }]\n case 'auto':\n default:\n return [\n { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\n { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\n { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },\n { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },\n ]\n }\n }\n\n private _getPlacementFromConnectionPair(connectionPair: ConnectionPositionPair): TheSeamTooltipPlacement {\n const { originX, originY, overlayX, overlayY } = connectionPair\n\n // Top placements (overlay below origin)\n if (originY === 'top' && overlayY === 'bottom') {\n if (originX === 'start' && overlayX === 'start') return 'top-left'\n if (originX === 'end' && overlayX === 'end') return 'top-right'\n if (originX === 'center' && overlayX === 'center') return 'top'\n }\n\n // Bottom placements (overlay above origin)\n if (originY === 'bottom' && overlayY === 'top') {\n if (originX === 'start' && overlayX === 'start') return 'bottom-left'\n if (originX === 'end' && overlayX === 'end') return 'bottom-right'\n if (originX === 'center' && overlayX === 'center') return 'bottom'\n }\n\n // Left placements (overlay to the right of origin)\n if (originX === 'start' && overlayX === 'end') {\n if (originY === 'top' && overlayY === 'top') return 'left-top'\n if (originY === 'bottom' && overlayY === 'bottom') return 'left-bottom'\n if (originY === 'center' && overlayY === 'center') return 'left'\n }\n\n // Right placements (overlay to the left of origin)\n if (originX === 'end' && overlayX === 'start') {\n if (originY === 'top' && overlayY === 'top') return 'right-top'\n if (originY === 'bottom' && overlayY === 'bottom') return 'right-bottom'\n if (originY === 'center' && overlayY === 'center') return 'right'\n }\n\n // Default fallback\n return 'top'\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { OverlayModule } from '@angular/cdk/overlay'\n\nimport { TheSeamTooltipComponent } from './tooltip.component'\nimport { TheSeamTooltipDirective } from './tooltip.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n TheSeamTooltipComponent,\n TheSeamTooltipDirective,\n ],\n exports: [\n TheSeamTooltipDirective,\n ],\n})\nexport class TheSeamTooltipModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theseam-ui-common-tooltip.mjs","sources":["../../../projects/ui-common/tooltip/tooltip.component.ts","../../../projects/ui-common/tooltip/tooltip.component.html","../../../projects/ui-common/tooltip/tooltip.directive.ts","../../../projects/ui-common/tooltip/tooltip.module.ts","../../../projects/ui-common/tooltip/theseam-ui-common-tooltip.ts"],"sourcesContent":["import {\n AnimationEvent,\n transition,\n trigger,\n style,\n animate,\n} from '@angular/animations'\nimport { NgClass, NgIf, NgTemplateOutlet } from '@angular/common'\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Input,\n OnDestroy,\n TemplateRef,\n ViewChild,\n} from '@angular/core'\nimport { Subject } from 'rxjs'\n\nexport type TheSeamTooltipPlacement =\n | 'top'\n | 'top-left'\n | 'top-right'\n | 'bottom'\n | 'bottom-left'\n | 'bottom-right'\n | 'left'\n | 'left-top'\n | 'left-bottom'\n | 'right'\n | 'right-top'\n | 'right-bottom'\n | 'auto'\n\n@Component({\n selector: 'seam-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n animations: [\n trigger('fadeInOut', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('150ms ease-out', style({ opacity: 0.9 })),\n ]),\n transition(':leave', [\n style({ opacity: 0.9 }),\n animate('150ms ease-in', style({ opacity: 0 })),\n ]),\n ]),\n ],\n host: {\n class: 'tooltip show',\n '[id]': 'tooltipId',\n '[@fadeInOut]': '',\n '(@fadeInOut.start)': '_onAnimationStart($event)',\n '(@fadeInOut.done)': '_onAnimationDone($event)',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [NgIf, NgClass, NgTemplateOutlet],\n})\nexport class TheSeamTooltipComponent implements OnDestroy {\n @Input() content: string | TemplateRef<any> | null = null\n @Input() tooltipClass?: string\n @Input() context?: any\n @Input() placement: TheSeamTooltipPlacement = 'top'\n @Input() actualPlacement?: TheSeamTooltipPlacement // The actual placement determined by CDK Overlay\n @Input() tooltipId?: string\n @Input() triggerElement?: HTMLElement\n\n /** A subject emitting after the tooltip enters the view. */\n readonly _afterEnter = new Subject<void>()\n\n /** A subject emitting after the tooltip exits the view. */\n readonly _afterExit = new Subject<void>()\n\n @HostBinding('class')\n get hostClasses(): string {\n const baseClass = 'tooltip show'\n const placementClass = this._getPlacementClass()\n this._setArrowPosition()\n return `${baseClass} ${placementClass}`\n }\n\n @ViewChild('inner', { static: true }) innerElement!: ElementRef\n @ViewChild('arrow', { static: true }) arrowElement!: ElementRef\n\n ngOnDestroy() {\n this._afterEnter.complete()\n this._afterExit.complete()\n }\n\n get isStringContent(): boolean {\n return typeof this.content === 'string'\n }\n\n get isTemplateContent(): boolean {\n return this.content instanceof TemplateRef\n }\n\n get templateContent(): TemplateRef<any> | null {\n return this.isTemplateContent ? (this.content as TemplateRef<any>) : null\n }\n\n private _getPlacementClass(): string {\n // Use actualPlacement if available, otherwise fall back to initial placement\n const effectivePlacement = this.actualPlacement || this.placement\n\n switch (effectivePlacement) {\n case 'top':\n case 'top-left':\n case 'top-right':\n return 'bs-tooltip-top'\n case 'bottom':\n case 'bottom-left':\n case 'bottom-right':\n return 'bs-tooltip-bottom'\n case 'left':\n case 'left-top':\n case 'left-bottom':\n return 'bs-tooltip-left'\n case 'right':\n case 'right-top':\n case 'right-bottom':\n return 'bs-tooltip-right'\n case 'auto':\n return 'bs-tooltip-auto'\n default:\n return 'bs-tooltip-top'\n }\n }\n\n private _setArrowPosition() {\n if (!this.innerElement || !this.arrowElement || !this.triggerElement) {\n return\n }\n\n // Use actualPlacement if available, otherwise fall back to initial placement\n const effectivePlacement = this.actualPlacement || this.placement\n const paddingOffset = 8 // Default padding offset for arrow positioning\n const minDimension = 50 // Minimum tooltip width/height to use trigger-aligned positioning\n\n const triggerRect = this.triggerElement.getBoundingClientRect()\n const tooltipRect: DOMRect =\n this.innerElement.nativeElement.getBoundingClientRect()\n const arrowRect: DOMRect =\n this.arrowElement.nativeElement.getBoundingClientRect()\n\n // Default arrow offset (8px padding + half arrow size)\n const defaultArrowOffset =\n paddingOffset +\n (effectivePlacement.startsWith('top') ||\n effectivePlacement.startsWith('bottom')\n ? arrowRect.width / 2\n : arrowRect.height / 2)\n\n if (\n effectivePlacement.startsWith('top') ||\n effectivePlacement.startsWith('bottom')\n ) {\n // Check if tooltip is too narrow for trigger-aligned positioning\n if (tooltipRect.width < minDimension) {\n const arrowLeft = (tooltipRect.width - arrowRect.width) / 2\n this.arrowElement.nativeElement.style.left = `${arrowLeft}px`\n return\n }\n\n // Horizontal arrow positioning for top-* and bottom-* placements\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n const adjustedArrowLeft =\n triggerCenter - tooltipRect.left - arrowRect.width / 2\n const arrowCenter =\n tooltipRect.left + adjustedArrowLeft + arrowRect.width / 2\n\n // If arrow's center is outside trigger's horizontal bounds, use default\n if (arrowCenter < triggerRect.left || arrowCenter > triggerRect.right) {\n this.arrowElement.nativeElement.style.left = `${defaultArrowOffset}px`\n return\n }\n\n // Ensure arrow's left is within rounded corner bounds\n const maxArrowLeft =\n tooltipRect.width - arrowRect.width - defaultArrowOffset\n const arrowLeft = Math.min(\n maxArrowLeft,\n Math.max(defaultArrowOffset, adjustedArrowLeft),\n )\n\n this.arrowElement.nativeElement.style.left = `${arrowLeft}px`\n } else if (\n effectivePlacement.startsWith('left') ||\n effectivePlacement.startsWith('right')\n ) {\n // Check if tooltip is too short for trigger-aligned positioning\n if (tooltipRect.height < minDimension) {\n const arrowTop = (tooltipRect.height - arrowRect.height) / 2\n this.arrowElement.nativeElement.style.top = `${arrowTop}px`\n return\n }\n\n // Vertical arrow positioning for left-* and right-* placements\n const triggerCenter = triggerRect.top + triggerRect.height / 2\n const adjustedArrowTop =\n triggerCenter - tooltipRect.top - arrowRect.height / 2\n const arrowCenter =\n tooltipRect.top + adjustedArrowTop + arrowRect.height / 2\n\n // If arrow's center is outside trigger's vertical bounds, use default\n if (arrowCenter < triggerRect.top || arrowCenter > triggerRect.bottom) {\n this.arrowElement.nativeElement.style.top = `${defaultArrowOffset}px`\n return\n }\n\n // Ensure arrow's top is within rounded corner bounds\n const maxArrowTop =\n tooltipRect.height - arrowRect.height - defaultArrowOffset\n const arrowTop = Math.min(\n maxArrowTop,\n Math.max(defaultArrowOffset, adjustedArrowTop),\n )\n\n this.arrowElement.nativeElement.style.top = `${arrowTop}px`\n }\n }\n\n /** Emit lifecycle events based on animation `start` callback. */\n _onAnimationStart(event: AnimationEvent) {\n // Animation start handling if needed\n }\n\n /** Emit lifecycle events based on animation `done` callback. */\n _onAnimationDone(event: AnimationEvent) {\n if (event.toState === 'void') {\n this._afterExit.next()\n this._afterExit.complete()\n } else {\n this._afterEnter.next()\n this._afterEnter.complete()\n }\n }\n}\n","<div #inner class=\"tooltip-inner\" [ngClass]=\"tooltipClass\">\n <!-- String content -->\n <span *ngIf=\"isStringContent\">{{ content }}</span>\n\n <!-- Template content -->\n <ng-container *ngIf=\"isTemplateContent\">\n <ng-container\n *ngTemplateOutlet=\"templateContent; context: context\"\n ></ng-container>\n </ng-container>\n</div>\n<div #arrow class=\"arrow\"></div>\n","import {\n coerceBooleanProperty,\n coerceNumberProperty,\n} from '@angular/cdk/coercion'\nimport { ESCAPE } from '@angular/cdk/keycodes'\nimport {\n ConnectionPositionPair,\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayRef,\n} from '@angular/cdk/overlay'\nimport { ComponentPortal } from '@angular/cdk/portal'\nimport {\n ComponentRef,\n Directive,\n ElementRef,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core'\nimport { BehaviorSubject, fromEvent, Subject } from 'rxjs'\nimport { takeUntil, filter } from 'rxjs/operators'\n\nimport {\n TheSeamTooltipComponent,\n TheSeamTooltipPlacement,\n} from './tooltip.component'\n\nexport type TheSeamTooltipTrigger = 'hover' | 'focus' | 'both'\nexport type TheSeamTooltipPlacementInput =\n | TheSeamTooltipPlacement\n | TheSeamTooltipPlacement[]\n | string\n\n/**\n * A custom tooltip directive that replaces \\`ngbTooltip\\` with zero dependencies.\n * Supports both string and template content with full Bootstrap 4.6 compatibility.\n *\n * ## Features\n * - **String & Template Content**: Support for both simple text and complex HTML content\n * - **Multiple Triggers**: Hover, focus, or both\n * - **Flexible Positioning**: 12 placement options with auto-fallback\n * - **Configurable Timing**: Customizable show/hide delays\n * - **Bootstrap Compatible**: Uses Bootstrap 4.6 classes for seamless integration\n * - **Accessibility**: Full ARIA support and keyboard navigation\n * - **Performance**: Lazy creation and proper cleanup\n *\n * ## Migration from ngbTooltip\n * ```typescript\n * // Before\n * <button ngbTooltip=\"Help text\" placement=\"top\" tooltipClass=\"custom\">\n *\n * // After\n * <button seamTooltip=\"Help text\" placement=\"top\" tooltipClass=\"custom\">\n * ```\n */\n@Directive({\n selector: '[seamTooltip]',\n host: {\n '[attr.aria-describedby]': 'tooltipOpen() ? _tooltipId : null',\n },\n exportAs: 'seamTooltip',\n})\nexport class TheSeamTooltipDirective implements OnInit, OnChanges, OnDestroy {\n private readonly _elementRef = inject(ElementRef<HTMLElement>)\n private readonly _viewContainerRef = inject(ViewContainerRef)\n private readonly _overlay = inject(Overlay)\n\n private readonly _ngUnsubscribe = new Subject<void>()\n private readonly _tooltipId = `seam-tooltip-${Math.random().toString(36).slice(2, 11)}`\n\n @Input() seamTooltip: string | TemplateRef<any> | null = null\n\n @Input() tooltipClass?: string\n\n @Input() placement?: TheSeamTooltipPlacementInput | null = 'top'\n\n @Input() container?: string | HTMLElement\n\n @Input()\n get disableTooltip() {\n return this._disableTooltip.value\n }\n set disableTooltip(val: boolean) {\n this._disableTooltip.next(coerceBooleanProperty(val))\n }\n private readonly _disableTooltip = new BehaviorSubject<boolean>(false)\n\n @Input()\n get showDelay() {\n return this._showDelay.value\n }\n set showDelay(val: number) {\n this._showDelay.next(coerceNumberProperty(val, 500))\n }\n private readonly _showDelay = new BehaviorSubject<number>(500)\n\n @Input()\n get hideDelay() {\n return this._hideDelay.value\n }\n set hideDelay(val: number) {\n this._hideDelay.next(coerceNumberProperty(val, 0))\n }\n private readonly _hideDelay = new BehaviorSubject<number>(0)\n\n @Input() trigger: TheSeamTooltipTrigger = 'both'\n\n private _active = false\n private _overlayRef: OverlayRef | null = null\n private _compRef: ComponentRef<TheSeamTooltipComponent> | null = null\n private _showTimeoutId: any = null\n private _hideTimeoutId: any = null\n private _eventListenersSubject = new Subject<void>()\n private _documentKeydownSubject = new Subject<void>()\n\n ngOnInit() {\n this._setupEventListeners()\n }\n\n ngOnChanges(changes: SimpleChanges) {\n // Re-setup event listeners if trigger changes\n if (changes['trigger'] && !changes['trigger'].firstChange) {\n // Clear any pending timeouts\n this._clearTimeouts()\n // Close any existing tooltip first\n this._closeTooltip()\n // Re-setup event listeners with new trigger\n this._setupEventListeners()\n }\n }\n\n ngOnDestroy() {\n this._clearTimeouts()\n this._closeTooltip()\n this._eventListenersSubject.next()\n this._eventListenersSubject.complete()\n this._documentKeydownSubject.next()\n this._documentKeydownSubject.complete()\n this._ngUnsubscribe.next()\n this._ngUnsubscribe.complete()\n }\n\n private _setupEventListeners() {\n // Clean up existing event listeners\n this._eventListenersSubject.next()\n this._eventListenersSubject.complete()\n this._eventListenersSubject = new Subject<void>()\n\n const element = this._elementRef.nativeElement\n\n // Mouse events for hover trigger\n if (this.trigger === 'hover' || this.trigger === 'both') {\n fromEvent(element, 'mouseenter')\n .pipe(\n filter(() => !this._disableTooltip.value && !!this.seamTooltip),\n takeUntil(this._eventListenersSubject),\n )\n .subscribe(() => this._scheduleShow())\n\n fromEvent(element, 'mouseleave')\n .pipe(takeUntil(this._eventListenersSubject))\n .subscribe(() => this._scheduleHide())\n }\n\n // Focus events for focus trigger\n if (this.trigger === 'focus' || this.trigger === 'both') {\n fromEvent(element, 'focus')\n .pipe(\n filter(() => !this._disableTooltip.value && !!this.seamTooltip),\n takeUntil(this._eventListenersSubject),\n )\n .subscribe(() => this._scheduleShow())\n\n fromEvent(element, 'blur')\n .pipe(takeUntil(this._eventListenersSubject))\n .subscribe(() => this._scheduleHide())\n }\n }\n\n private _scheduleShow() {\n this._clearTimeouts()\n\n if (this._active) {\n return\n }\n\n this._showTimeoutId = setTimeout(() => {\n this._showTooltip()\n }, this.showDelay)\n }\n\n private _scheduleHide() {\n this._clearTimeouts()\n\n if (!this._active) {\n return\n }\n\n this._hideTimeoutId = setTimeout(() => {\n this._closeTooltip()\n }, this.hideDelay)\n }\n\n private _clearTimeouts() {\n if (this._showTimeoutId) {\n clearTimeout(this._showTimeoutId)\n this._showTimeoutId = null\n }\n if (this._hideTimeoutId) {\n clearTimeout(this._hideTimeoutId)\n this._hideTimeoutId = null\n }\n }\n\n private _showTooltip(): void {\n if (this._active || !this.seamTooltip || this._disableTooltip.value) {\n return\n }\n\n this._active = true\n\n const positionStrategy = this._getOverlayPosition()\n this._overlayRef = this._overlay.create({\n positionStrategy,\n scrollStrategy: this._overlay.scrollStrategies.reposition(),\n })\n\n this._compRef = this._overlayRef.attach(\n new ComponentPortal(TheSeamTooltipComponent, this._viewContainerRef),\n )\n\n // Set component properties\n const parsedPlacements = this._parsePlacementInput(this.placement)\n this._compRef.instance.content = this.seamTooltip\n this._compRef.instance.tooltipClass = this.tooltipClass\n this._compRef.instance.placement = parsedPlacements[0] || 'top' // Use first placement for initial display\n this._compRef.instance.tooltipId = this._tooltipId\n this._compRef.instance.triggerElement = this._elementRef.nativeElement\n this._compRef.changeDetectorRef.markForCheck()\n\n // Listen for position changes to update placement class\n positionStrategy.positionChanges\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe((positionChange) => {\n if (this._compRef && positionChange.connectionPair) {\n const actualPlacement = this._getPlacementFromConnectionPair(\n positionChange.connectionPair,\n )\n this._compRef.instance.actualPlacement = actualPlacement\n this._compRef.changeDetectorRef.markForCheck()\n }\n })\n\n // Listen for tooltip exit animation\n this._compRef.instance._afterExit\n .pipe(takeUntil(this._ngUnsubscribe))\n .subscribe(() => {\n // Only detach if still attached (defensive check since _closeTooltip may have already detached)\n if (this._overlayRef?.hasAttached()) {\n this._overlayRef.detach()\n }\n // Ensure cleanup happens even if _closeTooltip didn't run\n if (this._active || this._overlayRef || this._compRef) {\n this._resetTooltip()\n }\n })\n\n // Set up document-level Escape key listener\n this._setupDocumentKeydownListener()\n }\n\n private _setupDocumentKeydownListener(): void {\n // Clean up any existing document listener\n this._documentKeydownSubject.next()\n this._documentKeydownSubject.complete()\n this._documentKeydownSubject = new Subject<void>()\n\n // Set up document-level Escape key listener\n fromEvent<KeyboardEvent>(document, 'keydown')\n .pipe(\n filter((event) => {\n // Check both keyCode and key for better compatibility\n return (\n (event.keyCode === ESCAPE || event.key === 'Escape') && this._active\n )\n }),\n takeUntil(this._documentKeydownSubject),\n takeUntil(this._ngUnsubscribe),\n )\n .subscribe(() => this._closeTooltip())\n }\n\n private _closeTooltip(): void {\n if (!this._active || !this._compRef) {\n return\n }\n\n // Mark as inactive immediately to prevent new tooltips from being blocked\n this._active = false\n\n // Clean up document listener\n this._documentKeydownSubject.next()\n\n // Immediately clean up for tests (when using NoopAnimationsModule)\n // In real usage, this will be handled by the animation callback\n this._resetTooltip()\n }\n\n private _resetTooltip(): void {\n this._active = false\n\n // Dispose of overlay if it exists and hasn't been disposed already\n if (this._overlayRef) {\n if (this._overlayRef.hasAttached()) {\n this._overlayRef.detach()\n }\n this._overlayRef.dispose()\n this._overlayRef = null\n }\n\n this._compRef = null\n }\n\n public tooltipOpen(): boolean {\n return this._active && this._compRef !== null\n }\n\n private _parsePlacementInput(\n placement?: TheSeamTooltipPlacementInput | null,\n ): TheSeamTooltipPlacement[] {\n if (placement === undefined || placement === null) {\n return ['top'] // Default placement\n }\n\n if (typeof placement === 'string') {\n if (placement === 'auto') {\n return ['auto']\n }\n // Parse space-delimited string\n const placements = placement.split(/\\s+/).filter((p) => p.trim())\n return placements.filter((p) =>\n this._isValidPlacement(p),\n ) as TheSeamTooltipPlacement[]\n }\n\n if (Array.isArray(placement)) {\n return placement.filter((p) => this._isValidPlacement(p))\n }\n\n return [placement]\n }\n\n private _isValidPlacement(\n placement: string,\n ): placement is TheSeamTooltipPlacement {\n const validPlacements: TheSeamTooltipPlacement[] = [\n 'top',\n 'top-left',\n 'top-right',\n 'bottom',\n 'bottom-left',\n 'bottom-right',\n 'left',\n 'left-top',\n 'left-bottom',\n 'right',\n 'right-top',\n 'right-bottom',\n 'auto',\n ]\n return validPlacements.includes(placement as TheSeamTooltipPlacement)\n }\n\n private _getOverlayPosition(): FlexibleConnectedPositionStrategy {\n const positions = this._getPositions()\n\n return this._overlay\n .position()\n .flexibleConnectedTo(this._elementRef)\n .withPositions(positions)\n .withFlexibleDimensions(false)\n .withPush(true)\n }\n\n private _getPositions(): ConnectionPositionPair[] {\n const parsedPlacements = this._parsePlacementInput(this.placement)\n\n // If 'auto' is specified or no valid placements, return all positions\n if (parsedPlacements.includes('auto') || parsedPlacements.length === 0) {\n return [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n ]\n }\n\n // Return positions for specified placements only\n const positions: ConnectionPositionPair[] = []\n\n for (const placement of parsedPlacements) {\n const placementPositions = this._getPositionForPlacement(placement)\n positions.push(...placementPositions)\n }\n\n return positions\n }\n\n private _getPositionForPlacement(\n placement: TheSeamTooltipPlacement,\n ): ConnectionPositionPair[] {\n switch (placement) {\n case 'top':\n return [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n ]\n case 'top-left':\n return [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n case 'top-right':\n return [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]\n case 'bottom':\n return [\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n ]\n case 'bottom-left':\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]\n case 'bottom-right':\n return [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]\n case 'left':\n return [\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n ]\n case 'left-top':\n return [\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]\n case 'left-bottom':\n return [\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'bottom',\n },\n ]\n case 'right':\n return [\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n ]\n case 'right-top':\n return [\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]\n case 'right-bottom':\n return [\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]\n case 'auto':\n default:\n return [\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n {\n originX: 'end',\n originY: 'center',\n overlayX: 'start',\n overlayY: 'center',\n },\n {\n originX: 'start',\n originY: 'center',\n overlayX: 'end',\n overlayY: 'center',\n },\n ]\n }\n }\n\n private _getPlacementFromConnectionPair(\n connectionPair: ConnectionPositionPair,\n ): TheSeamTooltipPlacement {\n const { originX, originY, overlayX, overlayY } = connectionPair\n\n // Top placements (overlay below origin)\n if (originY === 'top' && overlayY === 'bottom') {\n if (originX === 'start' && overlayX === 'start') return 'top-left'\n if (originX === 'end' && overlayX === 'end') return 'top-right'\n if (originX === 'center' && overlayX === 'center') return 'top'\n }\n\n // Bottom placements (overlay above origin)\n if (originY === 'bottom' && overlayY === 'top') {\n if (originX === 'start' && overlayX === 'start') return 'bottom-left'\n if (originX === 'end' && overlayX === 'end') return 'bottom-right'\n if (originX === 'center' && overlayX === 'center') return 'bottom'\n }\n\n // Left placements (overlay to the right of origin)\n if (originX === 'start' && overlayX === 'end') {\n if (originY === 'top' && overlayY === 'top') return 'left-top'\n if (originY === 'bottom' && overlayY === 'bottom') return 'left-bottom'\n if (originY === 'center' && overlayY === 'center') return 'left'\n }\n\n // Right placements (overlay to the left of origin)\n if (originX === 'end' && overlayX === 'start') {\n if (originY === 'top' && overlayY === 'top') return 'right-top'\n if (originY === 'bottom' && overlayY === 'bottom') return 'right-bottom'\n if (originY === 'center' && overlayY === 'center') return 'right'\n }\n\n // Default fallback\n return 'top'\n }\n}\n","import { NgModule } from '@angular/core'\nimport { CommonModule } from '@angular/common'\nimport { OverlayModule } from '@angular/cdk/overlay'\n\nimport { TheSeamTooltipComponent } from './tooltip.component'\nimport { TheSeamTooltipDirective } from './tooltip.directive'\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n TheSeamTooltipComponent,\n TheSeamTooltipDirective,\n ],\n exports: [TheSeamTooltipDirective],\n})\nexport class TheSeamTooltipModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -4,30 +4,31 @@ import { Component, NgModule, isDevMode, HostListener, Directive } from '@angula
4
4
  // TODO: Decide if this component should be implemented or just use the native
5
5
  // browser dialog for in-app routing also.
6
6
  class UnsavedChangesDialogComponent {
7
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: UnsavedChangesDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: UnsavedChangesDialogComponent, isStandalone: true, selector: "seam-unsaved-changes-dialog", ngImport: i0, template: ``, isInline: true });
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: UnsavedChangesDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.7", type: UnsavedChangesDialogComponent, isStandalone: true, selector: "seam-unsaved-changes-dialog", ngImport: i0, template: ``, isInline: true });
9
9
  }
10
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: UnsavedChangesDialogComponent, decorators: [{
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: UnsavedChangesDialogComponent, decorators: [{
11
11
  type: Component,
12
12
  args: [{ selector: 'seam-unsaved-changes-dialog', template: `` }]
13
13
  }] });
14
14
 
15
15
  class TheSeamUnsavedChangesDialogModule {
16
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, imports: [UnsavedChangesDialogComponent], exports: [UnsavedChangesDialogComponent] });
18
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamUnsavedChangesDialogModule });
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
17
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.7", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, imports: [UnsavedChangesDialogComponent], exports: [UnsavedChangesDialogComponent] });
18
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamUnsavedChangesDialogModule });
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: TheSeamUnsavedChangesDialogModule, decorators: [{
21
21
  type: NgModule,
22
22
  args: [{
23
23
  imports: [UnsavedChangesDialogComponent],
24
- exports: [UnsavedChangesDialogComponent]
24
+ exports: [UnsavedChangesDialogComponent],
25
25
  }]
26
26
  }] });
27
27
 
28
28
  const UnsavedChangesDialogGuard = (component, currentRoute, currentState, nextState) => {
29
29
  if (isDevMode()) {
30
30
  if (!component.unsavedChangesCanDeactivate) {
31
+ // eslint-disable-next-line no-console
31
32
  console.warn('Route Component with `UnsavedChangesDialogGuard` guard must extend `UnsavedChangesCanDeactivate` class.');
32
33
  }
33
34
  }
@@ -57,13 +58,14 @@ class UnsavedChangesCanDeactivate {
57
58
  }
58
59
  if (!this.unsavedChangesCanDeactivate()) {
59
60
  // $event.returnValue = true
60
- $event.returnValue = 'You have unsaved changes! If you leave, your changes will be lost.';
61
+ $event.returnValue =
62
+ 'You have unsaved changes! If you leave, your changes will be lost.';
61
63
  }
62
64
  }
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: UnsavedChangesCanDeactivate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
64
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: UnsavedChangesCanDeactivate, isStandalone: true, host: { listeners: { "window:beforeunload": "__unloadNotification($event)" } }, ngImport: i0 });
65
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: UnsavedChangesCanDeactivate, deps: [], target: i0.ɵɵFactoryTarget.Directive });
66
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.7", type: UnsavedChangesCanDeactivate, isStandalone: true, host: { listeners: { "window:beforeunload": "__unloadNotification($event)" } }, ngImport: i0 });
65
67
  }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: UnsavedChangesCanDeactivate, decorators: [{
68
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.7", ngImport: i0, type: UnsavedChangesCanDeactivate, decorators: [{
67
69
  type: Directive
68
70
  }], propDecorators: { __unloadNotification: [{
69
71
  type: HostListener,
@@ -1 +1 @@
1
- {"version":3,"file":"theseam-ui-common-unsaved-changes-dialog.mjs","sources":["../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.component.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.module.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.guard.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-can-deactivate.ts","../../../projects/ui-common/unsaved-changes-dialog/theseam-ui-common-unsaved-changes-dialog.ts"],"sourcesContent":["import { Component } from '@angular/core'\n\n// TODO: Decide if this component should be implemented or just use the native\n// browser dialog for in-app routing also.\n\n@Component({\n selector: 'seam-unsaved-changes-dialog',\n template: ``,\n styles: [],\n})\nexport class UnsavedChangesDialogComponent { }\n","import { NgModule } from '@angular/core'\n\nimport { UnsavedChangesDialogComponent } from './unsaved-changes-dialog.component'\n\n@NgModule({\n imports: [UnsavedChangesDialogComponent],\n exports: [UnsavedChangesDialogComponent]\n})\nexport class TheSeamUnsavedChangesDialogModule { }\n","import { isDevMode } from '@angular/core'\nimport { CanDeactivateFn } from '@angular/router'\n\nimport { UnsavedChangesCanDeactivate } from './unsaved-changes-can-deactivate'\n\nexport const UnsavedChangesDialogGuard: CanDeactivateFn<UnsavedChangesCanDeactivate> = (component, currentRoute, currentState, nextState) => {\n if (isDevMode()) {\n if (!component.unsavedChangesCanDeactivate) {\n console.warn(\n 'Route Component with `UnsavedChangesDialogGuard` guard must extend `UnsavedChangesCanDeactivate` class.'\n )\n }\n }\n\n const w = window as any\n // Avoid redirect prevention in Storybook\n if (w && w.__STORYBOOK_CLIENT_API__) {\n return true\n }\n\n if (!component.unsavedChangesCanDeactivate()) {\n return confirm('You have unsaved changes! If you leave, your changes will be lost.')\n }\n\n return true\n}\n","import { Directive, HostListener, isDevMode } from '@angular/core'\n\n@Directive()\nexport abstract class UnsavedChangesCanDeactivate {\n\n abstract unsavedChangesCanDeactivate(): boolean\n\n @HostListener('window:beforeunload', ['$event'])\n __unloadNotification($event: any) {\n if (isDevMode()) {\n if (!this.unsavedChangesCanDeactivate) {\n // eslint-disable-next-line no-console\n console.warn('Route Component with [UnsavedChangesDialogGuard] guard must extend [UnsavedChangesCanDeactivate] class.')\n }\n\n const w = window as any\n // Avoid redirect prevention in Storybook\n if (w && w.__STORYBOOK_CLIENT_API__) {\n return true\n }\n }\n\n if (!this.unsavedChangesCanDeactivate()) {\n // $event.returnValue = true\n $event.returnValue = 'You have unsaved changes! If you leave, your changes will be lost.'\n }\n }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;AACA;MAOa,6BAA6B,CAAA;uGAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uFAH9B,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,YAC7B,CAAA,CAAE,EAAA;;;MCCD,iCAAiC,CAAA;uGAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjC,iCAAiC,EAAA,OAAA,EAAA,CAHlC,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAC7B,6BAA6B,CAAA,EAAA,CAAA;wGAE5B,iCAAiC,EAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,6BAA6B,CAAC;oBACxC,OAAO,EAAE,CAAC,6BAA6B;AACxC,iBAAA;;;ACFM,MAAM,yBAAyB,GAAiD,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,KAAI;IAC1I,IAAI,SAAS,EAAE,EAAE;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE;AAC1C,YAAA,OAAO,CAAC,IAAI,CACV,yGAAyG,CAC1G;QACH;IACF;IAEA,MAAM,CAAC,GAAG,MAAa;;AAEvB,IAAA,IAAI,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,EAAE;AAC5C,QAAA,OAAO,OAAO,CAAC,oEAAoE,CAAC;IACtF;AAEA,IAAA,OAAO,IAAI;AACb;;MCtBsB,2BAA2B,CAAA;AAK7C,IAAA,oBAAoB,CAAC,MAAW,EAAA;QAC9B,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;;AAErC,gBAAA,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC;YACzH;YAEA,MAAM,CAAC,GAAG,MAAa;;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE;;AAEvC,YAAA,MAAM,CAAC,WAAW,GAAG,oEAAoE;QAC3F;IACF;uGAvBkB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADhD;8BAMG,oBAAoB,EAAA,CAAA;sBADnB,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;ACPnD;;AAEG;;;;"}
1
+ {"version":3,"file":"theseam-ui-common-unsaved-changes-dialog.mjs","sources":["../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.component.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.module.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-dialog.guard.ts","../../../projects/ui-common/unsaved-changes-dialog/unsaved-changes-can-deactivate.ts","../../../projects/ui-common/unsaved-changes-dialog/theseam-ui-common-unsaved-changes-dialog.ts"],"sourcesContent":["import { Component } from '@angular/core'\n\n// TODO: Decide if this component should be implemented or just use the native\n// browser dialog for in-app routing also.\n\n@Component({\n selector: 'seam-unsaved-changes-dialog',\n template: ``,\n styles: [],\n})\nexport class UnsavedChangesDialogComponent {}\n","import { NgModule } from '@angular/core'\n\nimport { UnsavedChangesDialogComponent } from './unsaved-changes-dialog.component'\n\n@NgModule({\n imports: [UnsavedChangesDialogComponent],\n exports: [UnsavedChangesDialogComponent],\n})\nexport class TheSeamUnsavedChangesDialogModule {}\n","import { isDevMode } from '@angular/core'\nimport { CanDeactivateFn } from '@angular/router'\n\nimport { UnsavedChangesCanDeactivate } from './unsaved-changes-can-deactivate'\n\nexport const UnsavedChangesDialogGuard: CanDeactivateFn<\n UnsavedChangesCanDeactivate\n> = (component, currentRoute, currentState, nextState) => {\n if (isDevMode()) {\n if (!component.unsavedChangesCanDeactivate) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Route Component with `UnsavedChangesDialogGuard` guard must extend `UnsavedChangesCanDeactivate` class.',\n )\n }\n }\n\n const w = window as any\n // Avoid redirect prevention in Storybook\n if (w && w.__STORYBOOK_CLIENT_API__) {\n return true\n }\n\n if (!component.unsavedChangesCanDeactivate()) {\n return confirm(\n 'You have unsaved changes! If you leave, your changes will be lost.',\n )\n }\n\n return true\n}\n","import { Directive, HostListener, isDevMode } from '@angular/core'\n\n@Directive()\nexport abstract class UnsavedChangesCanDeactivate {\n abstract unsavedChangesCanDeactivate(): boolean\n\n @HostListener('window:beforeunload', ['$event'])\n __unloadNotification($event: any) {\n if (isDevMode()) {\n if (!this.unsavedChangesCanDeactivate) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Route Component with [UnsavedChangesDialogGuard] guard must extend [UnsavedChangesCanDeactivate] class.',\n )\n }\n\n const w = window as any\n // Avoid redirect prevention in Storybook\n if (w && w.__STORYBOOK_CLIENT_API__) {\n return true\n }\n }\n\n if (!this.unsavedChangesCanDeactivate()) {\n // $event.returnValue = true\n $event.returnValue =\n 'You have unsaved changes! If you leave, your changes will be lost.'\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;AACA;MAOa,6BAA6B,CAAA;uGAA7B,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,uFAH9B,CAAA,CAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA;;2FAGD,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBALzC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,YAC7B,CAAA,CAAE,EAAA;;;MCCD,iCAAiC,CAAA;uGAAjC,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;wGAAjC,iCAAiC,EAAA,OAAA,EAAA,CAHlC,6BAA6B,CAAA,EAAA,OAAA,EAAA,CAC7B,6BAA6B,CAAA,EAAA,CAAA;wGAE5B,iCAAiC,EAAA,CAAA;;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAJ7C,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,6BAA6B,CAAC;oBACxC,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA;;;ACFM,MAAM,yBAAyB,GAElC,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,KAAI;IACvD,IAAI,SAAS,EAAE,EAAE;AACf,QAAA,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE;;AAE1C,YAAA,OAAO,CAAC,IAAI,CACV,yGAAyG,CAC1G;QACH;IACF;IAEA,MAAM,CAAC,GAAG,MAAa;;AAEvB,IAAA,IAAI,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE;AACnC,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,IAAI,CAAC,SAAS,CAAC,2BAA2B,EAAE,EAAE;AAC5C,QAAA,OAAO,OAAO,CACZ,oEAAoE,CACrE;IACH;AAEA,IAAA,OAAO,IAAI;AACb;;MC3BsB,2BAA2B,CAAA;AAI/C,IAAA,oBAAoB,CAAC,MAAW,EAAA;QAC9B,IAAI,SAAS,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE;;AAErC,gBAAA,OAAO,CAAC,IAAI,CACV,yGAAyG,CAC1G;YACH;YAEA,MAAM,CAAC,GAAG,MAAa;;AAEvB,YAAA,IAAI,CAAC,IAAI,CAAC,CAAC,wBAAwB,EAAE;AACnC,gBAAA,OAAO,IAAI;YACb;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE;;AAEvC,YAAA,MAAM,CAAC,WAAW;AAChB,gBAAA,oEAAoE;QACxE;IACF;uGAzBoB,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,qBAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADhD;;sBAIE,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;ACNjD;;AAEG;;;;"}