@filip.mazev/blocks 1.4.11 → 1.4.12
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.
- package/core/styles/_choice-finish.scss +49 -0
- package/core/styles/_helpers.scss +1 -0
- package/core/styles/_slider.scss +5 -5
- package/core/styles/_theme-engine.scss +46 -65
- package/effects/effects.css +4 -0
- package/effects/runtime/README.md +1 -1
- package/fesm2022/filip.mazev-blocks-effects-runtime.mjs +23 -26
- package/fesm2022/filip.mazev-blocks-effects-runtime.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-forms.mjs +19 -35
- package/fesm2022/filip.mazev-blocks-forms.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-primitives.mjs +2 -2
- package/fesm2022/filip.mazev-blocks-primitives.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks.mjs +1 -1
- package/fesm2022/filip.mazev-blocks.mjs.map +1 -1
- package/package.json +1 -1
- package/types/filip.mazev-blocks-primitives.d.ts +4 -4
- package/types/filip.mazev-blocks.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-blocks-primitives.mjs","names":[],"sources":["../../../projects/blocks/primitives/components/tooltip/tooltip.ts","../../../projects/blocks/primitives/components/tooltip/tooltip.html","../../../projects/blocks/primitives/components/menu/menu.ts","../../../projects/blocks/primitives/components/menu/menu.html","../../../projects/blocks/primitives/components/menu-item/menu-item.ts","../../../projects/blocks/primitives/components/menu-item/menu-item.html","../../../projects/blocks/primitives/constants/tabs.constants.ts","../../../projects/blocks/primitives/helpers/tabs.helpers.ts","../../../projects/blocks/primitives/directives/tab-content.directive.ts","../../../projects/blocks/primitives/components/tab/tab.ts","../../../projects/blocks/primitives/components/tab/tab.html","../../../projects/blocks/primitives/components/tabs/tabs.ts","../../../projects/blocks/primitives/components/tabs/tabs.html","../../../projects/blocks/primitives/directives/overlay-context.token.ts","../../../projects/blocks/primitives/directives/context-menu.directive.ts","../../../projects/blocks/primitives/directives/tooltip.directive.ts","../../../projects/blocks/primitives/directives/dropdown.directive.ts","../../../projects/blocks/primitives/directives/overlay-context.directive.ts"],"sourcesContent":["import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BX_I18N, BxA11yService, isTextWithKey, ResolvableText } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-tooltip',\n imports: [BxSurfaceDirective],\n templateUrl: './tooltip.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './tooltip.scss'\n})\nexport class Tooltip {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n\n protected readonly resolvedText = computed(() => {\n this.i18n?.version?.();\n\n const textData = this.text();\n if (!textData) return undefined;\n\n if (isTextWithKey(textData)) {\n return this.i18n?.translate(textData.key) ?? textData.key;\n }\n\n return textData;\n });\n\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n public readonly text = input.required<ResolvableText>();\n}\n","<div class=\"bx-tooltip-surface\" bxSurface [class.bx-tooltip-animated]=\"isAnimated()\">\n @if (resolvedText()) {\n {{ resolvedText() }}\n }\n</div>","import { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { BxA11yService } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-menu',\n templateUrl: './menu.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './menu.scss'\n})\nexport class Menu {\n private readonly a11y = inject(BxA11yService);\n\n public readonly isAnimated = computed(() => {\n return !this.a11y.isReducedMotion();\n });\n}\n","<div data-bx-surface=\"solid\" role=\"menu\" class=\"bx-menu-wrapper\" [class.bx-menu-animated]=\"isAnimated()\">\n <ng-content></ng-content>\n</div>\n","import { BX_I18N, BxA11yService, BxShortcutService, isTextWithKey, ResolvableShortcut, ResolvableText } from '@filip.mazev/blocks/core';\nimport { Component, computed, inject, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon, IconName } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\n\n@Component({\n selector: 'bx-menu-item',\n imports: [Icon, BxSurfaceDirective],\n templateUrl: './menu-item.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './menu-item.scss'\n})\nexport class MenuItem {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n private readonly bxShortcutService = inject(BxShortcutService);\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n\n const label = this.label();\n if (!label) return undefined;\n\n if (isTextWithKey(label)) {\n return this.i18n?.translate(label.key) ?? label.key;\n }\n return label;\n });\n\n protected readonly resolvedShortcut = computed(() => {\n return this.bxShortcutService.resolve(this.shortcut());\n });\n\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n\n public readonly icon = input<IconName | undefined>(undefined);\n public readonly endIcon = input<IconName | undefined>(undefined);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly wrapLabel = input(false);\n public readonly disabled = input(false);\n public readonly danger = input(false);\n\n public readonly shortcut = input<ResolvableShortcut | undefined>(undefined);\n\n public readonly action = output<MouseEvent>();\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.action.emit(event);\n }\n}\n","<button bxSurface [bxSurfaceEmission]=\"danger() ? 'var(--bx-text-danger)' : 'var(--bx-primary)'\" type=\"button\" role=\"menuitem\" [disabled]=\"disabled()\" class=\"bx-menu-item-btn\" [class.is-disabled]=\"disabled()\" [class.is-danger]=\"danger()\"\n [class.bx-menu-item-animated]=\"isAnimated()\" (click)=\"onClick($event)\">\n\n @if (icon()) {\n <bx-icon class=\"bx-icon-pos-start\" [name]=\"icon()!\" size=\"20\" />\n }\n\n <span class=\"bx-menu-item-content\" [class.bx-menu-item-content-wrapped]=\"wrapLabel()\">\n @if (resolvedLabel()) {\n {{ resolvedLabel() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n\n @if (resolvedShortcut()) {\n <span class=\"bx-menu-item-shortcut\">\n @for (key of resolvedShortcut(); track $index) {\n <kbd>{{ key }}</kbd>\n }\n </span>\n }\n\n @if (endIcon()) {\n <bx-icon class=\"bx-icon-pos-end\" [name]=\"endIcon()!\" size=\"20\" />\n }\n</button>\n","import { Color } from '@filip.mazev/blocks/core';\nimport { TabColor, TabsVariant } from '../types/tabs.types';\n\nexport const DEFAULT_TABS_VARIANT: TabsVariant = 'segmented';\nexport const DEFAULT_TABS_LABEL = 'Tabs';\nexport const TAB_NAVIGATION_KEYS = new Set(['ArrowLeft', 'ArrowRight', 'Home', 'End']);\nexport const DEFAULT_TAB_COLOR: TabColor = 'primary';\nexport const TAB_EMISSION_OPACITY = 0.15;\nexport const TAB_COLOR_TOKENS: Readonly<Record<TabColor, Color>> = {\n primary: 'primary',\n accent: 'accent',\n success: 'text-success',\n danger: 'text-danger',\n info: 'text-info',\n warn: 'text-warn',\n grayscale: 'text-primary'\n};\n","import { Color, IBxI18nAdapter, isTextWithKey, ResolvableText, resolveTokenToCssVar } from '@filip.mazev/blocks/core';\n\nexport function resolveTabText(text: ResolvableText, adapter: IBxI18nAdapter | null): string {\n adapter?.version?.();\n return isTextWithKey(text) ? (adapter?.translate(text.key) ?? text.key) : text;\n}\n\nexport function resolveTabColor(color: Color | undefined): string | null {\n return color ? resolveTokenToCssVar(color) : null;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/** Instantiate panel content only while its tab is selected. */\n@Directive({ selector: 'ng-template[bxTabContent]', standalone: true })\nexport class TabContentDirective {\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, inject, input, TemplateRef, viewChild } from '@angular/core';\nimport { BX_I18N, Color, ResolvableText, uuidv4 } from '@filip.mazev/blocks/core';\nimport { IconName } from '@filip.mazev/blocks/icons';\nimport { DEFAULT_TAB_COLOR, TAB_COLOR_TOKENS, TAB_EMISSION_OPACITY } from '../../constants/tabs.constants';\nimport { TabContentDirective } from '../../directives/tab-content.directive';\nimport { resolveTabColor, resolveTabText } from '../../helpers/tabs.helpers';\nimport { TabColor } from '../../types/tabs.types';\n\n@Component({\n selector: 'bx-tab',\n standalone: true,\n templateUrl: './tab.html',\n styleUrl: './tab.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Tab {\n private readonly id = uuidv4();\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly projectedContent = viewChild<TemplateRef<unknown>>('content');\n private readonly lazyContent = contentChild(TabContentDirective);\n\n public readonly label = input.required<ResolvableText>();\n public readonly value = input(this.id);\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly color = input<TabColor>(DEFAULT_TAB_COLOR);\n public readonly textColor = input<Color>();\n public readonly highlightColor = input<Color>();\n public readonly contentColor = input<Color>();\n public readonly icon = input<IconName>();\n public readonly endIcon = input<IconName>();\n public readonly triggerId = `bx-tab-${this.id}`;\n public readonly panelId = `bx-tab-panel-${this.id}`;\n public readonly resolvedLabel = computed(() => resolveTabText(this.label(), this.i18n));\n public readonly resolvedHighlight = computed(() => resolveTabColor(this.highlightColor() ?? TAB_COLOR_TOKENS[this.color()]));\n public readonly resolvedEmission = computed(() => `color-mix(in srgb, ${this.resolvedHighlight()} ${TAB_EMISSION_OPACITY * 100}%, transparent)`);\n public readonly resolvedTextColor = computed(() => resolveTabColor(this.textColor()));\n public readonly resolvedSelectedText = computed(\n () =>\n this.resolvedTextColor() ??\n resolveTabColor(this.color() === 'primary' ? 'text-brand' : this.color() === 'accent' ? 'text-accent' : TAB_COLOR_TOKENS[this.color()])\n );\n\n public readonly resolvedContentColor = computed(() => resolveTabColor(this.contentColor()));\n public readonly template = computed(() => this.lazyContent()?.template ?? this.projectedContent());\n}\n","<ng-template #content><ng-content></ng-content></ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n model,\n signal,\n viewChildren\n} from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText } from '@filip.mazev/blocks/core';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { DEFAULT_TABS_LABEL, DEFAULT_TABS_VARIANT, TAB_NAVIGATION_KEYS } from '../../constants/tabs.constants';\nimport { resolveTabText } from '../../helpers/tabs.helpers';\nimport { TabsVariant } from '../../types/tabs.types';\nimport { Tab } from '../tab/tab';\n\n@Component({\n selector: 'bx-tabs',\n standalone: true,\n imports: [NgTemplateOutlet, BxSurfaceDirective, Icon],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bx-tabs-underline]': 'variant() === \"underline\"',\n '[class.bx-tabs-animated]': 'hasRendered() && !a11y.isReducedMotion()'\n }\n})\nexport class Tabs {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly a11y = inject(BxA11yService);\n protected readonly hasRendered = signal(false);\n protected readonly tabs = contentChildren(Tab);\n protected readonly activeTab = computed(() => {\n const enabled = this.tabs().filter((tab) => !tab.disabled());\n return enabled.find((tab) => tab.value() === this.selectedValue()) ?? enabled[0];\n });\n\n protected readonly resolvedLabel = computed(() => resolveTabText(this.ariaLabel(), this.i18n));\n\n public readonly variant = input<TabsVariant>(DEFAULT_TABS_VARIANT);\n public readonly ariaLabel = input<ResolvableText>(DEFAULT_TABS_LABEL);\n public readonly selectedValue = model<string | null>(null);\n\n constructor() {\n afterNextRender(() => this.hasRendered.set(true));\n afterRenderEffect(() => {\n const value = this.activeTab()?.value() ?? null;\n if (this.selectedValue() !== value) this.selectedValue.set(value);\n });\n }\n\n public select(value: string): void {\n const tab = this.tabs().find((item) => item.value() === value && !item.disabled());\n if (tab) this.selectedValue.set(value);\n }\n\n protected onTabKey(event: KeyboardEvent, tab: Tab): void {\n if (event.altKey || event.ctrlKey || event.metaKey || !TAB_NAVIGATION_KEYS.has(event.key)) return;\n const enabled = this.tabs().filter((item) => !item.disabled());\n const current = enabled.indexOf(tab);\n if (current < 0) return;\n event.preventDefault();\n event.stopPropagation();\n const button = event.currentTarget as HTMLButtonElement;\n const rtl = button.ownerDocument.defaultView?.getComputedStyle(button).direction === 'rtl';\n const direction = (event.key === 'ArrowRight' ? 1 : -1) * (rtl ? -1 : 1);\n const index = event.key === 'Home' ? 0 : event.key === 'End' ? enabled.length - 1 : (current + direction + enabled.length) % enabled.length;\n const next = enabled[index];\n this.select(next.value());\n const trigger = this.triggers().find((item) => item.nativeElement.id === next.triggerId)?.nativeElement;\n trigger?.focus({ preventScroll: true });\n trigger?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n}\n","<ng-content select=\"bx-tab\"></ng-content>\n\n<div bxSurface data-bx-surface=\"glass\" class=\"bx-tab-header\" role=\"tablist\" [attr.aria-label]=\"resolvedLabel()\" aria-orientation=\"horizontal\">\n<div class=\"bx-tab-list\">\n @for (tab of tabs(); track tab) {\n <button #trigger bxSurface data-bx-surface=\"glass\" class=\"bx-tab-trigger\" type=\"button\" role=\"tab\"\n [bxSurfaceEmission]=\"tab.resolvedEmission()\"\n [style.--bx-tab-highlight]=\"tab.resolvedHighlight()\" [style.--bx-tab-text]=\"tab.resolvedTextColor()\"\n [style.--bx-tab-selected-text]=\"tab.resolvedSelectedText()\"\n [id]=\"tab.triggerId\" [attr.aria-controls]=\"tab.panelId\" [attr.aria-selected]=\"tab === activeTab()\"\n [attr.tabindex]=\"tab === activeTab() ? 0 : -1\" [disabled]=\"tab.disabled()\"\n [class.is-selected]=\"tab === activeTab()\" (click)=\"select(tab.value())\" (keydown)=\"onTabKey($event, tab)\">\n @if (tab.icon()) { <bx-icon [name]=\"tab.icon()!\" size=\"16\" /> }\n <span>{{ tab.resolvedLabel() }}</span>\n @if (tab.endIcon()) { <bx-icon [name]=\"tab.endIcon()!\" size=\"16\" /> }\n </button>\n }\n</div>\n</div>\n\n<div class=\"bx-tab-panels\">\n @for (tab of tabs(); track tab) {\n <div class=\"bx-tab-panel\" role=\"tabpanel\" tabindex=\"0\" [id]=\"tab.panelId\"\n [style.color]=\"tab.resolvedContentColor()\"\n [attr.aria-labelledby]=\"tab.triggerId\" [hidden]=\"tab !== activeTab()\">\n @if (tab === activeTab()) {\n <ng-container [ngTemplateOutlet]=\"tab.template()\"></ng-container>\n }\n </div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface IBxOverlayContext {\n useTopLayer?: boolean;\n}\n\nexport const BX_OVERLAY_CONTEXT = new InjectionToken<IBxOverlayContext>('BX_OVERLAY_CONTEXT');\n","import { booleanAttribute, DestroyRef, Directive, ElementRef, HostListener, inject, input, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BxA11yService, BxOverlayPositionService, inheritOverlayTheme } from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BX_OVERLAY_CONTEXT } from './overlay-context.token';\nimport { Subscription } from 'rxjs';\n\ninterface TouchPress {\n pointerId: number;\n x: number;\n y: number;\n timer: number;\n opened: boolean;\n events: AbortController;\n}\n\n@Directive({ selector: '[bxContextMenu]' })\nexport class ContextMenuDirective {\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly vcr = inject(ViewContainerRef);\n public readonly bxContextMenu = input.required<TemplateRef<unknown>>();\n public readonly bxContextMenuLongPress = input(true, { transform: booleanAttribute });\n private readonly onPointerDown = (event: PointerEvent): void => {\n this.lastPointerType = event.pointerType;\n this.cancelTouchPress();\n if (event.isPrimary) this.clearTouchGuard();\n if (event.pointerType !== 'touch' || !event.isPrimary || event.button !== 0 || !this.bxContextMenuLongPress() || this.hasNativeTouchAction(event)) return;\n const source = this.elementRef.nativeElement;\n const doc = source.ownerDocument;\n const win = doc.defaultView;\n if (!win || this.hasTextSelection()) return;\n const press: TouchPress = { pointerId: event.pointerId, x: event.clientX, y: event.clientY, timer: 0, opened: false, events: new AbortController() };\n this.touchPress = press;\n const options = { capture: true, passive: true, signal: press.events.signal };\n const finish = () => this.cancelTouchPress();\n doc.addEventListener(\n 'pointermove',\n (move) => {\n if (move.pointerId === press.pointerId && !press.opened && Math.hypot(move.clientX - press.x, move.clientY - press.y) > 10) finish();\n },\n options\n );\n for (const type of ['pointerup', 'pointercancel'] as const) {\n doc.addEventListener(\n type,\n (end) => {\n if (end.pointerId === press.pointerId) finish();\n },\n options\n );\n }\n doc.addEventListener(\n 'pointerdown',\n (next) => {\n if (next.pointerId !== press.pointerId) finish();\n },\n options\n );\n doc.addEventListener('scroll', finish, options);\n doc.addEventListener(\n 'visibilitychange',\n () => {\n if (doc.hidden) finish();\n },\n options\n );\n win.addEventListener('blur', finish, { signal: press.events.signal });\n press.timer = win.setTimeout(() => this.zone.run(() => this.openTouchMenu(press)), 500);\n };\n\n private overlayRef: OverlayRef | null = null;\n private transition?: ReturnType<typeof createGlassTransition>;\n private point?: HTMLElement;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private subscriptions = new Subscription();\n private revision = 0;\n private touchPress?: TouchPress;\n private touchGuard?: AbortController;\n private touchGuardTimer?: number;\n private lastPointerType = '';\n\n constructor() {\n const source = this.elementRef.nativeElement;\n if (source.ownerDocument.defaultView) {\n this.zone.runOutsideAngular(() => source.addEventListener('pointerdown', this.onPointerDown, { passive: true }));\n }\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n source.removeEventListener('pointerdown', this.onPointerDown);\n this.cancelTouchPress();\n this.clearTouchGuard();\n this.dispose();\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n public open(event: MouseEvent): void {\n if (event.type === 'contextmenu' && this.lastPointerType === 'touch') {\n const press = this.touchPress;\n if (!press) return;\n if (!this.bxContextMenuLongPress() || this.hasNativeTouchAction(event) || this.hasTextSelection()) {\n this.cancelTouchPress();\n return;\n }\n event.preventDefault();\n this.openTouchMenu(press);\n return;\n }\n event.preventDefault();\n this.cancelTouchPress();\n this.clearTouchGuard();\n this.openAt(event.clientX, event.clientY);\n }\n\n public close(restoreFocus = false): void {\n if (!this.overlayRef) return;\n const revision = ++this.revision;\n if (restoreFocus || this.overlayRef.overlayElement.contains(this.elementRef.nativeElement.ownerDocument.activeElement)) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n this.overlayRef.overlayElement.inert = true;\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision) this.dispose();\n })\n .catch(() => {\n if (revision === this.revision) this.dispose();\n });\n } else this.dispose();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKey(event: KeyboardEvent): void {\n if (event.key !== 'ContextMenu' && !(event.shiftKey && event.key === 'F10')) return;\n event.preventDefault();\n this.lastPointerType = '';\n this.cancelTouchPress();\n this.clearTouchGuard();\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n this.openAt(rect.left + Math.min(24, rect.width / 2), rect.bottom);\n this.items()[0]?.focus();\n }\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (target && this.overlayRef?.overlayElement.contains(target) && target.closest('button, a, [role=\"menuitem\"]')) this.close();\n }\n\n private hasNativeTouchAction(event: Event): boolean {\n const source = this.elementRef.nativeElement;\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement) {\n if (node.isContentEditable || node.matches('input, textarea, select, :disabled, [aria-disabled=\"true\"], [inert]')) return true;\n if (node === source) break;\n }\n }\n return !!source.closest(':disabled, [aria-disabled=\"true\"], [inert]');\n }\n\n private hasTextSelection(): boolean {\n const source = this.elementRef.nativeElement;\n const selection = source.ownerDocument.getSelection();\n return !!selection && !selection.isCollapsed && (source.contains(selection.anchorNode) || source.contains(selection.focusNode));\n }\n\n private openTouchMenu(press: TouchPress): void {\n if (this.touchPress !== press || press.opened) return;\n const source = this.elementRef.nativeElement;\n if (\n !this.bxContextMenuLongPress() ||\n !source.isConnected ||\n source.isContentEditable ||\n source.closest(':disabled, [aria-disabled=\"true\"], [inert]') ||\n this.hasTextSelection()\n ) {\n this.cancelTouchPress();\n return;\n }\n press.opened = true;\n this.elementRef.nativeElement.ownerDocument.defaultView?.clearTimeout(press.timer);\n this.guardTouchRelease();\n this.openAt(press.x, press.y + 12);\n }\n\n private cancelTouchPress(): void {\n const press = this.touchPress;\n if (!press) return;\n this.touchPress = undefined;\n const win = this.elementRef.nativeElement.ownerDocument.defaultView;\n win?.clearTimeout(press.timer);\n press.events.abort();\n if (press.opened && win) this.touchGuardTimer = win.setTimeout(() => this.clearTouchGuard(), 800);\n }\n\n private guardTouchRelease(): void {\n this.clearTouchGuard();\n const doc = this.elementRef.nativeElement.ownerDocument;\n const guard = new AbortController();\n this.touchGuard = guard;\n const options = { capture: true, signal: guard.signal };\n // Consume only the hold's compatibility click; a fresh press can select or dismiss normally.\n doc.addEventListener(\n 'click',\n (event) => {\n if (event.detail === 0) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n this.clearTouchGuard();\n },\n options\n );\n doc.addEventListener(\n 'contextmenu',\n (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n },\n options\n );\n doc.addEventListener(\n 'pointerdown',\n (event) => {\n if (event.isPrimary) this.clearTouchGuard();\n },\n { ...options, passive: true }\n );\n doc.addEventListener('keydown', () => this.clearTouchGuard(), options);\n }\n\n private clearTouchGuard(): void {\n this.touchGuard?.abort();\n this.touchGuard = undefined;\n this.elementRef.nativeElement.ownerDocument.defaultView?.clearTimeout(this.touchGuardTimer);\n this.touchGuardTimer = undefined;\n }\n\n private openAt(x: number, y: number): void {\n this.dispose();\n ++this.revision;\n const source = this.elementRef.nativeElement;\n this.overlayRef = this.overlay.create({\n positionStrategy: this.positionBuilder.getCoordinateStrategy(x, y),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n usePopover: !!this.overlayContext?.useTopLayer || !!source.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]'),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n this.subscriptions = new Subscription();\n const win = source.ownerDocument.defaultView;\n if (win) {\n this.zone.runOutsideAngular(() => {\n const closeOnScroll = (event: Event) => {\n const target = event.target;\n if (this.overlayRef?.overlayElement.inert) return;\n if (target === win || (target instanceof Node && target.contains(source))) this.zone.run(() => this.close());\n };\n win.addEventListener('scroll', closeOnScroll, { capture: true, passive: true });\n this.subscriptions.add(() => win.removeEventListener('scroll', closeOnScroll, true));\n });\n }\n this.subscriptions.add(this.overlayRef.backdropClick().subscribe(() => this.close()));\n this.subscriptions.add(this.overlayRef.detachments().subscribe(() => this.dispose()));\n this.subscriptions.add(this.overlayRef.keydownEvents().subscribe((event) => this.onMenuKey(event)));\n const pane = this.overlayRef.overlayElement;\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(source, pane));\n this.disconnectLighting = inheritGlassLighting(pane, source);\n const view = this.overlayRef.attach(new TemplatePortal(this.bxContextMenu(), this.vcr));\n view.detectChanges();\n this.overlayRef.updatePosition();\n if (!this.a11y.isReducedMotion()) {\n const point = source.ownerDocument.createElement('span');\n point.setAttribute('aria-hidden', 'true');\n Object.assign(point.style, { position: 'fixed', left: `${x}px`, top: `${y}px`, width: '1px', height: '1px', pointerEvents: 'none' });\n source.ownerDocument.body.append(point);\n this.point = point;\n const transition = this.zone.runOutsideAngular(() => createGlassTransition(point, pane));\n this.transition = transition;\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .catch(() => {\n this.transition?.destroy();\n this.transition = undefined;\n });\n }\n }\n\n private items(): HTMLElement[] {\n return Array.from(this.overlayRef?.overlayElement.querySelectorAll<HTMLElement>('button:not(:disabled), a[href], [role=\"menuitem\"]') ?? []).filter(\n (item) => !item.matches('[disabled], [aria-disabled=\"true\"]') && !item.closest('[hidden], [inert]')\n );\n }\n\n private onMenuKey(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close(true);\n return;\n }\n if ((event.target as HTMLElement)?.closest('input,textarea,[contenteditable=\"true\"]')) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.items();\n if (!items.length) return;\n event.preventDefault();\n const current = items.indexOf(this.elementRef.nativeElement.ownerDocument.activeElement as HTMLElement);\n const next =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? items.length - 1\n : event.key === 'ArrowDown'\n ? (current + 1) % items.length\n : current < 0\n ? items.length - 1\n : (current - 1 + items.length) % items.length;\n items[next].focus();\n }\n\n private dispose(): void {\n this.subscriptions.unsubscribe();\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = undefined;\n this.point?.remove();\n this.point = undefined;\n const overlay = this.overlayRef;\n this.overlayRef = null;\n overlay?.dispose();\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n}\n","import { DestroyRef, Directive, effect, ElementRef, HostListener, inject, input, NgZone } from '@angular/core';\nimport { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BX_I18N,\n BxA11yService,\n BxPlacement,\n BxOverlayPositionService,\n inheritOverlayTheme,\n isTextWithKey,\n ResolvableText,\n uuidv4\n} from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { Tooltip } from '../components/tooltip/tooltip';\nimport { ContextMenuDirective } from './context-menu.directive';\n\n@Directive({ selector: '[bxTooltip]' })\nexport class TooltipDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly describer = inject(AriaDescriber);\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly contextMenu = inject(ContextMenuDirective, { optional: true });\n private readonly id = `bx-tooltip-${uuidv4()}`;\n public readonly bxTooltip = input.required<ResolvableText>();\n public readonly placement = input<BxPlacement>('bottom');\n public readonly bxTooltipTouch = input<'none' | 'longpress' | 'tap'>('none');\n private overlayRef: OverlayRef | null = null;\n private transition?: ReturnType<typeof createGlassTransition>;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private positionSubscription?: { unsubscribe(): void };\n private keyboardSubscription?: { unsubscribe(): void };\n private revision = 0;\n private hovered = false;\n private focused = false;\n private lastPointerType = '';\n private touchEvents?: AbortController;\n private holdTimer?: number;\n private touchHideTimer?: number;\n private touchVisible = false;\n private closeTouchTap = false;\n\n constructor() {\n const source = this.elementRef.nativeElement;\n const focus = source.ownerDocument.defaultView\n ? this.focusMonitor.monitor(source, true).subscribe((origin) =>\n this.zone.run(() => {\n this.focused = origin === 'keyboard';\n if (this.focused) {\n this.clearTouchInteraction();\n this.show();\n } else if (!this.hovered && !this.touchEvents) this.hide();\n })\n )\n : undefined;\n effect((onCleanup) => {\n this.i18n?.version?.();\n const text = this.bxTooltip();\n const description = isTextWithKey(text) ? (this.i18n?.translate(text.key) ?? text.key) : text;\n if (!description) return;\n this.describer.describe(source, description, 'tooltip');\n onCleanup(() => this.describer.removeDescription(source, description, 'tooltip'));\n });\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n focus?.unsubscribe();\n if (focus) this.focusMonitor.stopMonitoring(source);\n this.clearTouchInteraction();\n this.dispose();\n });\n }\n\n public show(): void {\n if (!this.bxTooltip()) return;\n const revision = ++this.revision;\n if (!this.overlayRef) {\n const strategy = this.positionBuilder.getElementStrategy(this.elementRef.nativeElement, this.placement()).withFlexibleDimensions(false);\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'bx-tooltip-pane'\n });\n\n const pane = this.overlayRef.overlayElement;\n pane.id = this.id;\n pane.setAttribute('role', 'tooltip');\n // AriaDescriber supplies the description even when the visual tooltip is hidden.\n pane.setAttribute('aria-hidden', 'true');\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(this.elementRef.nativeElement, pane));\n this.disconnectLighting = inheritGlassLighting(pane, this.elementRef.nativeElement);\n\n const component = this.overlayRef.attach(new ComponentPortal(Tooltip));\n // CDK enables pane pointer events during attach. Reset afterwards so the\n // emerging tooltip cannot steal hover from small or nested triggers.\n pane.style.pointerEvents = 'none';\n this.keyboardSubscription = this.overlayRef.keydownEvents().subscribe((event) => this.onEscape(event));\n component.setInput('text', this.bxTooltip());\n component.changeDetectorRef.detectChanges();\n const positionArrow = () => {\n const trigger = this.elementRef.nativeElement.getBoundingClientRect();\n const bounds = pane.getBoundingClientRect();\n pane.style.setProperty('--bx-tooltip-arrow-x', `${trigger.left + trigger.width / 2 - bounds.left}px`);\n pane.style.setProperty('--bx-tooltip-arrow-y', `${trigger.top + trigger.height / 2 - bounds.top}px`);\n this.transition?.refresh();\n };\n this.positionSubscription = strategy.positionChanges.subscribe(positionArrow);\n this.overlayRef.updatePosition();\n positionArrow();\n\n if (!this.a11y.isReducedMotion()) {\n this.transition = this.zone.runOutsideAngular(() => createGlassTransition(this.elementRef.nativeElement, pane));\n }\n }\n\n void Promise.resolve(this.zone.runOutsideAngular(() => this.transition?.enter())).catch(() => {\n if (revision === this.revision) {\n this.transition?.destroy();\n this.transition = undefined;\n }\n });\n }\n\n public hide(): void {\n this.clearTouchInteraction();\n const revision = ++this.revision;\n if (!this.overlayRef) return;\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision) this.dispose();\n })\n .catch(() => {\n if (revision === this.revision) this.dispose();\n });\n } else this.dispose();\n }\n\n @HostListener('pointerenter', ['$event'])\n protected onEnter(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') return;\n this.clearTouchInteraction();\n this.hovered = true;\n this.show();\n }\n\n @HostListener('pointerleave', ['$event'])\n protected onLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') return;\n this.hovered = false;\n if (!this.focused) this.hide();\n }\n\n @HostListener('pointerdown', ['$event'])\n protected onPointerDown(event: PointerEvent): void {\n this.lastPointerType = event.pointerType;\n if (event.pointerType !== 'touch') return;\n this.closeTouchTap = this.touchVisible && this.bxTooltipTouch() === 'tap';\n this.hovered = false;\n this.focused = false;\n this.hide();\n if (this.bxTooltipTouch() !== 'longpress' || !event.isPrimary || event.button !== 0 || !this.canUseTouch(event)) return;\n this.zone.runOutsideAngular(() => this.startTouchInteraction(event));\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (event.detail === 0 || this.lastPointerType !== 'touch' || this.bxTooltipTouch() !== 'tap' || !this.canUseTouch(event)) return;\n if (this.closeTouchTap) {\n this.closeTouchTap = false;\n return;\n }\n this.zone.runOutsideAngular(() => this.startTouchInteraction());\n }\n\n @HostListener('document:keydown', ['$event'])\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.overlayRef) {\n event.stopPropagation();\n this.hovered = false;\n this.focused = false;\n this.hide();\n }\n }\n\n private canUseTouch(event: Event): boolean {\n if (this.contextMenu && this.bxTooltipTouch() === 'longpress') return false;\n const source = this.elementRef.nativeElement;\n if (source.closest(':disabled, [aria-disabled=\"true\"], [inert]')) return false;\n return !event.composedPath().some((node) => node instanceof HTMLElement && (node.isContentEditable || node.matches('input, textarea, select')));\n }\n\n private hasTextSelection(): boolean {\n const source = this.elementRef.nativeElement;\n const selection = source.ownerDocument.getSelection();\n return !!selection && !selection.isCollapsed && (source.contains(selection.anchorNode) || source.contains(selection.focusNode));\n }\n\n private startTouchInteraction(press?: PointerEvent): void {\n const source = this.elementRef.nativeElement;\n const doc = source.ownerDocument;\n const win = doc.defaultView;\n if (!win || this.hasTextSelection()) return;\n this.clearTouchInteraction();\n const events = new AbortController();\n this.touchEvents = events;\n const options = { capture: true, passive: true, signal: events.signal };\n const dismiss = () => this.zone.run(() => this.hide());\n let suppressReleaseClick = false;\n doc.addEventListener(\n 'pointerdown',\n (event) => {\n if (!press && event.target instanceof Node && source.contains(event.target)) return;\n dismiss();\n },\n options\n );\n doc.addEventListener('scroll', dismiss, options);\n doc.addEventListener(\n 'visibilitychange',\n () => {\n if (doc.hidden) dismiss();\n },\n options\n );\n win.addEventListener('blur', dismiss, { signal: events.signal });\n if (!press) {\n this.touchVisible = true;\n this.zone.run(() => this.show());\n return;\n }\n doc.addEventListener(\n 'pointermove',\n (event) => {\n if (event.pointerId === press.pointerId && !this.touchVisible && Math.hypot(event.clientX - press.clientX, event.clientY - press.clientY) > 10)\n dismiss();\n },\n options\n );\n doc.addEventListener(\n 'pointerup',\n (event) => {\n if (event.pointerId !== press.pointerId) return;\n if (!this.touchVisible) dismiss();\n else this.touchHideTimer = win.setTimeout(dismiss, 1500);\n },\n options\n );\n doc.addEventListener(\n 'pointercancel',\n (event) => {\n if (event.pointerId === press.pointerId) dismiss();\n },\n options\n );\n doc.addEventListener(\n 'click',\n (event) => {\n if (!suppressReleaseClick || event.detail === 0) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n suppressReleaseClick = false;\n },\n { ...options, passive: false }\n );\n doc.addEventListener(\n 'contextmenu',\n (event) => {\n if (event.target instanceof Node && source.contains(event.target) && !this.hasTextSelection()) event.preventDefault();\n },\n { ...options, passive: false }\n );\n this.holdTimer = win.setTimeout(() => {\n if (\n this.bxTooltipTouch() !== 'longpress' ||\n !source.isConnected ||\n source.closest(':disabled, [aria-disabled=\"true\"], [inert]') ||\n this.hasTextSelection()\n ) {\n dismiss();\n return;\n }\n this.touchVisible = true;\n suppressReleaseClick = true;\n this.zone.run(() => this.show());\n }, 500);\n }\n\n private clearTouchInteraction(): void {\n this.touchEvents?.abort();\n this.touchEvents = undefined;\n const win = this.elementRef.nativeElement.ownerDocument.defaultView;\n win?.clearTimeout(this.holdTimer);\n win?.clearTimeout(this.touchHideTimer);\n this.holdTimer = undefined;\n this.touchHideTimer = undefined;\n this.touchVisible = false;\n }\n\n private dispose(): void {\n this.keyboardSubscription?.unsubscribe();\n this.keyboardSubscription = undefined;\n this.positionSubscription?.unsubscribe();\n this.positionSubscription = undefined;\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = undefined;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n HostListener,\n NgZone,\n PLATFORM_ID,\n effect,\n inject,\n input,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BxA11yService, BxPlacement, BxOverlayPositionService, inheritOverlayTheme, trackOverlayOrigin } from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BX_OVERLAY_CONTEXT } from './overlay-context.token';\nimport { Subscription } from 'rxjs';\n\nexport type DropdownTransition = 'none' | 'fade' | 'emerge';\nexport type DropdownState = 'closed' | 'opening' | 'open' | 'closing';\n\n@Directive({\n selector: '[bxDropdown]',\n exportAs: 'bxDropdown',\n standalone: true,\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-controls]': 'overlayId()'\n }\n})\nexport class DropdownDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly vcr = inject(ViewContainerRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private readonly _isOpen = signal(false);\n protected readonly overlayId = signal<string | null>(null);\n public readonly isOpen = this._isOpen.asReadonly();\n private readonly _state = signal<DropdownState>('closed');\n public readonly state = this._state.asReadonly();\n\n public readonly bxDropdown = input.required<TemplateRef<unknown>>();\n public readonly placement = input<BxPlacement>('bottom');\n public readonly bxTransition = input<DropdownTransition>('fade');\n\n private overlayRef: OverlayRef | null = null;\n private transition: ReturnType<typeof createGlassTransition> | null = null;\n private subscriptions = new Subscription();\n private revision = 0;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n this.dispose();\n });\n\n effect(() => {\n if (this.a11y.isReducedMotion() && this.transition) {\n ++this.revision;\n this.transition.destroy();\n this.transition = null;\n if (this.isOpen()) this._state.set('open');\n else this.dispose();\n }\n });\n }\n\n @HostListener('click', ['$event'])\n public toggle(event?: MouseEvent): void {\n if (this.isDisabled()) return;\n event?.stopPropagation();\n if (this.isOpen()) this.close();\n else this.open();\n }\n\n @HostListener('keydown', ['$event'])\n public onTriggerKeydown(event: KeyboardEvent): void {\n if (this.bxTransition() === 'none' || this.isDisabled() || this.isEditing(event.target)) return;\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n event.preventDefault();\n event.stopPropagation();\n this.open();\n const items = this.menuItems();\n const item = event.key === 'ArrowUp' ? items[items.length - 1] : items[0];\n item?.focus({ preventScroll: true });\n }\n\n public open(): void {\n if (!this.isBrowser || this.isOpen() || this.isDisabled()) return;\n const revision = ++this.revision;\n this._isOpen.set(true);\n this._state.set('opening');\n\n if (!this.overlayRef) this.attachOverlay();\n const overlay = this.overlayRef;\n if (!overlay) return;\n overlay.overlayElement.inert = false;\n overlay.overlayElement.style.removeProperty('pointer-events');\n\n if (this.bxTransition() !== 'none' && !this.a11y.isReducedMotion()) {\n const transition = (this.transition ??= this.zone.runOutsideAngular(() => createGlassTransition(this.elementRef.nativeElement, overlay.overlayElement)));\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .then(() => {\n if (revision === this.revision && this.isOpen()) this.zone.run(() => this._state.set('open'));\n })\n .catch(() => {\n if (revision === this.revision && this.isOpen()) {\n this.transition?.destroy();\n this.transition = null;\n this._state.set('open');\n }\n });\n } else {\n this._state.set('open');\n }\n }\n\n public close(restoreFocus = false): void {\n if (!this.overlayRef || !this.isOpen()) return;\n const revision = ++this.revision;\n const overlay = this.overlayRef;\n this._isOpen.set(false);\n this._state.set('closing');\n\n const source = this.elementRef.nativeElement;\n if (restoreFocus || overlay.overlayElement.contains(source.ownerDocument.activeElement)) {\n source.focus({ preventScroll: true });\n }\n overlay.overlayElement.inert = true;\n overlay.overlayElement.style.pointerEvents = 'none';\n\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision && !this.isOpen()) this.zone.run(() => this.dispose());\n })\n .catch(() => {\n if (revision === this.revision && !this.isOpen()) this.dispose();\n });\n } else {\n this.dispose();\n }\n }\n\n @HostListener('document:click', ['$event'])\n public onDocumentClick(event: MouseEvent): void {\n if (!this.overlayRef?.hasAttached() || !this.isOpen()) return;\n const target = event.target as Node | null;\n if (!target || this.elementRef.nativeElement.contains(target)) return;\n const inside = this.overlayRef.overlayElement.contains(target);\n // Preserve existing menu item click-to-close behavior; embedded inputs can stay open.\n if (!inside || this.bxTransition() === 'none' || (target instanceof Element && target.closest('button, a, [role=\"menuitem\"]'))) {\n this.close();\n }\n }\n\n private attachOverlay(): void {\n const positionStrategy = this.positionBuilder.getElementStrategy(this.elementRef.nativeElement, this.placement(), 4);\n const overlay = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n usePopover:\n !!this.overlayContext?.useTopLayer ||\n !!this.elementRef.nativeElement.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]'),\n // A fading surface keeps its trigger reachable while it opens/closes.\n hasBackdrop: this.bxTransition() === 'none',\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n this.overlayRef = overlay;\n this.overlayId.set(overlay.overlayElement.id || null);\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(this.elementRef.nativeElement, overlay.overlayElement));\n this.disconnectLighting = inheritGlassLighting(overlay.overlayElement, this.elementRef.nativeElement);\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.zone.runOutsideAngular(() => trackOverlayOrigin(overlay, this.elementRef.nativeElement)));\n this.subscriptions.add(overlay.backdropClick().subscribe(() => this.close()));\n this.subscriptions.add(\n overlay.outsidePointerEvents().subscribe((event) => {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) this.close();\n })\n );\n this.subscriptions.add(\n overlay.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault();\n event.stopPropagation();\n this.close(true);\n } else if (!event.defaultPrevented && this.bxTransition() !== 'none' && this.isOpen()) {\n this.navigateMenu(event);\n }\n })\n );\n this.subscriptions.add(\n positionStrategy.positionChanges.subscribe(() => {\n this.zone.runOutsideAngular(() => this.transition?.refresh());\n })\n );\n const view = overlay.attach(new TemplatePortal(this.bxDropdown(), this.vcr));\n view.detectChanges();\n overlay.updatePosition();\n }\n\n private isDisabled(): boolean {\n const element = this.elementRef.nativeElement;\n return element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private menuItems(): HTMLElement[] {\n const pane = this.overlayRef?.overlayElement;\n if (!pane) return [];\n return Array.from(pane.querySelectorAll<HTMLElement>('button, a[href], [role=\"menuitem\"]')).filter((item) => {\n if (item.matches(':disabled, [disabled], [aria-disabled=\"true\"]') || item.closest('[aria-disabled=\"true\"]')) return false;\n if (item.closest('[hidden], [inert], [aria-hidden=\"true\"]')) return false;\n if (item.tabIndex < 0 && !item.hasAttribute('tabindex')) return false;\n const style = item.ownerDocument.defaultView?.getComputedStyle(item);\n return !!style && style.display !== 'none' && style.visibility !== 'hidden' && item.getClientRects().length > 0;\n });\n }\n\n private navigateMenu(event: KeyboardEvent): void {\n if (this.isEditing(event.target) || !(event.target instanceof Node) || !this.overlayRef?.overlayElement.contains(event.target)) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.menuItems();\n if (!items.length) return;\n const current = items.indexOf(this.elementRef.nativeElement.ownerDocument.activeElement as HTMLElement);\n let index: number;\n if (event.key === 'Home') index = 0;\n else if (event.key === 'End') index = items.length - 1;\n else if (event.key === 'ArrowDown') index = current < 0 ? 0 : (current + 1) % items.length;\n else index = current < 0 ? items.length - 1 : (current - 1 + items.length) % items.length;\n event.preventDefault();\n event.stopPropagation();\n items[index].focus({ preventScroll: true });\n }\n\n private isEditing(target: EventTarget | null): boolean {\n return target instanceof Element && !!target.closest('input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"textbox\"]');\n }\n\n private dispose(): void {\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = null;\n this.subscriptions.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n this.overlayId.set(null);\n this._isOpen.set(false);\n this._state.set('closed');\n }\n}\n","import { Directive, forwardRef, input } from '@angular/core';\nimport { BX_OVERLAY_CONTEXT, IBxOverlayContext } from './overlay-context.token';\n\n@Directive({\n selector: '[bxOverlayContext]',\n standalone: true,\n providers: [{ provide: BX_OVERLAY_CONTEXT, useExisting: forwardRef(() => BxOverlayContextDirective) }]\n})\nexport class BxOverlayContextDirective implements IBxOverlayContext {\n public readonly bxOverlayContext = input<IBxOverlayContext>({});\n\n public get useTopLayer(): boolean | undefined {\n return this.bxOverlayContext().useTopLayer;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"filip.mazev-blocks-primitives.mjs","names":[],"sources":["../../../projects/blocks/primitives/components/tooltip/tooltip.ts","../../../projects/blocks/primitives/components/tooltip/tooltip.html","../../../projects/blocks/primitives/components/menu/menu.ts","../../../projects/blocks/primitives/components/menu/menu.html","../../../projects/blocks/primitives/components/menu-item/menu-item.ts","../../../projects/blocks/primitives/components/menu-item/menu-item.html","../../../projects/blocks/primitives/constants/tabs.constants.ts","../../../projects/blocks/primitives/helpers/tabs.helpers.ts","../../../projects/blocks/primitives/directives/tab-content.directive.ts","../../../projects/blocks/primitives/components/tab/tab.ts","../../../projects/blocks/primitives/components/tab/tab.html","../../../projects/blocks/primitives/components/tabs/tabs.ts","../../../projects/blocks/primitives/components/tabs/tabs.html","../../../projects/blocks/primitives/directives/overlay-context.token.ts","../../../projects/blocks/primitives/directives/context-menu.directive.ts","../../../projects/blocks/primitives/directives/tooltip.directive.ts","../../../projects/blocks/primitives/directives/dropdown.directive.ts","../../../projects/blocks/primitives/directives/overlay-context.directive.ts"],"sourcesContent":["import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BX_I18N, BxA11yService, isTextWithKey, ResolvableText } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-tooltip',\n imports: [BxSurfaceDirective],\n templateUrl: './tooltip.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './tooltip.scss'\n})\nexport class Tooltip {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n\n protected readonly resolvedText = computed(() => {\n this.i18n?.version?.();\n\n const textData = this.text();\n if (!textData) return undefined;\n\n if (isTextWithKey(textData)) {\n return this.i18n?.translate(textData.key) ?? textData.key;\n }\n\n return textData;\n });\n\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n public readonly text = input.required<ResolvableText>();\n}\n","<div class=\"bx-tooltip-surface\" bxSurface [class.bx-tooltip-animated]=\"isAnimated()\">\n @if (resolvedText()) {\n {{ resolvedText() }}\n }\n</div>","import { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { BxA11yService } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-menu',\n templateUrl: './menu.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './menu.scss'\n})\nexport class Menu {\n private readonly a11y = inject(BxA11yService);\n\n public readonly isAnimated = computed(() => {\n return !this.a11y.isReducedMotion();\n });\n}\n","<div data-bx-surface=\"solid\" role=\"menu\" class=\"bx-menu-wrapper\" [class.bx-menu-animated]=\"isAnimated()\">\n <ng-content></ng-content>\n</div>\n","import { BX_I18N, BxA11yService, BxShortcutService, isTextWithKey, ResolvableShortcut, ResolvableText } from '@filip.mazev/blocks/core';\nimport { Component, computed, inject, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon, IconName } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\n\n@Component({\n selector: 'bx-menu-item',\n imports: [Icon, BxSurfaceDirective],\n templateUrl: './menu-item.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './menu-item.scss'\n})\nexport class MenuItem {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n private readonly bxShortcutService = inject(BxShortcutService);\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n\n const label = this.label();\n if (!label) return undefined;\n\n if (isTextWithKey(label)) {\n return this.i18n?.translate(label.key) ?? label.key;\n }\n return label;\n });\n\n protected readonly resolvedShortcut = computed(() => {\n return this.bxShortcutService.resolve(this.shortcut());\n });\n\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n\n public readonly icon = input<IconName | undefined>(undefined);\n public readonly endIcon = input<IconName | undefined>(undefined);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly wrapLabel = input(false);\n public readonly disabled = input(false);\n public readonly danger = input(false);\n\n public readonly shortcut = input<ResolvableShortcut | undefined>(undefined);\n\n public readonly action = output<MouseEvent>();\n\n protected onClick(event: MouseEvent): void {\n if (this.disabled()) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n this.action.emit(event);\n }\n}\n","<button bxSurface [bxSurfaceEmission]=\"danger() ? 'var(--bx-text-danger)' : 'var(--bx-primary)'\" type=\"button\" role=\"menuitem\" [disabled]=\"disabled()\" class=\"bx-menu-item-btn\" [class.is-disabled]=\"disabled()\" [class.is-danger]=\"danger()\"\n [class.bx-menu-item-animated]=\"isAnimated()\" (click)=\"onClick($event)\">\n\n @if (icon()) {\n <bx-icon class=\"bx-icon-pos-start\" [name]=\"icon()!\" size=\"20\" />\n }\n\n <span class=\"bx-menu-item-content\" [class.bx-menu-item-content-wrapped]=\"wrapLabel()\">\n @if (resolvedLabel()) {\n {{ resolvedLabel() }}\n } @else {\n <ng-content></ng-content>\n }\n </span>\n\n @if (resolvedShortcut()) {\n <span class=\"bx-menu-item-shortcut\">\n @for (key of resolvedShortcut(); track $index) {\n <kbd>{{ key }}</kbd>\n }\n </span>\n }\n\n @if (endIcon()) {\n <bx-icon class=\"bx-icon-pos-end\" [name]=\"endIcon()!\" size=\"20\" />\n }\n</button>\n","import { Color } from '@filip.mazev/blocks/core';\nimport { TabColor, TabsVariant } from '../types/tabs.types';\n\nexport const DEFAULT_TABS_VARIANT: TabsVariant = 'segmented';\nexport const DEFAULT_TABS_LABEL = 'Tabs';\nexport const TAB_NAVIGATION_KEYS = new Set(['ArrowLeft', 'ArrowRight', 'Home', 'End']);\nexport const DEFAULT_TAB_COLOR: TabColor = 'primary';\nexport const TAB_EMISSION_OPACITY = 0.15;\nexport const TAB_COLOR_TOKENS: Readonly<Record<TabColor, Color>> = {\n primary: 'primary',\n accent: 'accent',\n success: 'text-success',\n danger: 'text-danger',\n info: 'text-info',\n warn: 'text-warn',\n grayscale: 'text-primary'\n};\n","import { Color, IBxI18nAdapter, isTextWithKey, ResolvableText, resolveTokenToCssVar } from '@filip.mazev/blocks/core';\n\nexport function resolveTabText(text: ResolvableText, adapter: IBxI18nAdapter | null): string {\n adapter?.version?.();\n return isTextWithKey(text) ? (adapter?.translate(text.key) ?? text.key) : text;\n}\n\nexport function resolveTabColor(color: Color | undefined): string | null {\n return color ? resolveTokenToCssVar(color) : null;\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n/** Instantiate panel content only while its tab is selected. */\n@Directive({ selector: 'ng-template[bxTabContent]', standalone: true })\nexport class TabContentDirective {\n public readonly template = inject<TemplateRef<unknown>>(TemplateRef);\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, contentChild, inject, input, TemplateRef, viewChild } from '@angular/core';\nimport { BX_I18N, Color, ResolvableText, uuidv4 } from '@filip.mazev/blocks/core';\nimport { IconName } from '@filip.mazev/blocks/icons';\nimport { DEFAULT_TAB_COLOR, TAB_COLOR_TOKENS, TAB_EMISSION_OPACITY } from '../../constants/tabs.constants';\nimport { TabContentDirective } from '../../directives/tab-content.directive';\nimport { resolveTabColor, resolveTabText } from '../../helpers/tabs.helpers';\nimport { TabColor } from '../../types/tabs.types';\n\n@Component({\n selector: 'bx-tab',\n standalone: true,\n templateUrl: './tab.html',\n styleUrl: './tab.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Tab {\n private readonly id = uuidv4();\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly projectedContent = viewChild<TemplateRef<unknown>>('content');\n private readonly lazyContent = contentChild(TabContentDirective);\n\n public readonly label = input.required<ResolvableText>();\n public readonly value = input(this.id);\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly color = input<TabColor>(DEFAULT_TAB_COLOR);\n public readonly textColor = input<Color>();\n public readonly highlightColor = input<Color>();\n public readonly contentColor = input<Color>();\n public readonly icon = input<IconName>();\n public readonly endIcon = input<IconName>();\n public readonly triggerId = `bx-tab-${this.id}`;\n public readonly panelId = `bx-tab-panel-${this.id}`;\n public readonly resolvedLabel = computed(() => resolveTabText(this.label(), this.i18n));\n public readonly resolvedHighlight = computed(() => resolveTabColor(this.highlightColor() ?? TAB_COLOR_TOKENS[this.color()]));\n public readonly resolvedEmission = computed(() => `color-mix(in srgb, ${this.resolvedHighlight()} ${TAB_EMISSION_OPACITY * 100}%, transparent)`);\n public readonly resolvedTextColor = computed(() => resolveTabColor(this.textColor()));\n public readonly resolvedSelectedText = computed(\n () =>\n this.resolvedTextColor() ??\n resolveTabColor(this.color() === 'primary' ? 'text-brand' : this.color() === 'accent' ? 'text-accent' : TAB_COLOR_TOKENS[this.color()])\n );\n\n public readonly resolvedContentColor = computed(() => resolveTabColor(this.contentColor()));\n public readonly template = computed(() => this.lazyContent()?.template ?? this.projectedContent());\n}\n","<ng-template #content><ng-content></ng-content></ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n afterRenderEffect,\n afterNextRender,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n ElementRef,\n inject,\n input,\n model,\n signal,\n viewChildren\n} from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText } from '@filip.mazev/blocks/core';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { DEFAULT_TABS_LABEL, DEFAULT_TABS_VARIANT, TAB_NAVIGATION_KEYS } from '../../constants/tabs.constants';\nimport { resolveTabText } from '../../helpers/tabs.helpers';\nimport { TabsVariant } from '../../types/tabs.types';\nimport { Tab } from '../tab/tab';\n\n@Component({\n selector: 'bx-tabs',\n standalone: true,\n imports: [NgTemplateOutlet, BxSurfaceDirective, Icon],\n templateUrl: './tabs.html',\n styleUrl: './tabs.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.bx-tabs-underline]': 'variant() === \"underline\"',\n '[class.bx-tabs-animated]': 'hasRendered() && !a11y.isReducedMotion()'\n }\n})\nexport class Tabs {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly triggers = viewChildren<ElementRef<HTMLButtonElement>>('trigger');\n protected readonly a11y = inject(BxA11yService);\n protected readonly hasRendered = signal(false);\n protected readonly tabs = contentChildren(Tab);\n protected readonly activeTab = computed(() => {\n const enabled = this.tabs().filter((tab) => !tab.disabled());\n return enabled.find((tab) => tab.value() === this.selectedValue()) ?? enabled[0];\n });\n\n protected readonly resolvedLabel = computed(() => resolveTabText(this.ariaLabel(), this.i18n));\n\n public readonly variant = input<TabsVariant>(DEFAULT_TABS_VARIANT);\n public readonly ariaLabel = input<ResolvableText>(DEFAULT_TABS_LABEL);\n public readonly selectedValue = model<string | null>(null);\n\n constructor() {\n afterNextRender(() => this.hasRendered.set(true));\n afterRenderEffect(() => {\n const value = this.activeTab()?.value() ?? null;\n if (this.selectedValue() !== value) this.selectedValue.set(value);\n });\n }\n\n public select(value: string): void {\n const tab = this.tabs().find((item) => item.value() === value && !item.disabled());\n if (tab) this.selectedValue.set(value);\n }\n\n protected onTabKey(event: KeyboardEvent, tab: Tab): void {\n if (event.altKey || event.ctrlKey || event.metaKey || !TAB_NAVIGATION_KEYS.has(event.key)) return;\n const enabled = this.tabs().filter((item) => !item.disabled());\n const current = enabled.indexOf(tab);\n if (current < 0) return;\n event.preventDefault();\n event.stopPropagation();\n const button = event.currentTarget as HTMLButtonElement;\n const rtl = button.ownerDocument.defaultView?.getComputedStyle(button).direction === 'rtl';\n const direction = (event.key === 'ArrowRight' ? 1 : -1) * (rtl ? -1 : 1);\n const index = event.key === 'Home' ? 0 : event.key === 'End' ? enabled.length - 1 : (current + direction + enabled.length) % enabled.length;\n const next = enabled[index];\n this.select(next.value());\n const trigger = this.triggers().find((item) => item.nativeElement.id === next.triggerId)?.nativeElement;\n trigger?.focus({ preventScroll: true });\n trigger?.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n}\n","<ng-content select=\"bx-tab\"></ng-content>\n\n<div bxSurface data-bx-surface=\"glass\" class=\"bx-tab-header\" role=\"tablist\" [attr.aria-label]=\"resolvedLabel()\" aria-orientation=\"horizontal\">\n<div class=\"bx-tab-list\">\n @for (tab of tabs(); track tab) {\n <button #trigger bxSurface data-bx-surface=\"glass\" class=\"bx-tab-trigger\" type=\"button\" role=\"tab\"\n [bxSurfaceEmission]=\"tab.resolvedEmission()\"\n [style.--bx-tab-highlight]=\"tab.resolvedHighlight()\" [style.--bx-tab-text]=\"tab.resolvedTextColor()\"\n [style.--bx-tab-selected-text]=\"tab.resolvedSelectedText()\"\n [id]=\"tab.triggerId\" [attr.aria-controls]=\"tab.panelId\" [attr.aria-selected]=\"tab === activeTab()\"\n [attr.tabindex]=\"tab === activeTab() ? 0 : -1\" [disabled]=\"tab.disabled()\"\n [class.is-selected]=\"tab === activeTab()\" (click)=\"select(tab.value())\" (keydown)=\"onTabKey($event, tab)\">\n @if (tab.icon()) { <bx-icon [name]=\"tab.icon()!\" size=\"16\" /> }\n <span>{{ tab.resolvedLabel() }}</span>\n @if (tab.endIcon()) { <bx-icon [name]=\"tab.endIcon()!\" size=\"16\" /> }\n </button>\n }\n</div>\n</div>\n\n<div class=\"bx-tab-panels\">\n @for (tab of tabs(); track tab) {\n <div class=\"bx-tab-panel\" role=\"tabpanel\" tabindex=\"0\" [id]=\"tab.panelId\"\n [style.color]=\"tab.resolvedContentColor()\"\n [attr.aria-labelledby]=\"tab.triggerId\" [hidden]=\"tab !== activeTab()\">\n @if (tab === activeTab()) {\n <ng-container [ngTemplateOutlet]=\"tab.template()\"></ng-container>\n }\n </div>\n }\n</div>\n","import { InjectionToken } from '@angular/core';\n\nexport interface IBxOverlayContext {\n useTopLayer?: boolean;\n}\n\nexport const BX_OVERLAY_CONTEXT = new InjectionToken<IBxOverlayContext>('BX_OVERLAY_CONTEXT');\n","import { booleanAttribute, DestroyRef, Directive, ElementRef, HostListener, inject, input, NgZone, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BxA11yService, BxOverlayPositionService, inheritOverlayTheme } from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BX_OVERLAY_CONTEXT } from './overlay-context.token';\nimport { Subscription } from 'rxjs';\n\ninterface TouchPress {\n pointerId: number;\n x: number;\n y: number;\n timer: number;\n opened: boolean;\n events: AbortController;\n}\n\n@Directive({ selector: '[bxContextMenu]' })\nexport class ContextMenuDirective {\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly vcr = inject(ViewContainerRef);\n public readonly bxContextMenu = input.required<TemplateRef<unknown>>();\n public readonly bxContextMenuLongPress = input(true, { transform: booleanAttribute });\n private readonly onPointerDown = (event: PointerEvent): void => {\n this.lastPointerType = event.pointerType;\n this.cancelTouchPress();\n if (event.isPrimary) this.clearTouchGuard();\n if (event.pointerType !== 'touch' || !event.isPrimary || event.button !== 0 || !this.bxContextMenuLongPress() || this.hasNativeTouchAction(event)) return;\n const source = this.elementRef.nativeElement;\n const doc = source.ownerDocument;\n const win = doc.defaultView;\n if (!win || this.hasTextSelection()) return;\n const press: TouchPress = { pointerId: event.pointerId, x: event.clientX, y: event.clientY, timer: 0, opened: false, events: new AbortController() };\n this.touchPress = press;\n const options = { capture: true, passive: true, signal: press.events.signal };\n const finish = () => this.cancelTouchPress();\n doc.addEventListener(\n 'pointermove',\n (move) => {\n if (move.pointerId === press.pointerId && !press.opened && Math.hypot(move.clientX - press.x, move.clientY - press.y) > 10) finish();\n },\n options\n );\n for (const type of ['pointerup', 'pointercancel'] as const) {\n doc.addEventListener(\n type,\n (end) => {\n if (end.pointerId === press.pointerId) finish();\n },\n options\n );\n }\n doc.addEventListener(\n 'pointerdown',\n (next) => {\n if (next.pointerId !== press.pointerId) finish();\n },\n options\n );\n doc.addEventListener('scroll', finish, options);\n doc.addEventListener(\n 'visibilitychange',\n () => {\n if (doc.hidden) finish();\n },\n options\n );\n win.addEventListener('blur', finish, { signal: press.events.signal });\n press.timer = win.setTimeout(() => this.zone.run(() => this.openTouchMenu(press)), 500);\n };\n\n private overlayRef: OverlayRef | null = null;\n private transition?: ReturnType<typeof createGlassTransition>;\n private point?: HTMLElement;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private subscriptions = new Subscription();\n private revision = 0;\n private touchPress?: TouchPress;\n private touchGuard?: AbortController;\n private touchGuardTimer?: number;\n private lastPointerType = '';\n\n constructor() {\n const source = this.elementRef.nativeElement;\n if (source.ownerDocument.defaultView) {\n this.zone.runOutsideAngular(() => source.addEventListener('pointerdown', this.onPointerDown, { passive: true }));\n }\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n source.removeEventListener('pointerdown', this.onPointerDown);\n this.cancelTouchPress();\n this.clearTouchGuard();\n this.dispose();\n });\n }\n\n @HostListener('contextmenu', ['$event'])\n public open(event: MouseEvent): void {\n if (event.type === 'contextmenu' && this.lastPointerType === 'touch') {\n const press = this.touchPress;\n if (!press) return;\n if (!this.bxContextMenuLongPress() || this.hasNativeTouchAction(event) || this.hasTextSelection()) {\n this.cancelTouchPress();\n return;\n }\n event.preventDefault();\n this.openTouchMenu(press);\n return;\n }\n event.preventDefault();\n this.cancelTouchPress();\n this.clearTouchGuard();\n this.openAt(event.clientX, event.clientY);\n }\n\n public close(restoreFocus = false): void {\n if (!this.overlayRef) return;\n const revision = ++this.revision;\n if (restoreFocus || this.overlayRef.overlayElement.contains(this.elementRef.nativeElement.ownerDocument.activeElement)) {\n this.elementRef.nativeElement.focus({ preventScroll: true });\n }\n this.overlayRef.overlayElement.inert = true;\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision) this.dispose();\n })\n .catch(() => {\n if (revision === this.revision) this.dispose();\n });\n } else this.dispose();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKey(event: KeyboardEvent): void {\n if (event.key !== 'ContextMenu' && !(event.shiftKey && event.key === 'F10')) return;\n event.preventDefault();\n this.lastPointerType = '';\n this.cancelTouchPress();\n this.clearTouchGuard();\n const rect = this.elementRef.nativeElement.getBoundingClientRect();\n this.openAt(rect.left + Math.min(24, rect.width / 2), rect.bottom);\n this.items()[0]?.focus();\n }\n\n @HostListener('document:click', ['$event'])\n protected onDocumentClick(event: MouseEvent): void {\n const target = event.target as HTMLElement | null;\n if (target && this.overlayRef?.overlayElement.contains(target) && target.closest('button, a, [role=\"menuitem\"]')) this.close();\n }\n\n private hasNativeTouchAction(event: Event): boolean {\n const source = this.elementRef.nativeElement;\n for (const node of event.composedPath()) {\n if (node instanceof HTMLElement) {\n if (node.isContentEditable || node.matches('input, textarea, select, :disabled, [aria-disabled=\"true\"], [inert]')) return true;\n if (node === source) break;\n }\n }\n return !!source.closest(':disabled, [aria-disabled=\"true\"], [inert]');\n }\n\n private hasTextSelection(): boolean {\n const source = this.elementRef.nativeElement;\n const selection = source.ownerDocument.getSelection();\n return !!selection && !selection.isCollapsed && (source.contains(selection.anchorNode) || source.contains(selection.focusNode));\n }\n\n private openTouchMenu(press: TouchPress): void {\n if (this.touchPress !== press || press.opened) return;\n const source = this.elementRef.nativeElement;\n if (\n !this.bxContextMenuLongPress() ||\n !source.isConnected ||\n source.isContentEditable ||\n source.closest(':disabled, [aria-disabled=\"true\"], [inert]') ||\n this.hasTextSelection()\n ) {\n this.cancelTouchPress();\n return;\n }\n press.opened = true;\n this.elementRef.nativeElement.ownerDocument.defaultView?.clearTimeout(press.timer);\n this.guardTouchRelease();\n this.openAt(press.x, press.y + 12);\n }\n\n private cancelTouchPress(): void {\n const press = this.touchPress;\n if (!press) return;\n this.touchPress = undefined;\n const win = this.elementRef.nativeElement.ownerDocument.defaultView;\n win?.clearTimeout(press.timer);\n press.events.abort();\n if (press.opened && win) this.touchGuardTimer = win.setTimeout(() => this.clearTouchGuard(), 800);\n }\n\n private guardTouchRelease(): void {\n this.clearTouchGuard();\n const doc = this.elementRef.nativeElement.ownerDocument;\n const guard = new AbortController();\n this.touchGuard = guard;\n const options = { capture: true, signal: guard.signal };\n // Consume only the hold's compatibility click; a fresh press can select or dismiss normally.\n doc.addEventListener(\n 'click',\n (event) => {\n if (event.detail === 0) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n this.clearTouchGuard();\n },\n options\n );\n doc.addEventListener(\n 'contextmenu',\n (event) => {\n event.preventDefault();\n event.stopImmediatePropagation();\n },\n options\n );\n doc.addEventListener(\n 'pointerdown',\n (event) => {\n if (event.isPrimary) this.clearTouchGuard();\n },\n { ...options, passive: true }\n );\n doc.addEventListener('keydown', () => this.clearTouchGuard(), options);\n }\n\n private clearTouchGuard(): void {\n this.touchGuard?.abort();\n this.touchGuard = undefined;\n this.elementRef.nativeElement.ownerDocument.defaultView?.clearTimeout(this.touchGuardTimer);\n this.touchGuardTimer = undefined;\n }\n\n private openAt(x: number, y: number): void {\n this.dispose();\n ++this.revision;\n const source = this.elementRef.nativeElement;\n this.overlayRef = this.overlay.create({\n positionStrategy: this.positionBuilder.getCoordinateStrategy(x, y),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n usePopover: !!this.overlayContext?.useTopLayer || !!source.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]'),\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n this.subscriptions = new Subscription();\n const win = source.ownerDocument.defaultView;\n if (win) {\n this.zone.runOutsideAngular(() => {\n const closeOnScroll = (event: Event) => {\n const target = event.target;\n if (this.overlayRef?.overlayElement.inert) return;\n if (target === win || (target instanceof Node && target.contains(source))) this.zone.run(() => this.close());\n };\n win.addEventListener('scroll', closeOnScroll, { capture: true, passive: true });\n this.subscriptions.add(() => win.removeEventListener('scroll', closeOnScroll, true));\n });\n }\n this.subscriptions.add(this.overlayRef.backdropClick().subscribe(() => this.close()));\n this.subscriptions.add(this.overlayRef.detachments().subscribe(() => this.dispose()));\n this.subscriptions.add(this.overlayRef.keydownEvents().subscribe((event) => this.onMenuKey(event)));\n const pane = this.overlayRef.overlayElement;\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(source, pane));\n this.disconnectLighting = inheritGlassLighting(pane, source);\n const view = this.overlayRef.attach(new TemplatePortal(this.bxContextMenu(), this.vcr));\n view.detectChanges();\n this.overlayRef.updatePosition();\n if (!this.a11y.isReducedMotion()) {\n const point = source.ownerDocument.createElement('span');\n point.setAttribute('aria-hidden', 'true');\n Object.assign(point.style, { position: 'fixed', left: `${x}px`, top: `${y}px`, width: '1px', height: '1px', pointerEvents: 'none' });\n source.ownerDocument.body.append(point);\n this.point = point;\n const transition = this.zone.runOutsideAngular(() => createGlassTransition(point, pane));\n this.transition = transition;\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .catch(() => {\n this.transition?.destroy();\n this.transition = undefined;\n });\n }\n }\n\n private items(): HTMLElement[] {\n return Array.from(this.overlayRef?.overlayElement.querySelectorAll<HTMLElement>('button:not(:disabled), a[href], [role=\"menuitem\"]') ?? []).filter(\n (item) => !item.matches('[disabled], [aria-disabled=\"true\"]') && !item.closest('[hidden], [inert]')\n );\n }\n\n private onMenuKey(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close(true);\n return;\n }\n if ((event.target as HTMLElement)?.closest('input,textarea,[contenteditable=\"true\"]')) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.items();\n if (!items.length) return;\n event.preventDefault();\n const current = items.indexOf(this.elementRef.nativeElement.ownerDocument.activeElement as HTMLElement);\n const next =\n event.key === 'Home'\n ? 0\n : event.key === 'End'\n ? items.length - 1\n : event.key === 'ArrowDown'\n ? (current + 1) % items.length\n : current < 0\n ? items.length - 1\n : (current - 1 + items.length) % items.length;\n items[next].focus();\n }\n\n private dispose(): void {\n this.subscriptions.unsubscribe();\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = undefined;\n this.point?.remove();\n this.point = undefined;\n const overlay = this.overlayRef;\n this.overlayRef = null;\n overlay?.dispose();\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n}\n","import { DestroyRef, Directive, effect, ElementRef, HostListener, inject, input, NgZone } from '@angular/core';\nimport { AriaDescriber, FocusMonitor } from '@angular/cdk/a11y';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BX_I18N,\n BxA11yService,\n BxPlacement,\n BxOverlayPositionService,\n inheritOverlayTheme,\n isTextWithKey,\n ResolvableText,\n uuidv4\n} from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { Tooltip } from '../components/tooltip/tooltip';\nimport { ContextMenuDirective } from './context-menu.directive';\n\n@Directive({ selector: '[bxTooltip]' })\nexport class TooltipDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly describer = inject(AriaDescriber);\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly contextMenu = inject(ContextMenuDirective, { optional: true });\n private readonly id = `bx-tooltip-${uuidv4()}`;\n public readonly bxTooltip = input.required<ResolvableText>();\n public readonly placement = input<BxPlacement>('bottom');\n public readonly bxTooltipTouch = input<'none' | 'longpress' | 'tap'>('none');\n private overlayRef: OverlayRef | null = null;\n private transition?: ReturnType<typeof createGlassTransition>;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private positionSubscription?: { unsubscribe(): void };\n private keyboardSubscription?: { unsubscribe(): void };\n private revision = 0;\n private hovered = false;\n private focused = false;\n private lastPointerType = '';\n private touchEvents?: AbortController;\n private holdTimer?: number;\n private touchHideTimer?: number;\n private touchVisible = false;\n private closeTouchTap = false;\n\n constructor() {\n const source = this.elementRef.nativeElement;\n const focus = source.ownerDocument.defaultView\n ? this.focusMonitor.monitor(source, true).subscribe((origin) =>\n this.zone.run(() => {\n this.focused = origin === 'keyboard';\n if (this.focused) {\n this.clearTouchInteraction();\n this.show();\n } else if (!this.hovered && !this.touchEvents) this.hide();\n })\n )\n : undefined;\n effect((onCleanup) => {\n this.i18n?.version?.();\n const text = this.bxTooltip();\n const description = isTextWithKey(text) ? (this.i18n?.translate(text.key) ?? text.key) : text;\n if (!description) return;\n this.describer.describe(source, description, 'tooltip');\n onCleanup(() => this.describer.removeDescription(source, description, 'tooltip'));\n });\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n focus?.unsubscribe();\n if (focus) this.focusMonitor.stopMonitoring(source);\n this.clearTouchInteraction();\n this.dispose();\n });\n }\n\n public show(): void {\n if (!this.bxTooltip()) return;\n const revision = ++this.revision;\n if (!this.overlayRef) {\n const strategy = this.positionBuilder.getElementStrategy(this.elementRef.nativeElement, this.placement()).withFlexibleDimensions(false);\n this.overlayRef = this.overlay.create({\n positionStrategy: strategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n hasBackdrop: false,\n panelClass: 'bx-tooltip-pane'\n });\n\n const pane = this.overlayRef.overlayElement;\n pane.id = this.id;\n pane.setAttribute('role', 'tooltip');\n // AriaDescriber supplies the description even when the visual tooltip is hidden.\n pane.setAttribute('aria-hidden', 'true');\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(this.elementRef.nativeElement, pane));\n this.disconnectLighting = inheritGlassLighting(pane, this.elementRef.nativeElement);\n\n const component = this.overlayRef.attach(new ComponentPortal(Tooltip));\n // CDK enables pane pointer events during attach. Reset afterwards so the\n // emerging tooltip cannot steal hover from small or nested triggers.\n pane.style.pointerEvents = 'none';\n this.keyboardSubscription = this.overlayRef.keydownEvents().subscribe((event) => this.onEscape(event));\n component.setInput('text', this.bxTooltip());\n component.changeDetectorRef.detectChanges();\n const positionArrow = () => {\n const trigger = this.elementRef.nativeElement.getBoundingClientRect();\n const bounds = pane.getBoundingClientRect();\n pane.style.setProperty('--bx-tooltip-arrow-x', `${trigger.left + trigger.width / 2 - bounds.left}px`);\n pane.style.setProperty('--bx-tooltip-arrow-y', `${trigger.top + trigger.height / 2 - bounds.top}px`);\n this.transition?.refresh();\n };\n this.positionSubscription = strategy.positionChanges.subscribe(positionArrow);\n this.overlayRef.updatePosition();\n positionArrow();\n\n if (!this.a11y.isReducedMotion()) {\n this.transition = this.zone.runOutsideAngular(() => createGlassTransition(this.elementRef.nativeElement, pane));\n }\n }\n\n void Promise.resolve(this.zone.runOutsideAngular(() => this.transition?.enter())).catch(() => {\n if (revision === this.revision) {\n this.transition?.destroy();\n this.transition = undefined;\n }\n });\n }\n\n public hide(): void {\n this.clearTouchInteraction();\n const revision = ++this.revision;\n if (!this.overlayRef) return;\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision) this.dispose();\n })\n .catch(() => {\n if (revision === this.revision) this.dispose();\n });\n } else this.dispose();\n }\n\n @HostListener('pointerenter', ['$event'])\n protected onEnter(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') return;\n this.clearTouchInteraction();\n this.hovered = true;\n this.show();\n }\n\n @HostListener('pointerleave', ['$event'])\n protected onLeave(event: PointerEvent): void {\n if (event.pointerType !== 'mouse') return;\n this.hovered = false;\n if (!this.focused) this.hide();\n }\n\n @HostListener('pointerdown', ['$event'])\n protected onPointerDown(event: PointerEvent): void {\n this.lastPointerType = event.pointerType;\n if (event.pointerType !== 'touch') return;\n this.closeTouchTap = this.touchVisible && this.bxTooltipTouch() === 'tap';\n this.hovered = false;\n this.focused = false;\n this.hide();\n if (this.bxTooltipTouch() !== 'longpress' || !event.isPrimary || event.button !== 0 || !this.canUseTouch(event)) return;\n this.zone.runOutsideAngular(() => this.startTouchInteraction(event));\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: MouseEvent): void {\n if (event.detail === 0 || this.lastPointerType !== 'touch' || this.bxTooltipTouch() !== 'tap' || !this.canUseTouch(event)) return;\n if (this.closeTouchTap) {\n this.closeTouchTap = false;\n return;\n }\n this.zone.runOutsideAngular(() => this.startTouchInteraction());\n }\n\n @HostListener('document:keydown', ['$event'])\n protected onEscape(event: KeyboardEvent): void {\n if (event.key === 'Escape' && this.overlayRef) {\n event.stopPropagation();\n this.hovered = false;\n this.focused = false;\n this.hide();\n }\n }\n\n private canUseTouch(event: Event): boolean {\n if (this.contextMenu && this.bxTooltipTouch() === 'longpress') return false;\n const source = this.elementRef.nativeElement;\n if (source.closest(':disabled, [aria-disabled=\"true\"], [inert]')) return false;\n return !event.composedPath().some((node) => node instanceof HTMLElement && (node.isContentEditable || node.matches('input, textarea, select')));\n }\n\n private hasTextSelection(): boolean {\n const source = this.elementRef.nativeElement;\n const selection = source.ownerDocument.getSelection();\n return !!selection && !selection.isCollapsed && (source.contains(selection.anchorNode) || source.contains(selection.focusNode));\n }\n\n private startTouchInteraction(press?: PointerEvent): void {\n const source = this.elementRef.nativeElement;\n const doc = source.ownerDocument;\n const win = doc.defaultView;\n if (!win || this.hasTextSelection()) return;\n this.clearTouchInteraction();\n const events = new AbortController();\n this.touchEvents = events;\n const options = { capture: true, passive: true, signal: events.signal };\n const dismiss = () => this.zone.run(() => this.hide());\n let suppressReleaseClick = false;\n doc.addEventListener(\n 'pointerdown',\n (event) => {\n if (!press && event.target instanceof Node && source.contains(event.target)) return;\n dismiss();\n },\n options\n );\n doc.addEventListener('scroll', dismiss, options);\n doc.addEventListener(\n 'visibilitychange',\n () => {\n if (doc.hidden) dismiss();\n },\n options\n );\n win.addEventListener('blur', dismiss, { signal: events.signal });\n if (!press) {\n this.touchVisible = true;\n this.zone.run(() => this.show());\n return;\n }\n doc.addEventListener(\n 'pointermove',\n (event) => {\n if (event.pointerId === press.pointerId && !this.touchVisible && Math.hypot(event.clientX - press.clientX, event.clientY - press.clientY) > 10)\n dismiss();\n },\n options\n );\n doc.addEventListener(\n 'pointerup',\n (event) => {\n if (event.pointerId !== press.pointerId) return;\n if (!this.touchVisible) dismiss();\n else this.touchHideTimer = win.setTimeout(dismiss, 1500);\n },\n options\n );\n doc.addEventListener(\n 'pointercancel',\n (event) => {\n if (event.pointerId === press.pointerId) dismiss();\n },\n options\n );\n doc.addEventListener(\n 'click',\n (event) => {\n if (!suppressReleaseClick || event.detail === 0) return;\n event.preventDefault();\n event.stopImmediatePropagation();\n suppressReleaseClick = false;\n },\n { ...options, passive: false }\n );\n doc.addEventListener(\n 'contextmenu',\n (event) => {\n if (event.target instanceof Node && source.contains(event.target) && !this.hasTextSelection()) event.preventDefault();\n },\n { ...options, passive: false }\n );\n this.holdTimer = win.setTimeout(() => {\n if (\n this.bxTooltipTouch() !== 'longpress' ||\n !source.isConnected ||\n source.closest(':disabled, [aria-disabled=\"true\"], [inert]') ||\n this.hasTextSelection()\n ) {\n dismiss();\n return;\n }\n this.touchVisible = true;\n suppressReleaseClick = true;\n this.zone.run(() => this.show());\n }, 500);\n }\n\n private clearTouchInteraction(): void {\n this.touchEvents?.abort();\n this.touchEvents = undefined;\n const win = this.elementRef.nativeElement.ownerDocument.defaultView;\n win?.clearTimeout(this.holdTimer);\n win?.clearTimeout(this.touchHideTimer);\n this.holdTimer = undefined;\n this.touchHideTimer = undefined;\n this.touchVisible = false;\n }\n\n private dispose(): void {\n this.keyboardSubscription?.unsubscribe();\n this.keyboardSubscription = undefined;\n this.positionSubscription?.unsubscribe();\n this.positionSubscription = undefined;\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = undefined;\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n HostListener,\n NgZone,\n PLATFORM_ID,\n effect,\n inject,\n input,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { BxA11yService, BxPlacement, BxOverlayPositionService, inheritOverlayTheme, trackOverlayOrigin } from '@filip.mazev/blocks/core';\nimport { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BX_OVERLAY_CONTEXT } from './overlay-context.token';\nimport { Subscription } from 'rxjs';\n\nexport type DropdownTransition = 'none' | 'fade' | 'emerge';\nexport type DropdownState = 'closed' | 'opening' | 'open' | 'closing';\n\n@Directive({\n selector: '[bxDropdown]',\n exportAs: 'bxDropdown',\n standalone: true,\n host: {\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-controls]': 'overlayId()'\n }\n})\nexport class DropdownDirective {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly overlay = inject(Overlay);\n private readonly positionBuilder = inject(BxOverlayPositionService);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly vcr = inject(ViewContainerRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\n private readonly _isOpen = signal(false);\n protected readonly overlayId = signal<string | null>(null);\n public readonly isOpen = this._isOpen.asReadonly();\n private readonly _state = signal<DropdownState>('closed');\n public readonly state = this._state.asReadonly();\n\n public readonly bxDropdown = input.required<TemplateRef<unknown>>();\n public readonly placement = input<BxPlacement>('bottom');\n public readonly bxTransition = input<DropdownTransition>('fade');\n\n private overlayRef: OverlayRef | null = null;\n private transition: ReturnType<typeof createGlassTransition> | null = null;\n private subscriptions = new Subscription();\n private revision = 0;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => {\n ++this.revision;\n this.dispose();\n });\n\n effect(() => {\n if (this.a11y.isReducedMotion() && this.transition) {\n ++this.revision;\n this.transition.destroy();\n this.transition = null;\n if (this.isOpen()) this._state.set('open');\n else this.dispose();\n }\n });\n }\n\n @HostListener('click', ['$event'])\n public toggle(event?: MouseEvent): void {\n if (this.isDisabled()) return;\n event?.stopPropagation();\n if (this.isOpen()) this.close();\n else this.open();\n }\n\n @HostListener('keydown', ['$event'])\n public onTriggerKeydown(event: KeyboardEvent): void {\n if (this.bxTransition() === 'none' || this.isDisabled() || this.isEditing(event.target)) return;\n if (event.key !== 'ArrowDown' && event.key !== 'ArrowUp') return;\n event.preventDefault();\n event.stopPropagation();\n this.open();\n const items = this.menuItems();\n const item = event.key === 'ArrowUp' ? items[items.length - 1] : items[0];\n item?.focus({ preventScroll: true });\n }\n\n public open(): void {\n if (!this.isBrowser || this.isOpen() || this.isDisabled()) return;\n const revision = ++this.revision;\n this._isOpen.set(true);\n this._state.set('opening');\n\n if (!this.overlayRef) this.attachOverlay();\n const overlay = this.overlayRef;\n if (!overlay) return;\n overlay.overlayElement.inert = false;\n overlay.overlayElement.style.removeProperty('pointer-events');\n\n if (this.bxTransition() !== 'none' && !this.a11y.isReducedMotion()) {\n const transition = (this.transition ??= this.zone.runOutsideAngular(() => createGlassTransition(this.elementRef.nativeElement, overlay.overlayElement)));\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .then(() => {\n if (revision === this.revision && this.isOpen()) this.zone.run(() => this._state.set('open'));\n })\n .catch(() => {\n if (revision === this.revision && this.isOpen()) {\n this.transition?.destroy();\n this.transition = null;\n this._state.set('open');\n }\n });\n } else {\n this._state.set('open');\n }\n }\n\n public close(restoreFocus = false): void {\n if (!this.overlayRef || !this.isOpen()) return;\n const revision = ++this.revision;\n const overlay = this.overlayRef;\n this._isOpen.set(false);\n this._state.set('closing');\n\n const source = this.elementRef.nativeElement;\n if (restoreFocus || overlay.overlayElement.contains(source.ownerDocument.activeElement)) {\n source.focus({ preventScroll: true });\n }\n overlay.overlayElement.inert = true;\n overlay.overlayElement.style.pointerEvents = 'none';\n\n const transition = this.transition;\n if (transition && !this.a11y.isReducedMotion()) {\n void this.zone\n .runOutsideAngular(() => transition.exit())\n .then(() => {\n if (revision === this.revision && !this.isOpen()) this.zone.run(() => this.dispose());\n })\n .catch(() => {\n if (revision === this.revision && !this.isOpen()) this.dispose();\n });\n } else {\n this.dispose();\n }\n }\n\n @HostListener('document:click', ['$event'])\n public onDocumentClick(event: MouseEvent): void {\n if (!this.overlayRef?.hasAttached() || !this.isOpen()) return;\n const target = event.target as Node | null;\n if (!target || this.elementRef.nativeElement.contains(target)) return;\n const inside = this.overlayRef.overlayElement.contains(target);\n // Preserve existing menu item click-to-close behavior; embedded inputs can stay open.\n if (!inside || this.bxTransition() === 'none' || (target instanceof Element && target.closest('button, a, [role=\"menuitem\"]'))) {\n this.close();\n }\n }\n\n private attachOverlay(): void {\n const positionStrategy = this.positionBuilder.getElementStrategy(this.elementRef.nativeElement, this.placement(), 4);\n const overlay = this.overlay.create({\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n usePopover:\n !!this.overlayContext?.useTopLayer ||\n !!this.elementRef.nativeElement.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]'),\n // A fading surface keeps its trigger reachable while it opens/closes.\n hasBackdrop: this.bxTransition() === 'none',\n backdropClass: 'cdk-overlay-transparent-backdrop'\n });\n this.overlayRef = overlay;\n this.overlayId.set(overlay.overlayElement.id || null);\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(this.elementRef.nativeElement, overlay.overlayElement));\n this.disconnectLighting = inheritGlassLighting(overlay.overlayElement, this.elementRef.nativeElement);\n this.subscriptions = new Subscription();\n this.subscriptions.add(this.zone.runOutsideAngular(() => trackOverlayOrigin(overlay, this.elementRef.nativeElement)));\n this.subscriptions.add(overlay.backdropClick().subscribe(() => this.close()));\n this.subscriptions.add(\n overlay.outsidePointerEvents().subscribe((event) => {\n if (!this.elementRef.nativeElement.contains(event.target as Node)) this.close();\n })\n );\n this.subscriptions.add(\n overlay.keydownEvents().subscribe((event) => {\n if (event.key === 'Escape' && this.isOpen()) {\n event.preventDefault();\n event.stopPropagation();\n this.close(true);\n } else if (!event.defaultPrevented && this.bxTransition() !== 'none' && this.isOpen()) {\n this.navigateMenu(event);\n }\n })\n );\n this.subscriptions.add(\n positionStrategy.positionChanges.subscribe(() => {\n this.zone.runOutsideAngular(() => this.transition?.refresh());\n })\n );\n const view = overlay.attach(new TemplatePortal(this.bxDropdown(), this.vcr));\n view.detectChanges();\n overlay.updatePosition();\n }\n\n private isDisabled(): boolean {\n const element = this.elementRef.nativeElement;\n return element.hasAttribute('disabled') || element.getAttribute('aria-disabled') === 'true';\n }\n\n private menuItems(): HTMLElement[] {\n const pane = this.overlayRef?.overlayElement;\n if (!pane) return [];\n return Array.from(pane.querySelectorAll<HTMLElement>('button, a[href], [role=\"menuitem\"]')).filter((item) => {\n if (item.matches(':disabled, [disabled], [aria-disabled=\"true\"]') || item.closest('[aria-disabled=\"true\"]')) return false;\n if (item.closest('[hidden], [inert], [aria-hidden=\"true\"]')) return false;\n if (item.tabIndex < 0 && !item.hasAttribute('tabindex')) return false;\n const style = item.ownerDocument.defaultView?.getComputedStyle(item);\n return !!style && style.display !== 'none' && style.visibility !== 'hidden' && item.getClientRects().length > 0;\n });\n }\n\n private navigateMenu(event: KeyboardEvent): void {\n if (this.isEditing(event.target) || !(event.target instanceof Node) || !this.overlayRef?.overlayElement.contains(event.target)) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.menuItems();\n if (!items.length) return;\n const current = items.indexOf(this.elementRef.nativeElement.ownerDocument.activeElement as HTMLElement);\n let index: number;\n if (event.key === 'Home') index = 0;\n else if (event.key === 'End') index = items.length - 1;\n else if (event.key === 'ArrowDown') index = current < 0 ? 0 : (current + 1) % items.length;\n else index = current < 0 ? items.length - 1 : (current - 1 + items.length) % items.length;\n event.preventDefault();\n event.stopPropagation();\n items[index].focus({ preventScroll: true });\n }\n\n private isEditing(target: EventTarget | null): boolean {\n return target instanceof Element && !!target.closest('input, textarea, select, [contenteditable]:not([contenteditable=\"false\"]), [role=\"textbox\"]');\n }\n\n private dispose(): void {\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.transition?.destroy();\n this.transition = null;\n this.subscriptions.unsubscribe();\n this.overlayRef?.dispose();\n this.overlayRef = null;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n this.overlayId.set(null);\n this._isOpen.set(false);\n this._state.set('closed');\n }\n}\n","import { Directive, forwardRef, input } from '@angular/core';\nimport { BX_OVERLAY_CONTEXT, IBxOverlayContext } from './overlay-context.token';\n\n@Directive({\n selector: '[bxOverlayContext]',\n standalone: true,\n providers: [{ provide: BX_OVERLAY_CONTEXT, useExisting: forwardRef(() => BxOverlayContextDirective) }]\n})\nexport class BxOverlayContextDirective implements IBxOverlayContext {\n public readonly bxOverlayContext = input<IBxOverlayContext>({});\n\n public get useTopLayer(): boolean | undefined {\n return this.bxOverlayContext().useTopLayer;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filip.mazev-blocks.mjs","names":[],"sources":["../../../projects/blocks/src/public-api.ts"],"sourcesContent":["/* * Public API Surface of blocks\n * This file is auto-generated. Do not edit directly.\n */\n\nexport const BLOCKS_VERSION = '1.4.
|
|
1
|
+
{"version":3,"file":"filip.mazev-blocks.mjs","names":[],"sources":["../../../projects/blocks/src/public-api.ts"],"sourcesContent":["/* * Public API Surface of blocks\n * This file is auto-generated. Do not edit directly.\n */\n\nexport const BLOCKS_VERSION = '1.4.12';\n"],"mappings":"AAIA,MAAa,iBAAiB"}
|