@filip.mazev/blocks 1.4.11 → 1.4.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"filip.mazev-blocks-forms.mjs","names":[],"sources":["../../../projects/blocks/forms/components/button/button.ts","../../../projects/blocks/forms/components/button/button.html","../../../projects/blocks/forms/directives/bx-error.directive.ts","../../../projects/blocks/forms/components/form-field/form-field.ts","../../../projects/blocks/forms/components/form-field/form-field.html","../../../projects/blocks/forms/components/checkbox/checkbox.ts","../../../projects/blocks/forms/components/checkbox/checkbox.html","../../../projects/blocks/forms/components/input-field/input-field.ts","../../../projects/blocks/forms/components/input-field/input-field.html","../../../projects/blocks/forms/components/radio-button/radio-button.ts","../../../projects/blocks/forms/components/radio-button/radio-button.html","../../../projects/blocks/forms/components/search-input/search-input.ts","../../../projects/blocks/forms/components/search-input/search-input.html","../../../projects/blocks/forms/components/select/select.ts","../../../projects/blocks/forms/components/select/select.html","../../../projects/blocks/forms/components/slide-toggle/slide-toggle.ts","../../../projects/blocks/forms/components/slide-toggle/slide-toggle.html","../../../projects/blocks/forms/directives/slider.directive.ts"],"sourcesContent":["import { injectComponentSurface } from '@filip.mazev/blocks/effects';\nimport { Component, input, booleanAttribute, HostListener, inject, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BxA11yService } from '@filip.mazev/blocks/core';\nimport { ButtonColor, ButtonVariant } from '../../types/form.types';\n\n@Component({\n selector: 'bx-button, button[bx-button], a[bx-button]',\n standalone: true,\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '\"bx-btn bx-btn-\" + variant() + \" bx-btn-color-\" + color()',\n '[class.bx-btn-is-outlined]': 'outlined()',\n '[class.bx-btn-is-elevated]': 'elevated()',\n '[class.bx-btn-animated]': 'isAnimated()',\n '[class.bx-btn-non-interactive]': '!interactive()',\n '[attr.disabled]': 'disabled() ? true : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? \"-1\" : null'\n }\n})\nexport class Button {\n private readonly appearance = injectComponentSurface(() => ({\n interactive: this.variant() === 'text' || !this.interactive() || this.disabled() ? false : undefined,\n emission:\n this.variant() !== 'text' && this.interactive() && !this.disabled()\n ? this.color() === 'primary' || this.color() === 'grayscale'\n ? 'var(--bx-primary)'\n : this.color() === 'accent'\n ? 'var(--bx-accent)'\n : `var(--bx-text-${this.color()})`\n : undefined\n }));\n\n private readonly a11y = inject(BxA11yService);\n\n public readonly isAnimated = computed(() => {\n return !this.a11y.isReducedMotion();\n });\n\n public readonly variant = input<ButtonVariant>('text');\n public readonly color = input<ButtonColor>('primary');\n public readonly outlined = input<boolean>(false);\n public readonly elevated = input<boolean>(false);\n public readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n public readonly interactive = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n @HostListener('click', ['$event'])\n protected onClick(event: Event) {\n if (this.disabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","<span class=\"bx-btn-content-wrapper\">\n <ng-content></ng-content>\n</span>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bx-error',\n standalone: true,\n template: '<ng-content />'\n})\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- The component provides the projection selector and has no behavior.\nexport class BxError {}\n","import { afterRenderEffect, Component, computed, contentChild, ElementRef, inject, input, viewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, isTextWithKey, ResolvableText, BxA11yService } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { BxGlassLightingService } from '@filip.mazev/blocks/effects';\nimport { BxError } from '../../directives/bx-error.directive';\nimport { TooltipDirective } from '@filip.mazev/blocks/primitives';\n\n@Component({\n selector: 'bx-form-field',\n standalone: true,\n imports: [CommonModule, Icon, TooltipDirective],\n templateUrl: './form-field.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './form-field.scss'\n})\nexport class FormField {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly lighting = inject(BxGlassLightingService);\n protected readonly projectedError = contentChild(BxError, { read: ElementRef<HTMLElement> });\n private readonly errorElement = viewChild<ElementRef<HTMLElement>>('errorText');\n\n protected readonly resolvedLabel = computed(() => this.resolveText(this.label()));\n protected readonly resolvedError = computed(() => this.resolveText(this.error()));\n public readonly inline = input(false);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly error = input<ResolvableText | undefined>(undefined);\n public readonly required = input<boolean>(false);\n public readonly loading = input<boolean>(false);\n public readonly forId = input<string>('');\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n constructor() {\n afterRenderEffect((onCleanup) => {\n const projected = this.projectedError()?.nativeElement;\n const error = this.resolvedError() ? this.errorElement()?.nativeElement : projected;\n if (!error) return;\n const parent = this.element.parentElement;\n const root = this.element.closest<HTMLElement>('form, fieldset') ?? (parent?.tagName.startsWith('BX-') ? parent.parentElement : parent);\n if (!root) return;\n const control = this.element.querySelector<HTMLElement>('.bx-field-control > [data-bx-surface]');\n const light = this.lighting.register(root, {\n // Anchor the lower-edge glow to the control, independently of floating\n // labels, error icons and the length of the validation message.\n element: control ?? error,\n edge: control ? 'bottom' : undefined,\n offsetX: 0.5,\n offsetY: control ? 1 : 0,\n z: 32,\n color: 'var(--bx-text-danger)',\n intensity: 0.9,\n radius: 240\n });\n onCleanup(() => light.destroy());\n });\n }\n\n private resolveText(textObj: ResolvableText | undefined): string | undefined {\n this.i18n?.version?.();\n if (!textObj) return undefined;\n if (isTextWithKey(textObj)) {\n return this.i18n?.translate(textObj.key) ?? textObj.key;\n }\n return textObj;\n }\n}\n","<div class=\"bx-field-wrapper\" [class.is-invalid]=\"!!resolvedError() || !!projectedError()\" [attr.data-bx-field-invalid]=\"!!resolvedError() || !!projectedError()\">\n\n @if (resolvedLabel() || (tooltip() && !inline())) {\n <div class=\"bx-field-header\">\n <label class=\"bx-field-label\" [attr.for]=\"forId()\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-field-required\">*</span> }\n </label>\n\n @if (tooltip()) {\n <button type=\"button\" class=\"bx-field-tooltip-trigger\" [bxTooltip]=\"tooltip()!\" bxTooltipTouch=\"tap\" placement=\"top\" aria-label=\"More information\">\n <bx-icon name=\"help-circle\" size=\"16\"></bx-icon>\n </button>\n }\n\n @if (loading()) {\n <bx-icon name=\"loader\" class=\"bx-spin\" size=\"16\"></bx-icon>\n }\n </div>\n }\n\n <div class=\"bx-field-control\" [class.bx-field-control-inline]=\"inline()\">\n <ng-content></ng-content>\n @if (inline() && tooltip()) {\n <button type=\"button\" class=\"bx-field-tooltip-trigger\" [bxTooltip]=\"tooltip()!\" bxTooltipTouch=\"tap\" placement=\"top\" [attr.aria-label]=\"'More information'\">\n <bx-icon name=\"help-circle\" size=\"16\"></bx-icon>\n </button>\n }\n </div>\n\n <div class=\"bx-field-error-projected\">\n <ng-content select=\"bx-error\"></ng-content>\n </div>\n\n @if (resolvedError()) {\n <div class=\"bx-field-error\" [class.bx-animated]=\"isAnimated()\">\n <bx-icon name=\"alert-circle\" size=\"16\"></bx-icon>\n <span #errorText class=\"bx-field-error-text\">{{ resolvedError() }}</span>\n </div>\n }\n</div>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-checkbox',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './checkbox.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './checkbox.scss'\n})\nexport class Checkbox extends BxBaseControl<boolean> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-checkbox-${uuidv4()}`);\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected showTooltip = false;\n\n protected onToggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.checked);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\" [checked]=\"internalValue() === true\"\n (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n\n <div class=\"bx-checkbox-box\" bxSurface [class.is-checked]=\"internalValue() === true\" [class.is-invalid]=\"!!errorMessage\">\n @if (internalValue() === true) {\n <bx-icon name=\"check\" size=\"16\"></bx-icon>\n }\n </div>\n\n @if (resolvedLabel()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n </label>\n</bx-form-field>","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, DestroyRef, inject, input, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\nimport { InputFieldTypes } from '../../types/form.types';\nimport { Icon } from '@filip.mazev/blocks/icons';\n\n@Component({\n selector: 'bx-input-field',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './input-field.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './input-field.scss'\n})\nexport class InputField extends BxBaseControl<string | number | null> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly inputId = computed(() => `bx-input-${uuidv4()}`);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isSpinDownDisabled = computed(() => {\n const min = this.min();\n return this.isDisabled() || (min !== undefined && (Number(this.internalValue()) || 0) <= min);\n });\n\n protected readonly isSpinUpDisabled = computed(() => {\n const max = this.max();\n return this.isDisabled() || (max !== undefined && (Number(this.internalValue()) || 0) >= max);\n });\n\n protected readonly isFloating = computed(() => {\n const val = this.internalValue();\n const hasValue = val !== null && val !== undefined && val !== '';\n const isDateType = ['date', 'time', 'datetime-local'].includes(this.type());\n\n return this.isFocused() || hasValue || isDateType;\n });\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return '';\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n public readonly type = input<InputFieldTypes>('text');\n public readonly min = input<number | undefined>(undefined);\n public readonly max = input<number | undefined>(undefined);\n public readonly step = input<number>(1);\n private spinTimeout?: ReturnType<typeof setTimeout>;\n private spinInterval?: ReturnType<typeof setInterval>;\n\n constructor() {\n super();\n inject(DestroyRef).onDestroy(() => this.stopSpin());\n }\n\n public startSpin(direction: number, event: MouseEvent | TouchEvent): void {\n event.preventDefault();\n if (this.isDisabled()) return;\n\n this.applyStep(direction);\n\n this.spinTimeout = setTimeout(() => {\n this.spinInterval = setInterval(() => {\n this.applyStep(direction);\n }, 50);\n }, 400);\n }\n\n public stopSpin(): void {\n clearTimeout(this.spinTimeout);\n clearInterval(this.spinInterval);\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n const value = this.type() === 'number' ? (target.value === '' ? null : Number(target.value)) : target.value;\n\n this.updateValue(value);\n }\n\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n private applyStep(direction: number): void {\n const current = Number(this.internalValue()) || 0;\n let next = current + direction * this.step();\n const min = this.min();\n const max = this.max();\n\n if (min !== undefined && next < min) next = min;\n if (max !== undefined && next > max) next = max;\n\n this.updateValue(next);\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <div class=\"bx-input-wrapper\" bxSurface [class.is-invalid]=\"!!errorMessage\" [class.is-disabled]=\"isDisabled()\"\n [class.has-spinners]=\"type() === 'number'\" [class.is-floating]=\"isFloating()\">\n\n <div class=\"bx-input-container\">\n @if (label()) {\n <label class=\"bx-floating-label\" [attr.for]=\"inputId()\">\n {{ resolvedLabel() }}\n @if (isFieldRequired()) { <span class=\"bx-field-required\">*</span> }\n </label>\n }\n\n <input class=\"bx-native-input\" [attr.id]=\"inputId()\" [attr.type]=\"type()\"\n [attr.placeholder]=\"isFloating() ? resolvedPlaceholder() : ''\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.min]=\"min()\" [attr.max]=\"max()\" [attr.step]=\"step()\"\n [disabled]=\"isDisabled()\" [value]=\"internalValue() ?? ''\" (input)=\"onInput($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\">\n </div>\n\n @if (type() === 'number') {\n <div class=\"bx-spinners-group\">\n <button type=\"button\" class=\"bx-spin-btn\" tabindex=\"-1\"\n [disabled]=\"isSpinDownDisabled()\"\n (mousedown)=\"startSpin(-1, $event)\" (touchstart)=\"startSpin(-1, $event)\" (mouseup)=\"stopSpin()\"\n (mouseleave)=\"stopSpin()\" (touchend)=\"stopSpin()\">\n <bx-icon name=\"minus\" size=\"16\"></bx-icon>\n </button>\n\n <button type=\"button\" class=\"bx-spin-btn\" tabindex=\"-1\"\n [disabled]=\"isSpinUpDisabled()\"\n (mousedown)=\"startSpin(1, $event)\" (touchstart)=\"startSpin(1, $event)\" (mouseup)=\"stopSpin()\"\n (mouseleave)=\"stopSpin()\" (touchend)=\"stopSpin()\">\n <bx-icon name=\"plus\" size=\"16\"></bx-icon>\n </button>\n </div>\n }\n\n </div>\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, DestroyRef, ElementRef, inject, Injectable, input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\n\n@Injectable({ providedIn: 'root' })\nclass RadioRegistry {\n public readonly radios = new Set<Radio>();\n public select(radio: Radio): void {\n for (const peer of this.radios) {\n if (peer !== radio && peer.sharesGroup(radio)) peer.writeValue(radio.value());\n }\n }\n}\n\n@Component({\n selector: 'bx-radio',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField],\n templateUrl: './radio-button.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './radio-button.scss'\n})\nexport class Radio extends BxBaseControl<unknown> {\n private readonly registry = inject(RadioRegistry);\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly inputId = computed(() => `bx-radio-${uuidv4()}`);\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n public readonly value = input.required<unknown>();\n public readonly name = input<string>('');\n protected showTooltip = false;\n constructor() {\n super();\n this.registry.radios.add(this);\n inject(DestroyRef).onDestroy(() => this.registry.radios.delete(this));\n }\n\n /** Match native form/name groups and radios bound to one reactive control. */\n public sharesGroup(other: Radio): boolean {\n const control = this.ngControl?.control;\n if (control && control === other.ngControl?.control) return true;\n return (\n !!this.name() &&\n this.name() === other.name() &&\n this.element.closest('form') === other.element.closest('form') &&\n control?.parent === other.ngControl?.control?.parent\n );\n }\n\n protected onSelect(): void {\n if (!this.isDisabled()) {\n this.updateValue(this.value());\n this.registry.select(this);\n }\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"radio\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.name]=\"name() || null\"\n [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\"\n [checked]=\"internalValue() === value()\" (change)=\"onSelect()\" (blur)=\"onBlur()\">\n\n <div class=\"bx-radio-circle\" bxSurface [class.is-checked]=\"internalValue() === value()\"\n [class.is-invalid]=\"!!errorMessage\">\n <div class=\"bx-radio-inner\"></div>\n </div>\n\n @if (resolvedLabel()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n </label>\n</bx-form-field>","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, output, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-search-input',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './search-input.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './search-input.scss'\n})\nexport class SearchInput extends BxBaseControl<string> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-search-${Math.random().toString(36).substr(2, 9)}`);\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n // eslint-disable-next-line @angular-eslint/no-output-native -- Keep the established public search event.\n public readonly search = output<string>();\n\n @ViewChild('inputElement') private inputElement?: ElementRef<HTMLInputElement>;\n\n public clear(): void {\n if (this.isDisabled()) return;\n this.updateValue('');\n this.search.emit('');\n this.focus();\n }\n\n public focus(): void {\n this.inputElement?.nativeElement.focus();\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.value);\n this.search.emit(target.value);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [label]=\"label()\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\"\n [required]=\"required()\" [forId]=\"inputId()\">\n\n <div class=\"bx-search-input-wrapper\" bxSurface [class.is-invalid]=\"!!errorMessage\" [class.is-disabled]=\"isDisabled()\">\n <bx-icon class=\"bx-search-icon-left\" name=\"search\" size=\"16\"></bx-icon>\n\n <input #inputElement class=\"bx-native-search-input\" type=\"text\" [attr.id]=\"inputId()\"\n [attr.placeholder]=\"resolvedPlaceholder()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\" [value]=\"internalValue() || ''\" (input)=\"onInput($event)\" (blur)=\"onBlur()\">\n\n @if (internalValue()) {\n <button type=\"button\" class=\"bx-search-clear-btn\" aria-label=\"Clear search\" [disabled]=\"isDisabled()\" (click)=\"clear()\">\n <bx-icon name=\"x\" size=\"16\"></bx-icon>\n </button>\n }\n </div>\n\n</bx-form-field>","import { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, input, output, signal, ViewChild, OnInit, OnDestroy, ElementRef, NgZone, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayModule, ConnectionPositionPair, CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport {\n BX_I18N,\n BxBaseControl,\n BxA11yService,\n inheritOverlayTheme,\n trackOverlayOrigin,\n DEFAULT_DEBOUNCE_TIME,\n isTextWithKey,\n ResolvableText,\n uuidv4\n} from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BX_OVERLAY_CONTEXT, MenuItem } from '@filip.mazev/blocks/primitives';\nimport { BxSelectOption } from '../../interfaces/ibx-select-option.interface';\nimport { SearchInput } from '../search-input/search-input';\n\n@Component({\n selector: 'bx-select',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, OverlayModule, FormField, Icon, MenuItem, SearchInput],\n templateUrl: './select.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './select.scss'\n})\nexport class Select<T> extends BxBaseControl<T> implements OnInit, OnDestroy {\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly overlay = inject(Overlay);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n protected readonly panelScrollStrategy = this.overlay.scrollStrategies.noop();\n protected readonly isPanelAttached = signal(false);\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly searchTerm = signal<string>('');\n protected readonly inputId = computed(() => `bx-select-${uuidv4()}`);\n protected readonly overlayPositions: ConnectionPositionPair[] = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4)\n ];\n\n protected readonly isFloating = computed(() => {\n const val = this.internalValue();\n const hasValue = val !== null && val !== undefined && val !== '';\n return this.isOpen() || hasValue;\n });\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return '';\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n protected readonly resolvedOptions = computed(() => {\n this.i18n?.version?.();\n return this.options().map((opt) => ({\n ...opt,\n resolvedStr: this.resolveText(opt.label)\n }));\n });\n\n protected readonly filteredOptions = computed(() => {\n const term = this.searchTerm().trim();\n const opts = this.resolvedOptions();\n\n if (this.externalFiltering() || !term) return opts;\n\n // Literal subsequence matching accepts punctuation and never constructs user regex.\n const query = term.toLocaleLowerCase();\n return opts.filter((opt) => {\n let index = 0;\n for (const character of opt.resolvedStr.toLocaleLowerCase()) {\n if (character === query[index]) index++;\n if (index === query.length) return true;\n }\n return false;\n });\n });\n\n protected readonly selectedOptionLabel = computed(() => {\n const currentVal = this.internalValue();\n const selected = this.resolvedOptions().find((o) => o.value === currentVal);\n return selected ? selected.resolvedStr : '';\n });\n\n protected readonly resolvedSearchPlaceholder = computed(() => this.resolveText(this.searchPlaceholder()));\n protected readonly resolvedEmptyMessage = computed(() => this.resolveText(this.emptyMessage()));\n public readonly options = input.required<BxSelectOption<T>[]>();\n\n public readonly isSearchable = input<boolean>(false);\n\n public readonly externalFiltering = input<boolean>(false);\n public readonly searchPlaceholder = input<ResolvableText>('Search...');\n public readonly emptyMessage = input<ResolvableText>('No results found.');\n // eslint-disable-next-line @angular-eslint/no-output-native -- Keep the established public search event.\n public readonly search = output<string>();\n public readonly isOpen = signal<boolean>(false);\n private transition?: ReturnType<typeof createGlassTransition>;\n\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private disconnectOrigin?: () => void;\n\n private transitionRevision = 0;\n\n private focusOnOpen: 'first' | 'last' | null = null;\n\n @ViewChild(CdkConnectedOverlay) private connectedOverlay?: CdkConnectedOverlay;\n\n @ViewChild('searchInput') private searchInputRef?: SearchInput;\n\n @ViewChild('origin', { read: ElementRef }) private originRef?: ElementRef<HTMLElement>;\n\n private searchSubject = new Subject<string>();\n\n private sub?: Subscription;\n\n public override ngOnInit(): void {\n super.ngOnInit();\n\n this.sub = this.searchSubject.pipe(debounceTime(DEFAULT_DEBOUNCE_TIME), distinctUntilChanged()).subscribe((term) => {\n this.searchTerm.set(term);\n if (this.externalFiltering()) {\n this.search.emit(term);\n }\n });\n }\n\n public ngOnDestroy(): void {\n ++this.transitionRevision;\n this.onPanelDetach();\n this.sub?.unsubscribe();\n }\n\n public toggleOpen(): void {\n if (this.isDisabled() || this.loading()) return;\n if (this.isOpen()) this.close();\n else this.open();\n }\n\n public open(): void {\n if (this.isDisabled() || this.loading()) return;\n ++this.transitionRevision;\n this.isOpen.set(true);\n this.isPanelAttached.set(true);\n const pane = this.connectedOverlay?.overlayRef?.overlayElement;\n if (pane) pane.inert = false;\n const transition = this.transition;\n if (transition) void this.zone.runOutsideAngular(() => transition.enter());\n }\n\n public close(): void {\n this.isOpen.set(false);\n this.markAsTouched();\n const revision = ++this.transitionRevision;\n const pane = this.connectedOverlay?.overlayRef?.overlayElement;\n if (pane?.contains(pane.ownerDocument.activeElement)) this.originRef?.nativeElement.focus({ preventScroll: true });\n if (pane) pane.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.transitionRevision && !this.isOpen()) this.isPanelAttached.set(false);\n })\n .catch(() => {\n if (revision === this.transitionRevision) this.isPanelAttached.set(false);\n });\n } else this.isPanelAttached.set(false);\n }\n\n protected onPanelAttach(): void {\n const revision = this.transitionRevision;\n const origin = this.originRef?.nativeElement;\n const overlay = this.connectedOverlay?.overlayRef;\n if (origin && overlay?.hasAttached()) {\n this.disconnectLighting?.();\n this.disconnectLighting = inheritGlassLighting(overlay.overlayElement, origin);\n this.disconnectOrigin?.();\n this.disconnectOrigin = this.zone.runOutsideAngular(() => trackOverlayOrigin(overlay, origin));\n }\n // Wait for the attached view's synchronous surface directives to finish mounting.\n queueMicrotask(() => {\n const attachedOverlay = this.connectedOverlay?.overlayRef;\n const attachedOrigin = this.originRef?.nativeElement;\n if (!attachedOverlay?.hasAttached() || !attachedOrigin || !this.isOpen() || revision !== this.transitionRevision) return;\n this.disconnectTheme?.();\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(attachedOrigin, attachedOverlay.overlayElement));\n attachedOverlay.updatePosition();\n if (!this.a11y.isReducedMotion()) {\n this.transition?.destroy();\n this.transition = this.zone.runOutsideAngular(() => createGlassTransition(attachedOrigin, attachedOverlay.overlayElement));\n const transition = this.transition;\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .catch(() => {\n if (revision === this.transitionRevision) {\n this.transition?.destroy();\n this.transition = undefined;\n }\n });\n }\n if (this.isSearchable()) this.searchInputRef?.focus();\n else if (this.focusOnOpen) {\n const items = this.panelItems();\n (this.focusOnOpen === 'last' ? items[items.length - 1] : items[0])?.focus();\n }\n this.focusOnOpen = null;\n });\n }\n\n protected onPanelDetach(): void {\n this.transition?.destroy();\n this.transition = undefined;\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n this.disconnectOrigin?.();\n this.disconnectOrigin = undefined;\n }\n\n protected overlayPopoverLocation(origin: HTMLElement): CdkConnectedOverlay['usePopover'] {\n const useTopLayer =\n !!this.overlayContext?.useTopLayer || !!origin.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]');\n // A null location disables the CDK popover; explicit contexts and native\n // top-layer containers opt back into the global popover.\n return useTopLayer ? 'global' : null;\n }\n\n protected refreshPanel(): void {\n this.transition?.refresh();\n }\n\n protected onTriggerKey(event: KeyboardEvent): void {\n if (!['ArrowDown', 'ArrowUp', 'Escape'].includes(event.key)) return;\n event.preventDefault();\n if (event.key === 'Escape') {\n this.close();\n return;\n }\n this.focusOnOpen = event.key === 'ArrowUp' ? 'last' : 'first';\n if (this.isOpen()) {\n const items = this.panelItems();\n (this.focusOnOpen === 'last' ? items[items.length - 1] : items[0])?.focus();\n this.focusOnOpen = null;\n } else this.open();\n }\n\n protected onPanelKey(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n return;\n }\n if (event.key === 'Tab') {\n this.close();\n return;\n }\n if ((event.target as HTMLElement)?.matches('input,textarea')) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.panelItems();\n if (!items.length) return;\n const current = items.indexOf(items[0].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 event.preventDefault();\n items[next].focus();\n }\n\n protected onOutsideClick(event: MouseEvent): void {\n const clickTarget = event.target as Node;\n if (this.originRef?.nativeElement.contains(clickTarget)) {\n return;\n }\n this.close();\n }\n\n protected selectOption(option: BxSelectOption<T>): void {\n if (option.disabled) return;\n this.updateValue(option.value);\n this.close();\n }\n\n protected onSearchChange(value: string): void {\n this.searchSubject.next(value);\n }\n\n private panelItems(): HTMLElement[] {\n return Array.from(this.connectedOverlay?.overlayRef?.overlayElement.querySelectorAll<HTMLElement>('.bx-select-menu-container button:not(:disabled)') ?? []);\n }\n\n private resolveText(textObj: ResolvableText | undefined): string {\n if (!textObj) return '';\n return isTextWithKey(textObj) ? (this.i18n?.translate(textObj.key) ?? textObj.key) : textObj;\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"!!errorMessage\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\"\n [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\"\n [disabled]=\"isDisabled() || loading()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? inputId() + '-options' : null\">\n\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\">\n {{ resolvedLabel() }}\n @if (isFieldRequired()) { <span class=\"bx-field-required\">*</span> }\n </span>\n }\n\n <span class=\"bx-select-value\" [attr.title]=\"selectedOptionLabel() || resolvedPlaceholder()\" [class.is-placeholder]=\"internalValue() === null\">\n @if (internalValue() === null && isFloating()) {\n {{ resolvedPlaceholder() }}\n } @else {\n {{ selectedOptionLabel() }}\n }\n </span>\n </div>\n\n <bx-icon class=\"bx-select-caret\" name=\"chevron-down\" size=\"16\"></bx-icon>\n </button>\n\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\"\n [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n\n <div class=\"bx-select-panel\" data-bx-surface=\"solid\" role=\"listbox\" tabindex=\"0\" [attr.aria-label]=\"resolvedLabel()\" [id]=\"inputId() + '-options'\" (keydown)=\"onPanelKey($event)\">\n\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [placeholder]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\">\n </bx-search-input>\n </div>\n }\n\n <div class=\"bx-select-menu-container\">\n @for (option of filteredOptions(); track option.value) {\n\n <bx-menu-item role=\"option\" [attr.aria-selected]=\"internalValue() === option.value\" [disabled]=\"option.disabled ?? false\" [wrapLabel]=\"true\" (action)=\"selectOption(option)\">\n <div class=\"bx-select-item-inner\">\n <div class=\"bx-select-check-placeholder\">\n @if (internalValue() === option.value) {\n <bx-icon name=\"check\" size=\"16\"></bx-icon>\n }\n </div>\n <span [title]=\"option.resolvedStr\">{{ option.resolvedStr }}</span>\n </div>\n </bx-menu-item>\n\n } @empty {\n <div class=\"bx-select-empty\">\n <span class=\"bx-empty-text\">{{ resolvedEmptyMessage() }}</span>\n </div>\n }\n </div>\n\n </div>\n </ng-template>\n\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-slide-toggle',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField],\n templateUrl: './slide-toggle.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './slide-toggle.scss'\n})\nexport class SlideToggle extends BxBaseControl<boolean> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-slide-toggle-${uuidv4()}`);\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected onToggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.checked);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\" [checked]=\"internalValue() === true\"\n (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n\n <div class=\"bx-slide-toggle-track\" bxSurface [class.is-checked]=\"internalValue() === true\" [class.is-invalid]=\"!!errorMessage\">\n <div class=\"bx-slide-toggle-thumb\"></div>\n </div>\n\n @if (resolvedLabel() || tooltip()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n\n\n </label>\n\n</bx-form-field>","import { afterEveryRender, afterNextRender, DestroyRef, Directive, ElementRef, HostListener, inject, NgZone } from '@angular/core';\nimport { observeGlassLighting, refreshGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { ThemingService } from '@filip.mazev/blocks/core';\n\n/** Glass styling for a native range, including reactive forms and programmatic values. */\n@Directive({ selector: 'input[type=range][bxSlider]', host: { class: 'bx-slider' } })\nexport class SliderDirective {\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly theme = inject(ThemingService);\n private shell?: HTMLSpanElement;\n private thumb?: HTMLSpanElement;\n\n constructor() {\n afterEveryRender(() => this.sync());\n const zone = inject(NgZone);\n const destroy = inject(DestroyRef);\n afterNextRender(() => {\n const input = this.element.nativeElement;\n const shell = input.ownerDocument.createElement('span');\n shell.className = 'bx-slider-shell';\n const thumb = input.ownerDocument.createElement('span');\n thumb.className = 'bx-slider-thumb';\n thumb.setAttribute('aria-hidden', 'true');\n input.before(shell);\n shell.append(input, thumb);\n this.shell = shell;\n this.thumb = thumb;\n this.sync();\n const place = () => {\n shell.style.setProperty('--bx-slider-center-y', `${input.offsetTop + input.offsetHeight / 2}px`);\n shell.style.setProperty('--bx-slider-track-start', `${input.offsetLeft}px`);\n shell.style.setProperty('--bx-slider-track-width', `${input.offsetWidth}px`);\n refreshGlassLighting(thumb);\n };\n const resize = new ResizeObserver(place);\n zone.runOutsideAngular(() => {\n resize.observe(input);\n resize.observe(shell);\n place();\n });\n const stop = zone.runOutsideAngular(() =>\n observeGlassLighting(\n thumb,\n (light) => {\n const reflected = light.reflectionStrength > light.strength;\n const strength = reflected ? light.reflectionStrength : light.strength;\n if (strength <= 0.04) {\n thumb.style.removeProperty('--bx-slider-light-color');\n thumb.style.removeProperty('--bx-slider-light-strength');\n } else {\n thumb.style.setProperty('--bx-slider-light-color', reflected ? light.reflection : light.color);\n thumb.style.setProperty('--bx-slider-light-strength', String(strength));\n }\n thumb.style.setProperty('--bx-slider-light-x', `${reflected ? light.reflectionX : light.x}%`);\n thumb.style.setProperty('--bx-slider-light-y', `${reflected ? light.reflectionY : light.y}%`);\n },\n input\n )\n );\n destroy.onDestroy(() => {\n resize.disconnect();\n stop();\n shell.replaceWith(input);\n this.shell = this.thumb = undefined;\n });\n });\n }\n\n @HostListener('input')\n protected sync(): void {\n const input = this.element.nativeElement;\n const min = input.min === '' ? 0 : Number(input.min);\n const max = input.max === '' ? 100 : Number(input.max);\n const progress = max > min ? Math.max(0, Math.min(100, ((input.valueAsNumber - min) / (max - min)) * 100)) : 0;\n const value = `${Number.isFinite(progress) ? progress : 0}%`;\n if (input.style.getPropertyValue('--bx-slider-progress') !== value) input.style.setProperty('--bx-slider-progress', value);\n if (this.shell) {\n const position = String((input.matches(':dir(rtl)') ? 100 - (Number.isFinite(progress) ? progress : 0) : Number.isFinite(progress) ? progress : 0) / 100);\n if (this.shell.style.getPropertyValue('--bx-slider-position') !== position) {\n this.shell.style.setProperty('--bx-slider-position', position);\n if (this.thumb) refreshGlassLighting(this.thumb);\n }\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"filip.mazev-blocks-forms.mjs","names":[],"sources":["../../../projects/blocks/forms/components/button/button.ts","../../../projects/blocks/forms/components/button/button.html","../../../projects/blocks/forms/directives/bx-error.directive.ts","../../../projects/blocks/forms/components/form-field/form-field.ts","../../../projects/blocks/forms/components/form-field/form-field.html","../../../projects/blocks/forms/components/checkbox/checkbox.ts","../../../projects/blocks/forms/components/checkbox/checkbox.html","../../../projects/blocks/forms/components/input-field/input-field.ts","../../../projects/blocks/forms/components/input-field/input-field.html","../../../projects/blocks/forms/components/radio-button/radio-button.ts","../../../projects/blocks/forms/components/radio-button/radio-button.html","../../../projects/blocks/forms/components/search-input/search-input.ts","../../../projects/blocks/forms/components/search-input/search-input.html","../../../projects/blocks/forms/components/select/select.ts","../../../projects/blocks/forms/components/select/select.html","../../../projects/blocks/forms/components/slide-toggle/slide-toggle.ts","../../../projects/blocks/forms/components/slide-toggle/slide-toggle.html","../../../projects/blocks/forms/directives/slider.directive.ts"],"sourcesContent":["import { injectComponentSurface } from '@filip.mazev/blocks/effects';\nimport { Component, input, booleanAttribute, HostListener, inject, computed, ChangeDetectionStrategy } from '@angular/core';\nimport { BxA11yService } from '@filip.mazev/blocks/core';\nimport { ButtonColor, ButtonVariant } from '../../types/form.types';\n\n@Component({\n selector: 'bx-button, button[bx-button], a[bx-button]',\n standalone: true,\n templateUrl: './button.html',\n styleUrl: './button.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class]': '\"bx-btn bx-btn-\" + variant() + \" bx-btn-color-\" + color()',\n '[class.bx-btn-is-outlined]': 'outlined()',\n '[class.bx-btn-is-elevated]': 'elevated()',\n '[class.bx-btn-animated]': 'isAnimated()',\n '[class.bx-btn-non-interactive]': '!interactive()',\n '[attr.disabled]': 'disabled() ? true : null',\n '[attr.aria-disabled]': 'disabled()',\n '[attr.tabindex]': 'disabled() ? \"-1\" : null'\n }\n})\nexport class Button {\n private readonly appearance = injectComponentSurface(() => ({\n interactive: this.variant() === 'text' || !this.interactive() || this.disabled() ? false : undefined,\n emission:\n this.variant() !== 'text' && this.interactive() && !this.disabled()\n ? this.color() === 'primary' || this.color() === 'grayscale'\n ? 'var(--bx-primary)'\n : this.color() === 'accent'\n ? 'var(--bx-accent)'\n : `var(--bx-text-${this.color()})`\n : undefined\n }));\n\n private readonly a11y = inject(BxA11yService);\n\n public readonly isAnimated = computed(() => {\n return !this.a11y.isReducedMotion();\n });\n\n public readonly variant = input<ButtonVariant>('text');\n public readonly color = input<ButtonColor>('primary');\n public readonly outlined = input<boolean>(false);\n public readonly elevated = input<boolean>(false);\n public readonly disabled = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n public readonly interactive = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n @HostListener('click', ['$event'])\n protected onClick(event: Event) {\n if (this.disabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","<span class=\"bx-btn-content-wrapper\">\n <ng-content></ng-content>\n</span>","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bx-error',\n standalone: true,\n template: '<ng-content />'\n})\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- The component provides the projection selector and has no behavior.\nexport class BxError {}\n","import { afterRenderEffect, Component, computed, contentChild, ElementRef, inject, input, viewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, isTextWithKey, ResolvableText, BxA11yService } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { BxGlassLightingService } from '@filip.mazev/blocks/effects';\nimport { BxError } from '../../directives/bx-error.directive';\nimport { TooltipDirective } from '@filip.mazev/blocks/primitives';\n\n@Component({\n selector: 'bx-form-field',\n standalone: true,\n imports: [CommonModule, Icon, TooltipDirective],\n templateUrl: './form-field.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './form-field.scss'\n})\nexport class FormField {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly a11y = inject(BxA11yService);\n\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly lighting = inject(BxGlassLightingService);\n protected readonly projectedError = contentChild(BxError, { read: ElementRef<HTMLElement> });\n private readonly errorElement = viewChild<ElementRef<HTMLElement>>('errorText');\n\n protected readonly resolvedLabel = computed(() => this.resolveText(this.label()));\n protected readonly resolvedError = computed(() => this.resolveText(this.error()));\n public readonly inline = input(false);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly error = input<ResolvableText | undefined>(undefined);\n public readonly required = input<boolean>(false);\n public readonly loading = input<boolean>(false);\n public readonly forId = input<string>('');\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n constructor() {\n afterRenderEffect((onCleanup) => {\n const projected = this.projectedError()?.nativeElement;\n const error = this.resolvedError() ? this.errorElement()?.nativeElement : projected;\n if (!error) return;\n const parent = this.element.parentElement;\n const root = this.element.closest<HTMLElement>('form, fieldset') ?? (parent?.tagName.startsWith('BX-') ? parent.parentElement : parent);\n if (!root) return;\n const control = this.element.querySelector<HTMLElement>('.bx-field-control > [data-bx-surface]');\n const light = this.lighting.register(root, {\n // Anchor the lower-edge glow to the control, independently of floating\n // labels, error icons and the length of the validation message.\n element: control ?? error,\n edge: control ? 'bottom' : undefined,\n offsetX: 0.5,\n offsetY: control ? 1 : 0,\n z: 32,\n color: 'var(--bx-text-danger)',\n intensity: 0.9,\n radius: 240\n });\n onCleanup(() => light.destroy());\n });\n }\n\n private resolveText(textObj: ResolvableText | undefined): string | undefined {\n this.i18n?.version?.();\n if (!textObj) return undefined;\n if (isTextWithKey(textObj)) {\n return this.i18n?.translate(textObj.key) ?? textObj.key;\n }\n return textObj;\n }\n}\n","<div class=\"bx-field-wrapper\" [class.is-invalid]=\"!!resolvedError() || !!projectedError()\" [attr.data-bx-field-invalid]=\"!!resolvedError() || !!projectedError()\">\n\n @if (resolvedLabel() || (tooltip() && !inline())) {\n <div class=\"bx-field-header\">\n <label class=\"bx-field-label\" [attr.for]=\"forId()\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-field-required\">*</span> }\n </label>\n\n @if (tooltip()) {\n <button type=\"button\" class=\"bx-field-tooltip-trigger\" [bxTooltip]=\"tooltip()!\" bxTooltipTouch=\"tap\" placement=\"top\" aria-label=\"More information\">\n <bx-icon name=\"help-circle\" size=\"16\"></bx-icon>\n </button>\n }\n\n @if (loading()) {\n <bx-icon name=\"loader\" class=\"bx-spin\" size=\"16\"></bx-icon>\n }\n </div>\n }\n\n <div class=\"bx-field-control\" [class.bx-field-control-inline]=\"inline()\">\n <ng-content></ng-content>\n @if (inline() && tooltip()) {\n <button type=\"button\" class=\"bx-field-tooltip-trigger\" [bxTooltip]=\"tooltip()!\" bxTooltipTouch=\"tap\" placement=\"top\" [attr.aria-label]=\"'More information'\">\n <bx-icon name=\"help-circle\" size=\"16\"></bx-icon>\n </button>\n }\n </div>\n\n <div class=\"bx-field-error-projected\">\n <ng-content select=\"bx-error\"></ng-content>\n </div>\n\n @if (resolvedError()) {\n <div class=\"bx-field-error\" [class.bx-animated]=\"isAnimated()\">\n <bx-icon name=\"alert-circle\" size=\"16\"></bx-icon>\n <span #errorText class=\"bx-field-error-text\">{{ resolvedError() }}</span>\n </div>\n }\n</div>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-checkbox',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './checkbox.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './checkbox.scss'\n})\nexport class Checkbox extends BxBaseControl<boolean> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-checkbox-${uuidv4()}`);\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected showTooltip = false;\n\n protected onToggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.checked);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\" [checked]=\"internalValue() === true\"\n (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n\n <div class=\"bx-checkbox-box\" bxSurface [bxSurfaceEmission]=\"errorMessage ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\" [class.is-checked]=\"internalValue() === true\" [class.is-invalid]=\"!!errorMessage\">\n @if (internalValue() === true) {\n <bx-icon name=\"check\" size=\"16\"></bx-icon>\n }\n </div>\n\n @if (resolvedLabel()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n </label>\n</bx-form-field>","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, DestroyRef, inject, input, signal, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\nimport { InputFieldTypes } from '../../types/form.types';\nimport { Icon } from '@filip.mazev/blocks/icons';\n\n@Component({\n selector: 'bx-input-field',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './input-field.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './input-field.scss'\n})\nexport class InputField extends BxBaseControl<string | number | null> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly inputId = computed(() => `bx-input-${uuidv4()}`);\n protected readonly isFocused = signal<boolean>(false);\n protected readonly isSpinDownDisabled = computed(() => {\n const min = this.min();\n return this.isDisabled() || (min !== undefined && (Number(this.internalValue()) || 0) <= min);\n });\n\n protected readonly isSpinUpDisabled = computed(() => {\n const max = this.max();\n return this.isDisabled() || (max !== undefined && (Number(this.internalValue()) || 0) >= max);\n });\n\n protected readonly isFloating = computed(() => {\n const val = this.internalValue();\n const hasValue = val !== null && val !== undefined && val !== '';\n const isDateType = ['date', 'time', 'datetime-local'].includes(this.type());\n\n return this.isFocused() || hasValue || isDateType;\n });\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return '';\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n public readonly type = input<InputFieldTypes>('text');\n public readonly min = input<number | undefined>(undefined);\n public readonly max = input<number | undefined>(undefined);\n public readonly step = input<number>(1);\n private spinTimeout?: ReturnType<typeof setTimeout>;\n private spinInterval?: ReturnType<typeof setInterval>;\n\n constructor() {\n super();\n inject(DestroyRef).onDestroy(() => this.stopSpin());\n }\n\n public startSpin(direction: number, event: MouseEvent | TouchEvent): void {\n event.preventDefault();\n if (this.isDisabled()) return;\n\n this.applyStep(direction);\n\n this.spinTimeout = setTimeout(() => {\n this.spinInterval = setInterval(() => {\n this.applyStep(direction);\n }, 50);\n }, 400);\n }\n\n public stopSpin(): void {\n clearTimeout(this.spinTimeout);\n clearInterval(this.spinInterval);\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n const value = this.type() === 'number' ? (target.value === '' ? null : Number(target.value)) : target.value;\n\n this.updateValue(value);\n }\n\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n this.markAsTouched();\n }\n\n private applyStep(direction: number): void {\n const current = Number(this.internalValue()) || 0;\n let next = current + direction * this.step();\n const min = this.min();\n const max = this.max();\n\n if (min !== undefined && next < min) next = min;\n if (max !== undefined && next > max) next = max;\n\n this.updateValue(next);\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <div class=\"bx-input-wrapper\" bxSurface [class.is-invalid]=\"!!errorMessage\" [class.is-disabled]=\"isDisabled()\"\n [class.has-spinners]=\"type() === 'number'\" [class.is-floating]=\"isFloating()\">\n\n <div class=\"bx-input-container\">\n @if (label()) {\n <label class=\"bx-floating-label\" [attr.for]=\"inputId()\">\n {{ resolvedLabel() }}\n @if (isFieldRequired()) { <span class=\"bx-field-required\">*</span> }\n </label>\n }\n\n <input class=\"bx-native-input\" [attr.id]=\"inputId()\" [attr.type]=\"type()\"\n [attr.placeholder]=\"isFloating() ? resolvedPlaceholder() : ''\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.min]=\"min()\" [attr.max]=\"max()\" [attr.step]=\"step()\"\n [disabled]=\"isDisabled()\" [value]=\"internalValue() ?? ''\" (input)=\"onInput($event)\" (focus)=\"onFocus()\"\n (blur)=\"onBlur()\">\n </div>\n\n @if (type() === 'number') {\n <div class=\"bx-spinners-group\">\n <button type=\"button\" class=\"bx-spin-btn\" tabindex=\"-1\"\n [disabled]=\"isSpinDownDisabled()\"\n (mousedown)=\"startSpin(-1, $event)\" (touchstart)=\"startSpin(-1, $event)\" (mouseup)=\"stopSpin()\"\n (mouseleave)=\"stopSpin()\" (touchend)=\"stopSpin()\">\n <bx-icon name=\"minus\" size=\"16\"></bx-icon>\n </button>\n\n <button type=\"button\" class=\"bx-spin-btn\" tabindex=\"-1\"\n [disabled]=\"isSpinUpDisabled()\"\n (mousedown)=\"startSpin(1, $event)\" (touchstart)=\"startSpin(1, $event)\" (mouseup)=\"stopSpin()\"\n (mouseleave)=\"stopSpin()\" (touchend)=\"stopSpin()\">\n <bx-icon name=\"plus\" size=\"16\"></bx-icon>\n </button>\n </div>\n }\n\n </div>\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, DestroyRef, ElementRef, inject, Injectable, input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\n\n@Injectable({ providedIn: 'root' })\nclass RadioRegistry {\n public readonly radios = new Set<Radio>();\n public select(radio: Radio): void {\n for (const peer of this.radios) {\n if (peer !== radio && peer.sharesGroup(radio)) peer.writeValue(radio.value());\n }\n }\n}\n\n@Component({\n selector: 'bx-radio',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField],\n templateUrl: './radio-button.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './radio-button.scss'\n})\nexport class Radio extends BxBaseControl<unknown> {\n private readonly registry = inject(RadioRegistry);\n private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly inputId = computed(() => `bx-radio-${uuidv4()}`);\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n public readonly value = input.required<unknown>();\n public readonly name = input<string>('');\n protected showTooltip = false;\n constructor() {\n super();\n this.registry.radios.add(this);\n inject(DestroyRef).onDestroy(() => this.registry.radios.delete(this));\n }\n\n /** Match native form/name groups and radios bound to one reactive control. */\n public sharesGroup(other: Radio): boolean {\n const control = this.ngControl?.control;\n if (control && control === other.ngControl?.control) return true;\n return (\n !!this.name() &&\n this.name() === other.name() &&\n this.element.closest('form') === other.element.closest('form') &&\n control?.parent === other.ngControl?.control?.parent\n );\n }\n\n protected onSelect(): void {\n if (!this.isDisabled()) {\n this.updateValue(this.value());\n this.registry.select(this);\n }\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"radio\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.name]=\"name() || null\"\n [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\"\n [checked]=\"internalValue() === value()\" (change)=\"onSelect()\" (blur)=\"onBlur()\">\n\n <div class=\"bx-radio-circle\" bxSurface [bxSurfaceEmission]=\"errorMessage ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\" [class.is-checked]=\"internalValue() === value()\"\n [class.is-invalid]=\"!!errorMessage\">\n <div class=\"bx-radio-inner\"></div>\n </div>\n\n @if (resolvedLabel()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n </label>\n</bx-form-field>","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, output, ElementRef, ViewChild, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-search-input',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField, Icon],\n templateUrl: './search-input.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './search-input.scss'\n})\nexport class SearchInput extends BxBaseControl<string> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-search-${Math.random().toString(36).substr(2, 9)}`);\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n // eslint-disable-next-line @angular-eslint/no-output-native -- Keep the established public search event.\n public readonly search = output<string>();\n\n @ViewChild('inputElement') private inputElement?: ElementRef<HTMLInputElement>;\n\n public clear(): void {\n if (this.isDisabled()) return;\n this.updateValue('');\n this.search.emit('');\n this.focus();\n }\n\n public focus(): void {\n this.inputElement?.nativeElement.focus();\n }\n\n protected onInput(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.value);\n this.search.emit(target.value);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [label]=\"label()\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\"\n [required]=\"required()\" [forId]=\"inputId()\">\n\n <div class=\"bx-search-input-wrapper\" bxSurface [class.is-invalid]=\"!!errorMessage\" [class.is-disabled]=\"isDisabled()\">\n <bx-icon class=\"bx-search-icon-left\" name=\"search\" size=\"16\"></bx-icon>\n\n <input #inputElement class=\"bx-native-search-input\" type=\"text\" [attr.id]=\"inputId()\"\n [attr.placeholder]=\"resolvedPlaceholder()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel()\"\n [disabled]=\"isDisabled()\" [value]=\"internalValue() || ''\" (input)=\"onInput($event)\" (blur)=\"onBlur()\">\n\n @if (internalValue()) {\n <button type=\"button\" class=\"bx-search-clear-btn\" aria-label=\"Clear search\" [disabled]=\"isDisabled()\" (click)=\"clear()\">\n <bx-icon name=\"x\" size=\"16\"></bx-icon>\n </button>\n }\n </div>\n\n</bx-form-field>","import { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, input, output, signal, ViewChild, OnInit, OnDestroy, ElementRef, NgZone, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { Overlay, OverlayModule, ConnectionPositionPair, CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport {\n BX_I18N,\n BxBaseControl,\n BxA11yService,\n inheritOverlayTheme,\n trackOverlayOrigin,\n DEFAULT_DEBOUNCE_TIME,\n isTextWithKey,\n ResolvableText,\n uuidv4\n} from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BX_OVERLAY_CONTEXT } from '@filip.mazev/blocks/primitives';\nimport { BxSelectOption } from '../../interfaces/ibx-select-option.interface';\nimport { SearchInput } from '../search-input/search-input';\n\n@Component({\n selector: 'bx-select',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, OverlayModule, FormField, Icon, SearchInput],\n templateUrl: './select.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './select.scss'\n})\nexport class Select<T> extends BxBaseControl<T> implements OnInit, OnDestroy {\n private readonly a11y = inject(BxA11yService);\n private readonly zone = inject(NgZone);\n private readonly overlay = inject(Overlay);\n private readonly overlayContext = inject(BX_OVERLAY_CONTEXT, { optional: true });\n protected readonly panelScrollStrategy = this.overlay.scrollStrategies.noop();\n protected readonly isPanelAttached = signal(false);\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly searchTerm = signal<string>('');\n protected readonly inputId = computed(() => `bx-select-${uuidv4()}`);\n protected readonly overlayPositions: ConnectionPositionPair[] = [\n new ConnectionPositionPair({ originX: 'start', originY: 'bottom' }, { overlayX: 'start', overlayY: 'top' }, 0, 4),\n new ConnectionPositionPair({ originX: 'start', originY: 'top' }, { overlayX: 'start', overlayY: 'bottom' }, 0, -4)\n ];\n\n protected readonly isFloating = computed(() => {\n const val = this.internalValue();\n const hasValue = val !== null && val !== undefined && val !== '';\n return this.isOpen() || hasValue;\n });\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return '';\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected readonly resolvedPlaceholder = computed(() => {\n this.i18n?.version?.();\n const p = this.placeholder();\n if (!p) return '';\n return isTextWithKey(p) ? (this.i18n?.translate(p.key) ?? p.key) : p;\n });\n\n protected readonly resolvedOptions = computed(() => {\n this.i18n?.version?.();\n return this.options().map((opt) => ({\n ...opt,\n resolvedStr: this.resolveText(opt.label)\n }));\n });\n\n protected readonly filteredOptions = computed(() => {\n const term = this.searchTerm().trim();\n const opts = this.resolvedOptions();\n\n if (this.externalFiltering() || !term) return opts;\n\n // Literal subsequence matching accepts punctuation and never constructs user regex.\n const query = term.toLocaleLowerCase();\n return opts.filter((opt) => {\n let index = 0;\n for (const character of opt.resolvedStr.toLocaleLowerCase()) {\n if (character === query[index]) index++;\n if (index === query.length) return true;\n }\n return false;\n });\n });\n\n protected readonly selectedOptionLabel = computed(() => {\n const currentVal = this.internalValue();\n const selected = this.resolvedOptions().find((o) => o.value === currentVal);\n return selected ? selected.resolvedStr : '';\n });\n\n protected readonly resolvedSearchPlaceholder = computed(() => this.resolveText(this.searchPlaceholder()));\n protected readonly resolvedEmptyMessage = computed(() => this.resolveText(this.emptyMessage()));\n public readonly options = input.required<BxSelectOption<T>[]>();\n\n public readonly isSearchable = input<boolean>(false);\n\n public readonly externalFiltering = input<boolean>(false);\n public readonly searchPlaceholder = input<ResolvableText>('Search...');\n public readonly emptyMessage = input<ResolvableText>('No results found.');\n // eslint-disable-next-line @angular-eslint/no-output-native -- Keep the established public search event.\n public readonly search = output<string>();\n public readonly isOpen = signal<boolean>(false);\n private transition?: ReturnType<typeof createGlassTransition>;\n\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private disconnectOrigin?: () => void;\n\n private transitionRevision = 0;\n\n private focusOnOpen: 'first' | 'last' | null = null;\n\n @ViewChild(CdkConnectedOverlay) private connectedOverlay?: CdkConnectedOverlay;\n\n @ViewChild('searchInput') private searchInputRef?: SearchInput;\n\n @ViewChild('origin', { read: ElementRef }) private originRef?: ElementRef<HTMLElement>;\n\n private searchSubject = new Subject<string>();\n\n private sub?: Subscription;\n\n public override ngOnInit(): void {\n super.ngOnInit();\n\n this.sub = this.searchSubject.pipe(debounceTime(DEFAULT_DEBOUNCE_TIME), distinctUntilChanged()).subscribe((term) => {\n this.searchTerm.set(term);\n if (this.externalFiltering()) {\n this.search.emit(term);\n }\n });\n }\n\n public ngOnDestroy(): void {\n ++this.transitionRevision;\n this.onPanelDetach();\n this.sub?.unsubscribe();\n }\n\n public toggleOpen(): void {\n if (this.isDisabled() || this.loading()) return;\n if (this.isOpen()) this.close();\n else this.open();\n }\n\n public open(): void {\n if (this.isDisabled() || this.loading()) return;\n ++this.transitionRevision;\n this.isOpen.set(true);\n this.isPanelAttached.set(true);\n const pane = this.connectedOverlay?.overlayRef?.overlayElement;\n if (pane) pane.inert = false;\n const transition = this.transition;\n if (transition) void this.zone.runOutsideAngular(() => transition.enter());\n }\n\n public close(): void {\n this.isOpen.set(false);\n this.markAsTouched();\n const revision = ++this.transitionRevision;\n const pane = this.connectedOverlay?.overlayRef?.overlayElement;\n if (pane?.contains(pane.ownerDocument.activeElement)) this.originRef?.nativeElement.focus({ preventScroll: true });\n if (pane) pane.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.transitionRevision && !this.isOpen()) this.isPanelAttached.set(false);\n })\n .catch(() => {\n if (revision === this.transitionRevision) this.isPanelAttached.set(false);\n });\n } else this.isPanelAttached.set(false);\n }\n\n protected onPanelAttach(): void {\n const revision = this.transitionRevision;\n const origin = this.originRef?.nativeElement;\n const overlay = this.connectedOverlay?.overlayRef;\n if (origin && overlay?.hasAttached()) {\n this.disconnectLighting?.();\n this.disconnectLighting = inheritGlassLighting(overlay.overlayElement, origin);\n this.disconnectOrigin?.();\n this.disconnectOrigin = this.zone.runOutsideAngular(() => trackOverlayOrigin(overlay, origin));\n }\n // Wait for the attached view's synchronous surface directives to finish mounting.\n queueMicrotask(() => {\n const attachedOverlay = this.connectedOverlay?.overlayRef;\n const attachedOrigin = this.originRef?.nativeElement;\n if (!attachedOverlay?.hasAttached() || !attachedOrigin || !this.isOpen() || revision !== this.transitionRevision) return;\n this.disconnectTheme?.();\n this.disconnectTheme = this.zone.runOutsideAngular(() => inheritOverlayTheme(attachedOrigin, attachedOverlay.overlayElement));\n attachedOverlay.updatePosition();\n if (!this.a11y.isReducedMotion()) {\n this.transition?.destroy();\n this.transition = this.zone.runOutsideAngular(() => createGlassTransition(attachedOrigin, attachedOverlay.overlayElement));\n const transition = this.transition;\n void this.zone\n .runOutsideAngular(() => transition.enter())\n .catch(() => {\n if (revision === this.transitionRevision) {\n this.transition?.destroy();\n this.transition = undefined;\n }\n });\n }\n if (this.isSearchable()) this.searchInputRef?.focus();\n else if (this.focusOnOpen) {\n const items = this.panelItems();\n (this.focusOnOpen === 'last' ? items[items.length - 1] : items[0])?.focus();\n }\n this.focusOnOpen = null;\n });\n }\n\n protected onPanelDetach(): void {\n this.transition?.destroy();\n this.transition = undefined;\n this.disconnectTheme?.();\n this.disconnectTheme = undefined;\n this.disconnectLighting?.();\n this.disconnectLighting = undefined;\n this.disconnectOrigin?.();\n this.disconnectOrigin = undefined;\n }\n\n protected overlayPopoverLocation(origin: HTMLElement): CdkConnectedOverlay['usePopover'] {\n const useTopLayer =\n !!this.overlayContext?.useTopLayer || !!origin.closest('dialog, [role=\"dialog\"], [role=\"alertdialog\"], bx-modal, bx-modal-core, [popover]');\n // A null location disables the CDK popover; explicit contexts and native\n // top-layer containers opt back into the global popover.\n return useTopLayer ? 'global' : null;\n }\n\n protected refreshPanel(): void {\n this.transition?.refresh();\n }\n\n protected onTriggerKey(event: KeyboardEvent): void {\n if (!['ArrowDown', 'ArrowUp', 'Escape'].includes(event.key)) return;\n event.preventDefault();\n if (event.key === 'Escape') {\n this.close();\n return;\n }\n this.focusOnOpen = event.key === 'ArrowUp' ? 'last' : 'first';\n if (this.isOpen()) {\n const items = this.panelItems();\n (this.focusOnOpen === 'last' ? items[items.length - 1] : items[0])?.focus();\n this.focusOnOpen = null;\n } else this.open();\n }\n\n protected onPanelKey(event: KeyboardEvent): void {\n if (event.key === 'Escape') {\n event.preventDefault();\n event.stopPropagation();\n this.close();\n return;\n }\n if (event.key === 'Tab') {\n this.close();\n return;\n }\n if ((event.target as HTMLElement)?.matches('input,textarea')) return;\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) return;\n const items = this.panelItems();\n if (!items.length) return;\n const current = items.indexOf(items[0].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 event.preventDefault();\n items[next].focus();\n }\n\n protected onOutsideClick(event: MouseEvent): void {\n const clickTarget = event.target as Node;\n if (this.originRef?.nativeElement.contains(clickTarget)) {\n return;\n }\n this.close();\n }\n\n protected selectOption(option: BxSelectOption<T>): void {\n if (option.disabled) return;\n this.updateValue(option.value);\n this.close();\n }\n\n protected onSearchChange(value: string): void {\n this.searchSubject.next(value);\n }\n\n private panelItems(): HTMLElement[] {\n return Array.from(this.connectedOverlay?.overlayRef?.overlayElement.querySelectorAll<HTMLElement>('.bx-select-menu-container button:not(:disabled)') ?? []);\n }\n\n private resolveText(textObj: ResolvableText | undefined): string {\n if (!textObj) return '';\n return isTextWithKey(textObj) ? (this.i18n?.translate(textObj.key) ?? textObj.key) : textObj;\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"!!errorMessage\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\"\n [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\"\n [disabled]=\"isDisabled() || loading()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? inputId() + '-options' : null\">\n\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\">\n {{ resolvedLabel() }}\n @if (isFieldRequired()) { <span class=\"bx-field-required\">*</span> }\n </span>\n }\n\n <span class=\"bx-select-value\" [attr.title]=\"selectedOptionLabel() || resolvedPlaceholder()\" [class.is-placeholder]=\"internalValue() === null\">\n @if (internalValue() === null && isFloating()) {\n {{ resolvedPlaceholder() }}\n } @else {\n {{ selectedOptionLabel() }}\n }\n </span>\n </div>\n\n <bx-icon class=\"bx-select-caret\" name=\"chevron-down\" size=\"16\"></bx-icon>\n </button>\n\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\"\n [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n\n <div class=\"bx-select-panel\" data-bx-surface=\"solid\" role=\"listbox\" tabindex=\"0\" [attr.aria-label]=\"resolvedLabel()\" [id]=\"inputId() + '-options'\" (keydown)=\"onPanelKey($event)\">\n\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [placeholder]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\">\n </bx-search-input>\n </div>\n }\n\n <div class=\"bx-select-menu-container\">\n @for (option of filteredOptions(); track option.value) {\n\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" [attr.aria-selected]=\"internalValue() === option.value\" [disabled]=\"option.disabled ?? false\" (click)=\"selectOption(option)\">\n <div class=\"bx-select-item-inner\">\n <div class=\"bx-select-check-placeholder\">\n @if (internalValue() === option.value) {\n <bx-icon name=\"check\" size=\"16\"></bx-icon>\n }\n </div>\n <span [title]=\"option.resolvedStr\">{{ option.resolvedStr }}</span>\n </div>\n </button>\n\n } @empty {\n <div class=\"bx-select-empty\">\n <span class=\"bx-empty-text\">{{ resolvedEmptyMessage() }}</span>\n </div>\n }\n </div>\n\n </div>\n </ng-template>\n\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\n\n@Component({\n selector: 'bx-slide-toggle',\n standalone: true,\n imports: [BxSurfaceDirective, CommonModule, FormField],\n templateUrl: './slide-toggle.html',\n changeDetection: ChangeDetectionStrategy.Eager,\n styleUrl: './slide-toggle.scss'\n})\nexport class SlideToggle extends BxBaseControl<boolean> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n\n protected readonly inputId = computed(() => `bx-slide-toggle-${uuidv4()}`);\n\n protected readonly resolvedLabel = computed(() => {\n this.i18n?.version?.();\n const l = this.label();\n if (!l) return undefined;\n return isTextWithKey(l) ? (this.i18n?.translate(l.key) ?? l.key) : l;\n });\n\n protected onToggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n this.updateValue(target.checked);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [inline]=\"true\" [tooltip]=\"tooltip()\" [error]=\"errorMessage\" [loading]=\"loading()\" [forId]=\"inputId()\">\n\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"isDisabled()\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [disabled]=\"isDisabled()\" [checked]=\"internalValue() === true\"\n (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n\n <div class=\"bx-slide-toggle-track\" bxSurface [bxSurfaceEmission]=\"errorMessage ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\" [class.is-checked]=\"internalValue() === true\" [class.is-invalid]=\"!!errorMessage\">\n <div class=\"bx-slide-toggle-thumb\"></div>\n </div>\n\n @if (resolvedLabel() || tooltip()) {\n <span class=\"bx-inline-label\">\n {{ resolvedLabel() }}\n @if (required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n\n\n </label>\n\n</bx-form-field>","import { afterEveryRender, afterNextRender, DestroyRef, Directive, ElementRef, HostListener, inject, NgZone } from '@angular/core';\nimport { observeGlassLighting, refreshGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport { ThemingService } from '@filip.mazev/blocks/core';\n\n/** Glass styling for a native range, including reactive forms and programmatic values. */\n@Directive({ selector: 'input[type=range][bxSlider]', host: { class: 'bx-slider' } })\nexport class SliderDirective {\n private readonly element = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private readonly theme = inject(ThemingService);\n private shell?: HTMLSpanElement;\n private thumb?: HTMLSpanElement;\n\n constructor() {\n afterEveryRender(() => this.sync());\n const zone = inject(NgZone);\n const destroy = inject(DestroyRef);\n afterNextRender(() => {\n const input = this.element.nativeElement;\n const shell = input.ownerDocument.createElement('span');\n shell.className = 'bx-slider-shell';\n const thumb = input.ownerDocument.createElement('span');\n thumb.className = 'bx-slider-thumb';\n thumb.setAttribute('aria-hidden', 'true');\n input.before(shell);\n shell.append(input, thumb);\n this.shell = shell;\n this.thumb = thumb;\n this.sync();\n const place = () => {\n shell.style.setProperty('--bx-slider-center-y', `${input.offsetTop + input.offsetHeight / 2}px`);\n shell.style.setProperty('--bx-slider-track-start', `${input.offsetLeft}px`);\n shell.style.setProperty('--bx-slider-track-width', `${input.offsetWidth}px`);\n refreshGlassLighting(thumb);\n };\n const resize = new ResizeObserver(place);\n zone.runOutsideAngular(() => {\n resize.observe(input);\n resize.observe(shell);\n place();\n });\n const stop = zone.runOutsideAngular(() =>\n observeGlassLighting(\n thumb,\n (light) => {\n const reflected = light.reflectionStrength > light.strength;\n const strength = reflected ? light.reflectionStrength : light.strength;\n if (strength <= 0.04) {\n thumb.style.removeProperty('--bx-slider-light-color');\n thumb.style.removeProperty('--bx-slider-light-strength');\n } else {\n thumb.style.setProperty('--bx-slider-light-color', reflected ? light.reflection : light.color);\n thumb.style.setProperty('--bx-slider-light-strength', String(strength));\n }\n thumb.style.setProperty('--bx-slider-light-x', `${reflected ? light.reflectionX : light.x}%`);\n thumb.style.setProperty('--bx-slider-light-y', `${reflected ? light.reflectionY : light.y}%`);\n },\n input\n )\n );\n destroy.onDestroy(() => {\n resize.disconnect();\n stop();\n shell.replaceWith(input);\n this.shell = this.thumb = undefined;\n });\n });\n }\n\n @HostListener('input')\n protected sync(): void {\n const input = this.element.nativeElement;\n const min = input.min === '' ? 0 : Number(input.min);\n const max = input.max === '' ? 100 : Number(input.max);\n const progress = max > min ? Math.max(0, Math.min(100, ((input.valueAsNumber - min) / (max - min)) * 100)) : 0;\n const value = `${Number.isFinite(progress) ? progress : 0}%`;\n if (input.style.getPropertyValue('--bx-slider-progress') !== value) input.style.setProperty('--bx-slider-progress', value);\n if (this.shell) {\n const position = String((input.matches(':dir(rtl)') ? 100 - (Number.isFinite(progress) ? progress : 0) : Number.isFinite(progress) ? progress : 0) / 100);\n if (this.shell.style.getPropertyValue('--bx-slider-position') !== position) {\n this.shell.style.setProperty('--bx-slider-position', position);\n if (this.thumb) refreshGlassLighting(this.thumb);\n }\n }\n }\n}\n"],"mappings":"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"}
@@ -711,7 +711,7 @@ var Tabs = class Tabs {
711
711
  }],
