{"version":3,"file":"sixbell-telco-sdk-components-overlay.mjs","sources":["../../../projects/sdk/components/overlay/overlay-content/overlay-content.component.ts","../../../projects/sdk/components/overlay/overlay-content/overlay-content.component.html","../../../projects/sdk/components/overlay/overlay-trigger/overlay-trigger.component.ts","../../../projects/sdk/components/overlay/overlay-trigger/overlay-trigger.component.html","../../../projects/sdk/components/overlay/src/overlay.component.ts","../../../projects/sdk/components/overlay/src/overlay.component.html","../../../projects/sdk/components/overlay/sixbell-telco-sdk-components-overlay.ts"],"sourcesContent":["import { Component, TemplateRef, viewChild } from '@angular/core';\n\n/**\n * OverlayContent - Content container for overlay\n *\n * @remarks\n * This component contains the overlay content and provides it as a template\n * for the overlay component to display.\n *\n * @example\n * ```html\n * <st-overlay-content>\n *   <div class=\"p-4 bg-base-100 rounded-box shadow-lg\">\n *     Your custom content here\n *   </div>\n * </st-overlay-content>\n * ```\n */\n@Component({\n\tselector: 'st-overlay-content',\n\tstandalone: true,\n\ttemplateUrl: './overlay-content.component.html',\n})\nexport class OverlayContentComponent {\n\tprivate readonly templateRef = viewChild.required<TemplateRef<unknown>>('contentTemplate');\n\n\tget template(): TemplateRef<unknown> {\n\t\treturn this.templateRef();\n\t}\n}\n","<ng-template #contentTemplate>\n\t<ng-content></ng-content>\n</ng-template>\n","import { CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport { Component, ElementRef, inject, input, output, viewChild } from '@angular/core';\nimport { OverlayComponent } from '../src/overlay.component';\n\n/**\n * OverlayTrigger - Trigger component for overlay positioning\n *\n * @remarks\n * This component acts as the trigger that opens/closes the overlay content.\n * It can contain any content (buttons, inputs, avatars, text, icons, etc.).\n * Uses CdkOverlayOrigin for positioning reference.\n *\n * @example\n * ```html\n * <st-overlay>\n *   <st-overlay-trigger>\n *     <button class=\"btn btn-primary\">Open Overlay</button>\n *   </st-overlay-trigger>\n *   <st-overlay-content>\n *     <div>Your content</div>\n *   </st-overlay-content>\n * </st-overlay>\n * ```\n */\n@Component({\n\tselector: 'st-overlay-trigger',\n\tstandalone: true,\n\timports: [CdkOverlayOrigin],\n\ttemplateUrl: './overlay-trigger.component.html',\n})\nexport class OverlayTriggerComponent {\n\toverlayOrigin = viewChild.required(CdkOverlayOrigin);\n\n\tprivate overlayComponent!: OverlayComponent;\n\tprivate readonly elementRef = inject(ElementRef);\n\n\t/**\n\t * Set the parent overlay component reference\n\t */\n\tsetOverlayComponent(overlay: OverlayComponent): void {\n\t\tthis.overlayComponent = overlay;\n\t}\n\n\t/**\n\t * Stop event propagation for activation events\n\t * @defaultValue false\n\t */\n\tstopPropagation = input<boolean>(false);\n\n\t/**\n\t * Tab index for the trigger wrapper\n\t * @defaultValue -1\n\t */\n\ttriggerTabIndex = input<number>(-1);\n\n\t/**\n\t * Event emitted on click\n\t */\n\tclicked = output<MouseEvent>();\n\n\t/**\n\t * Event emitted on Enter keydown\n\t */\n\tkeyDownEnter = output<KeyboardEvent>();\n\n\t/**\n\t * Event emitted on Space keydown\n\t */\n\tkeyDownSpace = output<KeyboardEvent>();\n\n\t/**\n\t * Event emitted on activation (click or keyboard)\n\t */\n\ttriggered = output<void>();\n\n\t/**\n\t * Handle click events to toggle the overlay\n\t */\n\tonClick(event: MouseEvent): void {\n\t\tif (this.stopPropagation()) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.clicked.emit(event);\n\t\tthis.triggered.emit();\n\t\tif (this.overlayComponent) {\n\t\t\tthis.overlayComponent.toggle();\n\t\t}\n\t}\n\n\t/**\n\t * Handle Enter key events to toggle the overlay\n\t */\n\tonKeyDownEnter(event: Event): void {\n\t\tif (event.target !== event.currentTarget) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.stopPropagation()) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.keyDownEnter.emit(event as KeyboardEvent);\n\t\tthis.triggered.emit();\n\t\tif (this.overlayComponent) {\n\t\t\tthis.overlayComponent.toggle();\n\t\t}\n\t}\n\n\t/**\n\t * Handle Space key events to toggle the overlay\n\t */\n\tonKeyDownSpace(event: Event): void {\n\t\tif (event.target !== event.currentTarget) {\n\t\t\treturn;\n\t\t}\n\t\tevent.preventDefault();\n\t\tif (this.stopPropagation()) {\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\tthis.keyDownSpace.emit(event as KeyboardEvent);\n\t\tthis.triggered.emit();\n\t\tif (this.overlayComponent) {\n\t\t\tthis.overlayComponent.toggle();\n\t\t}\n\t}\n\n\t/**\n\t * Get the overlay origin element\n\t */\n\tget triggerElement(): CdkOverlayOrigin {\n\t\treturn this.overlayOrigin();\n\t}\n\n\t/**\n\t * Get the native DOM element for width calculations\n\t */\n\tget nativeElement(): HTMLElement {\n\t\treturn this.elementRef.nativeElement;\n\t}\n}\n","<div\n\tcdkOverlayOrigin\n\t#triggerElement=\"cdkOverlayOrigin\"\n\trole=\"button\"\n\t[attr.tabindex]=\"triggerTabIndex()\"\n\t(click)=\"onClick($event)\"\n\t(keydown.enter)=\"onKeyDownEnter($event)\"\n\t(keydown.space)=\"onKeyDownSpace($event)\"\n>\n\t<ng-content></ng-content>\n</div>\n","import { CdkConnectedOverlay, ConnectedOverlayPositionChange, ConnectedPosition } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Component, computed, contentChild, effect, input, output, signal } from '@angular/core';\nimport { OverlayContentComponent } from '../overlay-content/overlay-content.component';\nimport { OverlayTriggerComponent } from '../overlay-trigger/overlay-trigger.component';\n\n/** Overlay X position options for CDK overlay positioning */\nexport type OverlayXPosition = 'start' | 'center' | 'end';\n\n/** Overlay Y position options for CDK overlay positioning */\nexport type OverlayYPosition = 'top' | 'bottom' | 'center';\n\n/** Overlay fallback position configuration */\nexport interface OverlayFallbackPositions {\n\t/** Enable automatic fallback positions */\n\tenabled: boolean;\n\t/** Custom fallback positions - if not provided, default fallbacks will be used */\n\tpositions?: ConnectedPosition[];\n}\n\n/**\n * Overlay - Shell component for creating custom overlays with positioning\n *\n * @remarks\n * This component provides the infrastructure for creating custom overlays with proper positioning,\n * accessibility, and animation support. It's designed to be used as a shell where the consumer\n * has full control over the trigger and content styling.\n *\n * The overlay is controlled through methods: Use `open()`, `close()`, and `toggle()` methods programmatically\n * via template reference variables.\n *\n * @example\n * ```html\n * <!-- Basic usage -->\n * <st-overlay>\n *   <st-overlay-trigger>\n *     <button>Trigger</button>\n *   </st-overlay-trigger>\n *   <st-overlay-content>\n *     <div>Content</div>\n *   </st-overlay-content>\n * </st-overlay>\n *\n * <!-- Using methods for programmatic control -->\n * <st-overlay #overlay=\"stOverlay\">\n *   <st-overlay-trigger>\n *     <button>Trigger</button>\n *   </st-overlay-trigger>\n *   <st-overlay-content>\n *     <div>Content</div>\n *     <button (click)=\"overlay.close()\">Close</button>\n *   </st-overlay-content>\n *   </st-overlay-content>\n * </st-overlay>\n * <button (click)=\"overlay.open()\">Open</button>\n * <button (click)=\"overlay.close()\">Close</button>\n *\n * <!-- Using width sync for dropdowns/selects -->\n * <st-overlay [syncWidth]=\"true\">\n *   <st-overlay-trigger>\n *     <button class=\"w-64\">Trigger with specific width</button>\n *   </st-overlay-trigger>\n *   <st-overlay-content>\n *     <div>Content will match trigger width</div>\n *   </st-overlay-content>\n * </st-overlay>\n * ```\n */\n@Component({\n\tselector: 'st-overlay',\n\tstandalone: true,\n\timports: [CdkConnectedOverlay, NgTemplateOutlet],\n\ttemplateUrl: './overlay.component.html',\n\texportAs: 'stOverlay',\n\thost: {\n\t\t'(window:resize)': 'onWindowResize()',\n\t},\n})\nexport class OverlayComponent {\n\ttrigger = contentChild(OverlayTriggerComponent);\n\tcontent = contentChild(OverlayContentComponent);\n\n\t/** Offset X in pixels */\n\toffsetX = input<number>(0);\n\n\t/** Offset Y in pixels */\n\toffsetY = input<number>(0);\n\n\t/** Origin X position */\n\toriginX = input<OverlayXPosition>('start');\n\n\t/** Origin Y position */\n\toriginY = input<OverlayYPosition>('bottom');\n\n\t/** Overlay X position */\n\toverlayX = input<OverlayXPosition>('start');\n\n\t/** Overlay Y position */\n\toverlayY = input<OverlayYPosition>('top');\n\n\t/** Fallback positions configuration */\n\tfallbacks = input<OverlayFallbackPositions>({ enabled: true });\n\n\t/** Whether to sync the overlay content width with the trigger width */\n\tsyncWidth = input<boolean>(false);\n\n\t/** Internal signal to track overlay state */\n\treadonly _isOpen = signal(false);\n\n\t/** Internal signal to track the synced width */\n\treadonly _syncedWidth = signal<string | null>(null);\n\n\t/** Current active position configuration */\n\tcurrentPosition = signal<ConnectedPosition | null>(null);\n\n\t/** Event emitted when overlay is opened */\n\topened = output<void>();\n\n\t/** Event emitted when overlay is closed */\n\tclosed = output<void>();\n\n\tconstructor() {\n\t\t// Sync width when syncWidth flag changes or overlay opens\n\t\teffect(() => {\n\t\t\tif (this.syncWidth() && this._isOpen()) {\n\t\t\t\tthis.updateSyncedWidth();\n\t\t\t} else if (!this.syncWidth()) {\n\t\t\t\tthis._syncedWidth.set(null);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate readonly setOverlayEffect = effect(() => {\n\t\tconst trigger = this.trigger();\n\t\tconst content = this.content();\n\t\tif (trigger && content) {\n\t\t\ttrigger.setOverlayComponent(this);\n\t\t}\n\t});\n\n\t/**\n\t * Computed positions array based on signal inputs\n\t */\n\tpositions = computed(() => {\n\t\t// Get current values and ensure they are strings\n\t\tconst originX = String(this.originX()) as OverlayXPosition;\n\t\tconst originY = String(this.originY()) as OverlayYPosition;\n\t\tconst overlayX = String(this.overlayX()) as OverlayXPosition;\n\t\tconst overlayY = String(this.overlayY()) as OverlayYPosition;\n\t\tconst offsetX = Number(this.offsetX());\n\t\tconst offsetY = Number(this.offsetY());\n\n\t\t// Primary position using direct signal values\n\t\tconst primary: ConnectedPosition = {\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t\toffsetX,\n\t\t\toffsetY,\n\t\t};\n\n\t\t// If fallbacks are disabled, return only primary position\n\t\tconst fallbackConfig = this.fallbacks();\n\t\tif (!fallbackConfig.enabled) {\n\t\t\treturn [primary];\n\t\t}\n\n\t\t// Use custom fallback positions if provided\n\t\tif (fallbackConfig.positions && fallbackConfig.positions.length > 0) {\n\t\t\treturn [primary, ...fallbackConfig.positions];\n\t\t}\n\n\t\t// Generate default fallback positions\n\t\tconst fallbacks = this.generateDefaultFallbacks(primary);\n\t\treturn [primary, ...fallbacks];\n\t});\n\n\t/**\n\t * Generate default fallback positions based on the primary position\n\t */\n\tprivate generateDefaultFallbacks(primary: ConnectedPosition): ConnectedPosition[] {\n\t\tconst fallbacks: ConnectedPosition[] = [];\n\n\t\tconst primaryOriginX = primary.originX as OverlayXPosition;\n\t\tconst primaryOriginY = primary.originY as OverlayYPosition;\n\t\tconst primaryOverlayX = primary.overlayX as OverlayXPosition;\n\t\tconst primaryOverlayY = primary.overlayY as OverlayYPosition;\n\n\t\t// Add basic axis flips\n\t\tthis.addAxisFlips(fallbacks, primary, primaryOriginX, primaryOriginY, primaryOverlayX, primaryOverlayY);\n\n\t\t// Add standard overlay positions\n\t\tthis.addStandardPositions(fallbacks, primary);\n\n\t\treturn fallbacks;\n\t}\n\n\t/**\n\t * Helper to flip Y position\n\t */\n\tprivate getOppositeY(position: OverlayYPosition): OverlayYPosition {\n\t\tif (position === 'top') return 'bottom';\n\t\tif (position === 'bottom') return 'top';\n\t\treturn 'center';\n\t}\n\n\t/**\n\t * Helper to flip X position\n\t */\n\tprivate getOppositeX(position: OverlayXPosition): OverlayXPosition {\n\t\tif (position === 'start') return 'end';\n\t\tif (position === 'end') return 'start';\n\t\treturn 'center';\n\t}\n\n\t/**\n\t * Helper to create position variant\n\t */\n\tprivate createPosition(\n\t\tprimary: ConnectedPosition,\n\t\toriginX: OverlayXPosition,\n\t\toriginY: OverlayYPosition,\n\t\toverlayX: OverlayXPosition,\n\t\toverlayY: OverlayYPosition,\n\t): ConnectedPosition {\n\t\treturn {\n\t\t\t...primary,\n\t\t\toriginX,\n\t\t\toriginY,\n\t\t\toverlayX,\n\t\t\toverlayY,\n\t\t};\n\t}\n\n\t/**\n\t * Add axis flip fallbacks\n\t */\n\tprivate addAxisFlips(\n\t\tfallbacks: ConnectedPosition[],\n\t\tprimary: ConnectedPosition,\n\t\tprimaryOriginX: OverlayXPosition,\n\t\tprimaryOriginY: OverlayYPosition,\n\t\tprimaryOverlayX: OverlayXPosition,\n\t\tprimaryOverlayY: OverlayYPosition,\n\t): void {\n\t\t// Flip Y axis\n\t\tconst oppositeY = this.getOppositeY(primaryOriginY);\n\t\tconst oppositeOverlayY = this.getOppositeY(primaryOverlayY);\n\t\tfallbacks.push(this.createPosition(primary, primaryOriginX, oppositeY, primaryOverlayX, oppositeOverlayY));\n\n\t\t// Flip X axis\n\t\tconst oppositeX = this.getOppositeX(primaryOriginX);\n\t\tconst oppositeOverlayX = this.getOppositeX(primaryOverlayX);\n\t\tfallbacks.push(this.createPosition(primary, oppositeX, primaryOriginY, oppositeOverlayX, primaryOverlayY));\n\n\t\t// Flip both axes\n\t\tfallbacks.push(this.createPosition(primary, oppositeX, oppositeY, oppositeOverlayX, oppositeOverlayY));\n\t}\n\n\t/**\n\t * Add standard overlay positions\n\t */\n\tprivate addStandardPositions(fallbacks: ConnectedPosition[], primary: ConnectedPosition): void {\n\t\tconst standardPositions = [\n\t\t\tthis.createPosition(primary, 'start', 'bottom', 'start', 'top'), // Classic dropdown\n\t\t\tthis.createPosition(primary, 'start', 'top', 'start', 'bottom'), // Dropup\n\t\t\tthis.createPosition(primary, 'end', 'top', 'start', 'top'), // Left side\n\t\t\tthis.createPosition(primary, 'start', 'top', 'end', 'top'), // Right side\n\t\t\tthis.createPosition(primary, 'center', 'bottom', 'center', 'top'), // Center dropdown\n\t\t\tthis.createPosition(primary, 'center', 'top', 'center', 'bottom'), // Center dropup\n\t\t];\n\n\t\tfor (const pos of standardPositions) {\n\t\t\tif (!this.isPositionDuplicate(pos, [primary, ...fallbacks])) {\n\t\t\t\tfallbacks.push(pos);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Check if position is duplicate\n\t */\n\tprivate isPositionDuplicate(position: ConnectedPosition, existing: ConnectedPosition[]): boolean {\n\t\treturn existing.some(\n\t\t\t(pos) =>\n\t\t\t\tpos.originX === position.originX &&\n\t\t\t\tpos.originY === position.originY &&\n\t\t\t\tpos.overlayX === position.overlayX &&\n\t\t\t\tpos.overlayY === position.overlayY,\n\t\t);\n\t}\n\n\t/**\n\t * Open the overlay\n\t */\n\topen(): void {\n\t\tif (this._isOpen()) return;\n\t\tthis._isOpen.set(true);\n\t\tthis.opened.emit();\n\n\t\t// Update synced width when opening if syncWidth is enabled\n\t\tif (this.syncWidth()) {\n\t\t\t// Use setTimeout to ensure DOM is updated after overlay opens\n\t\t\tsetTimeout(() => this.updateSyncedWidth(), 0);\n\t\t}\n\t}\n\n\t/**\n\t * Close the overlay\n\t */\n\tclose(): void {\n\t\tif (!this._isOpen()) return;\n\t\tthis._isOpen.set(false);\n\t\tthis.closed.emit();\n\t}\n\n\t/**\n\t * Toggle the overlay open/close state\n\t */\n\ttoggle(): void {\n\t\tif (this._isOpen()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\t/**\n\t * Update the synced width based on trigger element width\n\t */\n\tprivate updateSyncedWidth(): void {\n\t\tconst trigger = this.trigger();\n\t\tif (!trigger?.nativeElement || !this.syncWidth()) {\n\t\t\tthis._syncedWidth.set(null);\n\t\t\treturn;\n\t\t}\n\n\t\tconst triggerElement = trigger.nativeElement;\n\t\tconst triggerWidth = triggerElement.getBoundingClientRect().width;\n\n\t\t// Set the width to match the trigger exactly\n\t\tthis._syncedWidth.set(`${triggerWidth}px`);\n\t}\n\n\t/**\n\t * Handle position changes from CDK overlay\n\t */\n\tonPositionChange(position: ConnectedOverlayPositionChange): void {\n\t\tif (position?.connectionPair) {\n\t\t\tthis.currentPosition.set(position.connectionPair);\n\t\t}\n\t}\n\n\t/**\n\t * Handle click outside to close overlay\n\t */\n\tonClickOutside(): void {\n\t\tthis.close();\n\t}\n\n\t/**\n\t * Handle window resize to update synced width\n\t */\n\tonWindowResize(): void {\n\t\tif (this.syncWidth() && this._isOpen()) {\n\t\t\t// Debounce resize events\n\t\t\tsetTimeout(() => this.updateSyncedWidth(), 50);\n\t\t}\n\t}\n}\n","<!-- Trigger Content -->\n@if (trigger(); as trigger) {\n\t<ng-content select=\"st-overlay-trigger\"></ng-content>\n\n\t<!-- Content Overlay -->\n\t@if (_isOpen() && content(); as content) {\n\t\t<ng-template\n\t\t\tcdkConnectedOverlay\n\t\t\t[cdkConnectedOverlayOrigin]=\"trigger.triggerElement\"\n\t\t\t[cdkConnectedOverlayOpen]=\"true\"\n\t\t\t[cdkConnectedOverlayPositions]=\"positions()\"\n\t\t\t(detach)=\"close()\"\n\t\t\t(overlayOutsideClick)=\"onClickOutside()\"\n\t\t\t(positionChange)=\"onPositionChange($event)\"\n\t\t>\n\t\t\t<!-- Content Wrapper with optional width sync -->\n\t\t\t<div [style.width]=\"_syncedWidth()\" [style.min-width]=\"_syncedWidth() ? _syncedWidth() : null\">\n\t\t\t\t<!-- Content Template -->\n\t\t\t\t<ng-container *ngTemplateOutlet=\"content.template\"></ng-container>\n\t\t\t</div>\n\t\t</ng-template>\n\t}\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}