@filip.mazev/blocks 1.4.15 → 1.4.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/styles/_a11y.scss +5 -0
- package/core/styles/_field-actions.scss +36 -0
- package/core/styles/_field-state.scss +12 -3
- package/core/styles/_helpers.scss +3 -0
- package/core/styles/_index.scss +1 -0
- package/core/styles/_slider-rail.scss +11 -0
- package/core/styles/_slider.scss +119 -11
- package/core/styles/_text-overflow.scss +7 -0
- package/core/styles/_text.scss +5 -0
- package/core/styles/_validation.scss +48 -0
- package/fesm2022/filip.mazev-blocks-core.mjs +83 -18
- package/fesm2022/filip.mazev-blocks-core.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-effects-runtime.mjs +14 -3
- package/fesm2022/filip.mazev-blocks-effects-runtime.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-effects.mjs +16 -8
- package/fesm2022/filip.mazev-blocks-effects.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-forms.mjs +5282 -1093
- package/fesm2022/filip.mazev-blocks-forms.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks-primitives.mjs +2373 -1294
- package/fesm2022/filip.mazev-blocks-primitives.mjs.map +1 -1
- package/fesm2022/filip.mazev-blocks.mjs +1 -1
- package/fesm2022/filip.mazev-blocks.mjs.map +1 -1
- package/forms/README.md +80 -0
- package/package.json +1 -1
- package/types/filip.mazev-blocks-core.d.ts +22 -2
- package/types/filip.mazev-blocks-effects.d.ts +1 -1
- package/types/filip.mazev-blocks-forms.d.ts +1290 -76
- package/types/filip.mazev-blocks-primitives.d.ts +304 -6
- package/types/filip.mazev-blocks.d.ts +1 -1
|
@@ -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/components/checkbox-indicator/checkbox-indicator.ts","../../../projects/blocks/forms/components/checkbox-indicator/checkbox-indicator.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 { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { BxSurfaceDirective } from '@filip.mazev/blocks/effects';\nimport { Icon } from '@filip.mazev/blocks/icons';\n\n/** Decorative checkbox face; the owning control supplies semantics and interaction. */\n@Component({\n selector: 'bx-checkbox-indicator',\n imports: [BxSurfaceDirective, Icon],\n templateUrl: './checkbox-indicator.html',\n styleUrl: './checkbox-indicator.scss',\n host: { 'aria-hidden': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class CheckboxIndicator {\n /** Whether the owning control is checked. Defaults to false. */\n public readonly checked = input(false);\n /** Displays the partial-selection mark in preference to checked. Defaults to false. */\n public readonly indeterminate = input(false);\n /** Matches the owning control's validation appearance. Defaults to false. */\n public readonly invalid = input(false);\n /** Suppresses the active surface finish when the owner is disabled. Defaults to false. */\n public readonly disabled = input(false);\n}\n","<span class=\"bx-checkbox-box\" bxSurface [bxSurfaceEmission]=\"invalid() ? 'var(--bx-text-danger)' : 'var(--bx-accent)'\"\n [class.is-checked]=\"checked() || indeterminate()\" [class.is-invalid]=\"invalid()\" [class.is-disabled]=\"disabled()\">\n @if (indeterminate()) { <bx-icon name=\"minus\" size=\"16\" /> } @else if (checked()) { <bx-icon name=\"check\" size=\"16\" /> }\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 { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\nimport { CheckboxIndicator } from '../checkbox-indicator/checkbox-indicator';\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: [FormField, CheckboxIndicator],\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 <bx-checkbox-indicator [checked]=\"displayedChecked()\" [indeterminate]=\"indeterminate()\" [invalid]=\"showError()\" [disabled]=\"disabled()\" />\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 hasSelection = computed(() => this.internalValue() !== null && this.internalValue() !== undefined);\n protected readonly showClear = computed(() => this.clearable() && this.hasSelection() && !this.isReadonly());\n protected readonly resolvedClearLabel = computed(() => resolveText(this.clearLabel(), this.i18n));\n protected readonly resolvedClearTooltip = computed(() => resolveText(this.clearTooltip() ?? this.clearLabel(), this.i18n));\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 /** Shows a clear action when a value is selected. Defaults to true; hidden while readonly. */\n public readonly clearable = input(true);\n /** Accessible name of the clear action. Accepts translation keys; defaults to 'Clear selection'. */\n public readonly clearLabel = input<ResolvableText>('Clear selection');\n /** Optional clear-action tooltip. Defaults to clearLabel; an empty string hides it. Accepts translation keys. */\n public readonly clearTooltip = input<ResolvableText | undefined>(undefined);\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 clearSelectedValue(value: TValue | null): boolean {\n if (this.disabled() || this.isReadonly()) return false;\n\n this.updateValue(value);\n this.close();\n this.markAsTouched();\n this.focus({ preventScroll: true });\n\n return true;\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 { Button } from '../button/button';\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 Button,\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 clearSelection(): void {\n if (!this.clearSelectedValue(null)) return;\n\n this.selectionChange.emit({ value: null, source: 'clear' });\n }\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 <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\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 @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\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 { CheckboxIndicator } from '../checkbox-indicator/checkbox-indicator';\nimport { Button } from '../button/button';\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 Button,\n CheckboxIndicator,\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 override readonly hasSelection = computed(() => !!this.internalValue()?.length || this.selectAll());\n protected readonly resolvedSelectAllLabel = computed(() => resolveText(this.selectAllLabel(), this.labelsAdapter));\n protected readonly selectableOptions = computed(() => this.filteredOptions().filter((option) => !option.disabled && !option.groupDisabled));\n protected readonly allLoadedSelected = computed(() => {\n const options = this.selectableOptions();\n\n return options.length > 0 && options.every((option) => this.isSelected(option.value));\n });\n\n protected readonly selectAllChecked = computed(() => this.selectAll() || this.allLoadedSelected());\n protected readonly someSelected = computed(() => this.selectableOptions().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 resolvedAllSelectedTooltip = computed(() => {\n const text = this.allSelectedTooltip();\n\n if (text === false) return '';\n if (text === undefined) return this.resolvedTooltipOnTruncate() ? this.selectedOptionLabel() : '';\n\n return resolveText(text, this.labelsAdapter);\n });\n\n protected readonly selectionTooltip = computed(() => {\n if (this.isOpen()) return '';\n if (this.selectAll()) return this.resolvedAllSelectedTooltip();\n if (!this.resolvedTooltipOnTruncate()) return '';\n\n return this.selectionDisplay() === 'tags' || this.usesSummary() ? this.selectedOptionLabel() : this.truncatedSelectionTooltip();\n });\n\n /** Select-all intent tooltip: undefined preserves loaded-label feedback; false or empty text disables it. Accepts translation keys. */\n public readonly allSelectedTooltip = input<ResolvableText | false | undefined>(undefined);\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 clearSelection(): void {\n if (this.disabled() || this.isReadonly()) return;\n\n const hadIntent = this.selectAll();\n this.selectAll.set(false);\n this.clearSelectedValue([]);\n this.selectionChange.emit({ value: [], source: 'clear' });\n\n if (hadIntent) this.emitIntent(false, 'clear');\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.selectAllChecked();\n const eligible = this.selectableOptions();\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 <div class=\"bx-select-control\" [class.has-clear]=\"showClear()\">\n <button type=\"button\" role=\"combobox\" aria-haspopup=\"listbox\" [bxTooltip]=\"selectionTooltip()\" [bxTooltipHover]=\"selectionDisplay() !== 'tags' || (selectAll() && !!allSelectedText())\" [bxTooltipTouch]=\"selectionDisplay() === 'tags' && !(selectAll() && allSelectedText()) ? '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\" [tooltip]=\"''\" [tooltipOnTruncate]=\"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 @if (showClear()) {\n <button bx-button type=\"button\" variant=\"text\" class=\"bx-select-clear\" [surfaceEffects]=\"false\" [disabled]=\"disabled()\"\n [attr.aria-label]=\"resolvedClearLabel()\" [bxTooltip]=\"resolvedClearTooltip()\" (click)=\"clearSelection()\">\n <bx-icon name=\"x\" size=\"16\" />\n </button>\n }\n </div>\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]=\"selectAllChecked() ? 'true' : someSelected() ? 'mixed' : 'false'\"\n [disabled]=\"disabled() || isReadonly()\" (click)=\"toggleSelectAll()\">\n <bx-checkbox-indicator [checked]=\"selectAllChecked()\" [indeterminate]=\"!selectAllChecked() && someSelected()\" [disabled]=\"disabled()\" />\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 <bx-checkbox-indicator [checked]=\"isSelected(option.value)\" [disabled]=\"disabled() || !!option.disabled || !!option.groupDisabled\" />\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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"}
|