@acorex/cdk 22.4.24 → 22.4.25
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.
|
@@ -340,6 +340,26 @@ function clampToViewport(coords, overlayRect, viewportWidth, viewportHeight, mar
|
|
|
340
340
|
const clampedTop = Math.max(margin, Math.min(coords.top, viewportHeight - overlayRect.height - margin));
|
|
341
341
|
return { top: clampedTop, left: clampedLeft };
|
|
342
342
|
}
|
|
343
|
+
/**
|
|
344
|
+
* Free vertical space on the anchor side used by a connected position.
|
|
345
|
+
*/
|
|
346
|
+
function verticalFreeSpaceForPosition(anchorRect, position, viewportHeight) {
|
|
347
|
+
if (position.originY === 'bottom' && position.overlayY === 'top') {
|
|
348
|
+
return viewportHeight - anchorRect.bottom;
|
|
349
|
+
}
|
|
350
|
+
if (position.originY === 'top' && position.overlayY === 'bottom') {
|
|
351
|
+
return anchorRect.top;
|
|
352
|
+
}
|
|
353
|
+
return viewportHeight;
|
|
354
|
+
}
|
|
355
|
+
function isVerticalAnchorPlacement(position) {
|
|
356
|
+
return ((position.originY === 'bottom' && position.overlayY === 'top') ||
|
|
357
|
+
(position.originY === 'top' && position.overlayY === 'bottom'));
|
|
358
|
+
}
|
|
359
|
+
function clampHorizontalToViewport(coords, overlayRect, viewportWidth, margin = 4) {
|
|
360
|
+
const clampedLeft = Math.max(margin, Math.min(coords.left, viewportWidth - overlayRect.width - margin));
|
|
361
|
+
return { top: coords.top, left: clampedLeft };
|
|
362
|
+
}
|
|
343
363
|
/**
|
|
344
364
|
* Finds the best position for an overlay that fits in the viewport.
|
|
345
365
|
*/
|
|
@@ -350,10 +370,21 @@ function findBestPosition(anchorRect, overlayRect, positions, viewportWidth, vie
|
|
|
350
370
|
return { position, coords };
|
|
351
371
|
}
|
|
352
372
|
}
|
|
353
|
-
// Fallback to
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
373
|
+
// Fallback: anchor to the side with the most vertical room; do not slide over the anchor.
|
|
374
|
+
let bestPosition = positions[0];
|
|
375
|
+
let bestSpace = verticalFreeSpaceForPosition(anchorRect, bestPosition, viewportHeight);
|
|
376
|
+
for (let i = 1; i < positions.length; i++) {
|
|
377
|
+
const space = verticalFreeSpaceForPosition(anchorRect, positions[i], viewportHeight);
|
|
378
|
+
if (space > bestSpace) {
|
|
379
|
+
bestSpace = space;
|
|
380
|
+
bestPosition = positions[i];
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, bestPosition);
|
|
384
|
+
const clampedCoords = isVerticalAnchorPlacement(bestPosition)
|
|
385
|
+
? clampHorizontalToViewport(fallbackCoords, overlayRect, viewportWidth)
|
|
386
|
+
: clampToViewport(fallbackCoords, overlayRect, viewportWidth, viewportHeight);
|
|
387
|
+
return { position: bestPosition, coords: clampedCoords };
|
|
357
388
|
}
|
|
358
389
|
|
|
359
390
|
class AXOverlayService {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-cdk-overlay.mjs","sources":["../../../../packages/cdk/overlay/src/lib/overlay-animation.ts","../../../../packages/cdk/overlay/src/lib/overlay-visual-context.ts","../../../../packages/cdk/overlay/src/lib/overlay.types.ts","../../../../packages/cdk/overlay/src/lib/overlay.service.ts","../../../../packages/cdk/overlay/src/acorex-cdk-overlay.ts"],"sourcesContent":["export const AX_OVERLAY_DEFAULT_ENTER_ANIMATION = ['animate-animated', 'animate-fadeIn', 'animate-fast'];\nexport const AX_OVERLAY_DEFAULT_LEAVE_ANIMATION = ['animate-animated', 'animate-fadeOut', 'animate-2xfaster'];\n\nconst OVERLAY_ANIMATION_DURATION_CLASSES = [\n 'animate-2xfaster',\n 'animate-faster',\n 'animate-fast',\n 'animate-slow',\n 'animate-slower',\n 'animate-2xslower',\n] as const;\n\nconst OVERLAY_ANIMATION_NAME_CLASSES = ['animate-fadeIn', 'animate-fadeOut'] as const;\n\nexport type AXOverlayAnimation =\n | boolean\n | string[]\n | {\n enter?: string[];\n leave?: string[];\n };\n\nexport interface AXOverlayResolvedAnimation {\n enter: string[];\n leave: string[];\n}\n\n/**\n * Resolves overlay animation classes.\n * - omitted: no animation (opt-in at the overlay layer)\n * - `true`: default fade in/out\n * - `false` or `[]`: no animation\n * - `string[]`: custom enter classes only\n * - `{ enter, leave }`: omitted keys fall back to the default fade classes\n */\nexport function resolveOverlayAnimation(animation?: AXOverlayAnimation): AXOverlayResolvedAnimation {\n if (animation === undefined || animation === false) {\n return { enter: [], leave: [] };\n }\n\n if (animation === true) {\n return {\n enter: [...AX_OVERLAY_DEFAULT_ENTER_ANIMATION],\n leave: [...AX_OVERLAY_DEFAULT_LEAVE_ANIMATION],\n };\n }\n\n if (Array.isArray(animation)) {\n if (animation.length === 0) {\n return { enter: [], leave: [] };\n }\n return { enter: [...animation], leave: [] };\n }\n\n return {\n enter: animation.enter === undefined ? [...AX_OVERLAY_DEFAULT_ENTER_ANIMATION] : [...animation.enter],\n leave: animation.leave === undefined ? [...AX_OVERLAY_DEFAULT_LEAVE_ANIMATION] : [...animation.leave],\n };\n}\n\n/** Prefers the content/pane so transforms are not applied to the full-screen container. */\nexport function getOverlayAnimationTarget(container: HTMLElement): HTMLElement {\n const content = container.querySelector<HTMLElement>(':scope > .ax-overlay-content');\n if (content) return content;\n const pane = container.querySelector<HTMLElement>(':scope > .ax-overlay-pane');\n if (pane) return pane;\n return container;\n}\n\nexport function applyOverlayAnimationClasses(element: HTMLElement, classes: string[]): void {\n for (const cls of classes) {\n if (cls) {\n element.classList.add(cls);\n }\n }\n}\n\nexport function removeOverlayAnimationClasses(element: HTMLElement, classes: string[]): void {\n for (const cls of classes) {\n if (cls) {\n element.classList.remove(cls);\n }\n }\n}\n\nexport function prefersReducedMotion(documentRef: Document): boolean {\n return !!documentRef.defaultView?.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function parseCssTimeList(value: string): number[] {\n return value.split(',').map((part) => {\n const trimmed = part.trim();\n if (trimmed.endsWith('ms')) {\n return Number.parseFloat(trimmed) || 0;\n }\n if (trimmed.endsWith('s')) {\n return (Number.parseFloat(trimmed) || 0) * 1000;\n }\n return 0;\n });\n}\n\n/** Maps theme duration utility classes to milliseconds (see tailwind-base). */\nexport function getAnimationDurationFromClasses(classes: string[]): number {\n if (classes.includes('animate-2xfaster')) return 250;\n if (classes.includes('animate-faster')) return 500;\n if (classes.includes('animate-fast')) return 800;\n if (classes.includes('animate-slow')) return 2000;\n if (classes.includes('animate-slower')) return 3000;\n if (classes.includes('animate-2xslower')) return 5000;\n return 500;\n}\n\nexport function getOverlayAnimationTimeout(\n element: HTMLElement,\n documentRef: Document,\n fallbackMs?: number,\n): number {\n if (fallbackMs !== undefined && fallbackMs > 0) {\n return fallbackMs + 32;\n }\n\n const style = documentRef.defaultView?.getComputedStyle(element);\n if (!style) return 0;\n\n const durations = parseCssTimeList(style.animationDuration);\n const delays = parseCssTimeList(style.animationDelay);\n const max = durations.reduce((longest, duration, index) => {\n return Math.max(longest, duration + (delays[index] ?? delays[0] ?? 0));\n }, 0);\n\n return max > 0 ? max + 32 : 0;\n}\n\nexport function playOverlayLeaveAnimation(\n element: HTMLElement,\n enter: string[],\n leave: string[],\n documentRef: Document,\n): Promise<void> {\n removeOverlayAnimationClasses(element, [\n ...enter,\n ...OVERLAY_ANIMATION_NAME_CLASSES,\n ...OVERLAY_ANIMATION_DURATION_CLASSES,\n ]);\n void element.offsetWidth;\n\n const leaveDurationMs = getAnimationDurationFromClasses(leave);\n applyOverlayAnimationClasses(element, leave);\n element.style.animationDuration = `${leaveDurationMs}ms`;\n\n return waitForOverlayAnimationEnd(element, documentRef, {\n fallbackMs: leaveDurationMs,\n animationName: 'fadeOut',\n });\n}\n\nexport function waitForOverlayAnimationEnd(\n element: HTMLElement,\n documentRef: Document,\n options?: { fallbackMs?: number; animationName?: string },\n): Promise<void> {\n return new Promise((resolve) => {\n const timeoutMs = getOverlayAnimationTimeout(element, documentRef, options?.fallbackMs);\n if (timeoutMs <= 0) {\n resolve();\n return;\n }\n\n let settled = false;\n const finish = () => {\n if (settled) return;\n settled = true;\n element.removeEventListener('animationend', onEnd);\n element.style.animationDuration = '';\n resolve();\n };\n const onEnd = (event: AnimationEvent) => {\n if (event.target !== element) return;\n if (options?.animationName && !event.animationName.toLowerCase().includes(options.animationName.toLowerCase())) {\n return;\n }\n finish();\n };\n\n element.addEventListener('animationend', onEnd);\n documentRef.defaultView?.setTimeout(finish, timeoutMs);\n });\n}\n","import { ElementRef } from '@angular/core';\n\nexport type AXOverlayVisualContextScope = 'full' | 'theme';\n\nexport interface AXOverlayVisualContext {\n appearance?: string;\n theme?: 'ax-light' | 'ax-dark';\n contrast?: string;\n size?: string;\n}\n\nexport const APPEARANCE_CLASSES = [\n 'ax-appearance-flat',\n 'ax-appearance-depth',\n 'ax-appearance-translucent',\n] as const;\n\nexport const THEME_CLASSES = ['ax-light', 'ax-dark'] as const;\n\nexport const CONTRAST_CLASSES = ['ax-contrast-enhanced', 'ax-contrast-high'] as const;\n\nexport const SIZE_CLASSES = ['ax-xs', 'ax-sm', 'ax-md', 'ax-lg', 'ax-xl'] as const;\n\nexport const MANAGED_OVERLAY_VISUAL_CLASSES = [\n ...APPEARANCE_CLASSES,\n ...THEME_CLASSES,\n ...CONTRAST_CLASSES,\n ...SIZE_CLASSES,\n] as const;\n\n/**\n * Resolves the nearest effective visual context from an anchor or context source.\n * Theme uses nearest ax-light / ax-dark so nested Light overrides Dark ancestors.\n */\nexport function resolveVisualContext(\n source: HTMLElement | null | undefined,\n fallbackRoot?: HTMLElement | null,\n): AXOverlayVisualContext {\n const context: AXOverlayVisualContext = {};\n const root = fallbackRoot ?? (typeof document !== 'undefined' ? document.documentElement : null);\n\n let node: HTMLElement | null = source ?? root;\n while (node) {\n if (!context.appearance) {\n for (const cls of APPEARANCE_CLASSES) {\n if (node.classList.contains(cls)) {\n context.appearance = cls;\n break;\n }\n }\n }\n\n if (!context.contrast) {\n for (const cls of CONTRAST_CLASSES) {\n if (node.classList.contains(cls)) {\n context.contrast = cls;\n break;\n }\n }\n }\n\n if (!context.size) {\n for (const cls of SIZE_CLASSES) {\n if (node.classList.contains(cls)) {\n context.size = cls;\n break;\n }\n }\n\n if (!context.size && typeof getComputedStyle !== 'undefined') {\n const computedSize = getComputedStyle(node).getPropertyValue('--ax-sys-size').trim();\n if (SIZE_CLASSES.includes(computedSize as (typeof SIZE_CLASSES)[number])) {\n context.size = computedSize;\n }\n }\n }\n\n if (!context.theme) {\n if (node.classList.contains('ax-light')) {\n context.theme = 'ax-light';\n } else if (node.classList.contains('ax-dark')) {\n context.theme = 'ax-dark';\n }\n }\n\n node = node.parentElement;\n }\n\n if (!context.theme && root) {\n if (root.classList.contains('ax-light')) {\n context.theme = 'ax-light';\n } else if (root.classList.contains('ax-dark')) {\n context.theme = 'ax-dark';\n }\n }\n\n return context;\n}\n\n/** Applies resolved visual context classes to an overlay container. */\nexport function applyVisualContext(\n target: HTMLElement,\n context: AXOverlayVisualContext,\n scope: AXOverlayVisualContextScope = 'full',\n): void {\n for (const cls of MANAGED_OVERLAY_VISUAL_CLASSES) {\n target.classList.remove(cls);\n }\n\n if (scope === 'full' && context.appearance) {\n target.classList.add(context.appearance);\n }\n if (context.theme) {\n target.classList.add(context.theme);\n }\n if (scope === 'full' && context.contrast) {\n target.classList.add(context.contrast);\n }\n if (context.size) {\n target.classList.add(context.size);\n }\n}\n\nexport function resolveContextElement(\n contextElement: HTMLElement | ElementRef<HTMLElement> | undefined,\n anchor: HTMLElement | ElementRef<HTMLElement> | undefined,\n fallbackRoot: HTMLElement,\n): HTMLElement {\n if (contextElement) {\n return contextElement instanceof ElementRef ? contextElement.nativeElement : contextElement;\n }\n if (anchor) {\n return anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n }\n return fallbackRoot;\n}\n","import { AXConnectedPosition, AXPlacement, AXPlacementType } from '@acorex/cdk/common';\nimport { AXComponentOptions } from '@acorex/core/components';\nimport { AXZToken } from '@acorex/core/z-index';\nimport { ComponentRef, ElementRef, EmbeddedViewRef } from '@angular/core';\nimport type { AXOverlayAnimation } from './overlay-animation';\nimport type { AXOverlayVisualContextScope } from './overlay-visual-context';\n\nexport interface AXOverlayRef<T> {\n instance: EmbeddedViewRef<T> | ComponentRef<T>;\n /** Updates the overlay position relative to the anchor */\n updatePosition: () => void;\n /** Destroys the overlay. DOM removal waits for a leave animation when one is configured. */\n dispose: () => void;\n /** The overlay container element */\n overlayElement: HTMLElement | null;\n /** The backdrop element if one was created */\n backdropElement: HTMLElement | null;\n /** The z-index token for this overlay */\n zToken: AXZToken | null;\n /** Brings this overlay to the front of all other overlays */\n bringToFront: () => void;\n}\n\nexport interface AXOverlayAnchorOptions {\n /** The anchor element to position relative to */\n anchor: HTMLElement | ElementRef<HTMLElement>;\n /** Placement of the overlay relative to the anchor */\n placement?: AXPlacementType;\n /** Horizontal offset in pixels */\n offsetX?: number;\n /** Vertical offset in pixels */\n offsetY?: number;\n /** Whether to flip the overlay when it overflows the viewport */\n autoFlip?: boolean;\n}\n\nexport interface AXOverlayOptions extends AXComponentOptions {\n backdrop?: {\n enabled?: boolean;\n background?: boolean;\n backdropClass?: string;\n closeOnClick?: boolean;\n };\n position?: AXPlacement;\n /** Anchor-based positioning options for tooltips, popovers, etc. */\n anchorOptions?: AXOverlayAnchorOptions;\n /** Custom CSS class for the overlay panel */\n panelClass?: string | string[];\n /**\n * Enter/leave animation applied to overlay content (`.ax-overlay-content` or `.ax-overlay-pane`),\n * not the full-screen container. Omitted: no animation. `true`: default fade in/out.\n * `false` or `[]`: disabled. A class array is enter-only. `{ enter, leave }` configures both.\n */\n animation?: AXOverlayAnimation;\n /** Whether to close when clicking outside */\n closeOnOutsideClick?: boolean;\n /** Whether to close when pressing Escape */\n closeOnEscape?: boolean;\n /** Width of the overlay container (e.g., 'auto', '200px', '100%') */\n width?: string;\n /** Dispose this overlay when Angular starts a navigation. Default: true. */\n closeOnNavigation?: boolean;\n /** Callback when the overlay is disposed (e.g., due to scroll) */\n onDispose?: () => void;\n /** Whether to use centered container (default: true). Set to false for positioned overlays like toasts */\n centered?: boolean;\n actionSheetStyle?: boolean;\n /** Base z-index for this overlay */\n zIndexBase?: number;\n /**\n * Visual context source for anchorless overlays (toast, dialog, notification).\n * Falls back to anchor, then document root.\n */\n contextElement?: HTMLElement | ElementRef<HTMLElement>;\n /**\n * Which visual context dimensions propagate to the overlay shell.\n * `theme` keeps light/dark (+ size) only; floating surfaces opt out of\n * appearance/contrast classes (popup, toast, dropdown).\n */\n visualContextScope?: AXOverlayVisualContextScope;\n}\n\n/**\n * Calculates the position of an overlay element relative to an anchor element.\n */\nexport function calculateAnchorPosition(\n anchorRect: DOMRect,\n overlayRect: DOMRect,\n position: AXConnectedPosition,\n): { top: number; left: number } {\n let left = 0;\n let top = 0;\n\n // Calculate origin point on anchor\n switch (position.originX) {\n case 'start':\n left = anchorRect.left;\n break;\n case 'center':\n left = anchorRect.left + anchorRect.width / 2;\n break;\n case 'end':\n left = anchorRect.right;\n break;\n }\n\n switch (position.originY) {\n case 'top':\n top = anchorRect.top;\n break;\n case 'center':\n top = anchorRect.top + anchorRect.height / 2;\n break;\n case 'bottom':\n top = anchorRect.bottom;\n break;\n }\n\n // Adjust for overlay alignment\n switch (position.overlayX) {\n case 'start':\n // left stays the same\n break;\n case 'center':\n left -= overlayRect.width / 2;\n break;\n case 'end':\n left -= overlayRect.width;\n break;\n }\n\n switch (position.overlayY) {\n case 'top':\n // top stays the same\n break;\n case 'center':\n top -= overlayRect.height / 2;\n break;\n case 'bottom':\n top -= overlayRect.height;\n break;\n }\n\n // Apply offsets\n if (position.offsetX) {\n left += position.offsetX;\n }\n if (position.offsetY) {\n top += position.offsetY;\n }\n\n return { top, left };\n}\n\n/**\n * Checks if the overlay position fits within the viewport.\n */\nexport function fitsInViewport(\n position: { top: number; left: number },\n overlayRect: DOMRect,\n viewportWidth: number,\n viewportHeight: number,\n): boolean {\n return (\n position.left >= 0 &&\n position.top >= 0 &&\n position.left + overlayRect.width <= viewportWidth &&\n position.top + overlayRect.height <= viewportHeight\n );\n}\n\n/**\n * Clamps a position to ensure the overlay stays within viewport bounds.\n */\nexport function clampToViewport(\n coords: { top: number; left: number },\n overlayRect: DOMRect,\n viewportWidth: number,\n viewportHeight: number,\n margin = 4,\n): { top: number; left: number } {\n const clampedLeft = Math.max(margin, Math.min(coords.left, viewportWidth - overlayRect.width - margin));\n const clampedTop = Math.max(margin, Math.min(coords.top, viewportHeight - overlayRect.height - margin));\n\n return { top: clampedTop, left: clampedLeft };\n}\n\n/**\n * Finds the best position for an overlay that fits in the viewport.\n */\nexport function findBestPosition(\n anchorRect: DOMRect,\n overlayRect: DOMRect,\n positions: AXConnectedPosition[],\n viewportWidth: number,\n viewportHeight: number,\n): { position: AXConnectedPosition; coords: { top: number; left: number } } {\n for (const position of positions) {\n const coords = calculateAnchorPosition(anchorRect, overlayRect, position);\n\n if (fitsInViewport(coords, overlayRect, viewportWidth, viewportHeight)) {\n return { position, coords };\n }\n }\n\n // Fallback to first position if none fit, but clamp to viewport bounds\n const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, positions[0]);\n const clampedCoords = clampToViewport(fallbackCoords, overlayRect, viewportWidth, viewportHeight);\n return { position: positions[0], coords: clampedCoords };\n}\n","import { convertToPlacement } from '@acorex/cdk/common';\nimport { AXComponentContent, AXComponentService } from '@acorex/core/components';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, EmbeddedViewRef, inject, Injectable, TemplateRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport {\n applyOverlayAnimationClasses,\n getOverlayAnimationTarget,\n playOverlayLeaveAnimation,\n prefersReducedMotion,\n resolveOverlayAnimation,\n} from './overlay-animation';\nimport { applyVisualContext, resolveContextElement, resolveVisualContext } from './overlay-visual-context';\nimport { AXOverlayOptions, AXOverlayRef, findBestPosition } from './overlay.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXOverlayService {\n private componentService = inject(AXComponentService);\n private document = inject(DOCUMENT);\n private zIndexService = inject(AXZIndexService);\n private _platform: AXPlatform = inject(AXPlatform);\n private router = inject(Router, { optional: true });\n\n /**\n * Creates an overlay with optional anchor-based positioning.\n * @param content - Component or template to display\n * @param options - Configuration options for the overlay\n * @returns Promise<AXOverlayRef> - Reference to the created overlay\n */\n async create<T = unknown>(content: AXComponentContent<T>, options?: AXOverlayOptions): Promise<AXOverlayRef<T>> {\n let instance: EmbeddedViewRef<T> | ComponentRef<T>;\n let overlayContainer: HTMLElement | null = null;\n let backdropElement: HTMLElement | null = null;\n let isDisposed = false;\n let navigationSubscription: Subscription | null = null;\n\n // Acquire a z-index token for this overlay\n let zToken: AXZToken | null = this.zIndexService.acquire(options?.zIndexBase);\n\n if (content instanceof TemplateRef) {\n instance = this.componentService.createFromTemplate<T>(content);\n } else {\n instance = this.componentService.createFromComponent<T>(content);\n if (options?.inputs) {\n Object.entries(options.inputs).forEach((c) => {\n (instance as ComponentRef<T>).setInput(c[0], c[1]);\n });\n }\n }\n\n // Get the host element\n const hostElement = this.getHostElement(instance);\n\n // Create backdrop if enabled. Mobile action sheets also get one: their dimming\n // used to be a box-shadow spread, which paints the scrim but does not hit-test,\n // so controls behind the sheet stayed clickable.\n if (options?.backdrop?.enabled || this.needsActionSheetBackdrop(options)) {\n backdropElement = this.createBackdrop(this.withActionSheetBackdrop(options), zToken.zIndex);\n }\n\n // If anchor options are provided, set up positioned overlay (for tooltips, popovers)\n if (options?.anchorOptions?.anchor) {\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n this.positionOverlay(overlayContainer, options);\n } else if (options?.centered === false) {\n // Non-centered positioned overlay (for toasts, notifications)\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n } else {\n // No anchor - create centered overlay (for modals, popups)\n overlayContainer = this.createCenteredOverlayContainer(hostElement, options, zToken.zIndex);\n }\n\n const updatePosition = () => {\n if (overlayContainer && options?.anchorOptions?.anchor) {\n this.positionOverlay(overlayContainer, options);\n }\n };\n\n const animation = resolveOverlayAnimation(options?.animation);\n const reduceMotion = prefersReducedMotion(this.document);\n\n const dispose = () => {\n if (isDisposed) return;\n isDisposed = true;\n\n navigationSubscription?.unsubscribe();\n navigationSubscription = null;\n\n const finish = () => {\n backdropElement?.remove();\n overlayContainer?.remove();\n instance.destroy();\n this.zIndexService.release(zToken);\n zToken = null;\n options?.onDispose?.();\n };\n\n const animationTarget = overlayContainer ? getOverlayAnimationTarget(overlayContainer) : null;\n if (!animationTarget || !animation.leave.length || reduceMotion) {\n finish();\n return;\n }\n\n if (overlayContainer) {\n overlayContainer.style.pointerEvents = 'none';\n }\n if (backdropElement) {\n backdropElement.style.pointerEvents = 'none';\n }\n\n void playOverlayLeaveAnimation(animationTarget, animation.enter, animation.leave, this.document).finally(finish);\n };\n\n const bringToFront = () => {\n if (!zToken || isDisposed) return;\n zToken = this.zIndexService.bringToFront(zToken);\n if (backdropElement) {\n backdropElement.style.zIndex = String(zToken.zIndex);\n }\n if (overlayContainer) {\n overlayContainer.style.zIndex = String(zToken.zIndex);\n }\n };\n\n // Set up backdrop click handler\n if (backdropElement && options?.backdrop?.closeOnClick) {\n backdropElement.addEventListener('click', () => {\n dispose();\n });\n }\n\n if (options?.closeOnNavigation !== false && this.router) {\n navigationSubscription = this.router.events\n .pipe(filter((event): event is NavigationStart => event instanceof NavigationStart))\n .subscribe(() => {\n dispose();\n });\n }\n\n this.applyOverlayVisualContext(options, overlayContainer);\n\n const animationTarget = overlayContainer ? getOverlayAnimationTarget(overlayContainer) : null;\n if (animationTarget && animation.enter.length && !reduceMotion) {\n applyOverlayAnimationClasses(animationTarget, animation.enter);\n }\n\n return {\n instance,\n updatePosition,\n dispose,\n overlayElement: overlayContainer,\n backdropElement,\n zToken,\n bringToFront,\n };\n }\n\n /**\n * Mobile action sheets need a hit-testable scrim even when the caller did not\n * ask for a backdrop. An explicit `backdrop.enabled: false` opts out.\n */\n private needsActionSheetBackdrop(options: AXOverlayOptions | undefined): boolean {\n return !!options?.actionSheetStyle && this._platform.is('SM') && options?.backdrop?.enabled !== false;\n }\n\n /**\n * Fills in the action-sheet scrim when the caller did not configure a backdrop.\n * Outside-click closing stays with the popover (`clickOut`); this layer only\n * intercepts hits so the page behind the sheet cannot be clicked.\n */\n private withActionSheetBackdrop(options: AXOverlayOptions | undefined): AXOverlayOptions | undefined {\n if (!this.needsActionSheetBackdrop(options) || options?.backdrop?.enabled) {\n return options;\n }\n return {\n ...options,\n backdrop: {\n enabled: true,\n background: true,\n },\n };\n }\n\n /**\n * Creates a backdrop element.\n */\n private createBackdrop(options: AXOverlayOptions | undefined, zIndex: number): HTMLElement {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-overlay-backdrop');\n\n if (options?.backdrop?.backdropClass) {\n backdrop.classList.add(options.backdrop.backdropClass);\n }\n\n // Style the backdrop\n backdrop.style.position = 'fixed';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n backdrop.style.zIndex = String(zIndex);\n backdrop.style.pointerEvents = 'auto';\n backdrop.style.touchAction = 'none';\n\n if (options?.backdrop?.background) {\n backdrop.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';\n }\n\n this.document.body.appendChild(backdrop);\n return backdrop;\n }\n\n /**\n * Creates a centered overlay container (for modals/popups).\n */\n private createCenteredOverlayContainer(\n content: HTMLElement,\n options: AXOverlayOptions | undefined,\n zIndex: number,\n ): HTMLElement {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container', 'ax-overlay-centered');\n\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n\n // Set styles for centered positioning\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.zIndex = String(zIndex);\n\n // Create inner wrapper for the content\n const contentWrapper = this.document.createElement('div');\n contentWrapper.classList.add('ax-overlay-content');\n\n // Apply width if provided\n if (options?.width) {\n contentWrapper.style.width = options.width;\n } else if (this.hasPanelClass(options?.panelClass, 'ax-popup-overlay')) {\n contentWrapper.style.width = 'auto';\n contentWrapper.style.maxWidth = '100%';\n }\n\n // Move content into wrapper\n contentWrapper.appendChild(content);\n container.appendChild(contentWrapper);\n\n // Append to body\n this.document.body.appendChild(container);\n\n return container;\n }\n\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n private hasPanelClass(panelClass: string | string[] | undefined, className: string): boolean {\n if (!panelClass) return false;\n const classes = Array.isArray(panelClass) ? panelClass : [panelClass];\n return classes.some((cls) => cls === className);\n }\n\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n private getHostElement<T>(instance: EmbeddedViewRef<T> | ComponentRef<T>): HTMLElement {\n if (instance instanceof ComponentRef) {\n return instance.location.nativeElement;\n } else {\n // EmbeddedViewRef - get the first root node\n return instance.rootNodes[0] as HTMLElement;\n }\n }\n\n /**\n * Creates an overlay container element and appends the content to it.\n */\n private createOverlayContainer(\n content: HTMLElement,\n options: AXOverlayOptions | undefined,\n zIndex: number,\n ): HTMLElement {\n const container = this.document.createElement('div');\n const pane = this.document.createElement('div');\n container.classList.add('ax-overlay-container');\n\n if (Array.isArray(options.panelClass)) {\n const check = options.panelClass.some((element) => {\n return element === 'ax-action-sheet-panel';\n });\n if (!check) pane.classList.add('ax-overlay-pane');\n }\n\n if (options.actionSheetStyle && this._platform.is('SM')) pane.classList.add('ax-overlay-actionsheet');\n\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n\n // Set initial styles for positioning\n container.style.position = 'fixed';\n container.style.zIndex = String(zIndex);\n container.style.maxWidth = '100%';\n container.style.maxHeight = '100%';\n\n if (options?.actionSheetStyle) {\n container.style.width = this._platform.is('SM') ? '100%' : 'fit-content';\n } else {\n container.style.width = options?.width || 'fit-content';\n }\n\n // Move content into container\n pane.appendChild(content);\n container.appendChild(pane);\n\n // Append to body\n this.document.body.appendChild(container);\n\n return container;\n }\n\n /**\n * Positions the overlay container relative to the anchor element.\n */\n private positionOverlay(container: HTMLElement, options: AXOverlayOptions): void {\n if (options.actionSheetStyle && this._platform.is('SM')) {\n container.style.bottom = `0px`;\n container.style.left = `0px`;\n container.style.right = `0px`;\n container.style.width = 'auto';\n return;\n }\n\n const anchorOptions = options.anchorOptions;\n if (!anchorOptions?.anchor) return;\n\n const anchorElement =\n anchorOptions.anchor instanceof ElementRef ? anchorOptions.anchor.nativeElement : anchorOptions.anchor;\n\n const anchorRect = anchorElement.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const viewportWidth = this.document.documentElement.clientWidth;\n const viewportHeight = this.document.documentElement.clientHeight;\n\n // Get positions from placement\n let positions = convertToPlacement(anchorOptions.placement ?? 'bottom');\n if (positions.length === 0) {\n positions = convertToPlacement('bottom');\n }\n\n // Apply custom offsets to positions with direction-aware inversion\n // When position flips, the offset should also be inverted to maintain the intended gap\n if (anchorOptions.offsetX || anchorOptions.offsetY) {\n const primaryPosition = positions[0];\n positions = positions.map((p) => {\n let adjustedOffsetX = anchorOptions.offsetX ?? 0;\n let adjustedOffsetY = anchorOptions.offsetY ?? 0;\n\n // Invert offsetY when vertical direction flips\n // (from bottom to top or vice versa)\n if (primaryPosition.originY !== p.originY) {\n adjustedOffsetY = -adjustedOffsetY;\n }\n\n // Invert offsetX when horizontal direction flips\n // (from end to start or vice versa)\n if (primaryPosition.originX !== p.originX) {\n adjustedOffsetX = -adjustedOffsetX;\n }\n\n return {\n ...p,\n offsetX: (p.offsetX ?? 0) + adjustedOffsetX,\n offsetY: (p.offsetY ?? 0) + adjustedOffsetY,\n };\n });\n }\n\n // Find the best position that fits in viewport\n const { coords } = anchorOptions.autoFlip\n ? findBestPosition(anchorRect, containerRect, positions, viewportWidth, viewportHeight)\n : {\n coords: {\n top:\n positions[0].originY === 'bottom'\n ? anchorRect.bottom + (positions[0].offsetY ?? 0)\n : anchorRect.top - containerRect.height + (positions[0].offsetY ?? 0),\n left: anchorRect.left + (positions[0].offsetX ?? 0),\n },\n };\n\n // Apply position\n container.style.top = `${coords.top}px`;\n container.style.left = `${coords.left}px`;\n }\n\n private applyOverlayVisualContext(options: AXOverlayOptions | undefined, targetElement: HTMLElement | null): void {\n if (!targetElement) return;\n\n const fallbackRoot = this.document.documentElement;\n const source = resolveContextElement(options?.contextElement, options?.anchorOptions?.anchor, fallbackRoot);\n const context = resolveVisualContext(source, fallbackRoot);\n const scope = options?.visualContextScope ?? 'full';\n applyVisualContext(targetElement, context, scope);\n\n const pane = targetElement.querySelector('.ax-overlay-pane');\n // Pane is a separate stacking context; mirror context classes so portaled content\n // inherits the same CSS variables when the pane is not a descendant of the container.\n if (pane instanceof HTMLElement) {\n applyVisualContext(pane, context, scope);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-cdk-overlay.mjs","sources":["../../../../packages/cdk/overlay/src/lib/overlay-animation.ts","../../../../packages/cdk/overlay/src/lib/overlay-visual-context.ts","../../../../packages/cdk/overlay/src/lib/overlay.types.ts","../../../../packages/cdk/overlay/src/lib/overlay.service.ts","../../../../packages/cdk/overlay/src/acorex-cdk-overlay.ts"],"sourcesContent":["export const AX_OVERLAY_DEFAULT_ENTER_ANIMATION = ['animate-animated', 'animate-fadeIn', 'animate-fast'];\nexport const AX_OVERLAY_DEFAULT_LEAVE_ANIMATION = ['animate-animated', 'animate-fadeOut', 'animate-2xfaster'];\n\nconst OVERLAY_ANIMATION_DURATION_CLASSES = [\n 'animate-2xfaster',\n 'animate-faster',\n 'animate-fast',\n 'animate-slow',\n 'animate-slower',\n 'animate-2xslower',\n] as const;\n\nconst OVERLAY_ANIMATION_NAME_CLASSES = ['animate-fadeIn', 'animate-fadeOut'] as const;\n\nexport type AXOverlayAnimation =\n | boolean\n | string[]\n | {\n enter?: string[];\n leave?: string[];\n };\n\nexport interface AXOverlayResolvedAnimation {\n enter: string[];\n leave: string[];\n}\n\n/**\n * Resolves overlay animation classes.\n * - omitted: no animation (opt-in at the overlay layer)\n * - `true`: default fade in/out\n * - `false` or `[]`: no animation\n * - `string[]`: custom enter classes only\n * - `{ enter, leave }`: omitted keys fall back to the default fade classes\n */\nexport function resolveOverlayAnimation(animation?: AXOverlayAnimation): AXOverlayResolvedAnimation {\n if (animation === undefined || animation === false) {\n return { enter: [], leave: [] };\n }\n\n if (animation === true) {\n return {\n enter: [...AX_OVERLAY_DEFAULT_ENTER_ANIMATION],\n leave: [...AX_OVERLAY_DEFAULT_LEAVE_ANIMATION],\n };\n }\n\n if (Array.isArray(animation)) {\n if (animation.length === 0) {\n return { enter: [], leave: [] };\n }\n return { enter: [...animation], leave: [] };\n }\n\n return {\n enter: animation.enter === undefined ? [...AX_OVERLAY_DEFAULT_ENTER_ANIMATION] : [...animation.enter],\n leave: animation.leave === undefined ? [...AX_OVERLAY_DEFAULT_LEAVE_ANIMATION] : [...animation.leave],\n };\n}\n\n/** Prefers the content/pane so transforms are not applied to the full-screen container. */\nexport function getOverlayAnimationTarget(container: HTMLElement): HTMLElement {\n const content = container.querySelector<HTMLElement>(':scope > .ax-overlay-content');\n if (content) return content;\n const pane = container.querySelector<HTMLElement>(':scope > .ax-overlay-pane');\n if (pane) return pane;\n return container;\n}\n\nexport function applyOverlayAnimationClasses(element: HTMLElement, classes: string[]): void {\n for (const cls of classes) {\n if (cls) {\n element.classList.add(cls);\n }\n }\n}\n\nexport function removeOverlayAnimationClasses(element: HTMLElement, classes: string[]): void {\n for (const cls of classes) {\n if (cls) {\n element.classList.remove(cls);\n }\n }\n}\n\nexport function prefersReducedMotion(documentRef: Document): boolean {\n return !!documentRef.defaultView?.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function parseCssTimeList(value: string): number[] {\n return value.split(',').map((part) => {\n const trimmed = part.trim();\n if (trimmed.endsWith('ms')) {\n return Number.parseFloat(trimmed) || 0;\n }\n if (trimmed.endsWith('s')) {\n return (Number.parseFloat(trimmed) || 0) * 1000;\n }\n return 0;\n });\n}\n\n/** Maps theme duration utility classes to milliseconds (see tailwind-base). */\nexport function getAnimationDurationFromClasses(classes: string[]): number {\n if (classes.includes('animate-2xfaster')) return 250;\n if (classes.includes('animate-faster')) return 500;\n if (classes.includes('animate-fast')) return 800;\n if (classes.includes('animate-slow')) return 2000;\n if (classes.includes('animate-slower')) return 3000;\n if (classes.includes('animate-2xslower')) return 5000;\n return 500;\n}\n\nexport function getOverlayAnimationTimeout(\n element: HTMLElement,\n documentRef: Document,\n fallbackMs?: number,\n): number {\n if (fallbackMs !== undefined && fallbackMs > 0) {\n return fallbackMs + 32;\n }\n\n const style = documentRef.defaultView?.getComputedStyle(element);\n if (!style) return 0;\n\n const durations = parseCssTimeList(style.animationDuration);\n const delays = parseCssTimeList(style.animationDelay);\n const max = durations.reduce((longest, duration, index) => {\n return Math.max(longest, duration + (delays[index] ?? delays[0] ?? 0));\n }, 0);\n\n return max > 0 ? max + 32 : 0;\n}\n\nexport function playOverlayLeaveAnimation(\n element: HTMLElement,\n enter: string[],\n leave: string[],\n documentRef: Document,\n): Promise<void> {\n removeOverlayAnimationClasses(element, [\n ...enter,\n ...OVERLAY_ANIMATION_NAME_CLASSES,\n ...OVERLAY_ANIMATION_DURATION_CLASSES,\n ]);\n void element.offsetWidth;\n\n const leaveDurationMs = getAnimationDurationFromClasses(leave);\n applyOverlayAnimationClasses(element, leave);\n element.style.animationDuration = `${leaveDurationMs}ms`;\n\n return waitForOverlayAnimationEnd(element, documentRef, {\n fallbackMs: leaveDurationMs,\n animationName: 'fadeOut',\n });\n}\n\nexport function waitForOverlayAnimationEnd(\n element: HTMLElement,\n documentRef: Document,\n options?: { fallbackMs?: number; animationName?: string },\n): Promise<void> {\n return new Promise((resolve) => {\n const timeoutMs = getOverlayAnimationTimeout(element, documentRef, options?.fallbackMs);\n if (timeoutMs <= 0) {\n resolve();\n return;\n }\n\n let settled = false;\n const finish = () => {\n if (settled) return;\n settled = true;\n element.removeEventListener('animationend', onEnd);\n element.style.animationDuration = '';\n resolve();\n };\n const onEnd = (event: AnimationEvent) => {\n if (event.target !== element) return;\n if (options?.animationName && !event.animationName.toLowerCase().includes(options.animationName.toLowerCase())) {\n return;\n }\n finish();\n };\n\n element.addEventListener('animationend', onEnd);\n documentRef.defaultView?.setTimeout(finish, timeoutMs);\n });\n}\n","import { ElementRef } from '@angular/core';\n\nexport type AXOverlayVisualContextScope = 'full' | 'theme';\n\nexport interface AXOverlayVisualContext {\n appearance?: string;\n theme?: 'ax-light' | 'ax-dark';\n contrast?: string;\n size?: string;\n}\n\nexport const APPEARANCE_CLASSES = [\n 'ax-appearance-flat',\n 'ax-appearance-depth',\n 'ax-appearance-translucent',\n] as const;\n\nexport const THEME_CLASSES = ['ax-light', 'ax-dark'] as const;\n\nexport const CONTRAST_CLASSES = ['ax-contrast-enhanced', 'ax-contrast-high'] as const;\n\nexport const SIZE_CLASSES = ['ax-xs', 'ax-sm', 'ax-md', 'ax-lg', 'ax-xl'] as const;\n\nexport const MANAGED_OVERLAY_VISUAL_CLASSES = [\n ...APPEARANCE_CLASSES,\n ...THEME_CLASSES,\n ...CONTRAST_CLASSES,\n ...SIZE_CLASSES,\n] as const;\n\n/**\n * Resolves the nearest effective visual context from an anchor or context source.\n * Theme uses nearest ax-light / ax-dark so nested Light overrides Dark ancestors.\n */\nexport function resolveVisualContext(\n source: HTMLElement | null | undefined,\n fallbackRoot?: HTMLElement | null,\n): AXOverlayVisualContext {\n const context: AXOverlayVisualContext = {};\n const root = fallbackRoot ?? (typeof document !== 'undefined' ? document.documentElement : null);\n\n let node: HTMLElement | null = source ?? root;\n while (node) {\n if (!context.appearance) {\n for (const cls of APPEARANCE_CLASSES) {\n if (node.classList.contains(cls)) {\n context.appearance = cls;\n break;\n }\n }\n }\n\n if (!context.contrast) {\n for (const cls of CONTRAST_CLASSES) {\n if (node.classList.contains(cls)) {\n context.contrast = cls;\n break;\n }\n }\n }\n\n if (!context.size) {\n for (const cls of SIZE_CLASSES) {\n if (node.classList.contains(cls)) {\n context.size = cls;\n break;\n }\n }\n\n if (!context.size && typeof getComputedStyle !== 'undefined') {\n const computedSize = getComputedStyle(node).getPropertyValue('--ax-sys-size').trim();\n if (SIZE_CLASSES.includes(computedSize as (typeof SIZE_CLASSES)[number])) {\n context.size = computedSize;\n }\n }\n }\n\n if (!context.theme) {\n if (node.classList.contains('ax-light')) {\n context.theme = 'ax-light';\n } else if (node.classList.contains('ax-dark')) {\n context.theme = 'ax-dark';\n }\n }\n\n node = node.parentElement;\n }\n\n if (!context.theme && root) {\n if (root.classList.contains('ax-light')) {\n context.theme = 'ax-light';\n } else if (root.classList.contains('ax-dark')) {\n context.theme = 'ax-dark';\n }\n }\n\n return context;\n}\n\n/** Applies resolved visual context classes to an overlay container. */\nexport function applyVisualContext(\n target: HTMLElement,\n context: AXOverlayVisualContext,\n scope: AXOverlayVisualContextScope = 'full',\n): void {\n for (const cls of MANAGED_OVERLAY_VISUAL_CLASSES) {\n target.classList.remove(cls);\n }\n\n if (scope === 'full' && context.appearance) {\n target.classList.add(context.appearance);\n }\n if (context.theme) {\n target.classList.add(context.theme);\n }\n if (scope === 'full' && context.contrast) {\n target.classList.add(context.contrast);\n }\n if (context.size) {\n target.classList.add(context.size);\n }\n}\n\nexport function resolveContextElement(\n contextElement: HTMLElement | ElementRef<HTMLElement> | undefined,\n anchor: HTMLElement | ElementRef<HTMLElement> | undefined,\n fallbackRoot: HTMLElement,\n): HTMLElement {\n if (contextElement) {\n return contextElement instanceof ElementRef ? contextElement.nativeElement : contextElement;\n }\n if (anchor) {\n return anchor instanceof ElementRef ? anchor.nativeElement : anchor;\n }\n return fallbackRoot;\n}\n","import { AXConnectedPosition, AXPlacement, AXPlacementType } from '@acorex/cdk/common';\nimport { AXComponentOptions } from '@acorex/core/components';\nimport { AXZToken } from '@acorex/core/z-index';\nimport { ComponentRef, ElementRef, EmbeddedViewRef } from '@angular/core';\nimport type { AXOverlayAnimation } from './overlay-animation';\nimport type { AXOverlayVisualContextScope } from './overlay-visual-context';\n\nexport interface AXOverlayRef<T> {\n instance: EmbeddedViewRef<T> | ComponentRef<T>;\n /** Updates the overlay position relative to the anchor */\n updatePosition: () => void;\n /** Destroys the overlay. DOM removal waits for a leave animation when one is configured. */\n dispose: () => void;\n /** The overlay container element */\n overlayElement: HTMLElement | null;\n /** The backdrop element if one was created */\n backdropElement: HTMLElement | null;\n /** The z-index token for this overlay */\n zToken: AXZToken | null;\n /** Brings this overlay to the front of all other overlays */\n bringToFront: () => void;\n}\n\nexport interface AXOverlayAnchorOptions {\n /** The anchor element to position relative to */\n anchor: HTMLElement | ElementRef<HTMLElement>;\n /** Placement of the overlay relative to the anchor */\n placement?: AXPlacementType;\n /** Horizontal offset in pixels */\n offsetX?: number;\n /** Vertical offset in pixels */\n offsetY?: number;\n /** Whether to flip the overlay when it overflows the viewport */\n autoFlip?: boolean;\n}\n\nexport interface AXOverlayOptions extends AXComponentOptions {\n backdrop?: {\n enabled?: boolean;\n background?: boolean;\n backdropClass?: string;\n closeOnClick?: boolean;\n };\n position?: AXPlacement;\n /** Anchor-based positioning options for tooltips, popovers, etc. */\n anchorOptions?: AXOverlayAnchorOptions;\n /** Custom CSS class for the overlay panel */\n panelClass?: string | string[];\n /**\n * Enter/leave animation applied to overlay content (`.ax-overlay-content` or `.ax-overlay-pane`),\n * not the full-screen container. Omitted: no animation. `true`: default fade in/out.\n * `false` or `[]`: disabled. A class array is enter-only. `{ enter, leave }` configures both.\n */\n animation?: AXOverlayAnimation;\n /** Whether to close when clicking outside */\n closeOnOutsideClick?: boolean;\n /** Whether to close when pressing Escape */\n closeOnEscape?: boolean;\n /** Width of the overlay container (e.g., 'auto', '200px', '100%') */\n width?: string;\n /** Dispose this overlay when Angular starts a navigation. Default: true. */\n closeOnNavigation?: boolean;\n /** Callback when the overlay is disposed (e.g., due to scroll) */\n onDispose?: () => void;\n /** Whether to use centered container (default: true). Set to false for positioned overlays like toasts */\n centered?: boolean;\n actionSheetStyle?: boolean;\n /** Base z-index for this overlay */\n zIndexBase?: number;\n /**\n * Visual context source for anchorless overlays (toast, dialog, notification).\n * Falls back to anchor, then document root.\n */\n contextElement?: HTMLElement | ElementRef<HTMLElement>;\n /**\n * Which visual context dimensions propagate to the overlay shell.\n * `theme` keeps light/dark (+ size) only; floating surfaces opt out of\n * appearance/contrast classes (popup, toast, dropdown).\n */\n visualContextScope?: AXOverlayVisualContextScope;\n}\n\n/**\n * Calculates the position of an overlay element relative to an anchor element.\n */\nexport function calculateAnchorPosition(\n anchorRect: DOMRect,\n overlayRect: DOMRect,\n position: AXConnectedPosition,\n): { top: number; left: number } {\n let left = 0;\n let top = 0;\n\n // Calculate origin point on anchor\n switch (position.originX) {\n case 'start':\n left = anchorRect.left;\n break;\n case 'center':\n left = anchorRect.left + anchorRect.width / 2;\n break;\n case 'end':\n left = anchorRect.right;\n break;\n }\n\n switch (position.originY) {\n case 'top':\n top = anchorRect.top;\n break;\n case 'center':\n top = anchorRect.top + anchorRect.height / 2;\n break;\n case 'bottom':\n top = anchorRect.bottom;\n break;\n }\n\n // Adjust for overlay alignment\n switch (position.overlayX) {\n case 'start':\n // left stays the same\n break;\n case 'center':\n left -= overlayRect.width / 2;\n break;\n case 'end':\n left -= overlayRect.width;\n break;\n }\n\n switch (position.overlayY) {\n case 'top':\n // top stays the same\n break;\n case 'center':\n top -= overlayRect.height / 2;\n break;\n case 'bottom':\n top -= overlayRect.height;\n break;\n }\n\n // Apply offsets\n if (position.offsetX) {\n left += position.offsetX;\n }\n if (position.offsetY) {\n top += position.offsetY;\n }\n\n return { top, left };\n}\n\n/**\n * Checks if the overlay position fits within the viewport.\n */\nexport function fitsInViewport(\n position: { top: number; left: number },\n overlayRect: DOMRect,\n viewportWidth: number,\n viewportHeight: number,\n): boolean {\n return (\n position.left >= 0 &&\n position.top >= 0 &&\n position.left + overlayRect.width <= viewportWidth &&\n position.top + overlayRect.height <= viewportHeight\n );\n}\n\n/**\n * Clamps a position to ensure the overlay stays within viewport bounds.\n */\nexport function clampToViewport(\n coords: { top: number; left: number },\n overlayRect: DOMRect,\n viewportWidth: number,\n viewportHeight: number,\n margin = 4,\n): { top: number; left: number } {\n const clampedLeft = Math.max(margin, Math.min(coords.left, viewportWidth - overlayRect.width - margin));\n const clampedTop = Math.max(margin, Math.min(coords.top, viewportHeight - overlayRect.height - margin));\n\n return { top: clampedTop, left: clampedLeft };\n}\n\n/**\n * Free vertical space on the anchor side used by a connected position.\n */\nfunction verticalFreeSpaceForPosition(\n anchorRect: DOMRect,\n position: AXConnectedPosition,\n viewportHeight: number,\n): number {\n if (position.originY === 'bottom' && position.overlayY === 'top') {\n return viewportHeight - anchorRect.bottom;\n }\n if (position.originY === 'top' && position.overlayY === 'bottom') {\n return anchorRect.top;\n }\n return viewportHeight;\n}\n\nfunction isVerticalAnchorPlacement(position: AXConnectedPosition): boolean {\n return (\n (position.originY === 'bottom' && position.overlayY === 'top') ||\n (position.originY === 'top' && position.overlayY === 'bottom')\n );\n}\n\nfunction clampHorizontalToViewport(\n coords: { top: number; left: number },\n overlayRect: DOMRect,\n viewportWidth: number,\n margin = 4,\n): { top: number; left: number } {\n const clampedLeft = Math.max(margin, Math.min(coords.left, viewportWidth - overlayRect.width - margin));\n return { top: coords.top, left: clampedLeft };\n}\n\n/**\n * Finds the best position for an overlay that fits in the viewport.\n */\nexport function findBestPosition(\n anchorRect: DOMRect,\n overlayRect: DOMRect,\n positions: AXConnectedPosition[],\n viewportWidth: number,\n viewportHeight: number,\n): { position: AXConnectedPosition; coords: { top: number; left: number } } {\n for (const position of positions) {\n const coords = calculateAnchorPosition(anchorRect, overlayRect, position);\n\n if (fitsInViewport(coords, overlayRect, viewportWidth, viewportHeight)) {\n return { position, coords };\n }\n }\n\n // Fallback: anchor to the side with the most vertical room; do not slide over the anchor.\n let bestPosition = positions[0];\n let bestSpace = verticalFreeSpaceForPosition(anchorRect, bestPosition, viewportHeight);\n for (let i = 1; i < positions.length; i++) {\n const space = verticalFreeSpaceForPosition(anchorRect, positions[i], viewportHeight);\n if (space > bestSpace) {\n bestSpace = space;\n bestPosition = positions[i];\n }\n }\n\n const fallbackCoords = calculateAnchorPosition(anchorRect, overlayRect, bestPosition);\n const clampedCoords = isVerticalAnchorPlacement(bestPosition)\n ? clampHorizontalToViewport(fallbackCoords, overlayRect, viewportWidth)\n : clampToViewport(fallbackCoords, overlayRect, viewportWidth, viewportHeight);\n return { position: bestPosition, coords: clampedCoords };\n}\n","import { convertToPlacement } from '@acorex/cdk/common';\nimport { AXComponentContent, AXComponentService } from '@acorex/core/components';\nimport { AXPlatform } from '@acorex/core/platform';\nimport { AXZIndexService, AXZToken } from '@acorex/core/z-index';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentRef, ElementRef, EmbeddedViewRef, inject, Injectable, TemplateRef } from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport {\n applyOverlayAnimationClasses,\n getOverlayAnimationTarget,\n playOverlayLeaveAnimation,\n prefersReducedMotion,\n resolveOverlayAnimation,\n} from './overlay-animation';\nimport { applyVisualContext, resolveContextElement, resolveVisualContext } from './overlay-visual-context';\nimport { AXOverlayOptions, AXOverlayRef, findBestPosition } from './overlay.types';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AXOverlayService {\n private componentService = inject(AXComponentService);\n private document = inject(DOCUMENT);\n private zIndexService = inject(AXZIndexService);\n private _platform: AXPlatform = inject(AXPlatform);\n private router = inject(Router, { optional: true });\n\n /**\n * Creates an overlay with optional anchor-based positioning.\n * @param content - Component or template to display\n * @param options - Configuration options for the overlay\n * @returns Promise<AXOverlayRef> - Reference to the created overlay\n */\n async create<T = unknown>(content: AXComponentContent<T>, options?: AXOverlayOptions): Promise<AXOverlayRef<T>> {\n let instance: EmbeddedViewRef<T> | ComponentRef<T>;\n let overlayContainer: HTMLElement | null = null;\n let backdropElement: HTMLElement | null = null;\n let isDisposed = false;\n let navigationSubscription: Subscription | null = null;\n\n // Acquire a z-index token for this overlay\n let zToken: AXZToken | null = this.zIndexService.acquire(options?.zIndexBase);\n\n if (content instanceof TemplateRef) {\n instance = this.componentService.createFromTemplate<T>(content);\n } else {\n instance = this.componentService.createFromComponent<T>(content);\n if (options?.inputs) {\n Object.entries(options.inputs).forEach((c) => {\n (instance as ComponentRef<T>).setInput(c[0], c[1]);\n });\n }\n }\n\n // Get the host element\n const hostElement = this.getHostElement(instance);\n\n // Create backdrop if enabled. Mobile action sheets also get one: their dimming\n // used to be a box-shadow spread, which paints the scrim but does not hit-test,\n // so controls behind the sheet stayed clickable.\n if (options?.backdrop?.enabled || this.needsActionSheetBackdrop(options)) {\n backdropElement = this.createBackdrop(this.withActionSheetBackdrop(options), zToken.zIndex);\n }\n\n // If anchor options are provided, set up positioned overlay (for tooltips, popovers)\n if (options?.anchorOptions?.anchor) {\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n this.positionOverlay(overlayContainer, options);\n } else if (options?.centered === false) {\n // Non-centered positioned overlay (for toasts, notifications)\n overlayContainer = this.createOverlayContainer(hostElement, options, zToken.zIndex);\n } else {\n // No anchor - create centered overlay (for modals, popups)\n overlayContainer = this.createCenteredOverlayContainer(hostElement, options, zToken.zIndex);\n }\n\n const updatePosition = () => {\n if (overlayContainer && options?.anchorOptions?.anchor) {\n this.positionOverlay(overlayContainer, options);\n }\n };\n\n const animation = resolveOverlayAnimation(options?.animation);\n const reduceMotion = prefersReducedMotion(this.document);\n\n const dispose = () => {\n if (isDisposed) return;\n isDisposed = true;\n\n navigationSubscription?.unsubscribe();\n navigationSubscription = null;\n\n const finish = () => {\n backdropElement?.remove();\n overlayContainer?.remove();\n instance.destroy();\n this.zIndexService.release(zToken);\n zToken = null;\n options?.onDispose?.();\n };\n\n const animationTarget = overlayContainer ? getOverlayAnimationTarget(overlayContainer) : null;\n if (!animationTarget || !animation.leave.length || reduceMotion) {\n finish();\n return;\n }\n\n if (overlayContainer) {\n overlayContainer.style.pointerEvents = 'none';\n }\n if (backdropElement) {\n backdropElement.style.pointerEvents = 'none';\n }\n\n void playOverlayLeaveAnimation(animationTarget, animation.enter, animation.leave, this.document).finally(finish);\n };\n\n const bringToFront = () => {\n if (!zToken || isDisposed) return;\n zToken = this.zIndexService.bringToFront(zToken);\n if (backdropElement) {\n backdropElement.style.zIndex = String(zToken.zIndex);\n }\n if (overlayContainer) {\n overlayContainer.style.zIndex = String(zToken.zIndex);\n }\n };\n\n // Set up backdrop click handler\n if (backdropElement && options?.backdrop?.closeOnClick) {\n backdropElement.addEventListener('click', () => {\n dispose();\n });\n }\n\n if (options?.closeOnNavigation !== false && this.router) {\n navigationSubscription = this.router.events\n .pipe(filter((event): event is NavigationStart => event instanceof NavigationStart))\n .subscribe(() => {\n dispose();\n });\n }\n\n this.applyOverlayVisualContext(options, overlayContainer);\n\n const animationTarget = overlayContainer ? getOverlayAnimationTarget(overlayContainer) : null;\n if (animationTarget && animation.enter.length && !reduceMotion) {\n applyOverlayAnimationClasses(animationTarget, animation.enter);\n }\n\n return {\n instance,\n updatePosition,\n dispose,\n overlayElement: overlayContainer,\n backdropElement,\n zToken,\n bringToFront,\n };\n }\n\n /**\n * Mobile action sheets need a hit-testable scrim even when the caller did not\n * ask for a backdrop. An explicit `backdrop.enabled: false` opts out.\n */\n private needsActionSheetBackdrop(options: AXOverlayOptions | undefined): boolean {\n return !!options?.actionSheetStyle && this._platform.is('SM') && options?.backdrop?.enabled !== false;\n }\n\n /**\n * Fills in the action-sheet scrim when the caller did not configure a backdrop.\n * Outside-click closing stays with the popover (`clickOut`); this layer only\n * intercepts hits so the page behind the sheet cannot be clicked.\n */\n private withActionSheetBackdrop(options: AXOverlayOptions | undefined): AXOverlayOptions | undefined {\n if (!this.needsActionSheetBackdrop(options) || options?.backdrop?.enabled) {\n return options;\n }\n return {\n ...options,\n backdrop: {\n enabled: true,\n background: true,\n },\n };\n }\n\n /**\n * Creates a backdrop element.\n */\n private createBackdrop(options: AXOverlayOptions | undefined, zIndex: number): HTMLElement {\n const backdrop = this.document.createElement('div');\n backdrop.classList.add('ax-overlay-backdrop');\n\n if (options?.backdrop?.backdropClass) {\n backdrop.classList.add(options.backdrop.backdropClass);\n }\n\n // Style the backdrop\n backdrop.style.position = 'fixed';\n backdrop.style.top = '0';\n backdrop.style.left = '0';\n backdrop.style.width = '100%';\n backdrop.style.height = '100%';\n backdrop.style.zIndex = String(zIndex);\n backdrop.style.pointerEvents = 'auto';\n backdrop.style.touchAction = 'none';\n\n if (options?.backdrop?.background) {\n backdrop.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';\n }\n\n this.document.body.appendChild(backdrop);\n return backdrop;\n }\n\n /**\n * Creates a centered overlay container (for modals/popups).\n */\n private createCenteredOverlayContainer(\n content: HTMLElement,\n options: AXOverlayOptions | undefined,\n zIndex: number,\n ): HTMLElement {\n const container = this.document.createElement('div');\n container.classList.add('ax-overlay-container', 'ax-overlay-centered');\n\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n\n // Set styles for centered positioning\n container.style.position = 'fixed';\n container.style.top = '0';\n container.style.left = '0';\n container.style.width = '100%';\n container.style.height = '100%';\n container.style.display = 'flex';\n container.style.alignItems = 'center';\n container.style.justifyContent = 'center';\n container.style.zIndex = String(zIndex);\n\n // Create inner wrapper for the content\n const contentWrapper = this.document.createElement('div');\n contentWrapper.classList.add('ax-overlay-content');\n\n // Apply width if provided\n if (options?.width) {\n contentWrapper.style.width = options.width;\n } else if (this.hasPanelClass(options?.panelClass, 'ax-popup-overlay')) {\n contentWrapper.style.width = 'auto';\n contentWrapper.style.maxWidth = '100%';\n }\n\n // Move content into wrapper\n contentWrapper.appendChild(content);\n container.appendChild(contentWrapper);\n\n // Append to body\n this.document.body.appendChild(container);\n\n return container;\n }\n\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n private hasPanelClass(panelClass: string | string[] | undefined, className: string): boolean {\n if (!panelClass) return false;\n const classes = Array.isArray(panelClass) ? panelClass : [panelClass];\n return classes.some((cls) => cls === className);\n }\n\n /**\n * Gets the host element from a ComponentRef or EmbeddedViewRef.\n */\n private getHostElement<T>(instance: EmbeddedViewRef<T> | ComponentRef<T>): HTMLElement {\n if (instance instanceof ComponentRef) {\n return instance.location.nativeElement;\n } else {\n // EmbeddedViewRef - get the first root node\n return instance.rootNodes[0] as HTMLElement;\n }\n }\n\n /**\n * Creates an overlay container element and appends the content to it.\n */\n private createOverlayContainer(\n content: HTMLElement,\n options: AXOverlayOptions | undefined,\n zIndex: number,\n ): HTMLElement {\n const container = this.document.createElement('div');\n const pane = this.document.createElement('div');\n container.classList.add('ax-overlay-container');\n\n if (Array.isArray(options.panelClass)) {\n const check = options.panelClass.some((element) => {\n return element === 'ax-action-sheet-panel';\n });\n if (!check) pane.classList.add('ax-overlay-pane');\n }\n\n if (options.actionSheetStyle && this._platform.is('SM')) pane.classList.add('ax-overlay-actionsheet');\n\n // Add custom panel classes\n if (options?.panelClass) {\n const classes = Array.isArray(options.panelClass) ? options.panelClass : [options.panelClass];\n classes.forEach((cls) => {\n if (cls) {\n container.classList.add(cls);\n }\n });\n }\n\n // Set initial styles for positioning\n container.style.position = 'fixed';\n container.style.zIndex = String(zIndex);\n container.style.maxWidth = '100%';\n container.style.maxHeight = '100%';\n\n if (options?.actionSheetStyle) {\n container.style.width = this._platform.is('SM') ? '100%' : 'fit-content';\n } else {\n container.style.width = options?.width || 'fit-content';\n }\n\n // Move content into container\n pane.appendChild(content);\n container.appendChild(pane);\n\n // Append to body\n this.document.body.appendChild(container);\n\n return container;\n }\n\n /**\n * Positions the overlay container relative to the anchor element.\n */\n private positionOverlay(container: HTMLElement, options: AXOverlayOptions): void {\n if (options.actionSheetStyle && this._platform.is('SM')) {\n container.style.bottom = `0px`;\n container.style.left = `0px`;\n container.style.right = `0px`;\n container.style.width = 'auto';\n return;\n }\n\n const anchorOptions = options.anchorOptions;\n if (!anchorOptions?.anchor) return;\n\n const anchorElement =\n anchorOptions.anchor instanceof ElementRef ? anchorOptions.anchor.nativeElement : anchorOptions.anchor;\n\n const anchorRect = anchorElement.getBoundingClientRect();\n const containerRect = container.getBoundingClientRect();\n const viewportWidth = this.document.documentElement.clientWidth;\n const viewportHeight = this.document.documentElement.clientHeight;\n\n // Get positions from placement\n let positions = convertToPlacement(anchorOptions.placement ?? 'bottom');\n if (positions.length === 0) {\n positions = convertToPlacement('bottom');\n }\n\n // Apply custom offsets to positions with direction-aware inversion\n // When position flips, the offset should also be inverted to maintain the intended gap\n if (anchorOptions.offsetX || anchorOptions.offsetY) {\n const primaryPosition = positions[0];\n positions = positions.map((p) => {\n let adjustedOffsetX = anchorOptions.offsetX ?? 0;\n let adjustedOffsetY = anchorOptions.offsetY ?? 0;\n\n // Invert offsetY when vertical direction flips\n // (from bottom to top or vice versa)\n if (primaryPosition.originY !== p.originY) {\n adjustedOffsetY = -adjustedOffsetY;\n }\n\n // Invert offsetX when horizontal direction flips\n // (from end to start or vice versa)\n if (primaryPosition.originX !== p.originX) {\n adjustedOffsetX = -adjustedOffsetX;\n }\n\n return {\n ...p,\n offsetX: (p.offsetX ?? 0) + adjustedOffsetX,\n offsetY: (p.offsetY ?? 0) + adjustedOffsetY,\n };\n });\n }\n\n // Find the best position that fits in viewport\n const { coords } = anchorOptions.autoFlip\n ? findBestPosition(anchorRect, containerRect, positions, viewportWidth, viewportHeight)\n : {\n coords: {\n top:\n positions[0].originY === 'bottom'\n ? anchorRect.bottom + (positions[0].offsetY ?? 0)\n : anchorRect.top - containerRect.height + (positions[0].offsetY ?? 0),\n left: anchorRect.left + (positions[0].offsetX ?? 0),\n },\n };\n\n // Apply position\n container.style.top = `${coords.top}px`;\n container.style.left = `${coords.left}px`;\n }\n\n private applyOverlayVisualContext(options: AXOverlayOptions | undefined, targetElement: HTMLElement | null): void {\n if (!targetElement) return;\n\n const fallbackRoot = this.document.documentElement;\n const source = resolveContextElement(options?.contextElement, options?.anchorOptions?.anchor, fallbackRoot);\n const context = resolveVisualContext(source, fallbackRoot);\n const scope = options?.visualContextScope ?? 'full';\n applyVisualContext(targetElement, context, scope);\n\n const pane = targetElement.querySelector('.ax-overlay-pane');\n // Pane is a separate stacking context; mirror context classes so portaled content\n // inherits the same CSS variables when the pane is not a descendant of the container.\n if (pane instanceof HTMLElement) {\n applyVisualContext(pane, context, scope);\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@acorex/cdk",
|
|
3
|
-
"version": "22.4.
|
|
3
|
+
"version": "22.4.25",
|
|
4
4
|
"peerDependencies": {
|
|
5
|
-
"@acorex/core": "22.4.
|
|
5
|
+
"@acorex/core": "22.4.25",
|
|
6
6
|
"@tiptap/core": ">=3.31.4",
|
|
7
7
|
"@tiptap/extension-color": ">=3.31.4",
|
|
8
8
|
"@tiptap/extension-highlight": ">=3.31.4",
|