@filip.mazev/blocks 1.4.15 → 1.4.16

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 [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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"}
1
+ {"version":3,"file":"filip.mazev-blocks-forms.mjs","names":[],"sources":["../../../projects/blocks/forms/components/button/directives/button-icon.directive.ts","../../../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/directives/hint/hint.ts","../../../projects/blocks/forms/components/shared/tokens/form-field-control.token.ts","../../../projects/blocks/forms/components/form-field/form-field.ts","../../../projects/blocks/forms/components/form-field/form-field.html","../../../projects/blocks/forms/components/shared/constants/validation.constants.ts","../../../projects/blocks/forms/components/shared/services/form-settings.service.ts","../../../projects/blocks/forms/components/shared/helpers/validation.helpers.ts","../../../projects/blocks/forms/components/shared/classes/bx-control-state.ts","../../../projects/blocks/forms/components/shared/classes/bx-checked-control.ts","../../../projects/blocks/forms/components/checkbox/checkbox.ts","../../../projects/blocks/forms/components/checkbox/checkbox.html","../../../projects/blocks/forms/components/shared/classes/bx-value-control.ts","../../../projects/blocks/forms/components/input-field/helpers/numeric-constraint.helpers.ts","../../../projects/blocks/forms/components/input-field/input-field.ts","../../../projects/blocks/forms/components/input-field/input-field.html","../../../projects/blocks/forms/components/radio-button/services/radio-registry.service.ts","../../../projects/blocks/forms/components/radio-group/tokens/radio-group.token.ts","../../../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/shared/load-more/load-more-footer.ts","../../../projects/blocks/forms/components/shared/load-more/load-more-footer.html","../../../projects/blocks/forms/directives/load-more.directive.ts","../../../projects/blocks/forms/components/select/helpers/tag-limit.helpers.ts","../../../projects/blocks/forms/components/select/classes/bx-select-base.ts","../../../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","../../../projects/blocks/forms/components/radio-group/radio-group.ts","../../../projects/blocks/forms/components/radio-group/radio-group.html","../../../projects/blocks/forms/directives/prefix.directive.ts","../../../projects/blocks/forms/directives/suffix.directive.ts","../../../projects/blocks/forms/components/multi-select/helpers/summary-threshold.helpers.ts","../../../projects/blocks/forms/components/multi-select/multi-select.ts","../../../projects/blocks/forms/components/multi-select/multi-select.html","../../../projects/blocks/forms/directives/native-control.directive.ts","../../../projects/blocks/forms/components/range-slider/range-slider.ts","../../../projects/blocks/forms/components/range-slider/range-slider.html"],"sourcesContent":["import { Directive, ElementRef, inject } from '@angular/core';\n\n/** Marks a custom projected action icon for replacement while the button is loading. */\n@Directive({ selector: '[bxButtonIcon]' })\nexport class ButtonIconDirective {\n public readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n}\n","import { injectComponentSurface } from '@filip.mazev/blocks/effects';\nimport {\n afterRenderEffect,\n Component,\n input,\n booleanAttribute,\n HostListener,\n inject,\n computed,\n ChangeDetectionStrategy,\n contentChild,\n ElementRef,\n signal\n} from '@angular/core';\nimport { BxA11yService } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { LoadingSpinner } from '@filip.mazev/blocks/primitives';\nimport { ButtonColor, ButtonVariant } from '../../types/form.types';\nimport { ButtonIconDirective } from './directives/button-icon.directive';\n\n@Component({\n selector: 'bx-button, button[bx-button], a[bx-button]',\n standalone: true,\n imports: [LoadingSpinner],\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]': 'isDisabled() ? true : null',\n '[attr.aria-disabled]': 'isDisabled()',\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\n '[attr.tabindex]': 'isDisabled() ? \"-1\" : null'\n }\n})\nexport class Button {\n private readonly appearance = injectComponentSurface(\n () => ({\n interactive: this.variant() === 'text' || !this.interactive() || this.isDisabled() ? false : undefined,\n emission:\n this.variant() !== 'text' && this.interactive() && !this.isDisabled()\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 () => this.surfaceEffects()\n );\n\n private readonly a11y = inject(BxA11yService);\n private readonly projectedIcon = contentChild(Icon);\n private readonly iconElement = contentChild(Icon, { read: ElementRef<HTMLElement> });\n private readonly customIcon = contentChild(ButtonIconDirective);\n protected readonly spinnerSize = signal(20);\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 public readonly loading = input<boolean, unknown>(false, { transform: booleanAttribute });\n public readonly isDisabled = computed(() => this.disabled() || this.loading());\n\n public readonly interactive = input<boolean, unknown>(true, { transform: booleanAttribute });\n /** Enable runtime glass lighting and deformation; defaults to true. Disable for dense collections while retaining button styling and semantics. */\n public readonly surfaceEffects = input<boolean, unknown>(true, { transform: booleanAttribute });\n\n constructor() {\n afterRenderEffect((onCleanup) => {\n const icon = this.customIcon()?.element.nativeElement ?? this.iconElement()?.nativeElement;\n const size = Number(this.projectedIcon()?.size());\n // Keep the spinner in CSS pixels; bounding rectangles include page zoom and surface transforms.\n const measured = icon?.offsetWidth;\n\n this.spinnerSize.set(measured || (Number.isFinite(size) && size > 0 ? size : 20));\n\n if (!icon || !this.loading()) return;\n\n const display = icon.style.display;\n icon.style.display = 'none';\n onCleanup(() => {\n icon.style.display = display;\n });\n });\n }\n\n @HostListener('click', ['$event'])\n protected onClick(event: Event) {\n if (this.isDisabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","<span class=\"bx-btn-content-wrapper\">\n @if (loading()) {\n <bx-loading-spinner [size]=\"spinnerSize()\" [decorative]=\"true\" />\n }\n <ng-content></ng-content>\n</span>\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'bx-error',\n standalone: true,\n template: '<ng-content />',\n host: { 'aria-live': 'polite' }\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 { Component, input } from '@angular/core';\nimport { HintAlignment } from '../../components/shared/types/validation.types';\n\n@Component({ selector: 'bx-hint', template: '<ng-content />', host: { '[style.margin-inline-start]': 'align() === \"end\" ? \"auto\" : null' } })\nexport class BxHint {\n public readonly align = input<HintAlignment>('start');\n}\n","import { InjectionToken } from '@angular/core';\nimport { IFormFieldControl } from '../interfaces/iform-field-control.interface';\n\nexport const BX_FORM_FIELD_CONTROL = new InjectionToken<IFormFieldControl>('BX_FORM_FIELD_CONTROL');\n","import { afterRenderEffect, Component, computed, contentChild, ElementRef, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { BX_I18N, ResolvableText, BxA11yService, resolveText, uuidv4 } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { BxGlassLightingService } from '@filip.mazev/blocks/effects';\nimport { LoadingSpinner, TooltipDirective } from '@filip.mazev/blocks/primitives';\nimport { BxError } from '../../directives/bx-error.directive';\nimport { BxHint } from '../../directives/hint/hint';\nimport { IFormFieldControl } from '../shared/interfaces/iform-field-control.interface';\nimport { BX_FORM_FIELD_CONTROL } from '../shared/tokens/form-field-control.token';\nimport { SubscriptSizing } from '../shared/types/validation.types';\n\n@Component({\n selector: 'bx-form-field',\n imports: [Icon, TooltipDirective, LoadingSpinner],\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 private readonly element = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly lighting = inject(BxGlassLightingService);\n private readonly projectedControl = contentChild(BX_FORM_FIELD_CONTROL);\n private readonly generatedId = `bx-field-${uuidv4()}`;\n protected readonly projectedError = contentChild(BxError);\n protected readonly projectedHint = contentChild(BxHint);\n protected readonly activeControl = computed(() => this.control() ?? this.projectedControl());\n protected readonly controlId = computed(() => this.forId() || this.activeControl()?.controlId() || this.generatedId);\n protected readonly resolvedLabel = computed(() => resolveText(this.label() ?? (this.inline() ? undefined : this.activeControl()?.label()), this.i18n));\n protected readonly resolvedError = computed(() => resolveText(this.error(), this.i18n));\n protected readonly resolvedHint = computed(() => resolveText(this.hint(), this.i18n));\n protected readonly resolvedHintEnd = computed(() => resolveText(this.hintEnd(), this.i18n));\n protected readonly resolvedTooltipLabel = computed(() => resolveText(this.tooltipLabel(), this.i18n));\n protected readonly showErrors = computed(() => this.activeControl()?.showError() ?? (!!this.error() || !!this.projectedError() || this.errors().length > 0));\n protected readonly messages = computed(() => (this.resolvedError() ? [this.resolvedError()] : (this.activeControl()?.errorTexts() ?? this.errors())));\n protected readonly isRequired = computed(() => this.required() || this.activeControl()?.required());\n protected readonly isLoading = computed(() => this.loading() || this.activeControl()?.pending());\n protected readonly hideSubscript = computed(\n () => this.subscriptSizing() === 'dynamic' && !this.showErrors() && !this.resolvedHint() && !this.resolvedHintEnd() && !this.projectedHint()\n );\n\n public readonly inline = input(false);\n public readonly control = input<IFormFieldControl | undefined>(undefined);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly tooltipLabel = input<ResolvableText>('More information');\n public readonly error = input<ResolvableText | undefined>(undefined);\n public readonly errors = input<readonly string[]>([]);\n public readonly hint = input<ResolvableText | undefined>(undefined);\n public readonly hintEnd = input<ResolvableText | undefined>(undefined);\n public readonly required = input(false);\n public readonly hideRequiredMarker = input(false);\n public readonly loading = input(false);\n public readonly showLoadingIndicator = input(true);\n public readonly forId = input('');\n public readonly subscriptSizing = input<SubscriptSizing>('fixed');\n public readonly isAnimated = computed(() => !this.a11y.isReducedMotion());\n\n constructor() {\n afterRenderEffect((onCleanup) => {\n this.activeControl()?.setDescribedByIds?.([`${this.controlId()}-description`]);\n const control = this.element.querySelector<HTMLElement>('input,textarea,select,button[role=\"combobox\"]');\n\n if (control) {\n const ids = new Set((control.getAttribute('aria-describedby') ?? '').split(' ').filter(Boolean));\n ids.add(`${this.controlId()}-description`);\n control.setAttribute('aria-describedby', [...ids].join(' '));\n control.setAttribute('aria-invalid', String(this.showErrors()));\n control.setAttribute('aria-required', String(!!this.isRequired()));\n }\n\n if (!this.showErrors()) return;\n\n const parent = this.element.parentElement;\n const root = this.element.closest<HTMLElement>('form, fieldset') ?? parent;\n const surface = this.element.querySelector<HTMLElement>('.bx-field-control > [data-bx-surface]');\n\n if (!root || !surface) return;\n\n const light = this.lighting.register(root, {\n element: surface,\n edge: 'bottom',\n offsetX: 0.5,\n offsetY: 1,\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","<div class=\"bx-field-wrapper\" [class.is-invalid]=\"showErrors()\" [class.dynamic-subscript]=\"subscriptSizing() === 'dynamic'\" [attr.data-bx-field-invalid]=\"showErrors()\">\n @if (resolvedLabel()) {\n <div class=\"bx-field-header\">\n <label class=\"bx-field-label\" [attr.for]=\"controlId()\">{{ resolvedLabel() }}\n @if (isRequired() && !hideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </label>\n </div>\n }\n <div class=\"bx-field-control\" [class.bx-field-control-inline]=\"inline()\">\n <ng-content select=\"[bxPrefix]\" />\n <ng-content />\n <ng-content select=\"[bxSuffix]\" />\n @if (showLoadingIndicator() && isLoading()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @if (tooltip()) {\n <button type=\"button\" class=\"bx-field-tooltip-trigger\" [bxTooltip]=\"tooltip()!\" bxTooltipTouch=\"tap\" placement=\"top\" [attr.aria-label]=\"resolvedTooltipLabel()\">\n <bx-icon name=\"help-circle\" size=\"16\" />\n </button>\n }\n </div>\n <div class=\"bx-field-subscript\" [hidden]=\"hideSubscript()\" [id]=\"controlId() + '-description'\">\n <div class=\"bx-field-error-projected\" [hidden]=\"!showErrors()\"><ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /></div>\n @if (showErrors() && !projectedError()) {\n <div class=\"bx-field-error\" [class.bx-animated]=\"isAnimated()\" aria-live=\"polite\">\n @if (messages().length) { <bx-icon name=\"alert-circle\" size=\"16\" /> }\n <div>@for (message of messages(); track $index) { <div class=\"bx-field-error-text\">{{ message }}</div> }</div>\n </div>\n }\n <div class=\"bx-field-hints\" [hidden]=\"showErrors()\">\n <span>{{ resolvedHint() }}</span><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" /><span class=\"bx-field-hint-end\">{{ resolvedHintEnd() }}</span>\n </div>\n </div>\n</div>\n","import { IFormFieldDefaults } from '../interfaces/iform-field-defaults.interface';\n\nexport const DEFAULT_FORM_FIELD_OPTIONS: IFormFieldDefaults = {\n errorPolicy: 'touched',\n errorMode: 'first',\n errorMessages: {\n required: 'This field is required.',\n email: 'Enter a valid email address.',\n minLength: ({ params }) => `Enter at least ${params['minLength'] ?? params['requiredLength']} characters.`,\n maxLength: ({ params }) => `Enter no more than ${params['maxLength'] ?? params['requiredLength']} characters.`,\n min: ({ params }) => `Enter a value of at least ${params['min']}.`,\n max: ({ params }) => `Enter a value of no more than ${params['max']}.`,\n pattern: 'Enter a value in the required format.',\n parse: 'Enter a valid value.',\n invalid: 'Invalid value.'\n },\n appearance: 'fill',\n floatLabel: 'auto',\n hideRequiredMarker: false,\n subscriptSizing: 'fixed',\n tooltipOnTruncate: true\n};\n\nexport const VALIDATION_KIND_ALIASES: Readonly<Record<string, string>> = { minlength: 'minLength', maxlength: 'maxLength' };\n","import { Injectable, signal } from '@angular/core';\nimport { DEFAULT_FORM_FIELD_OPTIONS } from '../constants/validation.constants';\nimport { IFormFieldDefaults } from '../interfaces/iform-field-defaults.interface';\n\n@Injectable({ providedIn: 'root' })\nexport class FormSettingsService {\n private readonly state = signal<IFormFieldDefaults>({ ...DEFAULT_FORM_FIELD_OPTIONS });\n public readonly settings = this.state.asReadonly();\n\n /** Updates only supplied defaults. Message overrides merge with existing messages. */\n public update(options: Partial<IFormFieldDefaults>): void {\n this.state.update((current) => ({ ...current, ...options, errorMessages: { ...current.errorMessages, ...options.errorMessages } }));\n }\n}\n","import { IBxI18nAdapter, resolveText } from '@filip.mazev/blocks/core';\nimport { ValidationError } from '@angular/forms/signals';\nimport { VALIDATION_KIND_ALIASES } from '../constants/validation.constants';\nimport { ValidationMessages } from '../types/validation.types';\n\n/** Resolve schema messages and legacy error payloads without losing validator context. */\nexport function resolveValidationMessage(\n error: ValidationError.WithOptionalFieldTree,\n overrides: ValidationMessages,\n defaults: ValidationMessages,\n adapter: IBxI18nAdapter | null\n): string {\n const kind = VALIDATION_KIND_ALIASES[error.kind] ?? error.kind;\n const legacyContext: unknown = 'context' in error ? error.context : undefined;\n const params: Record<string, unknown> = legacyContext !== null && typeof legacyContext === 'object' ? { ...legacyContext } : { ...error };\n const override = overrides[error.kind] ?? overrides[kind];\n const suppliedMessage =\n error.message ?? (typeof legacyContext === 'string' ? legacyContext : typeof params['message'] === 'string' ? params['message'] : undefined);\n const message = override ?? suppliedMessage ?? defaults[error.kind] ?? defaults[kind] ?? defaults['invalid'] ?? 'Invalid value.';\n\n return resolveText(typeof message === 'function' ? message({ kind, error, params }) : message, adapter, params);\n}\n","import { afterNextRender, booleanAttribute, computed, DestroyRef, Directive, ElementRef, inject, input, OnInit, output, signal } from '@angular/core';\nimport { FormGroupDirective, FormResetEvent, NgControl, NgForm, Validators } from '@angular/forms';\nimport { DisabledReason, ValidationError, WithOptionalFieldTree } from '@angular/forms/signals';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BX_I18N, ResolvableText, resolveText, uuidv4 } from '@filip.mazev/blocks/core';\nimport { FormSettingsService } from '../services/form-settings.service';\nimport { resolveValidationMessage } from '../helpers/validation.helpers';\nimport { ErrorDisplayMode, ErrorDisplayPolicy, FloatLabel, FormFieldAppearance, SubscriptSizing, ValidationMessages } from '../types/validation.types';\nimport { IFormFieldControl } from '../interfaces/iform-field-control.interface';\n\n@Directive({\n host: {\n '[hidden]': 'hidden()',\n '[style.display]': 'hidden() ? \"none\" : null',\n '[class.bx-readonly]': 'isReadonly()',\n '[class.is-keyboard-focused]': 'keyboardFocused()',\n '(pointerdown)': 'onControlPointerDown()'\n }\n})\nexport abstract class BxControlState implements IFormFieldControl, OnInit {\n private readonly textAdapter = inject(BX_I18N, { optional: true });\n private readonly defaults = inject(FormSettingsService);\n private readonly generatedId = `bx-field-${uuidv4()}`;\n private readonly parentGroup = inject(FormGroupDirective, { optional: true, skipSelf: true });\n private readonly parentTemplate = inject(NgForm, { optional: true, skipSelf: true });\n private readonly submittedByParent = signal(false);\n private readonly extraDescriptions = signal<readonly string[]>([]);\n private readonly localTouched = signal(false);\n private readonly controlVersion = signal(0);\n private readonly destroyRef = inject(DestroyRef);\n private readonly focusMonitor = inject(FocusMonitor);\n protected readonly hostElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n protected readonly keyboardFocused = signal(false);\n public readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n public readonly id = input<string | undefined>(undefined);\n public readonly label = input<ResolvableText | undefined>(undefined);\n public readonly placeholder = input<ResolvableText | undefined>(undefined);\n public readonly tooltip = input<ResolvableText | undefined>(undefined);\n public readonly hint = input<ResolvableText | undefined>(undefined);\n public readonly hintEnd = input<ResolvableText | undefined>(undefined);\n public readonly error = input<ResolvableText | undefined>(undefined);\n public readonly ariaLabel = input<string | undefined>(undefined);\n public readonly ariaLabelledBy = input<string | undefined>(undefined);\n public readonly ariaDescribedBy = input<string | undefined>(undefined);\n public readonly dataTestId = input<string | undefined>(undefined);\n public readonly name = input<string>('');\n public readonly errors = input<readonly ValidationError.WithOptionalFieldTree[]>([]);\n public readonly invalid = input(false);\n public readonly pending = input(false);\n public readonly touched = input(false);\n public readonly dirty = input(false);\n public readonly disabled = input(false, { transform: booleanAttribute });\n public readonly readonly = input(false, { transform: booleanAttribute });\n public readonly readOnly = input(false, { transform: booleanAttribute });\n public readonly isReadonly = computed(() => this.readonly() || this.readOnly());\n public readonly hidden = input(false, { transform: booleanAttribute });\n public readonly required = input(false, { transform: booleanAttribute });\n public readonly loading = input(false, { transform: booleanAttribute });\n public readonly disabledReasons = input<readonly WithOptionalFieldTree<DisabledReason>[]>([]);\n public readonly submitted = input(false);\n public readonly errorMessages = input<ValidationMessages>({});\n public readonly errorPriority = input<readonly string[]>([]);\n public readonly errorPolicy = input<ErrorDisplayPolicy | undefined>(undefined);\n public readonly errorMode = input<ErrorDisplayMode | undefined>(undefined);\n public readonly appearance = input<FormFieldAppearance | undefined>(undefined);\n public readonly floatLabel = input<FloatLabel | undefined>(undefined);\n public readonly hideRequiredMarker = input<boolean | undefined>(undefined);\n public readonly subscriptSizing = input<SubscriptSizing | undefined>(undefined);\n /** Override automatic truncation tooltips while retaining ellipsis and measurement. Application default is true. */\n public readonly tooltipOnTruncate = input<boolean | undefined>(undefined);\n public readonly touch = output();\n\n public readonly controlId = computed(() => this.id() ?? this.generatedId);\n public readonly resolvedLabel = computed(() => resolveText(this.label(), this.textAdapter));\n public readonly resolvedPlaceholder = computed(() => resolveText(this.placeholder(), this.textAdapter));\n public readonly resolvedAppearance = computed(() => this.appearance() ?? this.defaults.settings().appearance);\n public readonly resolvedFloatLabel = computed(() => this.floatLabel() ?? this.defaults.settings().floatLabel);\n public readonly resolvedHideRequiredMarker = computed(() => this.hideRequiredMarker() ?? this.defaults.settings().hideRequiredMarker);\n public readonly resolvedSubscriptSizing = computed(() => this.subscriptSizing() ?? this.defaults.settings().subscriptSizing);\n public readonly resolvedTooltipOnTruncate = computed(() => this.tooltipOnTruncate() ?? this.defaults.settings().tooltipOnTruncate ?? true);\n public readonly describedBy = computed(() =>\n [...new Set([this.ariaDescribedBy(), `${this.controlId()}-description`, ...this.extraDescriptions()].filter(Boolean))].join(' ')\n );\n\n public readonly effectiveDisabled = computed(() => {\n this.controlVersion();\n\n return this.disabled() || this.ngControl?.disabled === true;\n });\n\n public readonly effectiveRequired = computed(() => {\n this.controlVersion();\n const control = this.ngControl?.control;\n\n return this.required() || !!control?.hasValidator?.(Validators.required) || !!control?.hasValidator?.(Validators.requiredTrue);\n });\n\n private readonly currentErrors = computed<readonly ValidationError.WithOptionalFieldTree[]>(() => {\n this.controlVersion();\n\n if (this.errors().length) return this.errors();\n\n const errors = this.ngControl?.errors;\n\n return errors ? Object.entries(errors).map(([kind, context]) => ({ kind, context })) : [];\n });\n\n public readonly showError = computed(() => {\n this.controlVersion();\n const state = {\n invalid: this.invalid() || this.currentErrors().length > 0 || !!this.error(),\n touched: this.ngControl?.touched ?? (this.touched() || this.localTouched()),\n dirty: this.ngControl?.dirty ?? this.dirty(),\n submitted: this.submitted() || this.submittedByParent(),\n disabled: this.effectiveDisabled(),\n pending: this.pending()\n };\n const policy = this.errorPolicy() ?? this.defaults.settings().errorPolicy;\n\n if (state.disabled || !state.invalid) return false;\n if (typeof policy === 'function') return policy(state);\n\n return policy === 'always' || state.submitted || (policy === 'dirty' ? state.dirty : policy === 'touched' ? state.touched : false);\n });\n\n public readonly errorTexts = computed<readonly string[]>(() => {\n if (!this.showError()) return [];\n if (this.error()) return [resolveText(this.error(), this.textAdapter)];\n\n const priority = this.errorPriority();\n const errors = [...this.currentErrors()].sort((a, b) => {\n const aIndex = priority.indexOf(a.kind);\n const bIndex = priority.indexOf(b.kind);\n\n return (aIndex < 0 ? priority.length : aIndex) - (bIndex < 0 ? priority.length : bIndex);\n });\n const chosen = (this.errorMode() ?? this.defaults.settings().errorMode) === 'all' ? errors : errors.slice(0, 1);\n\n return chosen.map((error) => resolveValidationMessage(error, this.errorMessages(), this.defaults.settings().errorMessages, this.textAdapter));\n });\n\n public readonly fieldControl: IFormFieldControl = {\n controlId: this.controlId,\n label: this.label,\n showError: this.showError,\n errorTexts: this.errorTexts,\n required: this.effectiveRequired,\n disabled: this.effectiveDisabled,\n pending: this.pending,\n focus: (options) => this.focus(options),\n setDescribedByIds: (ids) => {\n if (this.extraDescriptions().join(' ') !== ids.join(' ')) this.extraDescriptions.set(ids);\n }\n };\n\n constructor() {\n afterNextRender(() => {\n this.focusMonitor\n .monitor(this.hostElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => this.keyboardFocused.set(origin === 'keyboard'));\n this.destroyRef.onDestroy(() => this.focusMonitor.stopMonitoring(this.hostElement));\n const form = this.hostElement.closest('form');\n const commit = () => {\n this.submittedByParent.set(true);\n this.commitPendingValue();\n };\n form?.addEventListener('submit', commit, { capture: true });\n this.destroyRef.onDestroy(() => form?.removeEventListener('submit', commit, { capture: true }));\n });\n const parent = this.parentGroup ?? this.parentTemplate;\n parent?.ngSubmit.pipe(takeUntilDestroyed(inject(DestroyRef))).subscribe(() => {\n this.submittedByParent.set(true);\n this.commitPendingValue();\n });\n }\n\n public ngOnInit(): void {\n this.ngControl?.control?.events?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.controlVersion.update((version) => version + 1);\n });\n this.ngControl?.control?.valueChanges?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => this.clearPendingEdit());\n const parent = this.parentGroup ?? this.parentTemplate;\n parent?.form.events.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event) => {\n if (event instanceof FormResetEvent) this.reset();\n });\n }\n\n public focus(options?: FocusOptions): void {\n this.hostElement.querySelector<HTMLElement>('input:not(:disabled), textarea:not(:disabled), select:not(:disabled), button:not(:disabled)')?.focus(options);\n }\n\n /** Clears component interaction state; the owning form remains responsible for resetting its value. */\n public reset(): void {\n this.localTouched.set(false);\n this.submittedByParent.set(false);\n }\n\n protected markAsTouched(): void {\n this.localTouched.set(true);\n this.commitPendingValue('blur');\n this.touch.emit();\n }\n\n protected onControlPointerDown(): void {\n if (this.isReadonly()) this.keyboardFocused.set(false);\n }\n\n protected commitPendingValue(_trigger?: 'blur'): void {}\n\n protected clearPendingEdit(): void {}\n}\n","import { computed, Directive, input, model, signal } from '@angular/core';\nimport { FormCheckboxControl } from '@angular/forms/signals';\nimport { BxControlState } from './bx-control-state';\nimport { LabelPosition } from '../types/validation.types';\n\n@Directive()\nexport abstract class BxCheckedControl extends BxControlState implements FormCheckboxControl {\n private readonly draft = signal<boolean | undefined>(undefined);\n protected readonly displayedChecked = computed(() => this.draft() ?? this.checked());\n\n public readonly checked = model(false);\n public readonly labelPosition = input<LabelPosition>('after');\n\n public override reset(): void {\n super.reset();\n this.draft.set(undefined);\n }\n\n protected override clearPendingEdit(): void {\n this.draft.set(undefined);\n }\n\n protected override commitPendingValue(trigger?: 'blur'): void {\n const value = this.draft();\n\n if (value === undefined || (trigger === 'blur' && this.ngControl?.control?.updateOn === 'submit')) return;\n\n this.checked.set(value);\n this.draft.set(undefined);\n }\n\n protected onToggle(event: Event): void {\n const target = event.target as HTMLInputElement;\n\n if (this.disabled() || this.isReadonly()) {\n target.checked = this.checked();\n return;\n }\n\n const updateOn = this.ngControl?.control?.updateOn;\n\n if (updateOn === 'blur' || updateOn === 'submit') this.draft.set(target.checked);\n else this.checked.set(target.checked);\n }\n\n protected onReadonlyClick(event: Event): void {\n if (this.isReadonly()) event.preventDefault();\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { FormField } from '../form-field/form-field';\nimport { BxCheckedControl } from '../shared/classes/bx-checked-control';\nimport { CheckboxClickAction } from './types/checkbox.types';\n\n@Component({\n selector: 'bx-checkbox',\n imports: [BxSurfaceDirective, FormField, Icon],\n templateUrl: './checkbox.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './checkbox.scss'\n})\nexport class Checkbox extends BxCheckedControl {\n public readonly indeterminate = model(false);\n public readonly clickAction = input<CheckboxClickAction>('check-indeterminate');\n\n protected override onToggle(event: Event): void {\n if (this.clickAction() === 'noop') {\n (event.target as HTMLInputElement).checked = this.displayedChecked();\n (event.target as HTMLInputElement).indeterminate = this.indeterminate();\n return;\n }\n\n super.onToggle(event);\n\n if (this.clickAction() === 'check') (event.target as HTMLInputElement).indeterminate = this.indeterminate();\n\n if (!this.disabled() && !this.isReadonly() && this.clickAction() === 'check-indeterminate') this.indeterminate.set(false);\n }\n}\n","<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <div class=\"bx-checkbox-box\" bxSurface [bxSurfaceEmission]=\"showError() ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\"\n [class.is-checked]=\"displayedChecked() || indeterminate()\" [class.is-invalid]=\"showError()\">\n @if (indeterminate()) { <bx-icon name=\"minus\" size=\"16\" /> } @else if (displayedChecked()) { <bx-icon name=\"check\" size=\"16\" /> }\n </div>\n <span class=\"bx-inline-label\"><ng-content />{{ resolvedLabel() }}\n @if (effectiveRequired() && !resolvedHideRequiredMarker()) { <span class=\"bx-inline-required\" aria-hidden=\"true\">*</span> }\n </span>\n </label>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { computed, Directive, model, signal } from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { BxControlState } from './bx-control-state';\nimport { IPendingValue } from '../interfaces/ipending-value.interface';\n\n@Directive()\nexport abstract class BxValueControl<T> extends BxControlState implements FormValueControl<T | null> {\n private readonly edit = signal<IPendingValue<T> | undefined>(undefined);\n protected readonly internalValue = computed(() => {\n const edit = this.edit();\n return edit ? edit.value : this.value();\n });\n\n public readonly value = model<T | null>(null);\n\n public override reset(): void {\n super.reset();\n this.edit.set(undefined);\n }\n\n protected override clearPendingEdit(): void {\n this.edit.set(undefined);\n }\n\n protected updateValue(value: T | null): void {\n if (this.disabled() || this.isReadonly()) return;\n\n const updateOn = this.ngControl?.control?.updateOn;\n\n if (updateOn === 'blur' || updateOn === 'submit') this.edit.set({ value });\n else this.value.set(value);\n }\n\n protected override commitPendingValue(trigger?: 'blur'): void {\n const pending = this.edit();\n\n if (!pending || (trigger === 'blur' && this.ngControl?.control?.updateOn === 'submit')) return;\n\n this.value.set(pending.value);\n this.edit.set(undefined);\n }\n}\n","/** Accept signal-form constraint metadata without narrowing string-valued field bindings. */\nexport function numericConstraint(value: string | number | undefined): number | undefined {\n if (value === undefined || value === '') return undefined;\n\n const parsed = Number(value);\n\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { ChangeDetectionStrategy, Component, computed, DestroyRef, inject, input, signal, viewChild } from '@angular/core';\nimport { CdkAutofill, CdkTextareaAutosize } from '@angular/cdk/text-field';\nimport { transformedValue } from '@angular/forms/signals';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { FormField } from '../form-field/form-field';\nimport { BxValueControl } from '../shared/classes/bx-value-control';\nimport { InputFieldTypes } from '../../types/form.types';\nimport { numericConstraint } from './helpers/numeric-constraint.helpers';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { TooltipDirective, TruncateDirective, TruncatedTextPipe } from '@filip.mazev/blocks/primitives';\n\n@Component({\n selector: 'bx-input-field',\n imports: [BxSurfaceDirective, FormField, Icon, CdkAutofill, CdkTextareaAutosize, TooltipDirective, TruncateDirective, TruncatedTextPipe],\n templateUrl: './input-field.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './input-field.scss'\n})\nexport class InputField extends BxValueControl<string | number> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly editingRaw = signal<string | undefined>(undefined);\n private readonly badInput = signal(false);\n private readonly labelText = viewChild(TruncateDirective);\n protected readonly labelTruncated = computed(() => this.labelText()?.truncated() ?? false);\n protected readonly isFocused = signal(false);\n protected readonly autofilled = signal(false);\n protected readonly rawValue = transformedValue(this.value, {\n parse: (raw: string) => {\n if (this.type() !== 'number') return { value: raw };\n\n const parsed = raw === '' ? null : Number(raw);\n\n return this.badInput() || (parsed !== null && !Number.isFinite(parsed)) ? { error: { kind: 'parse' } } : { value: parsed };\n },\n format: (value) => value?.toString() ?? ''\n });\n\n protected readonly displayedValue = computed(() => this.editingRaw() ?? this.rawValue());\n protected readonly isSpinDownDisabled = computed(() => this.disabled() || this.isReadonly() || Number(this.value() ?? 0) <= (this.min() ?? -Infinity));\n protected readonly isSpinUpDisabled = computed(() => this.disabled() || this.isReadonly() || Number(this.value() ?? 0) >= (this.max() ?? Infinity));\n protected readonly isFloating = computed(\n () =>\n this.resolvedFloatLabel() === 'always' ||\n this.isFocused() ||\n this.autofilled() ||\n !!this.displayedValue() ||\n this.multiline() ||\n ['date', 'time', 'datetime-local'].includes(this.type())\n );\n\n protected readonly resolvedDecreaseLabel = computed(() => resolveText(this.decreaseLabel(), this.i18n));\n protected readonly resolvedIncreaseLabel = computed(() => resolveText(this.increaseLabel(), this.i18n));\n\n public readonly type = input<InputFieldTypes>('text');\n public readonly min = input<number | undefined, string | number | undefined>(undefined, { transform: numericConstraint });\n public readonly max = input<number | undefined, string | number | undefined>(undefined, { transform: numericConstraint });\n public readonly minLength = input<number | undefined>(undefined);\n public readonly maxLength = input<number | undefined>(undefined);\n public readonly pattern = input<readonly RegExp[]>([]);\n public readonly step = input<number | 'any'>(1);\n public readonly autocomplete = input<string | undefined>(undefined);\n public readonly inputmode = input<string | undefined>(undefined);\n public readonly spellcheck = input(true);\n public readonly multiline = input(false);\n public readonly rows = input(3);\n public readonly autosize = input(true);\n public readonly minRows = input(2);\n public readonly maxRows = input(8);\n public readonly decreaseLabel = input<ResolvableText>('Decrease value');\n public readonly increaseLabel = input<ResolvableText>('Increase value');\n\n private composing = false;\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 override reset(): void {\n super.reset();\n this.editingRaw.set(undefined);\n this.badInput.set(false);\n this.stopSpin();\n }\n\n public startSpin(direction: number, event: Event): void {\n event.preventDefault();\n\n if (this.disabled() || this.isReadonly()) return;\n\n this.applyStep(direction);\n this.spinTimeout = setTimeout(() => {\n this.spinInterval = setInterval(() => this.applyStep(direction), 80);\n }, 400);\n }\n\n public stopSpin(): void {\n clearTimeout(this.spinTimeout);\n clearInterval(this.spinInterval);\n }\n\n protected override clearPendingEdit(): void {\n super.clearPendingEdit();\n this.editingRaw.set(undefined);\n this.badInput.set(false);\n }\n\n protected onInput(event: Event): void {\n if (this.composing || this.disabled() || this.isReadonly()) return;\n\n const target = event.target as HTMLInputElement;\n this.badInput.set(target.validity.badInput);\n const updateOn = this.ngControl?.control?.updateOn;\n\n if (updateOn === 'blur' || updateOn === 'submit') this.editingRaw.set(target.value);\n else this.rawValue.set(target.value);\n }\n\n protected onCompositionStart(): void {\n this.composing = true;\n }\n\n protected onCompositionEnd(event: Event): void {\n this.composing = false;\n this.onInput(event);\n }\n\n protected onFocus(): void {\n this.isFocused.set(true);\n }\n\n protected onBlur(): void {\n this.isFocused.set(false);\n this.stopSpin();\n this.markAsTouched();\n }\n\n protected override commitPendingValue(trigger?: 'blur'): void {\n const raw = this.editingRaw();\n\n if (raw === undefined || (trigger === 'blur' && this.ngControl?.control?.updateOn === 'submit')) return;\n\n this.rawValue.set(raw);\n this.editingRaw.set(undefined);\n }\n\n //#region Helpers\n\n private applyStep(direction: number): void {\n const current = Number(this.displayedValue()) || 0;\n const step = this.step() === 'any' ? 1 : Number(this.step());\n const next = Math.min(this.max() ?? Infinity, Math.max(this.min() ?? -Infinity, Number((current + direction * step).toPrecision(12))));\n\n if (this.disabled() || this.isReadonly()) return;\n\n this.badInput.set(false);\n this.rawValue.set(String(next));\n }\n\n //#endregion\n}\n","<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-input-wrapper\" bxSurface [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [class.has-spinners]=\"type() === 'number' && !multiline()\" [class.is-floating]=\"isFloating()\">\n <ng-content select=\"[bxPrefix]\" />\n <div class=\"bx-input-container\" [bxTooltip]=\"resolvedLabel() | bxTruncatedText: labelTruncated(): resolvedTooltipOnTruncate()\" bxTooltipTouch=\"longpress\" placement=\"top\">\n @if (label()) {\n <label class=\"bx-floating-label\" [attr.for]=\"controlId()\"><span class=\"bx-input-label-text\" bxTruncate>{{ resolvedLabel() }}</span>\n @if (effectiveRequired() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </label>\n }\n @if (multiline()) {\n <textarea class=\"bx-native-input\" [attr.id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-busy]=\"pending() || loading()\" [required]=\"effectiveRequired()\"\n [disabled]=\"disabled()\" [readOnly]=\"isReadonly()\" [value]=\"displayedValue()\"\n [attr.autocomplete]=\"autocomplete()\" [attr.inputmode]=\"inputmode()\" [spellcheck]=\"spellcheck()\"\n [attr.minlength]=\"minLength()\" [attr.maxlength]=\"maxLength()\"\n [attr.placeholder]=\"isFloating() || !label() ? resolvedPlaceholder() : ''\"\n (input)=\"onInput($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\" (compositionend)=\"onCompositionEnd($event)\"\n cdkAutofill (cdkAutofill)=\"autofilled.set($event.isAutofilled)\" [rows]=\"rows()\" [cdkTextareaAutosize]=\"autosize()\" [cdkAutosizeMinRows]=\"minRows()\" [cdkAutosizeMaxRows]=\"maxRows()\"></textarea>\n } @else {\n <input class=\"bx-native-input\" [attr.id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-busy]=\"pending() || loading()\" [required]=\"effectiveRequired()\"\n [disabled]=\"disabled()\" [readOnly]=\"isReadonly()\" [value]=\"displayedValue()\"\n [attr.autocomplete]=\"autocomplete()\" [attr.inputmode]=\"inputmode()\" [spellcheck]=\"spellcheck()\"\n [attr.minlength]=\"minLength()\" [attr.maxlength]=\"maxLength()\"\n [attr.placeholder]=\"isFloating() || !label() ? resolvedPlaceholder() : ''\"\n (input)=\"onInput($event)\" (focus)=\"onFocus()\" (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\" (compositionend)=\"onCompositionEnd($event)\"\n cdkAutofill (cdkAutofill)=\"autofilled.set($event.isAutofilled)\" [type]=\"type()\" [attr.min]=\"min()\" [attr.max]=\"max()\" [attr.step]=\"step()\" [attr.pattern]=\"pattern()[0]?.source\">\n }\n </div>\n <div class=\"bx-input-actions\">\n <ng-content select=\"[bxSuffix]\" />\n @if (type() === 'number' && !multiline()) {\n <div class=\"bx-spinners-group\">\n <button type=\"button\" class=\"bx-spin-btn\" [attr.aria-label]=\"resolvedDecreaseLabel()\" [disabled]=\"isSpinDownDisabled()\"\n (pointerdown)=\"startSpin(-1, $event)\" (pointerup)=\"stopSpin()\" (pointercancel)=\"stopSpin()\" (pointerleave)=\"stopSpin()\"\n (click)=\"$event.detail === 0 && startSpin(-1, $event); stopSpin()\"><bx-icon name=\"minus\" size=\"16\" /></button>\n <button type=\"button\" class=\"bx-spin-btn\" [attr.aria-label]=\"resolvedIncreaseLabel()\" [disabled]=\"isSpinUpDisabled()\"\n (pointerdown)=\"startSpin(1, $event)\" (pointerup)=\"stopSpin()\" (pointercancel)=\"stopSpin()\" (pointerleave)=\"stopSpin()\"\n (click)=\"$event.detail === 0 && startSpin(1, $event); stopSpin()\"><bx-icon name=\"plus\" size=\"16\" /></button>\n </div>\n }\n </div>\n </div>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" />\n <ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { Injectable } from '@angular/core';\nimport type { Radio } from '../radio-button';\n\n@Injectable({ providedIn: 'root' })\nexport class RadioRegistry {\n public readonly radios = new Set<Radio>();\n\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","import { InjectionToken } from '@angular/core';\nimport { IRadioGroup } from '../interfaces/iradio-group.interface';\n\nexport const BX_RADIO_GROUP = new InjectionToken<IRadioGroup>('BX_RADIO_GROUP');\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Component, computed, DestroyRef, ElementRef, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BX_I18N, BxBaseControl, isTextWithKey, uuidv4 } from '@filip.mazev/blocks/core';\nimport { LabelPosition } from '../shared/types/validation.types';\nimport { RadioRegistry } from './services/radio-registry.service';\nimport { BX_RADIO_GROUP } from '../radio-group/tokens/radio-group.token';\nimport { FormField } from '../form-field/form-field';\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 protected readonly group = inject(BX_RADIO_GROUP, { optional: true });\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 protected readonly effectiveDisabled = computed(() => this.isDisabled() || !!this.group?.disabled());\n protected readonly effectiveName = computed(() => this.group?.groupName() ?? this.name());\n protected readonly selected = computed(() => (this.group ? this.group.value() : this.internalValue()) === this.value());\n public readonly labelPosition = input<LabelPosition>('after');\n\n public readonly value = input.required<unknown>();\n\n public readonly name = input<string>('');\n\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.effectiveDisabled() || this.isReadonly() || this.group?.isReadonly()) return;\n\n if (this.group) this.group.select(this.value());\n else {\n this.updateValue(this.value());\n this.registry.select(this);\n }\n }\n\n protected onReadonlyClick(event: Event): void {\n if (this.isReadonly() || this.group?.isReadonly()) event.preventDefault();\n }\n\n protected override onControlPointerDown(): void {\n if (this.isReadonly() || this.group?.isReadonly()) this.keyboardFocused.set(false);\n }\n\n protected onBlur(): void {\n if (this.group) this.group.markTouched();\n else 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]=\"effectiveDisabled()\" [class.is-readonly]=\"isReadonly() || !!group?.isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"radio\" class=\"bx-visually-hidden\" [attr.id]=\"inputId()\" [attr.name]=\"effectiveName() || null\"\n [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel()\" [attr.aria-readonly]=\"isReadonly() || !!group?.isReadonly()\" [attr.aria-describedby]=\"group?.describedBy()\" [required]=\"required() || !!group?.required()\" [disabled]=\"effectiveDisabled()\"\n [checked]=\"selected()\" (click)=\"onReadonlyClick($event)\" (change)=\"onSelect()\" (blur)=\"onBlur()\">\n\n <div class=\"bx-radio-circle\" bxSurface [bxSurfaceEmission]=\"errorMessage ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\" [class.is-checked]=\"selected()\"\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 <ng-content />{{ resolvedLabel() }}\n @if (isFieldRequired() || group?.required()) { <span class=\"bx-inline-required\">*</span> }\n </span>\n }\n </label>\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, output, signal } from '@angular/core';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { LoadingSpinner, TooltipDirective, TruncateDirective, TruncatedTextPipe } from '@filip.mazev/blocks/primitives';\nimport { Button } from '../button/button';\nimport { FormField } from '../form-field/form-field';\nimport { BxValueControl } from '../shared/classes/bx-value-control';\nimport { ISearchRetryConfig } from './interfaces/isearch-retry-config.interface';\n\n@Component({\n selector: 'bx-search-input',\n imports: [BxSurfaceDirective, FormField, Icon, LoadingSpinner, Button, TooltipDirective, TruncateDirective, TruncatedTextPipe],\n templateUrl: './search-input.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './search-input.scss'\n})\nexport class SearchInput extends BxValueControl<string> {\n private readonly i18n = inject(BX_I18N, { optional: true });\n // The application clears loadError when retrying; retain it to reserve the status row's height.\n private readonly retryError = signal<ResolvableText | undefined>(undefined);\n private readonly retrying = computed(() => this.retryError() !== undefined);\n protected readonly resolvedClearLabel = computed(() => resolveText(this.clearLabel(), this.i18n));\n protected readonly resolvedLoadError = computed(() => resolveText(this.loadError(), this.i18n));\n protected readonly resolvedLoadingLabel = computed(() => resolveText(this.loadingLabel(), this.i18n));\n protected readonly resolvedLoadingAriaLabel = computed(() => resolveText(this.loadingAriaLabel(), this.i18n));\n protected readonly resolvedRetryLabel = computed(() => resolveText(this.retryLabel(), this.i18n));\n protected readonly resolvedRetryAriaLabel = computed(() => resolveText(this.retryConfig().ariaLabel, this.i18n) || this.resolvedRetryLabel());\n protected readonly resolvedRetainedError = computed(() => resolveText(this.retryError() ?? this.loadError(), this.i18n));\n protected readonly isBusy = computed(() => this.loading() || this.pending());\n protected readonly showRetry = computed(() => !!this.loadError() || this.retrying());\n protected readonly showStatus = computed(() => !!this.resolvedLoadError() || (this.isBusy() && (!!this.resolvedLoadingLabel() || this.showRetry())));\n protected readonly searchDescribedBy = computed(() => `${this.describedBy()} ${this.controlId()}-search-status`);\n\n public readonly clearLabel = input<ResolvableText>('Clear search');\n public readonly autocomplete = input('off');\n /** Application-owned request failure, separate from form validation. */\n public readonly loadError = input<ResolvableText | undefined>(undefined);\n /** Optional visible loading text; otherwise only loadingAriaLabel is announced. */\n public readonly loadingLabel = input<ResolvableText | undefined>(undefined);\n public readonly loadingAriaLabel = input<ResolvableText>('Searching');\n public readonly retryLabel = input<ResolvableText>('Retry search');\n public readonly retryConfig = input<ISearchRetryConfig>({});\n // eslint-disable-next-line @angular-eslint/no-output-native -- Preserve the established public search event.\n public readonly search = output<string>();\n /** Requests another attempt for the current query. Set loading synchronously before starting the request. */\n public readonly retry = output<string>();\n\n private composing = false;\n\n constructor() {\n super();\n effect(() => {\n if (this.retrying() && !this.loading()) this.retryError.set(undefined);\n });\n }\n\n public clear(): void {\n if (this.disabled() || this.isReadonly()) return;\n\n this.retryError.set(undefined);\n this.updateValue('');\n this.search.emit('');\n this.focus();\n }\n\n public retrySearch(): void {\n if (this.disabled() || this.isReadonly() || this.isBusy() || this.retrying() || !this.loadError()) return;\n\n this.retryError.set(this.loadError());\n // Keep focus on the input when the retry button becomes busy or is removed after success.\n this.focus();\n this.retry.emit(this.internalValue() ?? '');\n }\n\n protected onInput(event: Event): void {\n if (this.composing || this.disabled() || this.isReadonly()) return;\n\n const value = (event.target as HTMLInputElement).value;\n this.retryError.set(undefined);\n this.updateValue(value);\n this.search.emit(value);\n }\n\n protected onCompositionStart(): void {\n this.composing = true;\n }\n\n protected onCompositionEnd(event: Event): void {\n this.composing = false;\n this.onInput(event);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [hideRequiredMarker]=\"resolvedHideRequiredMarker()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div class=\"bx-search-input-wrapper\" bxSurface [class.is-invalid]=\"showError()\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [bxTooltip]=\"searchOverflow.text() | bxTruncatedText: searchOverflow.truncated(): resolvedTooltipOnTruncate()\" bxTooltipTouch=\"longpress\" placement=\"top\">\n <span class=\"bx-search-icon-left\" aria-hidden=\"true\">\n @if (isBusy() && !showRetry()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"search\" size=\"16\" /> }\n </span>\n <input class=\"bx-native-search-input\" type=\"search\" bxTruncate #searchOverflow=\"bxTruncate\" [id]=\"controlId()\" [attr.name]=\"name() || null\"\n [placeholder]=\"resolvedPlaceholder()\" [attr.data-testid]=\"dataTestId()\" [attr.autocomplete]=\"autocomplete()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"searchDescribedBy()\" [attr.aria-busy]=\"isBusy()\"\n [attr.aria-invalid]=\"showError()\" [required]=\"effectiveRequired()\" [readOnly]=\"isReadonly()\" [disabled]=\"disabled()\"\n [value]=\"internalValue() ?? ''\" (input)=\"onInput($event)\" (blur)=\"onBlur()\"\n (compositionstart)=\"onCompositionStart()\" (compositionend)=\"onCompositionEnd($event)\">\n @if (internalValue() && !isReadonly()) {\n <button type=\"button\" class=\"bx-search-clear-btn\" [attr.aria-label]=\"resolvedClearLabel()\" [disabled]=\"disabled() || isReadonly()\" (click)=\"clear()\"><bx-icon name=\"x\" size=\"16\" /></button>\n }\n </div>\n <div class=\"bx-search-feedback\" [class.has-status]=\"showStatus()\">\n <div class=\"bx-search-status\" [class.cdk-visually-hidden]=\"!showStatus()\">\n @if (showRetry()) {\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedRetainedError() }}</span>\n <span class=\"bx-search-status-reserve\" aria-hidden=\"true\">{{ resolvedLoadingLabel() || resolvedLoadingAriaLabel() }}</span>\n }\n <span [id]=\"controlId() + '-search-status'\" role=\"status\" [class.bx-search-error]=\"!isBusy() && !!resolvedLoadError()\">{{ isBusy() ? (resolvedLoadingLabel() || resolvedLoadingAriaLabel()) : resolvedLoadError() }}</span>\n </div>\n @if (showRetry()) {\n <button bx-button type=\"button\" [variant]=\"retryConfig().variant ?? 'text'\" [color]=\"retryConfig().color ?? 'primary'\"\n [outlined]=\"retryConfig().outlined ?? false\" [class]=\"retryConfig().buttonClass ?? ''\" [attr.aria-label]=\"resolvedRetryAriaLabel()\"\n [disabled]=\"disabled() || isReadonly()\" [loading]=\"isBusy()\" (click)=\"retrySearch()\"><bx-icon name=\"rotate-cw\" size=\"16\" />{{ resolvedRetryLabel() }}</button>\n }\n </div>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, inject, input, output, TemplateRef } from '@angular/core';\nimport { BX_I18N, ResolvableText, isTextWithKey, resolveText } from '@filip.mazev/blocks/core';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { Button } from '../../button/button';\nimport { ILoadMoreConfig } from './interfaces/iload-more-config.interface';\nimport { ILoadMoreContext } from './interfaces/iload-more-context.interface';\n\n@Component({\n selector: 'bx-load-more-footer',\n imports: [Button, NgTemplateOutlet, Icon],\n templateUrl: './load-more-footer.html',\n styleUrl: './load-more-footer.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { '[hidden]': '!visible()', '[attr.aria-busy]': 'loading() ? \"true\" : null' }\n})\nexport class LoadMoreFooter {\n private readonly i18n = inject(BX_I18N, { optional: true });\n protected readonly text = computed(() => {\n const config = this.config();\n const normal = resolveText(config.text ?? 'Load more', this.i18n);\n const retry = config.retryText;\n const retryText = resolveText(retry, this.i18n);\n const hasRetryText = !!retry && (!isTextWithKey(retry) || retryText !== retry.key);\n\n return this.loading() ? resolveText(config.loadingText ?? 'Loading', this.i18n) : this.retry() && hasRetryText ? retryText : normal;\n });\n\n protected readonly accessibleLabel = computed(() => resolveText(this.config().ariaLabel, this.i18n) || this.text());\n protected readonly errorText = computed(() => resolveText(this.error(), this.i18n));\n protected readonly context = computed<ILoadMoreContext>(() => ({\n $implicit: this.text(),\n loading: this.loading(),\n disabled: this.disabled() || this.loading(),\n request: () => this.request.emit()\n }));\n\n public readonly retry = input(false);\n public readonly visible = input(false);\n public readonly loading = input(false);\n public readonly disabled = input(false);\n public readonly error = input<ResolvableText | undefined>(undefined);\n public readonly config = input<ILoadMoreConfig>({});\n public readonly buttonTemplate = input<TemplateRef<ILoadMoreContext> | undefined>(undefined);\n public readonly request = output();\n}\n","<div class=\"bx-load-more-footer\" [class]=\"config().footerClass ?? ''\">\n @if (errorText()) {\n <span class=\"bx-load-more-error\" role=\"status\">{{ errorText() }}</span>\n }\n @if (buttonTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"context()\" />\n } @else {\n <button bx-button type=\"button\" [variant]=\"config().variant ?? 'text'\" [color]=\"config().color ?? 'primary'\"\n [outlined]=\"config().outlined ?? false\" [class]=\"config().buttonClass ?? ''\" [disabled]=\"disabled()\"\n [loading]=\"loading()\" [attr.aria-label]=\"accessibleLabel()\" (click)=\"request.emit()\">@if (retry()) { <bx-icon name=\"rotate-cw\" size=\"16\" /> }{{ text() }}</button>\n }\n</div>\n","import {\n afterNextRender,\n afterRenderEffect,\n ComponentRef,\n computed,\n DestroyRef,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n output,\n signal,\n TemplateRef,\n ViewContainerRef\n} from '@angular/core';\nimport { ResolvableText } from '@filip.mazev/blocks/core';\nimport { LoadMoreFooter } from '../components/shared/load-more/load-more-footer';\nimport { ILoadMoreConfig } from '../components/shared/load-more/interfaces/iload-more-config.interface';\nimport { ILoadMoreContext } from '../components/shared/load-more/interfaces/iload-more-context.interface';\nimport { ILoadMoreRequest } from '../components/shared/load-more/interfaces/iload-more-request.interface';\nimport { LoadMoreSource } from '../components/shared/load-more/types/load-more.types';\n\n/** Append to a scroll container, not a native table/list element with restricted children. */\n@Directive({ selector: '[bxLoadMore]', exportAs: 'bxLoadMore' })\nexport class LoadMoreDirective {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n private readonly views = inject(ViewContainerRef);\n private readonly zone = inject(NgZone);\n private readonly destroy = inject(DestroyRef);\n private readonly overflowing = signal(false);\n private readonly requested = signal(false);\n private readonly retrying = signal(false);\n private readonly keepVisible = signal(false);\n\n public readonly loadMoreHasMore = input(false);\n public readonly loadMoreLoading = input(false);\n public readonly loadMoreSuppressed = input(false);\n public readonly loadMoreDisabled = input(false);\n public readonly loadMoreError = input<ResolvableText | undefined>(undefined);\n public readonly loadMoreConfig = input<ILoadMoreConfig>({});\n public readonly loadMoreTemplate = input<TemplateRef<ILoadMoreContext> | undefined>(undefined);\n public readonly loadMoreRevision = input<unknown>(undefined);\n public readonly loadMore = output<ILoadMoreRequest>();\n\n public readonly actionVisible = computed(\n () =>\n !this.loadMoreSuppressed() &&\n (this.loadMoreHasMore() || !!this.loadMoreError() || (this.keepVisible() && this.loadMoreLoading())) &&\n (this.loadMoreConfig().buttonMode === 'always' || !this.overflowing() || this.keepVisible() || !!this.loadMoreError())\n );\n\n private footer?: ComponentRef<LoadMoreFooter>;\n private wasLoading = false;\n private previousRevision: unknown;\n\n constructor() {\n afterNextRender(() => this.mount());\n\n afterRenderEffect(() => {\n const loading = this.loadMoreLoading();\n const revision = this.loadMoreRevision();\n\n if ((this.wasLoading && !loading) || (!loading && this.previousRevision !== revision)) this.complete();\n\n this.wasLoading = loading;\n this.previousRevision = revision;\n this.updateFooter();\n });\n }\n\n /** Release an outstanding request when the application completes without a loading-state cycle. */\n public complete(): void {\n this.requested.set(false);\n this.retrying.set(false);\n this.keepVisible.set(false);\n }\n\n /** The shared request guard is also available to custom footer templates. */\n public request(source: LoadMoreSource = 'button'): void {\n if (this.loadMoreSuppressed()) return;\n if ((!this.loadMoreHasMore() && !this.loadMoreError()) || this.loadMoreDisabled() || this.loadMoreLoading() || this.requested()) return;\n if (source === 'scroll' && this.loadMoreError()) return;\n\n this.requested.set(true);\n this.retrying.set(!!this.loadMoreError());\n this.keepVisible.set(source !== 'scroll');\n this.loadMore.emit({ source: this.loadMoreError() ? 'retry' : source });\n }\n\n //#region Helpers\n\n private mount(): void {\n this.footer = this.views.createComponent(LoadMoreFooter);\n this.host.append(this.footer.location.nativeElement);\n this.footer.instance.request.subscribe(() => this.request());\n const measure = () => this.measure();\n const onScroll = () => {\n const footerHeight = (this.footer?.location.nativeElement as HTMLElement | undefined)?.offsetHeight ?? 0;\n const contentHeight = this.host.scrollHeight - footerHeight;\n\n if (this.host.scrollTop + this.host.clientHeight >= contentHeight - (this.loadMoreConfig().threshold ?? 32)) this.zone.run(() => this.request('scroll'));\n };\n\n this.zone.runOutsideAngular(() => {\n const resize = new ResizeObserver(measure);\n const observeContent = () => {\n for (const child of Array.from(this.host.children)) {\n if (child !== this.footer?.location.nativeElement) resize.observe(child);\n }\n\n this.measure();\n };\n const mutation = new MutationObserver(observeContent);\n resize.observe(this.host);\n observeContent();\n mutation.observe(this.host, { childList: true, subtree: true, characterData: true });\n this.host.addEventListener('scroll', onScroll, { passive: true });\n this.host.ownerDocument.defaultView?.addEventListener('resize', measure);\n this.host.ownerDocument.defaultView?.visualViewport?.addEventListener('resize', measure);\n\n this.destroy.onDestroy(() => {\n resize.disconnect();\n mutation.disconnect();\n this.host.removeEventListener('scroll', onScroll);\n this.host.ownerDocument.defaultView?.removeEventListener('resize', measure);\n this.host.ownerDocument.defaultView?.visualViewport?.removeEventListener('resize', measure);\n this.footer?.destroy();\n });\n });\n\n this.measure();\n this.updateFooter();\n }\n\n private measure(): void {\n const footerHeight = (this.footer?.location.nativeElement as HTMLElement | undefined)?.offsetHeight ?? 0;\n const overflowing = this.host.scrollHeight - footerHeight > this.host.clientHeight + 1;\n\n if (overflowing !== this.overflowing()) this.zone.run(() => this.overflowing.set(overflowing));\n }\n\n private updateFooter(): void {\n if (!this.footer) return;\n\n const visible = this.actionVisible();\n const footerElement = this.footer.location.nativeElement as HTMLElement;\n\n if (!visible && footerElement.contains(this.host.ownerDocument.activeElement)) {\n if (!this.host.hasAttribute('tabindex')) this.host.setAttribute('tabindex', '-1');\n this.host.focus({ preventScroll: true });\n }\n\n this.footer.setInput('visible', visible);\n this.footer.setInput('loading', this.loadMoreLoading());\n this.footer.setInput('disabled', this.loadMoreDisabled() || (this.requested() && !this.loadMoreLoading()));\n this.footer.setInput('retry', !!this.loadMoreError() || this.retrying());\n this.footer.setInput('error', this.loadMoreError());\n this.footer.setInput('config', this.loadMoreConfig());\n this.footer.setInput('buttonTemplate', this.loadMoreTemplate());\n }\n\n //#endregion\n}\n","/** Keep at least one named tag visible before the overflow count. */\nexport function visibleTagLimit(value: number | string): number {\n const count = Number(value);\n\n return Number.isFinite(count) ? Math.max(1, Math.floor(count)) : 1;\n}\n","import { createGlassTransition, inheritGlassLighting } from '@filip.mazev/blocks/effects/runtime';\nimport {\n computed,\n DestroyRef,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n model,\n NgZone,\n OnDestroy,\n output,\n signal,\n TemplateRef,\n untracked,\n viewChild,\n ViewChild\n} from '@angular/core';\nimport { Overlay, ConnectionPositionPair, CdkConnectedOverlay } from '@angular/cdk/overlay';\nimport { BX_I18N, BxA11yService, inheritOverlayTheme, trackOverlayOrigin, DEFAULT_DEBOUNCE_TIME, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { BX_OVERLAY_CONTEXT, ITagConfig, TruncateDirective, truncatedText } from '@filip.mazev/blocks/primitives';\nimport { SelectionDisplay } from '../types/select.types';\nimport { visibleTagLimit } from '../helpers/tag-limit.helpers';\nimport { SearchInput } from '../../search-input/search-input';\nimport { BxValueControl } from '../../shared/classes/bx-value-control';\nimport { ILoadMoreConfig } from '../../shared/load-more/interfaces/iload-more-config.interface';\nimport { ILoadMoreContext } from '../../shared/load-more/interfaces/iload-more-context.interface';\nimport { ILoadMoreRequest } from '../../shared/load-more/interfaces/iload-more-request.interface';\nimport { IBxSelectOption } from '../interfaces/ibx-select-option.interface';\nimport { IResolvedSelectOption } from '../interfaces/iresolved-select-option.interface';\nimport { ISelectOptionContext } from '../interfaces/iselect-option-context.interface';\nimport { ISelectTriggerContext } from '../interfaces/iselect-trigger-context.interface';\n\n@Directive()\nexport abstract class BxSelectBase<TValue, TOption> extends BxValueControl<TValue> implements 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 private readonly i18n = inject(BX_I18N, { optional: true });\n private readonly debouncing = signal(false);\n private readonly searchRequest = signal(false);\n private readonly knownOptions = signal<readonly IResolvedSelectOption<TOption>[]>([]);\n protected readonly panelScrollStrategy = this.overlay.scrollStrategies.noop();\n protected readonly isPanelAttached = signal(false);\n protected readonly searchTerm = computed(() => this.searchValue());\n protected readonly valueOverflow = viewChild<TruncateDirective>('valueOverflow');\n protected readonly labelOverflow = viewChild<TruncateDirective>('labelOverflow');\n protected readonly truncatedSelectionTooltip = computed(() => {\n if (!this.resolvedTooltipOnTruncate() || this.isOpen()) return '';\n\n return (\n truncatedText(this.selectedOptionLabel() || this.resolvedPlaceholder(), this.valueOverflow()?.truncated() ?? false) ||\n truncatedText(this.resolvedLabel(), this.labelOverflow()?.truncated() ?? false)\n );\n });\n\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 resolvedOptions = computed<readonly IResolvedSelectOption<TOption>[]>(() =>\n this.options().map((option) => ({ ...option, resolvedStr: resolveText(option.label, this.i18n), resolvedGroup: resolveText(option.group, this.i18n) }))\n );\n\n protected readonly filteredOptions = computed(() => {\n const query = this.searchTerm().trim().toLocaleLowerCase();\n\n return this.externalFiltering() || !query\n ? this.resolvedOptions()\n : this.resolvedOptions().filter((option) => option.resolvedStr.toLocaleLowerCase().includes(query));\n });\n\n protected readonly selectedOptions = computed(() => this.knownOptions().filter((option) => this.isSelected(option.value)));\n protected readonly selectedOptionLabel = computed(() =>\n this.selectedOptions()\n .map((option) => resolveText(option.label, this.i18n))\n .join(', ')\n );\n\n protected readonly isFloating = computed(\n () =>\n this.isOpen() ||\n (this.value() !== null && (!Array.isArray(this.value()) || (this.value() as unknown[]).length > 0)) ||\n this.resolvedFloatLabel() === 'always'\n );\n\n protected readonly resolvedSearchPlaceholder = computed(() => resolveText(this.searchPlaceholder(), this.i18n));\n protected readonly resolvedEmptyMessage = computed(() => resolveText(this.emptyMessage(), this.i18n));\n protected readonly triggerContext = computed<ISelectTriggerContext<TValue>>(() => ({\n $implicit: this.value(),\n labels: this.selectedOptions().map((option) => resolveText(option.label, this.i18n))\n }));\n\n protected readonly visibleTags = computed(() => this.selectedOptions().slice(0, this.visibleTagCount()));\n protected readonly overflowTagLabel = computed(() => {\n const count = Math.max(0, this.selectedOptions().length - this.visibleTagCount());\n\n return resolveText(this.tagOverflowText(), this.i18n, { count }).replaceAll('{count}', String(count));\n });\n\n protected readonly overflowTagTooltip = computed(() =>\n this.selectedOptions()\n .slice(this.visibleTagCount())\n .map((option) => resolveText(option.label, this.i18n))\n .join(', ')\n );\n\n protected readonly resolvedLoadingAriaLabel = computed(() => resolveText(this.loadingAriaLabel(), this.i18n));\n protected readonly resolvedLoadingLabel = computed(() => resolveText(this.loadingLabel(), this.i18n));\n public readonly selectionDisplay = input<SelectionDisplay>('text');\n\n public readonly tagConfig = input<ITagConfig>({});\n\n public readonly overflowTagConfig = input<ITagConfig>({});\n\n public readonly visibleTagCount = input(1, { transform: visibleTagLimit });\n\n public readonly tagOverflowText = input<ResolvableText>('+{count}');\n\n public readonly options = input.required<readonly IBxSelectOption<TOption>[]>();\n\n public readonly compareWith = input<(a: TOption, b: TOption) => boolean>(Object.is);\n public readonly isSearchable = input(false);\n public readonly externalFiltering = input(false);\n public readonly searchValue = model('');\n public readonly searchDebounce = input(DEFAULT_DEBOUNCE_TIME);\n public readonly searchPlaceholder = input<ResolvableText>('Search...');\n public readonly emptyMessage = input<ResolvableText>('No results found.');\n public readonly loadingLabel = input<ResolvableText | undefined>(undefined);\n public readonly loadingAriaLabel = input<ResolvableText>('Loading');\n public readonly isSearching = computed(() => this.debouncing() || this.searchRequest());\n\n public readonly hasMore = input(false);\n public readonly loadError = input<ResolvableText | undefined>(undefined);\n public readonly loadMoreConfig = input<ILoadMoreConfig>({});\n public readonly loadMoreTemplate = input<TemplateRef<ILoadMoreContext> | undefined>(undefined);\n public readonly panelClass = input('');\n public readonly optionTemplate = input<TemplateRef<ISelectOptionContext<TOption>> | undefined>(undefined);\n public readonly triggerTemplate = input<TemplateRef<ISelectTriggerContext<TValue>> | undefined>(undefined);\n public readonly isOpen = signal(false);\n // eslint-disable-next-line @angular-eslint/no-output-native -- Preserve the established search event.\n public readonly search = output<string>();\n public readonly loadMore = output<ILoadMoreRequest>();\n public readonly openedChange = output<boolean>();\n\n private transition?: ReturnType<typeof createGlassTransition>;\n private disconnectTheme?: () => void;\n private disconnectLighting?: () => void;\n private disconnectOrigin?: () => void;\n private transitionRevision = 0;\n private focusOnOpen: 'first' | 'last' | null = null;\n private searchTimeout?: ReturnType<typeof setTimeout>;\n private typeaheadTimeout?: ReturnType<typeof setTimeout>;\n private typeaheadText = '';\n @ViewChild(CdkConnectedOverlay) private connectedOverlay?: CdkConnectedOverlay;\n @ViewChild('searchInput') private searchInputRef?: SearchInput;\n @ViewChild('origin', { read: ElementRef }) private originRef?: ElementRef<HTMLElement>;\n\n constructor() {\n super();\n effect(() => {\n if (this.searchRequest() && !this.loading() && !this.debouncing()) this.searchRequest.set(false);\n });\n effect(() => {\n const current = this.resolvedOptions();\n const retained = untracked(this.knownOptions).filter(\n (option) => this.isSelected(option.value) && !current.some((item) => this.compareWith()(item.value, option.value))\n );\n this.knownOptions.set([...retained, ...current]);\n });\n effect(() => {\n if ((this.disabled() || this.isReadonly()) && this.isOpen()) this.close();\n });\n inject(DestroyRef).onDestroy(() => {\n clearTimeout(this.searchTimeout);\n clearTimeout(this.typeaheadTimeout);\n });\n }\n\n public ngOnDestroy(): void {\n ++this.transitionRevision;\n this.onPanelDetach();\n }\n\n public abstract isSelected(value: TOption): boolean;\n\n public toggleOpen(): void {\n if (this.disabled() || this.isReadonly()) return;\n if (this.isOpen()) this.close();\n else this.open();\n }\n\n public open(): void {\n if (this.disabled() || this.isReadonly() || this.isOpen()) return;\n ++this.transitionRevision;\n this.isOpen.set(true);\n this.openedChange.emit(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 if (this.connectedOverlay?.overlayRef?.hasAttached() && this.isSearchable()) queueMicrotask(() => this.searchInputRef?.focus());\n }\n\n public close(): void {\n const wasOpen = this.isOpen();\n this.isOpen.set(false);\n\n if (wasOpen) {\n this.openedChange.emit(false);\n this.markAsTouched();\n }\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 {\n const items = this.panelItems();\n (items.find((item) => item.getAttribute('aria-selected') === 'true') ?? (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 (this.disabled() || this.isReadonly()) return;\n\n if (event.key === 'Escape' || (event.altKey && event.key === 'ArrowUp')) {\n event.preventDefault();\n this.close();\n return;\n }\n\n if (['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {\n event.preventDefault();\n this.focusOnOpen = event.key === 'ArrowUp' ? 'last' : 'first';\n this.open();\n } else if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {\n this.open();\n this.typeahead(event.key);\n }\n }\n\n protected onPanelKey(event: KeyboardEvent): void {\n if (event.key === 'Escape' || event.key === 'Tab' || (event.altKey && event.key === 'ArrowUp')) {\n if (event.key !== 'Tab') event.preventDefault();\n event.stopPropagation();\n this.close();\n return;\n }\n\n const target = event.target as HTMLElement;\n const editing = target.matches('input,textarea');\n\n if (editing && !['ArrowDown', 'ArrowUp'].includes(event.key)) return;\n\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(event.key)) {\n if (!editing && event.key.length === 1 && event.key !== ' ') this.typeahead(event.key);\n return;\n }\n\n const items = this.panelItems();\n\n if (!items.length) return;\n\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 onTriggerBlur(): void {\n if (!this.isOpen()) this.markAsTouched();\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 abstract selectOption(option: IBxSelectOption<TOption>): void;\n\n protected onSearchChange(value: string): void {\n clearTimeout(this.searchTimeout);\n this.debouncing.set(true);\n this.searchTimeout = setTimeout(() => {\n this.debouncing.set(false);\n this.searchRequest.set(this.externalFiltering());\n this.searchValue.set(value);\n this.search.emit(value);\n }, this.searchDebounce());\n }\n\n protected selectionTagConfig(option: IBxSelectOption<TOption>): ITagConfig {\n return { ...this.tagConfig(), ...option.tagConfig };\n }\n\n protected requestMore(request: ILoadMoreRequest): void {\n this.loadMore.emit({ ...request });\n }\n\n //#region Helpers\n\n private typeahead(character: string): void {\n clearTimeout(this.typeaheadTimeout);\n this.typeaheadText += character.toLocaleLowerCase();\n this.typeaheadTimeout = setTimeout(() => {\n this.typeaheadText = '';\n }, 700);\n queueMicrotask(() =>\n this.panelItems()\n .find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(this.typeaheadText))\n ?.focus()\n );\n }\n\n private panelItems(): HTMLElement[] {\n return Array.from(this.connectedOverlay?.overlayRef?.overlayElement.querySelectorAll<HTMLElement>('.bx-select-option:not(:disabled)') ?? []);\n }\n\n //#endregion\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, output } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { LoadingIndicator, LoadingSpinner, Tag, TooltipDirective, TruncateDirective } from '@filip.mazev/blocks/primitives';\nimport { FormField } from '../form-field/form-field';\nimport { SearchInput } from '../search-input/search-input';\nimport { LoadMoreDirective } from '../../directives/load-more.directive';\nimport { BxSelectBase } from './classes/bx-select-base';\nimport { IBxSelectOption } from './interfaces/ibx-select-option.interface';\nimport { ISelectionChange } from './interfaces/iselection-change.interface';\n\n@Component({\n selector: 'bx-select',\n imports: [\n BxSurfaceDirective,\n OverlayModule,\n FormField,\n Icon,\n SearchInput,\n LoadMoreDirective,\n NgTemplateOutlet,\n LoadingIndicator,\n LoadingSpinner,\n Tag,\n TooltipDirective,\n TruncateDirective\n ],\n templateUrl: './select.html',\n styleUrl: './select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class Select<T> extends BxSelectBase<T, T> {\n public readonly selectionChange = output<ISelectionChange<T | null>>();\n\n public isSelected(value: T): boolean {\n const selected = this.internalValue();\n\n return selected !== null && this.compareWith()(selected, value);\n }\n\n protected selectOption(option: IBxSelectOption<T>): void {\n if (option.disabled || option.groupDisabled || this.disabled() || this.isReadonly()) return;\n\n this.updateValue(option.value);\n this.selectionChange.emit({ value: option.value, source: 'user' });\n this.close();\n }\n}\n","<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"resolvedTooltipOnTruncate() ? (selectionDisplay() === 'tags' ? selectedOptionLabel() : truncatedSelectionTooltip()) : ''\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n </span>\n } @else { {{ selectedOptionLabel() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormField } from '../form-field/form-field';\nimport { BxCheckedControl } from '../shared/classes/bx-checked-control';\n\n@Component({\n selector: 'bx-slide-toggle',\n imports: [BxSurfaceDirective, FormField],\n templateUrl: './slide-toggle.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './slide-toggle.scss'\n})\nexport class SlideToggle extends BxCheckedControl {}\n","<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [loading]=\"loading()\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <label class=\"bx-inline-wrapper\" [class.is-disabled]=\"disabled()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\" [class.label-before]=\"labelPosition() === 'before'\">\n <input type=\"checkbox\" class=\"bx-visually-hidden\" [id]=\"controlId()\" [attr.name]=\"name() || null\" [attr.data-testid]=\"dataTestId()\"\n [attr.aria-label]=\"ariaLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\" [attr.aria-describedby]=\"describedBy()\"\n [attr.aria-invalid]=\"showError()\" [attr.aria-readonly]=\"isReadonly()\" [disabled]=\"disabled()\" [required]=\"effectiveRequired()\" [checked]=\"displayedChecked()\" role=\"switch\" [attr.aria-checked]=\"displayedChecked()\"\n (click)=\"onReadonlyClick($event)\" (change)=\"onToggle($event)\" (blur)=\"onBlur()\">\n <div class=\"bx-slide-toggle-track\" bxSurface [bxSurfaceEmission]=\"showError() ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\" [class.is-checked]=\"displayedChecked()\" [class.is-invalid]=\"showError()\">\n <div class=\"bx-slide-toggle-thumb\"></div>\n </div>\n <span class=\"bx-inline-label\"><ng-content />{{ resolvedLabel() }}\n @if (effectiveRequired() && !resolvedHideRequiredMarker()) { <span class=\"bx-inline-required\" aria-hidden=\"true\">*</span> }\n </span>\n </label>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { afterEveryRender, afterNextRender, DestroyRef, Directive, ElementRef, HostListener, inject, input, 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 public readonly discrete = input(false);\n public readonly displayWith = input<(value: number) => string>(String);\n public readonly showTickMarks = input(false);\n\n private shell?: HTMLSpanElement;\n private valueLabel?: HTMLSpanElement;\n private tickList?: HTMLDataListElement;\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 const lens = input.ownerDocument.createElement('span');\n lens.className = 'bx-slider-lens';\n thumb.append(lens);\n input.before(shell);\n shell.append(input, thumb);\n this.shell = shell;\n this.thumb = thumb;\n const valueLabel = input.ownerDocument.createElement('span');\n valueLabel.className = 'bx-slider-value-label';\n valueLabel.setAttribute('aria-hidden', 'true');\n shell.append(valueLabel);\n this.valueLabel = valueLabel;\n const tickList = input.ownerDocument.createElement('datalist');\n tickList.id = `bx-slider-ticks-${input.id || Math.random().toString(36).slice(2)}`;\n shell.append(tickList);\n this.tickList = tickList;\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 if (this.valueLabel) {\n this.valueLabel.hidden = !this.discrete();\n this.valueLabel.textContent = this.displayWith()(input.valueAsNumber);\n }\n\n if (this.tickList) {\n const count = Math.min(1000, Math.floor((max - min) / (Number(input.step) || 1)));\n const key = `${min}:${max}:${input.step}:${this.showTickMarks()}`;\n\n if (this.tickList.dataset['range'] !== key) {\n this.tickList.replaceChildren();\n this.tickList.dataset['range'] = key;\n\n if (this.showTickMarks() && count > 0) {\n for (let index = 0; index <= count; index++) {\n const option = input.ownerDocument.createElement('option');\n option.value = String(min + index * (Number(input.step) || 1));\n this.tickList.append(option);\n }\n }\n }\n\n if (this.showTickMarks()) input.setAttribute('list', this.tickList.id);\n else if (input.getAttribute('list') === this.tickList.id) input.removeAttribute('list');\n }\n\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((Number.isFinite(progress) ? progress : 0) / 100);\n\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","import { ChangeDetectionStrategy, Component, computed, forwardRef } from '@angular/core';\nimport { FormField } from '../form-field/form-field';\nimport { BxValueControl } from '../shared/classes/bx-value-control';\nimport { BX_RADIO_GROUP } from './tokens/radio-group.token';\n\n@Component({\n selector: 'bx-radio-group',\n imports: [FormField],\n templateUrl: './radio-group.html',\n styleUrl: './radio-group.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: BX_RADIO_GROUP, useExisting: forwardRef(() => RadioGroup) }]\n})\nexport class RadioGroup<T> extends BxValueControl<T> {\n public readonly groupName = computed(() => this.name() || this.controlId());\n\n public override focus(options?: FocusOptions): void {\n const selected = this.hostElement.querySelector<HTMLInputElement>('input:checked:not(:disabled)');\n\n if (selected) selected.focus(options);\n else super.focus(options);\n }\n\n public select(value: T): void {\n this.updateValue(value);\n }\n\n public markTouched(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [tooltip]=\"tooltip()\"\n [hideRequiredMarker]=\"resolvedHideRequiredMarker()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <div role=\"radiogroup\" [id]=\"controlId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"effectiveRequired()\"><ng-content /></div>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[bxPrefix]', host: { class: 'bx-field-prefix' } })\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- Projection marker for custom prefix content.\nexport class PrefixDirective {}\n","import { Directive } from '@angular/core';\n\n@Directive({ selector: '[bxSuffix]', host: { class: 'bx-field-suffix' } })\n// eslint-disable-next-line @typescript-eslint/no-extraneous-class -- Projection marker for custom suffix content.\nexport class SuffixDirective {}\n","/** Summaries never abbreviate based on a configured threshold below two items. */\nexport function summaryThreshold(value: number | string): number {\n const count = Number(value);\n\n return Number.isFinite(count) ? Math.max(2, Math.floor(count)) : 2;\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, effect, inject, input, model, output, untracked, viewChild } from '@angular/core';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Icon } from '@filip.mazev/blocks/icons';\nimport { LoadingIndicator, LoadingSpinner, Tag, TooltipDirective, TruncateDirective } from '@filip.mazev/blocks/primitives';\nimport { FormField } from '../form-field/form-field';\nimport { SearchInput } from '../search-input/search-input';\nimport { LoadMoreDirective } from '../../directives/load-more.directive';\nimport { BxSelectBase } from '../select/classes/bx-select-base';\nimport { IBxSelectOption } from '../select/interfaces/ibx-select-option.interface';\nimport { ISelectionChange } from '../select/interfaces/iselection-change.interface';\nimport { summaryThreshold } from './helpers/summary-threshold.helpers';\nimport { ISelectAllChange } from './interfaces/iselect-all-change.interface';\n\n@Component({\n selector: 'bx-multi-select',\n imports: [\n BxSurfaceDirective,\n OverlayModule,\n FormField,\n Icon,\n SearchInput,\n LoadMoreDirective,\n NgTemplateOutlet,\n LoadingIndicator,\n LoadingSpinner,\n TooltipDirective,\n TruncateDirective,\n Tag\n ],\n templateUrl: './multi-select.html',\n styleUrl: './multi-select.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MultiSelect<T> extends BxSelectBase<T[], T> {\n private readonly summaryOverflow = viewChild<TruncateDirective>('summaryOverflow');\n private readonly labelsAdapter = inject(BX_I18N, { optional: true });\n protected readonly resolvedSelectAllLabel = computed(() => resolveText(this.selectAllLabel(), this.labelsAdapter));\n protected readonly someSelected = computed(() => this.filteredOptions().some((option) => this.isSelected(option.value)));\n\n protected readonly usesSummary = computed(() => {\n const count = this.internalValue()?.length ?? 0;\n\n return (\n (this.selectionDisplay() === 'tags' && this.selectedOptions().length > this.visibleTagCount()) ||\n !!(this.selectAll() && this.allSelectedText()) ||\n count > this.summaryThreshold() ||\n (count >= 2 && (this.summaryOverflow()?.truncated() ?? false))\n );\n });\n\n protected readonly displayedSelection = computed(() => {\n if (this.selectAll() && this.allSelectedText()) return resolveText(this.allSelectedText(), this.labelsAdapter);\n if (!this.usesSummary()) return this.selectedOptionLabel();\n\n const count = this.internalValue()?.length ?? 0;\n\n return resolveText(this.selectedCountText(), this.labelsAdapter, { count }).replaceAll('{count}', String(count));\n });\n\n protected readonly selectionTooltip = computed(() => {\n if (!this.resolvedTooltipOnTruncate() || this.isOpen()) return '';\n\n return this.selectionDisplay() === 'tags' || this.usesSummary() ? this.selectedOptionLabel() : this.truncatedSelectionTooltip();\n });\n\n public readonly allSelectedText = input<ResolvableText | undefined>(undefined);\n public readonly selectedCountText = input<ResolvableText>('{count} selected');\n public readonly summaryThreshold = input(2, { transform: summaryThreshold });\n public readonly showSelectAll = input(true);\n public readonly selectAllLabel = input<ResolvableText>('Select all');\n public readonly selectionScope = input<string | undefined>(undefined);\n public readonly selectAll = model(false);\n public readonly selectionChange = output<ISelectionChange<T[]>>();\n public readonly selectAllIntentChange = output<ISelectAllChange<T>>();\n\n private scope: string | undefined;\n\n constructor() {\n super();\n effect(() => {\n const scope = this.selectionScope() ?? this.searchTerm();\n const options = this.filteredOptions();\n const enabled = this.selectAll();\n const values = untracked(this.internalValue) ?? [];\n\n if (this.scope !== undefined && scope !== this.scope && enabled) {\n this.selectAll.set(false);\n this.emitIntent(false, 'scope-change', scope);\n } else if (enabled && !this.disabled() && !this.isReadonly()) {\n const added = options\n .filter((option) => !option.disabled && !option.groupDisabled && !values.some((value) => this.compareWith()(value, option.value)))\n .map((option) => option.value);\n\n if (added.length) {\n const next = [...values, ...added];\n this.updateValue(next);\n this.selectionChange.emit({ value: next, source: 'page' });\n }\n }\n\n this.scope = scope;\n });\n }\n\n public isSelected(value: T): boolean {\n return (this.internalValue() ?? []).some((item) => this.compareWith()(item, value));\n }\n\n public toggleSelectAll(): void {\n if (this.disabled() || this.isReadonly()) return;\n\n const enabled = !this.selectAll();\n const eligible = this.filteredOptions().filter((option) => !option.disabled && !option.groupDisabled);\n const current = this.internalValue() ?? [];\n const values = enabled\n ? [...current, ...eligible.filter((option) => !this.isSelected(option.value)).map((option) => option.value)]\n : current.filter((value) => !eligible.some((option) => this.compareWith()(value, option.value)));\n this.selectAll.set(enabled);\n this.updateValue(values);\n this.selectionChange.emit({ value: values, source: 'select-all' });\n this.emitIntent(enabled, 'toggle');\n }\n\n public override reset(): void {\n super.reset();\n\n if (this.selectAll()) {\n this.selectAll.set(false);\n this.emitIntent(false, 'reset');\n }\n }\n\n protected selectOption(option: IBxSelectOption<T>): void {\n if (option.disabled || option.groupDisabled || this.disabled() || this.isReadonly()) return;\n\n const wasSelected = this.isSelected(option.value);\n const values = wasSelected\n ? (this.internalValue() ?? []).filter((value) => !this.compareWith()(value, option.value))\n : [...(this.internalValue() ?? []), option.value];\n this.updateValue(values);\n this.selectionChange.emit({ value: values, source: 'user' });\n\n if (wasSelected && this.selectAll()) {\n this.selectAll.set(false);\n this.emitIntent(false, 'item-deselected');\n }\n }\n\n //#region Helpers\n\n private emitIntent(selected: boolean, reason: ISelectAllChange<T>['reason'], scope = this.selectionScope() ?? this.searchTerm()): void {\n this.selectAllIntentChange.emit({ selected, scope, values: this.internalValue() ?? [], reason });\n }\n\n //#endregion\n}\n","<bx-form-field [control]=\"fieldControl\" [inline]=\"true\" [tooltip]=\"tooltip()\" [showLoadingIndicator]=\"false\"\n [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [subscriptSizing]=\"resolvedSubscriptSizing()\" [forId]=\"controlId()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags'\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' ? 'none' : 'longpress'\" cdkOverlayOrigin bxSurface #origin=\"cdkOverlayOrigin\" class=\"bx-select-trigger\"\n [class.is-invalid]=\"showError()\" [class.is-outline]=\"resolvedAppearance() === 'outline'\" [class.is-open]=\"isOpen()\" [class.is-floating]=\"isFloating()\" [class.is-readonly]=\"isReadonly()\" [class.is-keyboard-focused]=\"keyboardFocused()\"\n [id]=\"controlId()\" [attr.data-testid]=\"dataTestId()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [attr.aria-labelledby]=\"ariaLabelledBy()\"\n [attr.aria-describedby]=\"describedBy()\" [attr.aria-invalid]=\"showError()\" [attr.aria-required]=\"required()\" [attr.aria-readonly]=\"isReadonly()\" [attr.aria-busy]=\"loading() || pending() || isSearching()\"\n [disabled]=\"disabled()\" (click)=\"toggleOpen()\" (keydown)=\"onTriggerKey($event)\" (blur)=\"onTriggerBlur()\"\n [attr.aria-expanded]=\"isOpen()\" [attr.aria-controls]=\"isPanelAttached() ? controlId() + '-options' : null\">\n <div class=\"bx-select-container\">\n @if (label()) {\n <span class=\"bx-floating-label\"><span [bxTruncate]=\"!isFloating()\" #labelOverflow=\"bxTruncate\">{{ resolvedLabel() }}</span>\n @if (required() && !resolvedHideRequiredMarker()) { <span class=\"bx-field-required\" aria-hidden=\"true\">*</span> }\n </span>\n }\n <span class=\"bx-select-value\" [class.is-placeholder]=\"!selectedOptionLabel()\" [bxTruncate]=\"!(selectionDisplay() === 'tags' && selectedOptions().length) && !triggerTemplate()\" #valueOverflow=\"bxTruncate\">\n @if (triggerTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"triggerContext()\" />\n } @else if (selectionDisplay() === 'tags' && selectedOptions().length) {\n <span class=\"bx-selected-tags\">\n @if (selectAll() && allSelectedText()) {\n <bx-tag [text]=\"allSelectedText()\" [config]=\"tagConfig()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n } @else {\n @for (option of visibleTags(); track option.value) {\n <bx-tag [text]=\"option.label\" [config]=\"selectionTagConfig(option)\" [disabled]=\"disabled() || !!option.disabled\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n @if (selectedOptions().length > visibleTagCount()) {\n <bx-tag class=\"bx-overflow-tag\" [text]=\"overflowTagLabel()\" [config]=\"overflowTagConfig()\" [tooltip]=\"overflowTagTooltip()\" [focusable]=\"false\" [tooltipOnTruncate]=\"resolvedTooltipOnTruncate() ? undefined : false\" />\n }\n }\n </span>\n } @else { {{ displayedSelection() || (isFloating() || !label() ? resolvedPlaceholder() : '') }} }\n </span>\n <span class=\"bx-select-measure\" bxTruncate #summaryOverflow=\"bxTruncate\" aria-hidden=\"true\">{{ selectedOptionLabel() }}</span>\n </div>\n <ng-content select=\"[bxSuffix]\" />\n <span class=\"bx-select-caret\" aria-hidden=\"true\">\n @if (loading() || pending() || isSearching()) { <bx-loading-spinner [size]=\"16\" [decorative]=\"true\" /> }\n @else { <bx-icon name=\"chevron-down\" size=\"16\" /> }\n </span>\n </button>\n <ng-template cdkConnectedOverlay [cdkConnectedOverlayOrigin]=\"origin\" [cdkConnectedOverlayOpen]=\"isPanelAttached()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\" [cdkConnectedOverlayHasBackdrop]=\"false\"\n [cdkConnectedOverlayScrollStrategy]=\"panelScrollStrategy\" [cdkConnectedOverlayUsePopover]=\"overlayPopoverLocation(origin.elementRef.nativeElement)\"\n [cdkConnectedOverlayWidth]=\"origin.elementRef.nativeElement.offsetWidth\"\n (overlayOutsideClick)=\"onOutsideClick($event)\" (attach)=\"onPanelAttach()\" (detach)=\"onPanelDetach()\" (positionChange)=\"refreshPanel()\">\n <div class=\"bx-select-panel\" [class]=\"panelClass()\" data-bx-surface=\"solid\" tabindex=\"-1\" (keydown)=\"onPanelKey($event)\">\n @if (isSearchable()) {\n <div class=\"bx-select-search-container\">\n <bx-search-input #searchInput [value]=\"searchValue()\" [placeholder]=\"resolvedSearchPlaceholder()\" [ariaLabel]=\"resolvedSearchPlaceholder()\"\n (search)=\"onSearchChange($event)\" (keydown.enter)=\"$event.preventDefault()\" />\n </div>\n }\n @if (showSelectAll()) {\n <button type=\"button\" class=\"bx-select-all\" role=\"checkbox\" [attr.aria-checked]=\"selectAll() ? 'true' : someSelected() ? 'mixed' : 'false'\"\n [disabled]=\"disabled() || isReadonly()\" (click)=\"toggleSelectAll()\">\n <span class=\"bx-multi-checkbox\" aria-hidden=\"true\">@if (selectAll()) { <bx-icon name=\"check\" size=\"16\" /> } @else if (someSelected()) { <bx-icon name=\"minus\" size=\"16\" /> }</span>\n {{ resolvedSelectAllLabel() }}\n </button>\n }\n <div class=\"bx-select-menu-container\" bxLoadMore #pagination=\"bxLoadMore\" [loadMoreHasMore]=\"hasMore()\" [loadMoreSuppressed]=\"isSearching()\" [loadMoreLoading]=\"loading()\"\n [loadMoreDisabled]=\"disabled() || isReadonly()\" [loadMoreError]=\"loadError()\" [loadMoreConfig]=\"loadMoreConfig()\"\n [loadMoreTemplate]=\"loadMoreTemplate()\" [loadMoreRevision]=\"options()\" (loadMore)=\"requestMore($event)\">\n <div role=\"listbox\" [hidden]=\"isSearching()\" [attr.aria-multiselectable]=\"true\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [id]=\"controlId() + '-options'\">\n @for (option of filteredOptions(); track option.value; let index = $index) {\n @if (option.resolvedGroup && (index === 0 || filteredOptions()[index - 1].resolvedGroup !== option.resolvedGroup)) {\n <div class=\"bx-select-group\" [id]=\"controlId() + '-group-' + index\">{{ option.resolvedGroup }}</div>\n }\n <button type=\"button\" class=\"bx-select-option\" role=\"option\" tabindex=\"-1\" [attr.aria-selected]=\"isSelected(option.value)\"\n [disabled]=\"option.disabled || option.groupDisabled || false\" (click)=\"selectOption(option)\">\n <span class=\"bx-select-check-placeholder bx-multi-checkbox\" aria-hidden=\"true\">\n @if (isSelected(option.value)) { <bx-icon name=\"check\" size=\"16\" /> }\n </span>\n @if (option.icon) { <bx-icon [name]=\"option.icon\" size=\"16\" /> }\n @if (optionTemplate(); as template) {\n <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{ $implicit: option, selected: isSelected(option.value), index: index }\" />\n } @else { <span>{{ option.resolvedStr }}</span> }\n </button>\n } @empty {\n @if (!loading()) { <div class=\"bx-select-empty\" role=\"status\">{{ resolvedEmptyMessage() }}</div> }\n }\n </div>\n @if (isSearching()) {\n <div class=\"bx-select-search-state\" role=\"status\" [attr.aria-label]=\"resolvedLoadingLabel() || resolvedLoadingAriaLabel()\">\n @if (resolvedLoadingLabel()) { <span>{{ resolvedLoadingLabel() }}</span> }\n @else { <bx-loading-spinner [size]=\"20\" [decorative]=\"true\" /> }\n </div>\n } @else if (loading() && !pagination.actionVisible()) { <div class=\"bx-select-loading\"><bx-loading-indicator [size]=\"16\" [label]=\"loadingLabel() ?? loadingAriaLabel()\" /></div> }\n </div>\n </div>\n </ng-template>\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n","import { Directive, forwardRef } from '@angular/core';\nimport { BxControlState } from '../components/shared/classes/bx-control-state';\nimport { BX_FORM_FIELD_CONTROL } from '../components/shared/tokens/form-field-control.token';\n\n/** Connects a native input, textarea, or select to the Blocks field frame. */\n@Directive({\n selector: 'input[bxInput], textarea[bxInput], select[bxInput]',\n exportAs: 'bxInput',\n providers: [{ provide: BX_FORM_FIELD_CONTROL, useExisting: forwardRef(() => NativeControlDirective) }],\n host: {\n class: 'bx-native-control',\n '[id]': 'controlId()',\n '[disabled]': 'effectiveDisabled()',\n '[attr.readonly]': 'isReadonly() ? \"\" : null',\n '[attr.aria-readonly]': 'isReadonly()',\n '[required]': 'effectiveRequired()',\n '[attr.placeholder]': 'resolvedPlaceholder()',\n '[attr.name]': 'name() || null',\n '[attr.aria-invalid]': 'showError()',\n '[attr.aria-required]': 'effectiveRequired()',\n '[attr.aria-describedby]': 'describedBy()',\n '[attr.aria-label]': 'ariaLabel()',\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\n '(blur)': 'markAsTouched()',\n '(pointerdown)': 'onReadonlyInteraction($event)',\n '(click)': 'onReadonlyInteraction($event)',\n '(keydown)': 'onReadonlyInteraction($event)'\n }\n})\nexport class NativeControlDirective extends BxControlState {\n public override focus(options?: FocusOptions): void {\n this.hostElement.focus(options);\n }\n\n protected onReadonlyInteraction(event: Event): void {\n if (!this.isReadonly() || this.hostElement.tagName !== 'SELECT' || ('key' in event && event.key === 'Tab')) return;\n\n event.preventDefault();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, input } from '@angular/core';\nimport { BX_I18N, ResolvableText, resolveText } from '@filip.mazev/blocks/core';\nimport { BxValueControl } from '../shared/classes/bx-value-control';\nimport { FormField } from '../form-field/form-field';\nimport { SliderDirective } from '../../directives/slider.directive';\n\n@Component({\n selector: 'bx-range-slider',\n imports: [FormField, SliderDirective],\n templateUrl: './range-slider.html',\n styleUrl: './range-slider.scss',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class RangeSlider extends BxValueControl<[number, number]> {\n private readonly labelsAdapter = inject(BX_I18N, { optional: true });\n protected readonly start = computed(() => Math.max(this.min(), Math.min(this.max(), this.value()?.[0] ?? this.min())));\n protected readonly end = computed(() => Math.max(this.start(), Math.min(this.max(), this.value()?.[1] ?? this.max())));\n protected readonly startPercent = computed(() => (this.max() > this.min() ? ((this.start() - this.min()) / (this.max() - this.min())) * 100 : 0));\n protected readonly endPercent = computed(() => (this.max() > this.min() ? ((this.end() - this.min()) / (this.max() - this.min())) * 100 : 100));\n protected readonly resolvedStartLabel = computed(() => resolveText(this.startLabel(), this.labelsAdapter));\n protected readonly resolvedEndLabel = computed(() => resolveText(this.endLabel(), this.labelsAdapter));\n protected readonly ticks = computed(() => {\n const span = this.max() - this.min();\n const step = this.step();\n\n if (!this.showTickMarks() || !Number.isFinite(span) || !Number.isFinite(step) || span <= 0 || step <= 0) return [];\n\n const intervals = Math.floor(span / step);\n const count = Math.min(1000, intervals);\n\n // Keep bounded tick rendering on actual step values, including uneven ranges.\n return count > 0 ? Array.from({ length: count + 1 }, (_, index) => ((Math.round((index * intervals) / count) * step) / span) * 100) : [];\n });\n\n public readonly min = input(0);\n public readonly max = input(100);\n public readonly step = input(1);\n public readonly discrete = input(false);\n public readonly showTickMarks = input(false);\n public readonly displayWith = input<(value: number) => string>(String);\n public readonly startLabel = input<ResolvableText>('Minimum value');\n public readonly endLabel = input<ResolvableText>('Maximum value');\n\n protected onRangeInput(event: Event, thumb: 'start' | 'end'): void {\n if (this.disabled() || this.isReadonly()) return;\n\n const input = event.target as HTMLInputElement;\n const value = input.valueAsNumber;\n const next: [number, number] = thumb === 'start' ? [Math.min(this.end(), value), this.end()] : [this.start(), Math.max(this.start(), value)];\n input.value = String(thumb === 'start' ? next[0] : next[1]);\n this.updateValue(next);\n }\n\n protected onBlur(): void {\n this.markAsTouched();\n }\n}\n","<bx-form-field [control]=\"fieldControl\" [label]=\"label()\" [hint]=\"hint()\" [hintEnd]=\"hintEnd()\" [tooltip]=\"tooltip()\" [forId]=\"controlId()\">\n <div class=\"bx-range-slider\" role=\"group\" [class.is-readonly]=\"isReadonly() && !disabled()\" [attr.aria-label]=\"ariaLabel() || resolvedLabel()\" [style.--bx-range-start]=\"startPercent() / 100\" [style.--bx-range-end]=\"endPercent() / 100\">\n <div class=\"bx-range-track\" aria-hidden=\"true\"></div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [id]=\"controlId()\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemax]=\"end()\" [step]=\"step()\" [value]=\"start()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedStartLabel()\" [attr.aria-valuetext]=\"displayWith()(start())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'start')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-input\">\n <input bxSlider type=\"range\" [min]=\"min()\" [max]=\"max()\" [attr.aria-valuemin]=\"start()\" [step]=\"step()\" [value]=\"end()\"\n [disabled]=\"disabled() || isReadonly()\" [attr.aria-label]=\"resolvedEndLabel()\" [attr.aria-valuetext]=\"displayWith()(end())\"\n [attr.aria-describedby]=\"describedBy()\" (input)=\"onRangeInput($event, 'end')\" (blur)=\"onBlur()\">\n </div>\n <div class=\"bx-range-ticks\" aria-hidden=\"true\">@for (tick of ticks(); track tick) { <span [style.inset-inline-start.%]=\"tick\"></span> }</div>\n </div>\n @if (discrete()) { <output class=\"bx-range-values\">{{ displayWith()(start()) }} – {{ displayWith()(end()) }}</output> }\n <ng-content select=\"bx-error\" ngProjectAs=\"bx-error\" /><ng-content select=\"bx-hint\" ngProjectAs=\"bx-hint\" />\n</bx-form-field>\n"],"mappings":"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"}