712
712
  ngImport: i0,
713
713
  template: "<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",
714
- styles: [":host{display:flex;flex-direction:column;min-width:0;min-height:0;box-sizing:border-box;width:100%;max-width:100%;gap:var(--bx-tabs-panel-gap, 1.5rem)}.bx-tab-header{--bx-glass-surface: var(--bx-bg-surface-alt);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;--bx-glass-opacity: calc(.1 + .25 * var(--bx-glassiness, .5));--bx-glass-radius: .5rem;display:flex;align-self:flex-start;flex:none;box-sizing:border-box;width:fit-content;max-width:100%;padding:.25rem;border:1px solid var(--bx-border-default);border-radius:.5rem}.bx-tab-list{display:flex;flex:1 1 auto;gap:.25rem;min-width:0;padding:1px;overflow:auto hidden;scrollbar-width:thin}.bx-tab-trigger{--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-tab-text, var(--bx-text-secondary));--bx-glass-edge: transparent;--bx-glass-radius: .25rem;--bx-glass-opacity: 0;--bx-glass-decoration-opacity: 0;--bx-glass-rim-visibility: 0;--bx-glass-shadow: none;display:inline-flex;align-items:center;gap:.5rem;flex:none;padding:.5rem .75rem;border:1px solid transparent;border-radius:.25rem;font:inherit;font-size:.875rem;white-space:nowrap;cursor:pointer}.bx-tab-trigger:hover:not(:disabled,.is-selected){--bx-glass-text: var(--bx-tab-text, var(--bx-text-primary));--bx-glass-opacity: .15}.bx-tab-trigger.is-selected{--bx-glass-surface: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, var(--bx-bg-surface) );--bx-glass-text: var(--bx-tab-selected-text, var(--bx-text-brand));--bx-glass-edge: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, transparent );--bx-glass-opacity: .45;--bx-glass-decoration-opacity: .5;--bx-glass-rim-visibility: .65;--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1)}.bx-tab-trigger:disabled{opacity:.4;cursor:not-allowed}.bx-tab-trigger:focus-visible{outline:2px solid var(--bx-tab-highlight, var(--bx-border-brand));outline-offset:-2px}.bx-tab-panels{flex:1 1 auto;min-width:0;min-height:0;max-height:var(--bx-tabs-max-panel-height, none);overflow:auto;overscroll-behavior:contain}.bx-tab-panel{min-width:0}.bx-tab-panel:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}:host(.bx-tabs-animated) .bx-tab-trigger{transition:background-color .1s ease-in-out,color .1s ease-in-out,box-shadow .1s ease-in-out}:host(.bx-tabs-underline){gap:var(--bx-tabs-panel-gap, 0)}:host(.bx-tabs-underline) .bx-tab-header{align-self:stretch;width:auto;padding:0;border:0;border-bottom:1px solid var(--bx-border-default);border-radius:0}:host(.bx-tabs-underline) .bx-tab-list{gap:0}:host(.bx-tabs-underline) .bx-tab-trigger{padding:.75rem 1rem;border-inline-end:1px solid var(--bx-border-default);border-radius:0;font-size:.8rem}:host(.bx-tabs-underline) .bx-tab-trigger.is-selected{--bx-glass-shadow: inset 0 -2px 0 var(--bx-tab-highlight, var(--bx-border-brand))}@media(forced-colors:active){.bx-tab-trigger.is-selected{outline:2px solid Highlight;outline-offset:-2px}}\n"],
714
+ styles: [":host{display:flex;flex-direction:column;min-width:0;min-height:0;box-sizing:border-box;width:100%;max-width:100%;gap:var(--bx-tabs-panel-gap, 1.5rem)}.bx-tab-header{--bx-glass-surface: var(--bx-bg-surface-alt);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;--bx-glass-opacity: calc(.1 + .25 * var(--bx-glassiness, .5));--bx-glass-radius: .5rem;display:flex;align-self:flex-start;flex:none;box-sizing:border-box;width:fit-content;max-width:100%;padding:.25rem;border:1px solid var(--bx-border-default);border-radius:.5rem}.bx-tab-list{display:flex;flex:1 1 auto;gap:.25rem;min-width:0;padding:1px;overflow:auto hidden;overscroll-behavior-x:contain;scrollbar-width:thin}.bx-tab-trigger{--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-tab-text, var(--bx-text-secondary));--bx-glass-edge: transparent;--bx-glass-radius: .25rem;--bx-glass-opacity: 0;--bx-glass-decoration-opacity: 0;--bx-glass-rim-visibility: 0;--bx-glass-shadow: none;display:inline-flex;align-items:center;gap:.5rem;flex:none;padding:.5rem .75rem;border:1px solid transparent;border-radius:.25rem;font:inherit;font-size:.875rem;white-space:nowrap;cursor:pointer}.bx-tab-trigger:hover:not(:disabled,.is-selected){--bx-glass-text: var(--bx-tab-text, var(--bx-text-primary));--bx-glass-opacity: .15}.bx-tab-trigger.is-selected{--bx-glass-surface: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, var(--bx-bg-surface) );--bx-glass-text: var(--bx-tab-selected-text, var(--bx-text-brand));--bx-glass-edge: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, transparent );--bx-glass-opacity: .45;--bx-glass-decoration-opacity: .5;--bx-glass-rim-visibility: .65;--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1)}.bx-tab-trigger:disabled{opacity:.4;cursor:not-allowed}.bx-tab-trigger:focus-visible{outline:2px solid var(--bx-tab-highlight, var(--bx-border-brand));outline-offset:-2px}.bx-tab-panels{flex:1 1 auto;min-width:0;min-height:0;max-height:var(--bx-tabs-max-panel-height, none);overflow:var(--bx-tabs-panel-overflow, visible)}.bx-tab-panel{min-width:0}.bx-tab-panel:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}:host(.bx-tabs-animated) .bx-tab-trigger{transition:background-color .1s ease-in-out,color .1s ease-in-out,box-shadow .1s ease-in-out}:host(.bx-tabs-underline){gap:var(--bx-tabs-panel-gap, 0)}:host(.bx-tabs-underline) .bx-tab-header{align-self:stretch;width:auto;padding:0;border:0;border-bottom:1px solid var(--bx-border-default);border-radius:0}:host(.bx-tabs-underline) .bx-tab-list{gap:0}:host(.bx-tabs-underline) .bx-tab-trigger{padding:.75rem 1rem;border-inline-end:1px solid var(--bx-border-default);border-radius:0;font-size:.8rem}:host(.bx-tabs-underline) .bx-tab-trigger.is-selected{--bx-glass-shadow: inset 0 -2px 0 var(--bx-tab-highlight, var(--bx-border-brand))}@media(forced-colors:active){.bx-tab-trigger.is-selected{outline:2px solid Highlight;outline-offset:-2px}}\n"],
715
715
  dependencies: [
716
716
  {
717
717
  kind: "directive",
@@ -775,7 +775,7 @@ i0.ɵɵngDeclareClassMetadata({
775
775
  "[class.bx-tabs-animated]": "hasRendered() && !a11y.isReducedMotion()"
776
776
  },
777
777
  template: "<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",
778
- styles: [":host{display:flex;flex-direction:column;min-width:0;min-height:0;box-sizing:border-box;width:100%;max-width:100%;gap:var(--bx-tabs-panel-gap, 1.5rem)}.bx-tab-header{--bx-glass-surface: var(--bx-bg-surface-alt);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;--bx-glass-opacity: calc(.1 + .25 * var(--bx-glassiness, .5));--bx-glass-radius: .5rem;display:flex;align-self:flex-start;flex:none;box-sizing:border-box;width:fit-content;max-width:100%;padding:.25rem;border:1px solid var(--bx-border-default);border-radius:.5rem}.bx-tab-list{display:flex;flex:1 1 auto;gap:.25rem;min-width:0;padding:1px;overflow:auto hidden;scrollbar-width:thin}.bx-tab-trigger{--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-tab-text, var(--bx-text-secondary));--bx-glass-edge: transparent;--bx-glass-radius: .25rem;--bx-glass-opacity: 0;--bx-glass-decoration-opacity: 0;--bx-glass-rim-visibility: 0;--bx-glass-shadow: none;display:inline-flex;align-items:center;gap:.5rem;flex:none;padding:.5rem .75rem;border:1px solid transparent;border-radius:.25rem;font:inherit;font-size:.875rem;white-space:nowrap;cursor:pointer}.bx-tab-trigger:hover:not(:disabled,.is-selected){--bx-glass-text: var(--bx-tab-text, var(--bx-text-primary));--bx-glass-opacity: .15}.bx-tab-trigger.is-selected{--bx-glass-surface: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, var(--bx-bg-surface) );--bx-glass-text: var(--bx-tab-selected-text, var(--bx-text-brand));--bx-glass-edge: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, transparent );--bx-glass-opacity: .45;--bx-glass-decoration-opacity: .5;--bx-glass-rim-visibility: .65;--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1)}.bx-tab-trigger:disabled{opacity:.4;cursor:not-allowed}.bx-tab-trigger:focus-visible{outline:2px solid var(--bx-tab-highlight, var(--bx-border-brand));outline-offset:-2px}.bx-tab-panels{flex:1 1 auto;min-width:0;min-height:0;max-height:var(--bx-tabs-max-panel-height, none);overflow:auto;overscroll-behavior:contain}.bx-tab-panel{min-width:0}.bx-tab-panel:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}:host(.bx-tabs-animated) .bx-tab-trigger{transition:background-color .1s ease-in-out,color .1s ease-in-out,box-shadow .1s ease-in-out}:host(.bx-tabs-underline){gap:var(--bx-tabs-panel-gap, 0)}:host(.bx-tabs-underline) .bx-tab-header{align-self:stretch;width:auto;padding:0;border:0;border-bottom:1px solid var(--bx-border-default);border-radius:0}:host(.bx-tabs-underline) .bx-tab-list{gap:0}:host(.bx-tabs-underline) .bx-tab-trigger{padding:.75rem 1rem;border-inline-end:1px solid var(--bx-border-default);border-radius:0;font-size:.8rem}:host(.bx-tabs-underline) .bx-tab-trigger.is-selected{--bx-glass-shadow: inset 0 -2px 0 var(--bx-tab-highlight, var(--bx-border-brand))}@media(forced-colors:active){.bx-tab-trigger.is-selected{outline:2px solid Highlight;outline-offset:-2px}}\n"]
778
+ styles: [":host{display:flex;flex-direction:column;min-width:0;min-height:0;box-sizing:border-box;width:100%;max-width:100%;gap:var(--bx-tabs-panel-gap, 1.5rem)}.bx-tab-header{--bx-glass-surface: var(--bx-bg-surface-alt);--bx-glass-edge: var(--bx-border-default);--bx-glass-shadow: none;--bx-glass-opacity: calc(.1 + .25 * var(--bx-glassiness, .5));--bx-glass-radius: .5rem;display:flex;align-self:flex-start;flex:none;box-sizing:border-box;width:fit-content;max-width:100%;padding:.25rem;border:1px solid var(--bx-border-default);border-radius:.5rem}.bx-tab-list{display:flex;flex:1 1 auto;gap:.25rem;min-width:0;padding:1px;overflow:auto hidden;overscroll-behavior-x:contain;scrollbar-width:thin}.bx-tab-trigger{--bx-glass-surface: var(--bx-bg-surface);--bx-glass-text: var(--bx-tab-text, var(--bx-text-secondary));--bx-glass-edge: transparent;--bx-glass-radius: .25rem;--bx-glass-opacity: 0;--bx-glass-decoration-opacity: 0;--bx-glass-rim-visibility: 0;--bx-glass-shadow: none;display:inline-flex;align-items:center;gap:.5rem;flex:none;padding:.5rem .75rem;border:1px solid transparent;border-radius:.25rem;font:inherit;font-size:.875rem;white-space:nowrap;cursor:pointer}.bx-tab-trigger:hover:not(:disabled,.is-selected){--bx-glass-text: var(--bx-tab-text, var(--bx-text-primary));--bx-glass-opacity: .15}.bx-tab-trigger.is-selected{--bx-glass-surface: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, var(--bx-bg-surface) );--bx-glass-text: var(--bx-tab-selected-text, var(--bx-text-brand));--bx-glass-edge: color-mix( in srgb, var(--bx-tab-highlight, var(--bx-primary)) 35%, transparent );--bx-glass-opacity: .45;--bx-glass-decoration-opacity: .5;--bx-glass-rim-visibility: .65;--bx-glass-shadow: 0 2px 4px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1)}.bx-tab-trigger:disabled{opacity:.4;cursor:not-allowed}.bx-tab-trigger:focus-visible{outline:2px solid var(--bx-tab-highlight, var(--bx-border-brand));outline-offset:-2px}.bx-tab-panels{flex:1 1 auto;min-width:0;min-height:0;max-height:var(--bx-tabs-max-panel-height, none);overflow:var(--bx-tabs-panel-overflow, visible)}.bx-tab-panel{min-width:0}.bx-tab-panel:focus-visible{outline:2px solid var(--bx-border-brand);outline-offset:-2px}:host(.bx-tabs-animated) .bx-tab-trigger{transition:background-color .1s ease-in-out,color .1s ease-in-out,box-shadow .1s ease-in-out}:host(.bx-tabs-underline){gap:var(--bx-tabs-panel-gap, 0)}:host(.bx-tabs-underline) .bx-tab-header{align-self:stretch;width:auto;padding:0;border:0;border-bottom:1px solid var(--bx-border-default);border-radius:0}:host(.bx-tabs-underline) .bx-tab-list{gap:0}:host(.bx-tabs-underline) .bx-tab-trigger{padding:.75rem 1rem;border-inline-end:1px solid var(--bx-border-default);border-radius:0;font-size:.8rem}:host(.bx-tabs-underline) .bx-tab-trigger.is-selected{--bx-glass-shadow: inset 0 -2px 0 var(--bx-tab-highlight, var(--bx-border-brand))}@media(forced-colors:active){.bx-tab-trigger.is-selected{outline:2px solid Highlight;outline-offset:-2px}}\n"]
779
779
  }]
780
780
  }],
781
781
  ctorParameters: () => [],