@filip.mazev/blocks 1.4.16 → 1.4.18

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.
@@ -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/directives/overlay-context.token.ts","../../../projects/blocks/primitives/directives/context-menu.directive.ts","../../../projects/blocks/primitives/directives/tooltip.directive.ts","../../../projects/blocks/primitives/directives/truncate.directive.ts","../../../projects/blocks/primitives/helpers/truncation.helpers.ts","../../../projects/blocks/primitives/pipes/truncated-text.pipe.ts","../../../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/dropdown.directive.ts","../../../projects/blocks/primitives/directives/overlay-context.directive.ts","../../../projects/blocks/primitives/components/loading-spinner/loading-spinner.ts","../../../projects/blocks/primitives/components/loading-spinner/loading-spinner.html","../../../projects/blocks/primitives/components/loading-indicator/loading-indicator.ts","../../../projects/blocks/primitives/components/loading-indicator/loading-indicator.html","../../../projects/blocks/primitives/components/progress-bar/progress-bar.ts","../../../projects/blocks/primitives/components/progress-bar/progress-bar.html","../../../projects/blocks/primitives/components/tag/constants/tag.constants.ts","../../../projects/blocks/primitives/components/tag/helpers/tag-number.helpers.ts","../../../projects/blocks/primitives/components/tag/tag.ts","../../../projects/blocks/primitives/components/tag/tag.html"],"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 { 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 { ComponentRef, 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 public readonly bxTooltipHover = input(true);\n private overlayRef: OverlayRef | null = null;\n private tooltipComponent?: ComponentRef<Tooltip>;\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) {\n if (this.overlayRef) this.hide();\n return;\n }\n\n this.tooltipComponent?.setInput('text', text);\n\n if (this.hovered || this.focused) this.show();\n\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 this.tooltipComponent = component;\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' || !this.bxTooltipHover()) 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 //#region Helpers\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.tooltipComponent = undefined;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n\n //#endregion\n}\n","import { afterEveryRender, afterNextRender, booleanAttribute, DestroyRef, Directive, ElementRef, inject, input, NgZone, output, signal } from '@angular/core';\n\n/** Single-line ellipsis styling and reactive measurement of the rendered text. */\n@Directive({\n selector: '[bxTruncate]',\n exportAs: 'bxTruncate',\n host: {\n '[style.display]': 'enabled() ? \"block\" : null',\n '[class.bx-truncate]': 'enabled()'\n }\n})\nexport class TruncateDirective {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly clipped = signal(false);\n private readonly content = signal('');\n /** Enables single-line ellipsis and measurement. Defaults to true. */\n public readonly enabled = input(true, { alias: 'bxTruncate', transform: booleanAttribute });\n /** Whether the rendered content currently overflows its visible box. False during server rendering. */\n public readonly truncated = this.clipped.asReadonly();\n /** Current rendered text, or a native input's value/placeholder, for custom feedback and projected content. */\n public readonly text = this.content.asReadonly();\n /** Emits only when the measured truncation state changes. */\n public readonly truncatedChange = output<boolean>();\n\n private rendered = false;\n private frame?: number;\n private resize?: ResizeObserver;\n private mutations?: MutationObserver;\n private listeners?: AbortController;\n private textContext?: CanvasRenderingContext2D | null;\n\n constructor() {\n afterNextRender(() => this.observeLayout());\n afterEveryRender(() => this.scheduleMeasure());\n this.destroyRef.onDestroy(() => {\n if (this.frame !== undefined) this.element.ownerDocument.defaultView?.cancelAnimationFrame(this.frame);\n\n this.resize?.disconnect();\n this.mutations?.disconnect();\n this.listeners?.abort();\n });\n }\n\n /** Rechecks after an application-owned layout or style update outside Angular rendering. */\n public refresh(): void {\n if (!this.rendered || this.destroyRef.destroyed) return;\n\n const text =\n this.element.tagName === 'INPUT'\n ? (this.element as HTMLInputElement).value || (this.element as HTMLInputElement).placeholder\n : (this.element.textContent ?? '');\n const clipped = this.enabled() && this.element.getClientRects().length > 0 && this.measureOverflow(text);\n\n if (clipped === this.clipped() && text === this.content()) return;\n\n this.zone.run(() => {\n this.content.set(text);\n\n if (clipped !== this.clipped()) {\n this.clipped.set(clipped);\n this.truncatedChange.emit(clipped);\n }\n });\n }\n\n //#region Helpers\n\n private measureOverflow(text: string): boolean {\n if (this.element.tagName !== 'INPUT') {\n return this.element.scrollWidth > this.element.clientWidth || this.element.scrollHeight > this.element.clientHeight;\n }\n\n if (!text) return false;\n\n // Native input values are not DOM text nodes and scrollWidth is inconsistent across engines.\n const style = this.element.ownerDocument.defaultView?.getComputedStyle(this.element);\n this.textContext ??= this.element.ownerDocument.createElement('canvas').getContext('2d');\n\n if (!style || !this.textContext) return this.element.scrollWidth > this.element.clientWidth;\n\n this.textContext.font = style.font || `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\n const letterSpacing = parseFloat(style.letterSpacing) || 0;\n const wordSpacing = parseFloat(style.wordSpacing) || 0;\n const width = this.textContext.measureText(text).width + letterSpacing * Math.max(0, [...text].length - 1) + wordSpacing * (text.match(/\\s/g)?.length ?? 0);\n const available = this.element.clientWidth - (parseFloat(style.paddingInlineStart) || 0) - (parseFloat(style.paddingInlineEnd) || 0);\n\n return width > available + 0.5;\n }\n\n private observeLayout(): void {\n const view = this.element.ownerDocument.defaultView;\n\n if (!view) return;\n\n this.rendered = true;\n this.zone.runOutsideAngular(() => {\n if (typeof ResizeObserver !== 'undefined') {\n this.resize = new ResizeObserver(() => this.scheduleMeasure());\n this.resize.observe(this.element);\n }\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutations = new MutationObserver(() => this.scheduleMeasure());\n this.mutations.observe(this.element, { childList: true, characterData: true, subtree: true });\n }\n\n const listeners = new AbortController();\n this.listeners = listeners;\n const options = { passive: true, signal: listeners.signal };\n view.addEventListener('resize', () => this.scheduleMeasure(), options);\n view.visualViewport?.addEventListener('resize', () => this.scheduleMeasure(), options);\n const fonts = this.element.ownerDocument.fonts;\n fonts?.addEventListener('loadingdone', () => this.scheduleMeasure(), options);\n void fonts?.ready.then(() => this.scheduleMeasure());\n this.scheduleMeasure();\n });\n }\n\n private scheduleMeasure(): void {\n const view = this.element.ownerDocument.defaultView;\n\n if (!this.rendered || this.destroyRef.destroyed || !view || this.frame !== undefined) return;\n\n this.zone.runOutsideAngular(() => {\n this.frame = view.requestAnimationFrame(() => {\n this.frame = undefined;\n this.refresh();\n });\n });\n }\n\n //#endregion\n}\n","import { ResolvableText } from '@filip.mazev/blocks/core';\n\n/** Returns content only while clipped and enabled. T preserves the caller's plain string or translation-key contract. */\nexport function truncatedText<T extends ResolvableText>(text: T | null | undefined, truncated: boolean, enabled = true): T | '' {\n return enabled && truncated ? (text ?? '') : '';\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ResolvableText } from '@filip.mazev/blocks/core';\nimport { truncatedText } from '../helpers/truncation.helpers';\n\n/** Selects text for conditional feedback using the shared directive's reactive measurement. */\n@Pipe({ name: 'bxTruncatedText' })\nexport class TruncatedTextPipe implements PipeTransform {\n public transform(text: ResolvableText | null | undefined, truncated: boolean, enabled = true): ResolvableText {\n return truncatedText(text, truncated, enabled);\n }\n}\n","import { BX_I18N, BxA11yService, BxShortcutService, isTextWithKey, ResolvableShortcut, ResolvableText } from '@filip.mazev/blocks/core';\nimport { booleanAttribute, Component, computed, inject, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon, IconName } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { TooltipDirective } from '../../directives/tooltip.directive';\nimport { TruncateDirective } from '../../directives/truncate.directive';\nimport { TruncatedTextPipe } from '../../pipes/truncated-text.pipe';\n\n@Component({\n selector: 'bx-menu-item',\n imports: [Icon, BxSurfaceDirective, TooltipDirective, TruncateDirective, TruncatedTextPipe],\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 /** Whether clipped labels receive an automatic tooltip. Defaults to true; ellipsis remains when false. */\n public readonly tooltipOnTruncate = input(true, { transform: booleanAttribute });\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 [bxTooltip]=\"(resolvedLabel() ?? menuText.text().trim()) | bxTruncatedText: menuText.truncated(): tooltipOnTruncate()\" bxTooltipTouch=\"longpress\">\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\" [bxTruncate]=\"!wrapLabel()\" #menuText=\"bxTruncate\" [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 { 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","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-loading-spinner',\n templateUrl: './loading-spinner.html',\n styleUrl: './loading-spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--bx-spinner-size]': 'size() + \"px\"',\n '[attr.role]': 'decorative() ? null : \"status\"',\n '[attr.aria-label]': 'decorative() ? null : resolvedLabel()',\n '[attr.aria-hidden]': 'decorative() ? \"true\" : null',\n '[class.is-reduced-motion]': 'a11y.isReducedMotion()'\n }\n})\nexport class LoadingSpinner {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly a11y = inject(BxA11yService);\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n\n public readonly size = input(20);\n public readonly decorative = input(false);\n public readonly label = input<ResolvableText>('Loading');\n}\n","<span class=\"bx-spinner-ring\"></span>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { LoadingSpinner } from '../loading-spinner/loading-spinner';\n\n@Component({\n selector: 'bx-loading-indicator',\n imports: [LoadingSpinner],\n templateUrl: './loading-indicator.html',\n styleUrl: './loading-indicator.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'status', 'aria-live': 'polite', 'aria-busy': 'true' }\n})\nexport class LoadingIndicator {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n\n public readonly label = input<ResolvableText>('Loading');\n public readonly size = input(20);\n}\n","<bx-loading-spinner [size]=\"size()\" [decorative]=\"true\" />\n<span>{{ resolvedLabel() }}</span>\n<ng-content />\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { ProgressBarMode } from './types/progress-bar.types';\n\n@Component({\n selector: 'bx-progress-bar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'indeterminate() ? null : progress()',\n '[attr.aria-label]': 'resolvedLabel()',\n '[class.is-indeterminate]': 'indeterminate()',\n '[class.is-reduced-motion]': 'a11y.isReducedMotion()',\n '[class.is-query]': 'mode() === \"query\"'\n }\n})\nexport class ProgressBar {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly a11y = inject(BxA11yService);\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n protected readonly progress = computed(() => (Number.isFinite(this.value()) ? Math.min(100, Math.max(0, this.value())) : 0));\n protected readonly buffer = computed(() =>\n Math.max(this.progress(), Number.isFinite(this.bufferValue()) ? Math.min(100, Math.max(0, this.bufferValue())) : 0)\n );\n\n protected readonly indeterminate = computed(() => this.mode() === 'indeterminate' || this.mode() === 'query');\n\n public readonly mode = input<ProgressBarMode>('determinate');\n public readonly value = input(0);\n public readonly bufferValue = input(100);\n public readonly label = input<ResolvableText>('Progress');\n}\n","@if (mode() === 'buffer') {\n<span class=\"bx-progress-buffer\" [style.width.%]=\"buffer()\"></span>\n}\n<span class=\"bx-progress-value\" [style.width.%]=\"indeterminate() ? 40 : progress()\"></span>\n","import { TagColor } from '../types/tag.types';\nimport { ITagPalette } from '../interfaces/itag-palette.interface';\n\nexport const TAG_PALETTES: Readonly<Record<TagColor, ITagPalette>> = {\n primary: {\n text: 'var(--bx-text-brand)',\n fill: 'var(--bx-primary)',\n onFill: 'var(--bx-on-primary)',\n tonal: 'var(--bx-primary-subtle)',\n border: 'var(--bx-border-brand)'\n },\n accent: {\n text: 'var(--bx-text-accent)',\n fill: 'var(--bx-accent)',\n onFill: 'var(--bx-on-accent)',\n tonal: 'var(--bx-accent-subtle)',\n border: 'var(--bx-border-accent)'\n },\n neutral: {\n text: 'var(--bx-text-primary)',\n fill: 'var(--bx-bg-element-active)',\n onFill: 'var(--bx-text-primary)',\n tonal: 'var(--bx-bg-element)',\n border: 'var(--bx-border-strong)'\n },\n success: {\n text: 'var(--bx-text-success)',\n fill: 'var(--bx-bg-success)',\n onFill: 'var(--bx-text-success)',\n tonal: 'var(--bx-bg-success-subtle)',\n border: 'var(--bx-border-success)'\n },\n danger: {\n text: 'var(--bx-text-danger)',\n fill: 'var(--bx-bg-danger)',\n onFill: 'var(--bx-text-danger)',\n tonal: 'var(--bx-bg-danger-subtle)',\n border: 'var(--bx-border-danger)'\n },\n info: {\n text: 'var(--bx-text-info)',\n fill: 'var(--bx-bg-info)',\n onFill: 'var(--bx-text-info)',\n tonal: 'var(--bx-bg-info-subtle)',\n border: 'var(--bx-border-info)'\n },\n warn: {\n text: 'var(--bx-text-warn)',\n fill: 'var(--bx-bg-warn)',\n onFill: 'var(--bx-text-warn)',\n tonal: 'var(--bx-bg-warn-subtle)',\n border: 'var(--bx-border-warn)'\n }\n};\n","/** Format numeric counts without changing consumer-supplied prefixes or abbreviations. */\nexport function formatTagNumber(value: number | string | null | undefined, locale?: string): string {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') return value;\n if (!Number.isFinite(value)) return '';\n\n try {\n return new Intl.NumberFormat(locale).format(value);\n } catch {\n return String(value);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, viewChild } from '@angular/core';\nimport { BX_I18N, BxPlacement, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { Icon, IconName, IconSize } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { TooltipDirective } from '../../directives/tooltip.directive';\nimport { TruncateDirective } from '../../directives/truncate.directive';\nimport { truncatedText } from '../../helpers/truncation.helpers';\nimport { ITagConfig } from './interfaces/itag-config.interface';\nimport { TagColor, TagSize, TagVariant } from './types/tag.types';\nimport { TAG_PALETTES } from './constants/tag.constants';\nimport { formatTagNumber } from './helpers/tag-number.helpers';\n\n@Component({\n selector: 'bx-tag',\n imports: [Icon, TooltipDirective, TruncateDirective, BxSurfaceDirective],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--bx-tag-role-text]': 'palette().text',\n '[style.--bx-tag-role-fill]': 'palette().fill',\n '[style.--bx-tag-role-on-fill]': 'palette().onFill',\n '[style.--bx-tag-role-tonal]': 'palette().tonal',\n '[style.--bx-tag-role-border]': 'palette().border'\n }\n})\nexport class Tag {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly textOverflow = viewChild(TruncateDirective);\n protected readonly resolvedText = computed(() => resolveText(this.text(), this.i18n));\n protected readonly resolvedTooltip = computed(() => {\n const tooltip = this.tooltip() ?? this.config().tooltip;\n\n return tooltip !== undefined\n ? resolveText(tooltip, this.i18n)\n : truncatedText(this.resolvedText(), this.textOverflow()?.truncated() ?? false, this.tooltipOnTruncate() ?? this.config().tooltipOnTruncate ?? true);\n });\n\n protected readonly resolvedAriaLabel = computed(() => resolveText(this.ariaLabel(), this.i18n));\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.config().variant ?? 'tonal');\n protected readonly resolvedSize = computed(() => this.size() ?? this.config().size ?? 'medium');\n protected readonly resolvedLeadingIcon = computed(() => this.leadingIcon() ?? this.config().leadingIcon);\n protected readonly resolvedTrailingIcon = computed(() => this.trailingIcon() ?? this.config().trailingIcon);\n protected readonly resolvedIconSize = computed(() => this.iconSize() ?? this.config().iconSize ?? '16');\n protected readonly resolvedLeadingNumber = computed(() => {\n this.i18n?.version?.();\n\n return formatTagNumber(this.leadingNumber() === undefined ? this.config().leadingNumber : this.leadingNumber(), this.locale());\n });\n\n protected readonly resolvedTrailingNumber = computed(() => {\n this.i18n?.version?.();\n\n return formatTagNumber(this.trailingNumber() === undefined ? this.config().trailingNumber : this.trailingNumber(), this.locale());\n });\n\n protected readonly palette = computed(() => TAG_PALETTES[this.color() ?? this.config().color ?? 'accent']);\n protected readonly isNumberOnly = computed(\n () =>\n !this.resolvedText() && !this.resolvedLeadingIcon() && !this.resolvedTrailingIcon() && !!this.resolvedLeadingNumber() !== !!this.resolvedTrailingNumber()\n );\n\n public readonly text = input<ResolvableText | undefined>(undefined);\n public readonly config = input<ITagConfig>({});\n public readonly color = input<TagColor | undefined>(undefined);\n public readonly variant = input<TagVariant | undefined>(undefined);\n public readonly size = input<TagSize | undefined>(undefined);\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly leadingIcon = input<IconName | undefined>(undefined);\n public readonly trailingIcon = input<IconName | undefined>(undefined);\n public readonly iconSize = input<IconSize | undefined>(undefined);\n public readonly leadingNumber = input<number | string | null | undefined>(undefined);\n public readonly trailingNumber = input<number | string | null | undefined>(undefined);\n public readonly locale = input<string | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n /** Disable automatic clipped-label tooltips without disabling ellipsis or an explicit tooltip. Defaults to the config value, then true. */\n public readonly tooltipOnTruncate = input<boolean | undefined>(undefined);\n public readonly tooltipPlacement = input<BxPlacement>('top');\n public readonly ariaLabel = input<ResolvableText | undefined>(undefined);\n public readonly focusable = input(true);\n}\n","<span class=\"bx-tag\" bxSurface [bxSurfaceInteractive]=\"false\"\n [class.is-filled]=\"resolvedVariant() === 'filled'\" [class.is-outlined]=\"resolvedVariant() === 'outlined'\"\n [class.is-small]=\"resolvedSize() === 'small'\" [class.is-disabled]=\"disabled()\" [class.is-number-only]=\"isNumberOnly()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\" [attr.role]=\"resolvedAriaLabel() ? 'group' : null\" [attr.aria-label]=\"resolvedAriaLabel() || null\"\n [attr.tabindex]=\"resolvedTooltip() && focusable() ? 0 : null\" [bxTooltip]=\"resolvedTooltip()\" [placement]=\"tooltipPlacement()\" bxTooltipTouch=\"longpress\">\n @if (resolvedLeadingIcon(); as icon) { <bx-icon [name]=\"icon\" [size]=\"resolvedIconSize()\" /> }\n @if (resolvedLeadingNumber()) { <span class=\"bx-tag-number\">{{ resolvedLeadingNumber() }}</span> }\n @if (resolvedText()) { <span class=\"bx-tag-text\" bxTruncate>{{ resolvedText() }}</span> }\n @if (resolvedTrailingNumber()) { <span class=\"bx-tag-number\">{{ resolvedTrailingNumber() }}</span> }\n @if (resolvedTrailingIcon(); as icon) { <bx-icon [name]=\"icon\" [size]=\"resolvedIconSize()\" /> }\n</span>\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/directives/overlay-context.token.ts","../../../projects/blocks/primitives/directives/context-menu.directive.ts","../../../projects/blocks/primitives/directives/tooltip.directive.ts","../../../projects/blocks/primitives/directives/truncate.directive.ts","../../../projects/blocks/primitives/helpers/truncation.helpers.ts","../../../projects/blocks/primitives/pipes/truncated-text.pipe.ts","../../../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/dropdown.directive.ts","../../../projects/blocks/primitives/directives/overlay-context.directive.ts","../../../projects/blocks/primitives/components/loading-spinner/loading-spinner.ts","../../../projects/blocks/primitives/components/loading-spinner/loading-spinner.html","../../../projects/blocks/primitives/components/loading-indicator/loading-indicator.ts","../../../projects/blocks/primitives/components/loading-indicator/loading-indicator.html","../../../projects/blocks/primitives/components/progress-bar/progress-bar.ts","../../../projects/blocks/primitives/components/progress-bar/progress-bar.html","../../../projects/blocks/primitives/components/tag/constants/tag.constants.ts","../../../projects/blocks/primitives/components/tag/helpers/tag-number.helpers.ts","../../../projects/blocks/primitives/components/tag/tag.ts","../../../projects/blocks/primitives/components/tag/tag.html","../../../projects/blocks/primitives/directives/menu-trigger/services/menu-cascade.service.ts","../../../projects/blocks/primitives/directives/menu-trigger/helpers/menu-keyboard.helpers.ts","../../../projects/blocks/primitives/directives/menu-trigger/menu-trigger.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 { 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 { ComponentRef, 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 public readonly bxTooltipHover = input(true);\n private overlayRef: OverlayRef | null = null;\n private tooltipComponent?: ComponentRef<Tooltip>;\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) {\n if (this.overlayRef) this.hide();\n return;\n }\n\n this.tooltipComponent?.setInput('text', text);\n\n if (this.hovered || this.focused) this.show();\n\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 this.tooltipComponent = component;\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' || !this.bxTooltipHover()) 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 //#region Helpers\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.tooltipComponent = undefined;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n }\n\n //#endregion\n}\n","import { afterEveryRender, afterNextRender, booleanAttribute, DestroyRef, Directive, ElementRef, inject, input, NgZone, output, signal } from '@angular/core';\n\n/** Single-line ellipsis styling and reactive measurement of the rendered text. */\n@Directive({\n selector: '[bxTruncate]',\n exportAs: 'bxTruncate',\n host: {\n '[style.display]': 'enabled() ? \"block\" : null',\n '[class.bx-truncate]': 'enabled()'\n }\n})\nexport class TruncateDirective {\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly destroyRef = inject(DestroyRef);\n private readonly zone = inject(NgZone);\n private readonly clipped = signal(false);\n private readonly content = signal('');\n /** Enables single-line ellipsis and measurement. Defaults to true. */\n public readonly enabled = input(true, { alias: 'bxTruncate', transform: booleanAttribute });\n /** Whether the rendered content currently overflows its visible box. False during server rendering. */\n public readonly truncated = this.clipped.asReadonly();\n /** Current rendered text, or a native input's value/placeholder, for custom feedback and projected content. */\n public readonly text = this.content.asReadonly();\n /** Emits only when the measured truncation state changes. */\n public readonly truncatedChange = output<boolean>();\n\n private rendered = false;\n private frame?: number;\n private resize?: ResizeObserver;\n private mutations?: MutationObserver;\n private listeners?: AbortController;\n private textContext?: CanvasRenderingContext2D | null;\n\n constructor() {\n afterNextRender(() => this.observeLayout());\n afterEveryRender(() => this.scheduleMeasure());\n this.destroyRef.onDestroy(() => {\n if (this.frame !== undefined) this.element.ownerDocument.defaultView?.cancelAnimationFrame(this.frame);\n\n this.resize?.disconnect();\n this.mutations?.disconnect();\n this.listeners?.abort();\n });\n }\n\n /** Rechecks after an application-owned layout or style update outside Angular rendering. */\n public refresh(): void {\n if (!this.rendered || this.destroyRef.destroyed) return;\n\n const text =\n this.element.tagName === 'INPUT'\n ? (this.element as HTMLInputElement).value || (this.element as HTMLInputElement).placeholder\n : (this.element.textContent ?? '');\n const clipped = this.enabled() && this.element.getClientRects().length > 0 && this.measureOverflow(text);\n\n if (clipped === this.clipped() && text === this.content()) return;\n\n this.zone.run(() => {\n this.content.set(text);\n\n if (clipped !== this.clipped()) {\n this.clipped.set(clipped);\n this.truncatedChange.emit(clipped);\n }\n });\n }\n\n //#region Helpers\n\n private measureOverflow(text: string): boolean {\n if (this.element.tagName !== 'INPUT') {\n return this.element.scrollWidth > this.element.clientWidth || this.element.scrollHeight > this.element.clientHeight;\n }\n\n if (!text) return false;\n\n // Native input values are not DOM text nodes and scrollWidth is inconsistent across engines.\n const style = this.element.ownerDocument.defaultView?.getComputedStyle(this.element);\n this.textContext ??= this.element.ownerDocument.createElement('canvas').getContext('2d');\n\n if (!style || !this.textContext) return this.element.scrollWidth > this.element.clientWidth;\n\n this.textContext.font = style.font || `${style.fontWeight} ${style.fontSize} ${style.fontFamily}`;\n const letterSpacing = parseFloat(style.letterSpacing) || 0;\n const wordSpacing = parseFloat(style.wordSpacing) || 0;\n const width = this.textContext.measureText(text).width + letterSpacing * Math.max(0, [...text].length - 1) + wordSpacing * (text.match(/\\s/g)?.length ?? 0);\n const available = this.element.clientWidth - (parseFloat(style.paddingInlineStart) || 0) - (parseFloat(style.paddingInlineEnd) || 0);\n\n return width > available + 0.5;\n }\n\n private observeLayout(): void {\n const view = this.element.ownerDocument.defaultView;\n\n if (!view) return;\n\n this.rendered = true;\n this.zone.runOutsideAngular(() => {\n if (typeof ResizeObserver !== 'undefined') {\n this.resize = new ResizeObserver(() => this.scheduleMeasure());\n this.resize.observe(this.element);\n }\n\n if (typeof MutationObserver !== 'undefined') {\n this.mutations = new MutationObserver(() => this.scheduleMeasure());\n this.mutations.observe(this.element, { childList: true, characterData: true, subtree: true });\n }\n\n const listeners = new AbortController();\n this.listeners = listeners;\n const options = { passive: true, signal: listeners.signal };\n view.addEventListener('resize', () => this.scheduleMeasure(), options);\n view.visualViewport?.addEventListener('resize', () => this.scheduleMeasure(), options);\n const fonts = this.element.ownerDocument.fonts;\n fonts?.addEventListener('loadingdone', () => this.scheduleMeasure(), options);\n void fonts?.ready.then(() => this.scheduleMeasure());\n this.scheduleMeasure();\n });\n }\n\n private scheduleMeasure(): void {\n const view = this.element.ownerDocument.defaultView;\n\n if (!this.rendered || this.destroyRef.destroyed || !view || this.frame !== undefined) return;\n\n this.zone.runOutsideAngular(() => {\n this.frame = view.requestAnimationFrame(() => {\n this.frame = undefined;\n this.refresh();\n });\n });\n }\n\n //#endregion\n}\n","import { ResolvableText } from '@filip.mazev/blocks/core';\n\n/** Returns content only while clipped and enabled. T preserves the caller's plain string or translation-key contract. */\nexport function truncatedText<T extends ResolvableText>(text: T | null | undefined, truncated: boolean, enabled = true): T | '' {\n return enabled && truncated ? (text ?? '') : '';\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ResolvableText } from '@filip.mazev/blocks/core';\nimport { truncatedText } from '../helpers/truncation.helpers';\n\n/** Selects text for conditional feedback using the shared directive's reactive measurement. */\n@Pipe({ name: 'bxTruncatedText' })\nexport class TruncatedTextPipe implements PipeTransform {\n public transform(text: ResolvableText | null | undefined, truncated: boolean, enabled = true): ResolvableText {\n return truncatedText(text, truncated, enabled);\n }\n}\n","import { BX_I18N, BxA11yService, BxShortcutService, isTextWithKey, ResolvableShortcut, ResolvableText } from '@filip.mazev/blocks/core';\nimport { booleanAttribute, Component, computed, inject, input, output, ChangeDetectionStrategy } from '@angular/core';\nimport { Icon, IconName } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { TooltipDirective } from '../../directives/tooltip.directive';\nimport { TruncateDirective } from '../../directives/truncate.directive';\nimport { TruncatedTextPipe } from '../../pipes/truncated-text.pipe';\n\n@Component({\n selector: 'bx-menu-item',\n imports: [Icon, BxSurfaceDirective, TooltipDirective, TruncateDirective, TruncatedTextPipe],\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 /** Whether clipped labels receive an automatic tooltip. Defaults to true; ellipsis remains when false. */\n public readonly tooltipOnTruncate = input(true, { transform: booleanAttribute });\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 [bxTooltip]=\"(resolvedLabel() ?? menuText.text().trim()) | bxTruncatedText: menuText.truncated(): tooltipOnTruncate()\" bxTooltipTouch=\"longpress\">\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\" [bxTruncate]=\"!wrapLabel()\" #menuText=\"bxTruncate\" [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 { 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","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\n\n@Component({\n selector: 'bx-loading-spinner',\n templateUrl: './loading-spinner.html',\n styleUrl: './loading-spinner.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--bx-spinner-size]': 'size() + \"px\"',\n '[attr.role]': 'decorative() ? null : \"status\"',\n '[attr.aria-label]': 'decorative() ? null : resolvedLabel()',\n '[attr.aria-hidden]': 'decorative() ? \"true\" : null',\n '[class.is-reduced-motion]': 'a11y.isReducedMotion()'\n }\n})\nexport class LoadingSpinner {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly a11y = inject(BxA11yService);\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n\n public readonly size = input(20);\n public readonly decorative = input(false);\n public readonly label = input<ResolvableText>('Loading');\n}\n","<span class=\"bx-spinner-ring\"></span>\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { LoadingSpinner } from '../loading-spinner/loading-spinner';\n\n@Component({\n selector: 'bx-loading-indicator',\n imports: [LoadingSpinner],\n templateUrl: './loading-indicator.html',\n styleUrl: './loading-indicator.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { role: 'status', 'aria-live': 'polite', 'aria-busy': 'true' }\n})\nexport class LoadingIndicator {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n\n public readonly label = input<ResolvableText>('Loading');\n public readonly size = input(20);\n}\n","<bx-loading-spinner [size]=\"size()\" [decorative]=\"true\" />\n<span>{{ resolvedLabel() }}</span>\n<ng-content />\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, BxA11yService, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { ProgressBarMode } from './types/progress-bar.types';\n\n@Component({\n selector: 'bx-progress-bar',\n templateUrl: './progress-bar.html',\n styleUrl: './progress-bar.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n role: 'progressbar',\n 'aria-valuemin': '0',\n 'aria-valuemax': '100',\n '[attr.aria-valuenow]': 'indeterminate() ? null : progress()',\n '[attr.aria-label]': 'resolvedLabel()',\n '[class.is-indeterminate]': 'indeterminate()',\n '[class.is-reduced-motion]': 'a11y.isReducedMotion()',\n '[class.is-query]': 'mode() === \"query\"'\n }\n})\nexport class ProgressBar {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly a11y = inject(BxA11yService);\n protected readonly resolvedLabel = computed(() => resolveText(this.label(), this.i18n));\n protected readonly progress = computed(() => (Number.isFinite(this.value()) ? Math.min(100, Math.max(0, this.value())) : 0));\n protected readonly buffer = computed(() =>\n Math.max(this.progress(), Number.isFinite(this.bufferValue()) ? Math.min(100, Math.max(0, this.bufferValue())) : 0)\n );\n\n protected readonly indeterminate = computed(() => this.mode() === 'indeterminate' || this.mode() === 'query');\n\n public readonly mode = input<ProgressBarMode>('determinate');\n public readonly value = input(0);\n public readonly bufferValue = input(100);\n public readonly label = input<ResolvableText>('Progress');\n}\n","@if (mode() === 'buffer') {\n<span class=\"bx-progress-buffer\" [style.width.%]=\"buffer()\"></span>\n}\n<span class=\"bx-progress-value\" [style.width.%]=\"indeterminate() ? 40 : progress()\"></span>\n","import { TagColor } from '../types/tag.types';\nimport { ITagPalette } from '../interfaces/itag-palette.interface';\n\nexport const TAG_PALETTES: Readonly<Record<TagColor, ITagPalette>> = {\n primary: {\n text: 'var(--bx-text-brand)',\n fill: 'var(--bx-primary)',\n onFill: 'var(--bx-on-primary)',\n tonal: 'var(--bx-primary-subtle)',\n border: 'var(--bx-border-brand)'\n },\n accent: {\n text: 'var(--bx-text-accent)',\n fill: 'var(--bx-accent)',\n onFill: 'var(--bx-on-accent)',\n tonal: 'var(--bx-accent-subtle)',\n border: 'var(--bx-border-accent)'\n },\n neutral: {\n text: 'var(--bx-text-primary)',\n fill: 'var(--bx-bg-element-active)',\n onFill: 'var(--bx-text-primary)',\n tonal: 'var(--bx-bg-element)',\n border: 'var(--bx-border-strong)'\n },\n success: {\n text: 'var(--bx-text-success)',\n fill: 'var(--bx-bg-success)',\n onFill: 'var(--bx-text-success)',\n tonal: 'var(--bx-bg-success-subtle)',\n border: 'var(--bx-border-success)'\n },\n danger: {\n text: 'var(--bx-text-danger)',\n fill: 'var(--bx-bg-danger)',\n onFill: 'var(--bx-text-danger)',\n tonal: 'var(--bx-bg-danger-subtle)',\n border: 'var(--bx-border-danger)'\n },\n info: {\n text: 'var(--bx-text-info)',\n fill: 'var(--bx-bg-info)',\n onFill: 'var(--bx-text-info)',\n tonal: 'var(--bx-bg-info-subtle)',\n border: 'var(--bx-border-info)'\n },\n warn: {\n text: 'var(--bx-text-warn)',\n fill: 'var(--bx-bg-warn)',\n onFill: 'var(--bx-text-warn)',\n tonal: 'var(--bx-bg-warn-subtle)',\n border: 'var(--bx-border-warn)'\n }\n};\n","/** Format numeric counts without changing consumer-supplied prefixes or abbreviations. */\nexport function formatTagNumber(value: number | string | null | undefined, locale?: string): string {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') return value;\n if (!Number.isFinite(value)) return '';\n\n try {\n return new Intl.NumberFormat(locale).format(value);\n } catch {\n return String(value);\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, computed, inject, input, viewChild } from '@angular/core';\nimport { BX_I18N, BxPlacement, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { Icon, IconName, IconSize } from '@filip.mazev/blocks/icons';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { TooltipDirective } from '../../directives/tooltip.directive';\nimport { TruncateDirective } from '../../directives/truncate.directive';\nimport { truncatedText } from '../../helpers/truncation.helpers';\nimport { ITagConfig } from './interfaces/itag-config.interface';\nimport { TagColor, TagSize, TagVariant } from './types/tag.types';\nimport { TAG_PALETTES } from './constants/tag.constants';\nimport { formatTagNumber } from './helpers/tag-number.helpers';\n\n@Component({\n selector: 'bx-tag',\n imports: [Icon, TooltipDirective, TruncateDirective, BxSurfaceDirective],\n templateUrl: './tag.html',\n styleUrl: './tag.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--bx-tag-role-text]': 'palette().text',\n '[style.--bx-tag-role-fill]': 'palette().fill',\n '[style.--bx-tag-role-on-fill]': 'palette().onFill',\n '[style.--bx-tag-role-tonal]': 'palette().tonal',\n '[style.--bx-tag-role-border]': 'palette().border'\n }\n})\nexport class Tag {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly textOverflow = viewChild(TruncateDirective);\n protected readonly resolvedText = computed(() => resolveText(this.text(), this.i18n));\n protected readonly resolvedTooltip = computed(() => {\n const tooltip = this.tooltip() ?? this.config().tooltip;\n\n return tooltip !== undefined\n ? resolveText(tooltip, this.i18n)\n : truncatedText(this.resolvedText(), this.textOverflow()?.truncated() ?? false, this.tooltipOnTruncate() ?? this.config().tooltipOnTruncate ?? true);\n });\n\n protected readonly resolvedAriaLabel = computed(() => resolveText(this.ariaLabel(), this.i18n));\n protected readonly resolvedVariant = computed(() => this.variant() ?? this.config().variant ?? 'tonal');\n protected readonly resolvedSize = computed(() => this.size() ?? this.config().size ?? 'medium');\n protected readonly resolvedLeadingIcon = computed(() => this.leadingIcon() ?? this.config().leadingIcon);\n protected readonly resolvedTrailingIcon = computed(() => this.trailingIcon() ?? this.config().trailingIcon);\n protected readonly resolvedIconSize = computed(() => this.iconSize() ?? this.config().iconSize ?? '16');\n protected readonly resolvedLeadingNumber = computed(() => {\n this.i18n?.version?.();\n\n return formatTagNumber(this.leadingNumber() === undefined ? this.config().leadingNumber : this.leadingNumber(), this.locale());\n });\n\n protected readonly resolvedTrailingNumber = computed(() => {\n this.i18n?.version?.();\n\n return formatTagNumber(this.trailingNumber() === undefined ? this.config().trailingNumber : this.trailingNumber(), this.locale());\n });\n\n protected readonly palette = computed(() => TAG_PALETTES[this.color() ?? this.config().color ?? 'accent']);\n protected readonly isNumberOnly = computed(\n () =>\n !this.resolvedText() && !this.resolvedLeadingIcon() && !this.resolvedTrailingIcon() && !!this.resolvedLeadingNumber() !== !!this.resolvedTrailingNumber()\n );\n\n /** Optional opaque surface; true removes translucency and blur. False or absent follows application appearance. */\n public readonly opaque = input<boolean | undefined>(undefined);\n public readonly text = input<ResolvableText | undefined>(undefined);\n public readonly config = input<ITagConfig>({});\n public readonly color = input<TagColor | undefined>(undefined);\n public readonly variant = input<TagVariant | undefined>(undefined);\n public readonly size = input<TagSize | undefined>(undefined);\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly leadingIcon = input<IconName | undefined>(undefined);\n public readonly trailingIcon = input<IconName | undefined>(undefined);\n public readonly iconSize = input<IconSize | undefined>(undefined);\n public readonly leadingNumber = input<number | string | null | undefined>(undefined);\n public readonly trailingNumber = input<number | string | null | undefined>(undefined);\n public readonly locale = input<string | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n /** Disable automatic clipped-label tooltips without disabling ellipsis or an explicit tooltip. Defaults to the config value, then true. */\n public readonly tooltipOnTruncate = input<boolean | undefined>(undefined);\n public readonly tooltipPlacement = input<BxPlacement>('top');\n public readonly ariaLabel = input<ResolvableText | undefined>(undefined);\n public readonly focusable = input(true);\n}\n","<span class=\"bx-tag\" bxSurface [bxSurfaceInteractive]=\"false\" [bxReducedTransparency]=\"(opaque() ?? config().opaque) ? true : undefined\"\n [class.is-filled]=\"resolvedVariant() === 'filled'\" [class.is-outlined]=\"resolvedVariant() === 'outlined'\"\n [class.is-small]=\"resolvedSize() === 'small'\" [class.is-disabled]=\"disabled()\" [class.is-number-only]=\"isNumberOnly()\"\n [attr.aria-disabled]=\"disabled() ? 'true' : null\" [attr.role]=\"resolvedAriaLabel() ? 'group' : null\" [attr.aria-label]=\"resolvedAriaLabel() || null\"\n [attr.tabindex]=\"resolvedTooltip() && focusable() ? 0 : null\" [bxTooltip]=\"resolvedTooltip()\" [placement]=\"tooltipPlacement()\" bxTooltipTouch=\"longpress\">\n @if (resolvedLeadingIcon(); as icon) { <bx-icon [name]=\"icon\" [size]=\"resolvedIconSize()\" /> }\n @if (resolvedLeadingNumber()) { <span class=\"bx-tag-number\">{{ resolvedLeadingNumber() }}</span> }\n @if (resolvedText()) { <span class=\"bx-tag-text\" bxTruncate>{{ resolvedText() }}</span> }\n @if (resolvedTrailingNumber()) { <span class=\"bx-tag-number\">{{ resolvedTrailingNumber() }}</span> }\n @if (resolvedTrailingIcon(); as icon) { <bx-icon [name]=\"icon\" [size]=\"resolvedIconSize()\" /> }\n</span>\n","import { Injectable } from '@angular/core';\nimport type { MenuTriggerDirective } from '../menu-trigger.directive';\n\n/** Coordinates a single open menu path, allowing arbitrary nesting without sibling overlays accumulating. */\n@Injectable({ providedIn: 'root' })\nexport class MenuCascadeService {\n private readonly entries = new Set<MenuTriggerDirective>();\n\n public activate(trigger: MenuTriggerDirective): void {\n const ancestors = new Set<MenuTriggerDirective>();\n let parent = trigger.menuParent();\n\n while (parent) {\n ancestors.add(parent);\n parent = parent.menuParent();\n }\n\n for (const entry of [...this.entries]) {\n if (!ancestors.has(entry) && entry !== trigger) entry.close();\n }\n\n this.entries.add(trigger);\n }\n\n public remove(trigger: MenuTriggerDirective): void {\n this.entries.delete(trigger);\n }\n\n public closeChildren(trigger: MenuTriggerDirective): void {\n for (const entry of [...this.entries]) {\n if (entry.menuParent() === trigger) entry.close();\n }\n }\n\n public contains(trigger: MenuTriggerDirective, target: Node): boolean {\n return trigger.contains(target) || [...this.entries].some((entry) => entry.menuParent() === trigger && this.contains(entry, target));\n }\n\n public hasOpenMenus(): boolean {\n return this.entries.size > 0;\n }\n\n public repositionChildren(trigger: MenuTriggerDirective): void {\n for (const entry of [...this.entries]) {\n if (entry.menuParent() === trigger) entry.reposition();\n }\n }\n\n public closeAll(restoreFocus = false): void {\n const root = [...this.entries].find((entry) => !entry.menuParent());\n root?.close(restoreFocus);\n }\n}\n","/** Move focus among visible, enabled items in one menu, including wrapped item components. */\nexport function navigateMenuKey(event: KeyboardEvent, menu: HTMLElement): boolean {\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return false;\n\n const items = Array.from(menu.querySelectorAll<HTMLElement>('[role=\"menuitem\"]')).filter(\n (item) => item.closest('[role=\"menu\"]') === menu && !item.matches(':disabled, [aria-disabled=\"true\"]') && item.getClientRects().length > 0\n );\n if (!items.length) return false;\n\n const current = items.indexOf(menu.ownerDocument.activeElement as HTMLElement);\n const index =\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 - 1 + items.length) % items.length;\n event.preventDefault();\n event.stopPropagation();\n items[index].focus();\n return true;\n}\n","import {\n DestroyRef,\n Directive,\n ElementRef,\n NgZone,\n HostListener,\n effect,\n inject,\n input,\n output,\n signal,\n untracked,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport { BxOverlayPositionService, inheritOverlayTheme, OverlayOriginTracker, trackOverlayOrigin } from '@filip.mazev/blocks/core';\nimport { Subscription } from 'rxjs';\nimport { BX_OVERLAY_CONTEXT } from '../overlay-context.token';\nimport { MenuCascadeService } from './services/menu-cascade.service';\nimport { navigateMenuKey } from './helpers/menu-keyboard.helpers';\n\n/** Hover, click, touch and keyboard trigger for nested, opaque bx-menu surfaces. */\n@Directive({\n selector: '[bxMenuTrigger]',\n exportAs: 'bxMenuTrigger',\n host: {\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'isOpen()',\n '[attr.aria-controls]': 'overlayId()'\n }\n})\nexport class MenuTriggerDirective {\n private readonly source = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly overlay = inject(Overlay);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n private readonly zone = inject(NgZone);\n private readonly positions = inject(BxOverlayPositionService);\n private readonly cascade = inject(MenuCascadeService);\n private readonly vcr = inject(ViewContainerRef);\n private readonly traps = inject(FocusTrapFactory);\n private readonly opened = signal(false);\n protected readonly overlayId = signal<string | null>(null);\n public readonly isOpen = this.opened.asReadonly();\n public readonly bxMenuTrigger = input.required<TemplateRef<unknown>>();\n /** The enclosing trigger, when this is a submenu. */\n /** Optional positioning origin when a disclosure button belongs to a wider row. Defaults to the trigger element. */\n public readonly menuOrigin = input<HTMLElement | undefined>(undefined);\n public readonly menuParent = input<MenuTriggerDirective | undefined>(undefined);\n /** Physical preferred side; viewport collision handling can flip the menu. Defaults to right. */\n public readonly menuSide = input<'left' | 'right'>('right');\n /** Allows hover opening. Click and keyboard access always remain available. Defaults to true. */\n public readonly menuHover = input(true);\n /** Accessible menu name, normally the trigger's resolved label. */\n public readonly menuLabel = input('');\n /** Keep a revealed search path open during pointer movement; Escape still dismisses it. */\n public readonly menuPinned = input(false);\n public readonly menuOpened = output();\n public readonly menuClosed = output();\n private overlayRef?: OverlayRef;\n private trap?: FocusTrap;\n private subscriptions = new Subscription();\n private disconnectTheme?: () => void;\n private hoverTimer?: number;\n private positionTracker?: OverlayOriginTracker;\n\n constructor() {\n inject(DestroyRef).onDestroy(() => this.close());\n effect(() => {\n const label = this.menuLabel();\n const opened = this.isOpen();\n untracked(() => {\n if (opened)\n this.overlayRef?.overlayElement\n .querySelector('[role=\"menu\"]')\n ?.setAttribute('aria-label', label || this.source.getAttribute('aria-label') || this.source.textContent?.trim() || '');\n });\n });\n }\n\n @HostListener('click', ['$event'])\n public toggle(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n if (this.isOpen()) this.close(true);\n else this.open(true);\n }\n\n public open(focus = false): void {\n this.cancelClose();\n if (this.isOpen()) {\n if (focus) this.focusFirst();\n return;\n }\n\n if (!this.source.ownerDocument.defaultView || this.source.matches(':disabled, [aria-disabled=\"true\"]')) return;\n\n this.cascade.activate(this);\n const overlay = this.overlay.create({\n positionStrategy: this.positions.getSubmenuStrategy(this.menuOrigin() ?? this.source, this.menuSide()),\n scrollStrategy: this.overlay.scrollStrategies.noop(),\n usePopover:\n !!this.overlayContext?.useTopLayer || !!this.source.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]'),\n // The configured edge is physical; content direction is inherited separately from the source.\n direction: 'ltr',\n hasBackdrop: false\n });\n this.overlayRef = overlay;\n this.overlayId.set(overlay.overlayElement.id);\n this.opened.set(true);\n this.disconnectTheme = inheritOverlayTheme(this.source, overlay.overlayElement);\n this.subscriptions = new Subscription();\n const view = overlay.attach(new TemplatePortal(this.bxMenuTrigger(), this.vcr));\n view.detectChanges();\n const menu = overlay.overlayElement.querySelector<HTMLElement>('[role=\"menu\"]');\n\n if (menu) menu.setAttribute('aria-label', this.menuLabel() || this.source.getAttribute('aria-label') || this.source.textContent?.trim() || '');\n\n this.trap = this.traps.create(overlay.overlayElement);\n const tracker = this.zone.runOutsideAngular(() =>\n trackOverlayOrigin(overlay, this.menuOrigin() ?? this.source, {\n onPosition: () => this.cascade.repositionChildren(this),\n onOriginHidden: () => this.zone.run(() => this.close())\n })\n );\n this.positionTracker = tracker;\n this.subscriptions.add(() => {\n tracker();\n this.positionTracker = undefined;\n });\n if (this.overlayRef !== overlay) return;\n\n this.subscriptions.add(overlay.keydownEvents().subscribe((event) => this.onMenuKey(event)));\n this.subscriptions.add(\n overlay.outsidePointerEvents().subscribe((event) => {\n if (event.target instanceof Node && !this.cascade.contains(this, event.target)) this.close();\n })\n );\n this.subscriptions.add(overlay.detachments().subscribe(() => this.close()));\n const enter = () => this.cancelClose();\n const leave = () => this.scheduleClose();\n overlay.overlayElement.addEventListener('pointerenter', enter);\n overlay.overlayElement.addEventListener('pointerleave', leave);\n this.subscriptions.add(() => {\n overlay.overlayElement.removeEventListener('pointerenter', enter);\n overlay.overlayElement.removeEventListener('pointerleave', leave);\n });\n overlay.updatePosition();\n if (focus) this.focusFirst();\n this.menuOpened.emit();\n }\n\n public close(restoreFocus = false): void {\n this.cancelClose();\n if (!this.overlayRef) return;\n\n this.cascade.closeChildren(this);\n const overlay = this.overlayRef;\n this.overlayRef = undefined;\n if (restoreFocus || overlay.overlayElement.contains(this.source.ownerDocument.activeElement)) this.source.focus({ preventScroll: true });\n this.subscriptions.unsubscribe();\n this.trap?.destroy();\n this.trap = undefined;\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n overlay.dispose();\n this.cascade.remove(this);\n this.overlayId.set(null);\n this.opened.set(false);\n this.menuClosed.emit();\n }\n\n public reposition(): void {\n this.positionTracker?.reposition();\n }\n\n public contains(target: Node): boolean {\n return this.source.contains(target) || !!this.overlayRef?.overlayElement.contains(target);\n }\n\n @HostListener('pointerleave')\n public scheduleClose(): void {\n if (this.menuPinned()) return;\n this.cancelClose();\n this.hoverTimer = this.source.ownerDocument.defaultView?.setTimeout(() => {\n const focused = this.source.ownerDocument.activeElement;\n\n if (!focused || !this.cascade.contains(this, focused)) this.close();\n }, 240);\n }\n\n @HostListener('pointerenter', ['$event'])\n protected onPointerEnter(event: PointerEvent): void {\n if (this.menuHover() && event.pointerType !== 'touch') this.open();\n }\n\n @HostListener('keydown', ['$event'])\n protected onKey(event: KeyboardEvent): void {\n const forward = this.menuSide() === 'right' ? 'ArrowRight' : 'ArrowLeft';\n\n if (![forward, 'ArrowDown', 'ArrowUp'].includes(event.key)) return;\n\n event.preventDefault();\n event.stopPropagation();\n this.open(true);\n }\n\n //#region Helpers\n private cancelClose(): void {\n this.source.ownerDocument.defaultView?.clearTimeout(this.hoverTimer);\n this.hoverTimer = undefined;\n this.menuParent()?.cancelClose();\n }\n\n private focusFirst(): void {\n this.overlayRef?.overlayElement.querySelector<HTMLElement>('[role=\"menuitem\"]:not(:disabled):not([aria-disabled=\"true\"])')?.focus();\n }\n\n private onMenuKey(event: KeyboardEvent): void {\n if (event.defaultPrevented) return;\n\n const backward = this.menuSide() === 'right' ? 'ArrowLeft' : 'ArrowRight';\n\n if (event.key === 'Escape' || event.key === backward) {\n event.preventDefault();\n event.stopPropagation();\n this.close(true);\n return;\n }\n\n const menu = (event.target as HTMLElement)?.closest<HTMLElement>('[role=\"menu\"]');\n\n if (menu) navigateMenuKey(event, menu);\n }\n //#endregion\n}\n"],"mappings":"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"}