@koobiq/components 20.3.0 → 20.3.1
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/fesm2022/koobiq-components-core.mjs +10 -7
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-form-field.mjs +13 -7
- package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
- package/fesm2022/koobiq-components-modal.mjs +12 -4
- package/fesm2022/koobiq-components-modal.mjs.map +1 -1
- package/fesm2022/koobiq-components-select.mjs +1 -1
- package/fesm2022/koobiq-components-select.mjs.map +1 -1
- package/fesm2022/koobiq-components-tabs.mjs +4 -6
- package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs +1 -1
- package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
- package/form-field/index.d.ts +1 -3
- package/modal/index.d.ts +1 -1
- package/package.json +3 -3
- package/schematics/ng-add/index.js +1 -1
- package/tabs/index.d.ts +0 -1
|
@@ -7,7 +7,7 @@ import { KbqIconButton, KbqIconModule, kbqIconErrorStateContextFactoryProvider }
|
|
|
7
7
|
import { fromEvent, EMPTY, Subject, timer, concatMap, interval, merge } from 'rxjs';
|
|
8
8
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
9
9
|
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
10
|
-
import { NgControl } from '@angular/forms';
|
|
10
|
+
import { NgControl, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
11
11
|
import { delay, takeUntil, take, startWith } from 'rxjs/operators';
|
|
12
12
|
import { F8 } from '@angular/cdk/keycodes';
|
|
13
13
|
import { KbqTooltipTrigger, KbqToolTipModule } from '@koobiq/components/tooltip';
|
|
@@ -1255,14 +1255,20 @@ class KbqTrim {
|
|
|
1255
1255
|
constructor() {
|
|
1256
1256
|
this.noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true }));
|
|
1257
1257
|
this.ngControl = inject(NgControl, { optional: true, self: true });
|
|
1258
|
-
this.
|
|
1259
|
-
return this.original.call(this.ngControl.valueAccessor, (value) => fn(this.trim(value)));
|
|
1260
|
-
};
|
|
1261
|
-
if (this.noTrim || !this.ngControl?.valueAccessor) {
|
|
1258
|
+
if (this.noTrim || !this.ngControl) {
|
|
1262
1259
|
return;
|
|
1263
1260
|
}
|
|
1264
|
-
|
|
1265
|
-
|
|
1261
|
+
// Wrapped through the declared accessors rather than through `NgControl.valueAccessor`, which
|
|
1262
|
+
// Angular 22 leaves null until the form directive's first `ngOnChanges` — after this
|
|
1263
|
+
// constructor. Resolved here rather than in a field initializer so that an element without a
|
|
1264
|
+
// form control neither patches nor eagerly constructs its accessors. An accessor the form
|
|
1265
|
+
// does not select is patched too, but Angular never registers on it. An accessor installed by
|
|
1266
|
+
// assigning `NgControl.valueAccessor` directly is not covered.
|
|
1267
|
+
const valueAccessors = inject(NG_VALUE_ACCESSOR, { optional: true, self: true });
|
|
1268
|
+
for (const valueAccessor of valueAccessors ?? []) {
|
|
1269
|
+
const original = valueAccessor.registerOnChange.bind(valueAccessor);
|
|
1270
|
+
valueAccessor.registerOnChange = (fn) => original((value) => fn(this.trim(value)));
|
|
1271
|
+
}
|
|
1266
1272
|
}
|
|
1267
1273
|
trim(value) {
|
|
1268
1274
|
if (this.noTrim) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-form-field.mjs","sources":["../../../packages/components/form-field/cleaner.ts","../../../packages/components/form-field/hint.ts","../../../packages/components/form-field/hint.html","../../../packages/components/form-field/error.ts","../../../packages/components/form-field/fieldset.ts","../../../packages/components/form-field/form-field-control.ts","../../../packages/components/form-field/label.ts","../../../packages/components/form-field/password-hint.ts","../../../packages/components/form-field/password-toggle.ts","../../../packages/components/form-field/prefix.ts","../../../packages/components/form-field/reactive-password-hint.ts","../../../packages/components/form-field/stepper.ts","../../../packages/components/form-field/suffix.ts","../../../packages/components/form-field/form-field.ts","../../../packages/components/form-field/form-field.html","../../../packages/components/form-field/form-field.module.ts","../../../packages/components/form-field/koobiq-components-form-field.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n Provider,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ESCAPE, KbqComponentColors, kbqInjectA11yLocaleConfiguration } from '@koobiq/components/core';\nimport { KbqIconButton } from '@koobiq/components/icon';\nimport { fromEvent } from 'rxjs';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/** @docs-private */\nexport interface KbqCleanerContext {\n readonly control: KbqFormFieldControl<unknown>;\n readonly keydownTarget: HTMLElement;\n readonly clearByEscape: boolean;\n /** Overrides the default `cleanerControl.ngControl?.reset()` behavior when the cleaner is activated. */\n clear?(): void;\n}\n\n/** @docs-private */\nexport const KBQ_CLEANER_CONTEXT = new InjectionToken<KbqCleanerContext | null>('KbqCleanerContext');\n\n/**\n * Utility provider for `KBQ_CLEANER_CONTEXT`, built from a factory that resolves the current host's `KbqCleanerContext`.\n * @docs-private\n */\nexport const kbqCleanerFactoryProvider = (factory: () => KbqCleanerContext): Provider => ({\n provide: KBQ_CLEANER_CONTEXT,\n useFactory: factory\n});\n\n/** @docs-private */\nexport function getKbqFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use kbq-cleaner with input that have type=\"number\"`);\n}\n\n/**\n * Element to be placed in end of the form field.\n * Resets form control by click.\n */\n@Component({\n selector: 'kbq-cleaner',\n template: `\n <ng-content />\n `,\n styleUrls: ['cleaner.scss', '../icon/icon-button.scss', '../icon/icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-cleaner',\n // The cleaner is an icon-only control: without a role and an accessible name it is announced as an\n // unlabeled focusable graphic.\n role: 'button',\n '[attr.aria-label]': 'accessibleName()',\n '(click)': 'clear($event)',\n '(keydown.enter)': 'clear($event)',\n '(keydown.space)': 'clear($event)'\n },\n exportAs: 'kbqCleaner'\n})\nexport class KbqCleaner extends KbqIconButton implements AfterContentInit {\n private readonly context = inject(KBQ_CLEANER_CONTEXT, { optional: true });\n\n /**\n * Whether the cleaner can be displayed for the current control state.\n * @docs-private\n */\n get canShow(): boolean {\n const control = this.context?.control;\n\n return control ? !control.disabled && !control.empty : true;\n }\n\n private readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n\n /** Accessible name of the cleaner. Defaults to the localized \"Clear\". */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @docs-private */\n protected readonly accessibleName = computed(() => this.ariaLabel() || this.a11yLocaleConfiguration().clear);\n\n constructor() {\n super();\n\n const initialIcon = 'kbq-circle-xmark_16';\n\n this.iconName = initialIcon;\n this.svgIconName.next(initialIcon);\n this.color = KbqComponentColors.ContrastFade;\n this.autoColor = true;\n }\n\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n if (this.context?.control?.controlType === 'input-number') {\n throw getKbqFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n const keydownTarget = this.context?.keydownTarget;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onKeyDown(event));\n }\n }\n\n /**\n * Clears the owning control in response to pointer or keyboard activation.\n * @docs-private\n */\n clear(event: Event): void {\n if (!this.context || !this.canShow) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (this.context.clear) {\n this.context.clear();\n } else {\n this.context.control.ngControl?.reset();\n }\n\n this.context.control.focus();\n }\n\n /**\n * Clears the focused control when Escape handling is enabled.\n */\n private onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.context?.clearByEscape && this.context.control.focused && this.canShow) {\n this.clear(event);\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, input, ViewEncapsulation } from '@angular/core';\nimport { KbqColorDirective } from '@koobiq/components/core';\n\nlet nextUniqueId = 0;\n\n/** Hint text to be shown below the form field control. */\n@Component({\n selector: 'kbq-hint',\n templateUrl: './hint.html',\n styleUrls: ['./hint.scss', './hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-hint',\n '[attr.id]': 'id()',\n '[class.kbq-hint_fill-text-off]': 'fillTextOff',\n '[class.kbq-hint_compact]': 'compact'\n },\n exportAs: 'kbqHint'\n})\nexport class KbqHint extends KbqColorDirective {\n /** Unique ID for the hint. */\n readonly id = input<string>(`kbq-hint-${nextUniqueId++}`);\n\n /** Disables `color` for the hint text. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) fillTextOff: boolean = false;\n\n /** Makes the hint size smaller. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) compact: boolean = false;\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n<span class=\"kbq-hint__text\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqHint } from './hint';\n\n/** Error text to be shown below the form field control. */\n@Component({\n selector: 'kbq-error',\n templateUrl: './hint.html',\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-error'\n },\n exportAs: 'kbqError'\n})\nexport class KbqError extends KbqHint {\n constructor() {\n super();\n\n this.color = KbqComponentColors.Error;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\n\n/** Directive for marking an element as legend of `KbqFieldset` */\n@Directive({\n selector: '[kbqLegend]',\n host: {\n class: 'kbq-legend'\n }\n})\nexport class KbqLegend {}\n\n/** Directive for marking elements as items inside `KbqFieldset` */\n@Directive({\n selector: '[kbqFieldsetItem]',\n host: {\n class: 'kbq-fieldset-item'\n }\n})\nexport class KbqFieldsetItem {}\n\n/**\n * A group of form-fields and related controls.\n * Container component emulating the native `fieldset` element.\n */\n@Component({\n selector: 'kbq-fieldset',\n template: `\n <ng-content select=\"[kbqLegend]\" />\n\n <div class=\"kbq-fieldset__container\">\n <ng-content />\n </div>\n\n <div class=\"kbq-form-field__hint\">\n <ng-content select=\"kbq-error\" />\n\n <ng-content select=\"kbq-hint, kbq-password-hint, kbq-reactive-password-hint\" />\n </div>\n `,\n styleUrls: ['./fieldset.scss', './fieldset-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-fieldset',\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()'\n }\n})\nexport class KbqFieldset {\n private readonly legend: Signal<ElementRef<HTMLElement> | undefined> = contentChild(KbqLegend, {\n read: ElementRef\n });\n\n /**\n * Computes the aria-label from the inner text of the legend element.\n * Used to enhance accessibility by labeling the group.\n * @docs-private\n */\n protected readonly ariaLabel = computed(() => this.legend()?.nativeElement?.innerText);\n}\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n/** An interface which allows a control to work inside of a `KbqFormField`. */\nexport abstract class KbqFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `KbqFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * Whether the control's value was filled in by the browser.\n *\n * Implement it only where autofill is reachable: on a control that is itself a text input or a\n * textarea, or — like `KbqTagList` — on a wrapper that forwards the state of the input it hosts.\n * Leave it out on controls the browser never fills.\n *\n * A signal rather than a plain property because the form field reads it from a host binding and\n * runs `OnPush`: a signal read there marks the form field dirty on its own.\n */\n readonly autofilled?: Signal<boolean>;\n\n /**\n * An optional name for the control type that can be used to distinguish `kbq-form-field` elements\n * based on their control type. The form field will add a class,\n * `kbq-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n /** Focuses the control. */\n abstract focus(options?: FocusOptions): void;\n\n /** Opens control's overlay. */\n abstract open?(): void;\n}\n","import { Directive } from '@angular/core';\n\n/** Label for the form field. */\n@Directive({\n selector: 'kbq-label',\n host: {\n class: 'kbq-label'\n },\n exportAs: 'kbqLabel'\n})\nexport class KbqLabel {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { KBQ_FORM_FIELD_REF, KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { Subject } from 'rxjs';\nimport { KbqFormField } from './form-field';\nimport { KbqHint } from './hint';\n\nlet nextPasswordHintUniqueId = 0;\n\nexport enum PasswordRules {\n Length,\n UpperLatin,\n LowerLatin,\n Digit,\n LatinAndSpecialSymbols,\n Custom\n}\n\nexport const regExpPasswordValidator = {\n [PasswordRules.LowerLatin]: RegExp(/^(?=.*?[a-z])/),\n [PasswordRules.UpperLatin]: RegExp(/^(?=.*?[A-Z])/),\n [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),\n [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`\"'#№$%&()*+,-./\\\\:;<=>?@[\\]^_{|}~A-Za-z0-9]/)\n};\n\nexport const hasPasswordStrengthError = (\n passwordHints: QueryList<KbqPasswordHint> | readonly KbqPasswordHint[]\n): boolean => {\n return passwordHints.some((hint: KbqPasswordHint) => hint.hasError);\n};\n\n@Component({\n selector: 'kbq-password-hint',\n imports: [KbqIconModule],\n template: `\n <i class=\"kbq-password-hint__icon\" [kbq-icon]=\"icon\" [color]=\"iconColor\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: ['hint.scss', 'hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id()',\n class: 'kbq-hint kbq-password-hint',\n '[class.kbq-success]': 'checked',\n '[class.kbq-error]': 'hasError',\n '[class.kbq-hint_fill-text-off]': 'fillTextOff',\n '[class.kbq-hint_compact]': 'compact'\n }\n})\nexport class KbqPasswordHint extends KbqHint implements AfterContentInit {\n private changeDetectorRef = inject(ChangeDetectorRef);\n private formField = inject(KBQ_FORM_FIELD_REF, { optional: true })!;\n\n readonly id = input<string>(`kbq-hint-${nextPasswordHintUniqueId++}`);\n\n readonly rule = input<PasswordRules | any>();\n\n readonly min = input<number>(undefined!);\n readonly max = input<number>(undefined!);\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() regex: RegExp | null;\n readonly customCheckRule = input<(value: string) => boolean>(undefined!, { alias: 'checkRule' });\n\n readonly viewFormField = input<KbqFormField>();\n\n // TODO: Skipped for migration because:\n // This input is inherited from a superclass, but the parent cannot be migrated.\n @Input() fillTextOff: boolean = true;\n\n hasError: boolean = false;\n checked: boolean = false;\n\n get icon(): string {\n return this.checked ? 'kbq-check-s_16' : 'kbq-xmark-s_16';\n }\n\n /**\n * The form field hint icon color.\n *\n * @docs-private\n */\n protected get iconColor(): KbqComponentColors {\n if (this.control?.ngControl.untouched && this.control?.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.checked ? KbqComponentColors.Success : KbqComponentColors.Error;\n }\n\n private checkRule: (value: string) => boolean;\n\n private get control() {\n return this.formField.control();\n }\n\n private lastControlValue: string;\n\n constructor() {\n super();\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n }\n\n ngAfterContentInit(): void {\n this.formField = this.formField || this.viewFormField();\n\n const rule = this.rule();\n const customCheckRule = this.customCheckRule();\n\n if (rule === PasswordRules.Custom && this.regex === undefined && customCheckRule === undefined) {\n throw Error('You should set [regex] or [checkRule] for PasswordRules.Custom');\n }\n\n if (rule === PasswordRules.Length && (this.min() || this.max()) === null) {\n throw Error('For [rule] \"Length\" need set [min] and [max]');\n }\n\n if (rule === PasswordRules.Length) {\n this.checkRule = this.checkLengthRule;\n } else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit].includes(rule)) {\n this.regex = regExpPasswordValidator[rule];\n this.checkRule = this.checkRegexRule;\n } else if (rule === PasswordRules.LatinAndSpecialSymbols) {\n this.regex = regExpPasswordValidator[rule];\n this.checkRule = this.checkSpecialSymbolsRegexRule;\n } else if (rule === PasswordRules.Custom) {\n this.checkRule = this.regex === undefined ? customCheckRule : this.checkRegexRule;\n } else {\n throw Error(`Unknown [rule]=${rule}`);\n }\n\n // prevent error when formField.control is undefined\n setTimeout(() => {\n this.formField.control().stateChanges.subscribe(this.checkValue);\n\n (this.formField.control() as unknown as { checkRule: Subject<any> }).checkRule.subscribe(() => {\n this.checked = this.checkRule(this.control.value);\n this.hasError = !this.checkRule(this.control.value);\n });\n });\n }\n\n private checkValue = () => {\n if (this.control.focused && this.isValueChanged()) {\n this.hasError = false;\n\n this.checked = this.checkRule(this.control.value);\n } else if (!this.control.focused && !this.isValueChanged()) {\n this.hasError = !this.checkRule(this.control.value);\n }\n\n if (!this.control.required && !this.control.value) {\n this.checked = this.hasError = false;\n }\n\n this.lastControlValue = this.control.value;\n this.changeDetectorRef.markForCheck();\n };\n\n private checkLengthRule(value: string): boolean {\n return value.length >= this.min() && value.length <= this.max();\n }\n\n private checkRegexRule = (value: string): boolean => {\n return !!this.regex?.test(value);\n };\n\n private checkSpecialSymbolsRegexRule(value: string): boolean {\n return !!value && !this.regex?.test(value);\n }\n\n private isValueChanged(): boolean {\n return this.lastControlValue !== this.formField.control().value;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { F8 } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectA11yLocaleConfiguration, kbqInjectNativeElement, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqIconButton, KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { EMPTY, fromEvent } from 'rxjs';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for `kbqInputPassword`, duck-typed here to avoid a circular\n * dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqPasswordToggleControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-password';\n elementType: 'text' | 'password';\n toggleType: () => void;\n};\n\n/**\n * Checks whether the given control structurally matches `KbqPasswordToggleControl`.\n */\nconst isPasswordToggleControl = (control: unknown): control is KbqPasswordToggleControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-password' &&\n 'elementType' in control &&\n 'toggleType' in control &&\n typeof control.toggleType === 'function'\n );\n};\n\nconst getKbqPasswordToggleMissingControlError = (): Error => {\n return Error('You should use kbq-password-toggle with kbqInputPassword');\n};\n\n/** Component which changes password visibility. */\n@Component({\n selector: `kbq-password-toggle`,\n imports: [KbqIconModule, KbqToolTipModule],\n template: `\n <ng-content>\n <i\n role=\"button\"\n [attr.aria-label]=\"accessibleName\"\n [attr.aria-pressed]=\"!hidden\"\n [color]=\"hasError ? 'error' : 'contrast-fade'\"\n [kbq-icon-button]=\"iconClass\"\n [tabindex]=\"tabindex()\"\n ></i>\n </ng-content>\n `,\n styleUrls: ['password-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-password-toggle',\n // `visibility` is what takes the disabled toggle out of the tab order and the accessibility tree;\n // `cdk-visually-hidden` and `aria-hidden` are kept for backward compatibility with consumer styles.\n '[style.visibility]': 'visibility',\n '[class.cdk-visually-hidden]': 'visibility === \"hidden\"',\n '[attr.aria-hidden]': 'visibility === \"hidden\"',\n '(click)': 'toggle($event)',\n '(keydown.ENTER)': 'toggle($event)',\n '(keydown.SPACE)': 'toggle($event)'\n },\n exportAs: 'kbqPasswordToggle'\n})\nexport class KbqPasswordToggle extends KbqTooltipTrigger implements AfterViewInit, OnDestroy, AfterContentInit {\n protected readonly nativeElement = kbqInjectNativeElement();\n protected readonly focusMonitor = inject(FocusMonitor);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n\n readonly tabindex = input<number, unknown>(0, { transform: numberAttribute });\n\n /**\n * @docs-private\n */\n readonly icon = viewChild.required(KbqIconButton);\n\n /**\n * Tooltip shown while the password is visible. Reading it resolves to the tooltip matching the current\n * visibility, so that the base trigger renders the right one.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipNotHidden')\n get content(): string | TemplateRef<any> {\n return this.control.elementType === 'password' ? this.kbqTooltipHidden() : this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n this.updateData();\n }\n\n /** Tooltip shown while the password is hidden. */\n readonly kbqTooltipHidden = input<string | TemplateRef<any>>(undefined!);\n\n protected hasError: boolean = false;\n\n /** Form field password control. */\n private get control(): KbqPasswordToggleControl {\n const control = this.formField?.control();\n\n if (!isPasswordToggleControl(control)) {\n throw getKbqPasswordToggleMissingControlError();\n }\n\n return control;\n }\n\n /**\n * @docs-private\n */\n get hidden(): boolean {\n return this.control.elementType === 'password';\n }\n\n /**\n * @docs-private\n */\n get iconClass(): string {\n return this.hidden ? 'kbq-eye_16' : 'kbq-eye-slash_16';\n }\n\n /**\n * @docs-private\n */\n get visibility(): 'hidden' | 'visible' {\n return this.control.disabled ? 'hidden' : 'visible';\n }\n\n /**\n * Accessible name of the icon-only toggle, describing the action it performs.\n *\n * @docs-private\n */\n protected get accessibleName(): string {\n const { showPassword, hidePassword } = this.a11yLocaleConfiguration();\n\n return this.hidden ? showPassword : hidePassword;\n }\n\n constructor() {\n super();\n\n this.trigger = `${PopUpTriggers.Hover}`;\n\n const keydownTarget = this.formField?.elementRef.nativeElement;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onFormFieldKeyDown(event));\n }\n\n // `stateChanges` is owned by the control and outlives the toggle, so the subscription has to be torn\n // down explicitly. Subscribing after render also keeps it off the server, matching KbqReactivePasswordHint.\n afterNextRender(() => {\n (this.formField?.control()?.stateChanges || EMPTY)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.updateState);\n });\n }\n\n ngAfterContentInit(): void {\n this.updateState();\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n /**\n * @docs-private\n */\n toggle(event: Event): void {\n if (this.control.disabled) return;\n\n this.hide();\n\n this.control.toggleType();\n\n this.updateData();\n\n event.preventDefault();\n }\n\n /**\n * Toggles password visibility for the Alt+F8 shortcut.\n */\n private onFormFieldKeyDown(event: KeyboardEvent): void {\n if (event.altKey && event.keyCode === F8) {\n this.toggle(event);\n }\n }\n\n private updateState = () => {\n this.hasError = !!this.control.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed in front of the form field. */\n@Directive({\n selector: '[kbqPrefix]',\n host: {\n class: 'kbq-prefix'\n },\n exportAs: 'kbqPrefix'\n})\nexport class KbqPrefix {}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { EMPTY } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqHint } from './hint';\n\n/** Password hint to be shown below the password form field control. */\n@Component({\n selector: 'kbq-reactive-password-hint',\n imports: [KbqIconModule],\n template: `\n <i [kbq-icon]=\"icon()\" [color]=\"color\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-reactive-password-hint'\n },\n exportAs: 'kbqReactivePasswordHint'\n})\nexport class KbqReactivePasswordHint extends KbqHint {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** Whether the form field control has an error. */\n readonly hasError = input(false, { transform: booleanAttribute });\n\n /**\n * The form field hint icon.\n *\n * @docs-private\n */\n protected readonly icon = computed(() => (this.hasError() ? 'kbq-xmark-s_16' : 'kbq-check-s_16'));\n\n constructor() {\n super();\n\n this.fillTextOff = true;\n this.compact = false;\n this.color = KbqComponentColors.ContrastFade;\n\n afterNextRender(() => {\n (this.formField?.control()?.stateChanges || EMPTY)\n .pipe(delay(0), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.color = this.makeColor();\n\n this.changeDetectorRef.markForCheck();\n });\n });\n }\n\n private makeColor(): KbqComponentColors {\n const control = this.formField?.control();\n\n if (control?.ngControl?.untouched && control.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.hasError() ? KbqComponentColors.Error : KbqComponentColors.Success;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n output,\n OutputEmitterRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { concatMap, fromEvent, interval, Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport type { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for the control hosted by `kbqNumberInput`, duck-typed here to avoid\n * a circular dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqStepperControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-number';\n readonly step: number;\n stepUp: (step: number) => void;\n /** Decreases the value by `step`. */\n stepDown: (step: number) => void;\n};\n\n/**\n * Checks whether the given value structurally matches `KbqStepperControl`.\n */\nconst isStepperControl = (control: unknown): control is KbqStepperControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-number' &&\n 'stepUp' in control &&\n typeof control.stepUp === 'function' &&\n 'stepDown' in control &&\n typeof control.stepDown === 'function'\n );\n};\n\nconst getKbqStepperToggleMissingControlError = (): Error => {\n return Error('You should use kbq-stepper with kbqNumberInput');\n};\n\n/**\n * Timeout duration when clicking the up/down arrow\n * @docs-private\n */\nexport const KBQ_STEPPER_INITIAL_TIMEOUT = 300;\n\n/**\n * Interval delay when clicking the up/down arrow\n * @docs-private\n */\nexport const KBQ_STEPPER_INTERVAL_DELAY = 75;\n\n/** Component which allow to increment or decrement number value. */\n@Component({\n selector: 'kbq-stepper',\n imports: [KbqIconModule],\n template: `\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-up\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-up-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepUp($event)\"\n ></i>\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-down\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-down-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepDown($event)\"\n ></i>\n `,\n styleUrls: ['stepper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-stepper'\n },\n exportAs: 'kbqStepper'\n})\nexport class KbqStepper {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emitted when the stepper is incremented. */\n readonly stepUp = output<void>();\n\n /** Emitted when the stepper is decremented. */\n readonly stepDown = output<void>();\n\n /** @docs-private */\n protected readonly mouseUp = new Subject<void>();\n\n /**\n * Timing observable simulating long press in native input-number.\n * - Value increases/decreases by step immediately.\n * - Brief pause (`300ms`)\n * - Numbers start running upward/downward with selected speed\n * (controlled by interval period)\n * @see KBQ_STEPPER_INTERVAL_DELAY\n * @see KBQ_STEPPER_INITIAL_TIMEOUT\n * @docs-private\n */\n private readonly longPress = timer(KBQ_STEPPER_INITIAL_TIMEOUT).pipe(\n concatMap(() => interval(KBQ_STEPPER_INTERVAL_DELAY)),\n takeUntilDestroyed(),\n takeUntil(this.mouseUp)\n );\n\n /**\n * Form field number control. Resolved once per control change instead of on every template read.\n *\n * @docs-private\n */\n protected readonly control = computed<KbqStepperControl>(() => {\n const control = this.formField?.control();\n // `formFieldControl` here is `KbqInput` (it owns the `KbqFormFieldControl` provider on\n // `<input kbqNumberInput>`), not the number-input itself: `stepUp`/`stepDown`/`step`\n // live on the sibling `KbqNumberInput` directive, reachable only via `KbqInput.numberInput`.\n const inputNumberControl =\n control?.controlType === 'input-number' && 'numberInput' in control ? control.numberInput : null;\n\n if (!isStepperControl(inputNumberControl)) {\n throw getKbqStepperToggleMissingControlError();\n }\n\n return inputNumberControl;\n });\n\n constructor() {\n this.destroyRef.onDestroy(() => this.mouseUp.complete());\n }\n\n /**\n * @deprecated No longer required — `KbqStepper` resolves its control automatically via DI.\n * @docs-private\n */\n connectTo(_: any): void {}\n\n /** @docs-private */\n onStepUp(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepUp(control.step), this.stepUp);\n }\n\n /** @docs-private */\n onStepDown(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepDown(control.step), this.stepDown);\n }\n\n private handleStep(\n event: MouseEvent,\n step: (control: KbqStepperControl) => void,\n emitter: OutputEmitterRef<void>\n ): void {\n const control = this.control();\n\n if (control.disabled) return;\n\n const performStep = () => {\n step(control);\n emitter.emit();\n };\n\n performStep();\n // handle case when cursor is out of viewport.\n fromEvent(this.document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.mouseUp.next());\n this.longPress.subscribe(performStep);\n event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed at the end of the form field. */\n@Directive({\n selector: '[kbqSuffix]',\n host: {\n class: 'kbq-suffix'\n }\n})\nexport class KbqSuffix {}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n contentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n input,\n model,\n OnDestroy,\n Provider,\n QueryList,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { kbqIconErrorStateContextFactoryProvider } from '@koobiq/components/icon';\nimport { EMPTY, merge } from 'rxjs';\nimport { delay, startWith } from 'rxjs/operators';\nimport { KbqCleaner, kbqCleanerFactoryProvider } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFormFieldControl } from './form-field-control';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { hasPasswordStrengthError, KbqPasswordHint } from './password-hint';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\n/** @docs-private */\nexport function getKbqFormFieldMissingControlError(): Error {\n return Error('kbq-form-field must contain a KbqFormFieldControl');\n}\n\n/**\n * Injection token used to access the owning `KbqFormField`.\n * @docs-private\n */\nexport const KBQ_FORM_FIELD = new InjectionToken<KbqFormField>('KbqFormField');\n\n/**\n * Default options for the kbq-form-field that can be configured using the `KBQ_FORM_FIELD_DEFAULT_OPTIONS`\n * injection token.\n */\nexport type KbqFormFieldDefaultOptions = Partial<{\n /** Disables form field borders and shadows. */\n noBorders: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: boolean;\n /** Whether the form field is displayed horizontally. */\n horizontal: boolean;\n /** Additional CSS classes applied to the label element. */\n labelClass: string | string[] | Set<string>;\n /** Additional CSS classes applied to the content wrapper element. */\n contentClass: string | string[] | Set<string>;\n}>;\n\n/**\n * Injection token that can be used to configure the default options for all kbq-form-field's.\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<KbqFormFieldDefaultOptions>(\n 'KBQ_FORM_FIELD_DEFAULT_OPTIONS'\n);\n\n/** Utility provider for `KBQ_FORM_FIELD_DEFAULT_OPTIONS`. */\nexport const kbqFormFieldDefaultOptionsProvider = (options: KbqFormFieldDefaultOptions): Provider => ({\n provide: KBQ_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: options\n});\n\n/** Container for form controls that applies styling and behavior. */\n@Component({\n selector: 'kbq-form-field',\n imports: [],\n templateUrl: 'form-field.html',\n styleUrls: [\n 'form-field.scss',\n 'form-field-tokens.scss',\n // KbqInput is a directive and can't have styles, so we need to include its styles here.\n // The KbqInput styles are fairly minimal so it shouldn't be a big deal for people who aren't using KbqInput.\n '../input/input.scss',\n '../input/input-tokens.scss',\n '../timepicker/timepicker.scss',\n '../datepicker/datepicker-input.scss',\n '../textarea/textarea.scss',\n '../tags/tag-input-tokens.scss'\n ],\n providers: [\n // Kept for consumers that cannot depend on the form-field entry point.\n { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField },\n { provide: KBQ_FORM_FIELD, useExisting: KbqFormField },\n kbqCleanerFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get control() {\n return formField.control();\n },\n get keydownTarget() {\n return formField.elementRef.nativeElement;\n },\n clearByEscape: true\n };\n }),\n kbqIconErrorStateContextFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get errorState() {\n return formField.control().errorState;\n },\n get stateChanges() {\n return formField.control().stateChanges;\n }\n };\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-form-field',\n\n '[class.kbq-form-field_invalid]': 'invalid',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-form-field_autofilled]': 'autofilled',\n '[class.kbq-form-field_no-borders]': 'noBorders()',\n '[class.kbq-form-field_in-overlay]': 'inOverlay()',\n '[class.kbq-form-field_horizontal]': 'horizontal()',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")',\n\n '(keydown)': 'onKeyDown($event)',\n '(mouseenter)': 'onHoverChanged(true)',\n '(mouseleave)': 'onHoverChanged(false)'\n },\n exportAs: 'kbqFormField'\n})\nexport class KbqFormField\n extends KbqColorDirective\n implements AfterContentInit, AfterViewInit, OnDestroy, AfterContentChecked\n{\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n private readonly customOverlayOrigin = inject(KBQ_CONNECTED_OVERLAY_ORIGIN, { optional: true });\n /**\n * @docs-private\n */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Disables form field borders and shadows. */\n readonly noBorders = input(this.defaultOptions?.noBorders, { transform: booleanAttribute });\n\n /** Use when KbqFormField is in an overlay container. */\n readonly inOverlay = model(this.defaultOptions?.inOverlay);\n\n /** Whether the form field is displayed horizontally. */\n readonly horizontal = input(this.defaultOptions?.horizontal, { transform: booleanAttribute });\n\n /** Additional CSS classes applied to the label element. */\n readonly labelClass = input(this.defaultOptions?.labelClass);\n\n /** Additional CSS classes applied to the content wrapper element. */\n readonly contentClass = input(this.defaultOptions?.contentClass);\n\n /**\n * The form field control.\n *\n * @docs-private\n */\n readonly control = contentChild.required(KbqFormFieldControl);\n /**\n * @docs-private\n */\n readonly stepper = contentChild(KbqStepper);\n /**\n * @docs-private\n *\n * @TODO Should be readonly (#DS-3883)\n */\n @ContentChild(KbqCleaner, { descendants: false }) cleaner: KbqCleaner | null;\n /**\n * @docs-private\n */\n @ContentChild(KbqPasswordToggle) passwordToggle: KbqPasswordToggle | null;\n /**\n * @docs-private\n */\n @ContentChildren(KbqHint) hint: QueryList<KbqHint>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqPasswordHint) passwordHints: QueryList<KbqPasswordHint>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqSuffix) suffix: QueryList<KbqSuffix>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqPrefix) prefix: QueryList<KbqPrefix>;\n /**\n * @docs-private\n */\n readonly connectionContainerRef = viewChild.required<ElementRef>('connectionContainer');\n\n @ContentChildren(KbqReactivePasswordHint) private readonly reactivePasswordHint: QueryList<KbqReactivePasswordHint>;\n @ContentChildren(KbqError) private readonly error: QueryList<KbqError>;\n @ContentChild(KbqLabel) private readonly label: KbqLabel | null;\n\n /**\n * @docs-private\n */\n hovered: boolean = false;\n\n /**\n * @docs-private\n * @deprecated Unused. This property is no longer used by the form field and will be removed in a future version.\n */\n canCleanerClearByEsc: boolean = true;\n\n /** Whether the form field is invalid. */\n get invalid(): boolean {\n return !!this.control()?.errorState;\n }\n\n /**\n * Whether the form field control has an reactive password hint.\n *\n * @docs-private\n */\n protected get hasReactivePasswordHint(): boolean {\n return this.reactivePasswordHint.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-error.\n *\n * @docs-private\n */\n protected get hasError(): boolean {\n return this.error.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-label.\n *\n * @docs-private\n */\n protected get hasLabel(): boolean {\n return !!this.label;\n }\n\n /**\n * Whether the form-field contains kbq-password-hint.\n *\n * @docs-private\n */\n get hasPasswordHint(): boolean {\n return this.passwordHints?.length > 0;\n }\n\n /**\n * Current focus origin state.\n *\n * @docs-private\n */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin;\n\n /**\n * @docs-private\n */\n get hasFocus(): boolean {\n return this.control()?.focused;\n }\n\n /**\n * Whether the form-field contains kbq-hint.\n *\n * @docs-private\n */\n get hasHint(): boolean {\n return this.hint?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbqSuffix.\n *\n * @docs-private\n */\n get hasSuffix(): boolean {\n return this.suffix?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbqPrefix.\n *\n * @docs-private\n */\n get hasPrefix(): boolean {\n return this.prefix?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-cleaner.\n *\n * @docs-private\n */\n get hasCleaner(): boolean {\n return !!this.cleaner;\n }\n\n /**\n * Whether the form-field contains kbq-stepper.\n *\n * @docs-private\n */\n get hasStepper(): boolean {\n return !!this.stepper();\n }\n\n /**\n * Whether the form-field contains kbq-password-toggle.\n *\n * @docs-private\n */\n get hasPasswordToggle(): boolean {\n return !!this.passwordToggle;\n }\n\n /**\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner?.canShow;\n }\n\n /** Whether the form field is disabled. */\n get disabled(): boolean {\n return this.control()?.disabled;\n }\n\n /**\n * Whether the form field control's value was filled in by the browser. Controls that cannot be\n * autofilled do not implement `autofilled`, and report `false` here.\n *\n * Reflected as `kbq-form-field_autofilled` for application code to key on. The autofill styling\n * does not use it: CSS matches `:autofill` directly, in the same style pass the browser fills\n * the field, where this arrives a frame or two later. Keeping the paint on one source also means\n * a class left behind by a detached or re-attached control cannot tint a field the browser no\n * longer considers autofilled.\n */\n get autofilled(): boolean {\n return !!this.control()?.autofilled?.();\n }\n ngAfterContentInit(): void {\n this.validateControlChild();\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this.control()\n .stateChanges.pipe(startWith(), delay(0))\n .subscribe((state: any) => {\n if (this.passwordHints.length && !state?.focused && hasPasswordStrengthError(this.passwordHints)) {\n this.control().ngControl?.control?.setErrors({ passwordStrength: true });\n }\n });\n\n this.initializeControl();\n this.initializePrefixAndSuffix();\n this.initializeHint();\n }\n\n ngAfterContentChecked(): void {\n this.validateControlChild();\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.stopFocusMonitor();\n }\n\n /** Focuses the control. */\n focus(options?: FocusOptions): void {\n this.control().focus(options);\n }\n\n /**\n * @docs-private\n */\n clearValue(event: Event): void {\n this.cleaner?.clear(event);\n }\n\n /**\n * Handles a click on the control's container.\n *\n * @docs-private\n */\n onContainerClick(event: MouseEvent): void {\n const control = this.control();\n\n if (control?.onContainerClick) {\n control.onContainerClick(event);\n }\n }\n\n /**\n * Handles keydown events.\n * @deprecated Unused. This method is no longer called by the form field and will be removed in a future version.\n * @docs-private\n */\n onKeyDown(_event: KeyboardEvent): void {}\n\n /**\n * @docs-private\n */\n onHoverChanged(isHovered: boolean): void {\n if (isHovered !== this.hovered) {\n this.hovered = isHovered;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return (\n this.customOverlayOrigin?.getConnectedOverlayOrigin() ?? this.connectionContainerRef() ?? this.elementRef\n );\n }\n\n /**\n * Determines whether a class from the NgControl should be forwarded to the host element.\n *\n * @docs-private\n */\n shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this.control()?.ngControl;\n\n return ngControl && ngControl[prop];\n }\n\n /**\n * Runs the focus monitor for the form field.\n *\n * @docs-private\n */\n runFocusMonitor = () => {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => (this._focusOrigin = origin));\n };\n\n /**\n * Stops the focus monitor for the form field.\n *\n * @docs-private\n */\n stopFocusMonitor(): void {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /**\n * Throws an error if the form-field control is missing.\n *\n * @docs-private\n */\n protected validateControlChild() {\n let control: KbqFormFieldControl<unknown> | undefined;\n\n try {\n control = this.control();\n } catch {\n throw getKbqFormFieldMissingControlError();\n }\n\n if (!control) {\n throw getKbqFormFieldMissingControlError();\n }\n }\n\n /** Initializes the form field control. */\n private initializeControl(): void {\n const control = this.control();\n\n if (control.controlType) {\n this.elementRef.nativeElement.classList.add(`kbq-form-field-type-${control.controlType}`);\n }\n\n merge(control.stateChanges, control.ngControl?.valueChanges || EMPTY)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n /** Initializes the kbqPrefix and kbqSuffix containers. */\n private initializePrefixAndSuffix(): void {\n // Mark the form field as dirty whenever the prefix or suffix children change. This is necessary because we\n // conditionally display the prefix/suffix containers based on whether there is projected content.\n merge(this.prefix.changes, this.suffix.changes)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n /** Initializes the KbqHint, KbqPasswordHint, KbqReactivePasswordHint and KbqError containers. */\n private initializeHint(): void {\n merge(this.hint.changes, this.passwordHints.changes, this.reactivePasswordHint.changes, this.error.changes)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n\n/**\n * @docs-private\n */\n@Directive({\n selector: '[kbqInput], [kbqTextarea]',\n host: { class: 'kbq-trim' },\n exportAs: 'KbqTrim'\n})\nexport class KbqTrim {\n private readonly noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true }));\n private ngControl = inject(NgControl, { optional: true, self: true })!;\n\n private original: (fn: any) => void;\n\n constructor() {\n if (this.noTrim || !this.ngControl?.valueAccessor) {\n return;\n }\n\n this.original = this.ngControl.valueAccessor.registerOnChange;\n\n this.ngControl.valueAccessor.registerOnChange = this.registerOnChange;\n }\n\n trim(value) {\n if (this.noTrim) {\n return value;\n }\n\n return typeof value === 'string' ? value.trim() : value;\n }\n\n private registerOnChange = (fn) => {\n return this.original.call(this.ngControl.valueAccessor, (value) => fn(this.trim(value)));\n };\n}\n","@if (hasLabel) {\n <label class=\"kbq-form-field__label\" [class]=\"labelClass()\" [attr.for]=\"control().id\">\n <ng-content select=\"kbq-label\" />\n </label>\n}\n\n<div class=\"kbq-form-field__content\" [class]=\"contentClass()\">\n <div #connectionContainer class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n @if (hasPrefix) {\n <div class=\"kbq-form-field__prefix\">\n <ng-content select=\"[kbqPrefix]\" />\n </div>\n }\n\n <div class=\"kbq-form-field__infix\">\n <ng-content />\n </div>\n\n @if (hasSuffix || hasCleaner || hasPasswordToggle || hasStepper) {\n <div class=\"kbq-form-field__suffix\">\n @if (canShowCleaner) {\n <div class=\"kbq-form-field__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <ng-content select=\"kbq-password-toggle, kbq-stepper, [kbqSuffix]\" />\n </div>\n }\n </div>\n\n @if (hasHint || hasPasswordHint || hasError || hasReactivePasswordHint) {\n <div class=\"kbq-form-field__hint\">\n @if (invalid) {\n <ng-content select=\"kbq-error\" />\n }\n\n <ng-content select=\"kbq-hint, kbq-password-hint, kbq-reactive-password-hint\" />\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCleaner } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFieldset, KbqFieldsetItem, KbqLegend } from './fieldset';\nimport { KbqFormField, KbqTrim } from './form-field';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordHint } from './password-hint';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\nconst COMPONENTS = [\n KbqCleaner,\n KbqFormField,\n KbqPrefix,\n KbqSuffix,\n KbqPasswordToggle,\n KbqStepper,\n KbqLabel,\n KbqHint,\n KbqError,\n KbqReactivePasswordHint,\n KbqLegend,\n KbqFieldset,\n KbqFieldsetItem,\n\n // Legacy components\n KbqPasswordHint,\n KbqTrim\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-form-field.mjs","sources":["../../../packages/components/form-field/cleaner.ts","../../../packages/components/form-field/hint.ts","../../../packages/components/form-field/hint.html","../../../packages/components/form-field/error.ts","../../../packages/components/form-field/fieldset.ts","../../../packages/components/form-field/form-field-control.ts","../../../packages/components/form-field/label.ts","../../../packages/components/form-field/password-hint.ts","../../../packages/components/form-field/password-toggle.ts","../../../packages/components/form-field/prefix.ts","../../../packages/components/form-field/reactive-password-hint.ts","../../../packages/components/form-field/stepper.ts","../../../packages/components/form-field/suffix.ts","../../../packages/components/form-field/form-field.ts","../../../packages/components/form-field/form-field.html","../../../packages/components/form-field/form-field.module.ts","../../../packages/components/form-field/koobiq-components-form-field.ts"],"sourcesContent":["import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n InjectionToken,\n input,\n Provider,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { ESCAPE, KbqComponentColors, kbqInjectA11yLocaleConfiguration } from '@koobiq/components/core';\nimport { KbqIconButton } from '@koobiq/components/icon';\nimport { fromEvent } from 'rxjs';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/** @docs-private */\nexport interface KbqCleanerContext {\n readonly control: KbqFormFieldControl<unknown>;\n readonly keydownTarget: HTMLElement;\n readonly clearByEscape: boolean;\n /** Overrides the default `cleanerControl.ngControl?.reset()` behavior when the cleaner is activated. */\n clear?(): void;\n}\n\n/** @docs-private */\nexport const KBQ_CLEANER_CONTEXT = new InjectionToken<KbqCleanerContext | null>('KbqCleanerContext');\n\n/**\n * Utility provider for `KBQ_CLEANER_CONTEXT`, built from a factory that resolves the current host's `KbqCleanerContext`.\n * @docs-private\n */\nexport const kbqCleanerFactoryProvider = (factory: () => KbqCleanerContext): Provider => ({\n provide: KBQ_CLEANER_CONTEXT,\n useFactory: factory\n});\n\n/** @docs-private */\nexport function getKbqFormFieldYouCanNotUseCleanerInNumberInputError(): Error {\n return Error(`You can't use kbq-cleaner with input that have type=\"number\"`);\n}\n\n/**\n * Element to be placed in end of the form field.\n * Resets form control by click.\n */\n@Component({\n selector: 'kbq-cleaner',\n template: `\n <ng-content />\n `,\n styleUrls: ['cleaner.scss', '../icon/icon-button.scss', '../icon/icon-button-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-cleaner',\n // The cleaner is an icon-only control: without a role and an accessible name it is announced as an\n // unlabeled focusable graphic.\n role: 'button',\n '[attr.aria-label]': 'accessibleName()',\n '(click)': 'clear($event)',\n '(keydown.enter)': 'clear($event)',\n '(keydown.space)': 'clear($event)'\n },\n exportAs: 'kbqCleaner'\n})\nexport class KbqCleaner extends KbqIconButton implements AfterContentInit {\n private readonly context = inject(KBQ_CLEANER_CONTEXT, { optional: true });\n\n /**\n * Whether the cleaner can be displayed for the current control state.\n * @docs-private\n */\n get canShow(): boolean {\n const control = this.context?.control;\n\n return control ? !control.disabled && !control.empty : true;\n }\n\n private readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n\n /** Accessible name of the cleaner. Defaults to the localized \"Clear\". */\n readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n /** @docs-private */\n protected readonly accessibleName = computed(() => this.ariaLabel() || this.a11yLocaleConfiguration().clear);\n\n constructor() {\n super();\n\n const initialIcon = 'kbq-circle-xmark_16';\n\n this.iconName = initialIcon;\n this.svgIconName.next(initialIcon);\n this.color = KbqComponentColors.ContrastFade;\n this.autoColor = true;\n }\n\n ngAfterContentInit(): void {\n super.ngAfterContentInit();\n\n if (this.context?.control?.controlType === 'input-number') {\n throw getKbqFormFieldYouCanNotUseCleanerInNumberInputError();\n }\n\n const keydownTarget = this.context?.keydownTarget;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onKeyDown(event));\n }\n }\n\n /**\n * Clears the owning control in response to pointer or keyboard activation.\n * @docs-private\n */\n clear(event: Event): void {\n if (!this.context || !this.canShow) return;\n\n event.stopPropagation();\n event.preventDefault();\n\n if (this.context.clear) {\n this.context.clear();\n } else {\n this.context.control.ngControl?.reset();\n }\n\n this.context.control.focus();\n }\n\n /**\n * Clears the focused control when Escape handling is enabled.\n */\n private onKeyDown(event: KeyboardEvent): void {\n if (event.keyCode === ESCAPE && this.context?.clearByEscape && this.context.control.focused && this.canShow) {\n this.clear(event);\n }\n }\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, Input, input, ViewEncapsulation } from '@angular/core';\nimport { KbqColorDirective } from '@koobiq/components/core';\n\nlet nextUniqueId = 0;\n\n/** Hint text to be shown below the form field control. */\n@Component({\n selector: 'kbq-hint',\n templateUrl: './hint.html',\n styleUrls: ['./hint.scss', './hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-hint',\n '[attr.id]': 'id()',\n '[class.kbq-hint_fill-text-off]': 'fillTextOff',\n '[class.kbq-hint_compact]': 'compact'\n },\n exportAs: 'kbqHint'\n})\nexport class KbqHint extends KbqColorDirective {\n /** Unique ID for the hint. */\n readonly id = input<string>(`kbq-hint-${nextUniqueId++}`);\n\n /** Disables `color` for the hint text. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) fillTextOff: boolean = false;\n\n /** Makes the hint size smaller. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input({ transform: booleanAttribute }) compact: boolean = false;\n}\n","<ng-content select=\"[kbq-icon]\" />\n\n<span class=\"kbq-hint__text\">\n <ng-content />\n</span>\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqHint } from './hint';\n\n/** Error text to be shown below the form field control. */\n@Component({\n selector: 'kbq-error',\n templateUrl: './hint.html',\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-error'\n },\n exportAs: 'kbqError'\n})\nexport class KbqError extends KbqHint {\n constructor() {\n super();\n\n this.color = KbqComponentColors.Error;\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n Directive,\n ElementRef,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\n\n/** Directive for marking an element as legend of `KbqFieldset` */\n@Directive({\n selector: '[kbqLegend]',\n host: {\n class: 'kbq-legend'\n }\n})\nexport class KbqLegend {}\n\n/** Directive for marking elements as items inside `KbqFieldset` */\n@Directive({\n selector: '[kbqFieldsetItem]',\n host: {\n class: 'kbq-fieldset-item'\n }\n})\nexport class KbqFieldsetItem {}\n\n/**\n * A group of form-fields and related controls.\n * Container component emulating the native `fieldset` element.\n */\n@Component({\n selector: 'kbq-fieldset',\n template: `\n <ng-content select=\"[kbqLegend]\" />\n\n <div class=\"kbq-fieldset__container\">\n <ng-content />\n </div>\n\n <div class=\"kbq-form-field__hint\">\n <ng-content select=\"kbq-error\" />\n\n <ng-content select=\"kbq-hint, kbq-password-hint, kbq-reactive-password-hint\" />\n </div>\n `,\n styleUrls: ['./fieldset.scss', './fieldset-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-fieldset',\n role: 'group',\n '[attr.aria-label]': 'ariaLabel()'\n }\n})\nexport class KbqFieldset {\n private readonly legend: Signal<ElementRef<HTMLElement> | undefined> = contentChild(KbqLegend, {\n read: ElementRef\n });\n\n /**\n * Computes the aria-label from the inner text of the legend element.\n * Used to enhance accessibility by labeling the group.\n * @docs-private\n */\n protected readonly ariaLabel = computed(() => this.legend()?.nativeElement?.innerText);\n}\n","import { Signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n/** An interface which allows a control to work inside of a `KbqFormField`. */\nexport abstract class KbqFormFieldControl<T> {\n /** The value of the control. */\n value: T | null;\n\n /**\n * Stream that emits whenever the state of the control changes such that the parent `KbqFormField`\n * needs to run change detection.\n */\n readonly stateChanges: Observable<void>;\n\n /** The element ID for this control. */\n readonly id: string;\n\n /** The placeholder for this control. */\n readonly placeholder: string;\n\n /** Gets the NgControl for this control. */\n readonly ngControl: NgControl | null;\n\n /** Whether the control is focused. */\n readonly focused: boolean;\n\n /** Whether the control is empty. */\n readonly empty: boolean;\n\n /** Whether the control is required. */\n readonly required: boolean;\n\n /** Whether the control is disabled. */\n readonly disabled: boolean;\n\n /** Whether the control is in an error state. */\n readonly errorState: boolean;\n\n /**\n * Whether the control's value was filled in by the browser.\n *\n * Implement it only where autofill is reachable: on a control that is itself a text input or a\n * textarea, or — like `KbqTagList` — on a wrapper that forwards the state of the input it hosts.\n * Leave it out on controls the browser never fills.\n *\n * A signal rather than a plain property because the form field reads it from a host binding and\n * runs `OnPush`: a signal read there marks the form field dirty on its own.\n */\n readonly autofilled?: Signal<boolean>;\n\n /**\n * An optional name for the control type that can be used to distinguish `kbq-form-field` elements\n * based on their control type. The form field will add a class,\n * `kbq-form-field-type-{{controlType}}` to its root element.\n */\n readonly controlType?: string;\n\n /** Handles a click on the control's container. */\n abstract onContainerClick(event: MouseEvent): void;\n\n /** Focuses the control. */\n abstract focus(options?: FocusOptions): void;\n\n /** Opens control's overlay. */\n abstract open?(): void;\n}\n","import { Directive } from '@angular/core';\n\n/** Label for the form field. */\n@Directive({\n selector: 'kbq-label',\n host: {\n class: 'kbq-label'\n },\n exportAs: 'kbqLabel'\n})\nexport class KbqLabel {}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n input,\n QueryList,\n ViewEncapsulation\n} from '@angular/core';\nimport { KBQ_FORM_FIELD_REF, KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { Subject } from 'rxjs';\nimport { KbqFormField } from './form-field';\nimport { KbqHint } from './hint';\n\nlet nextPasswordHintUniqueId = 0;\n\nexport enum PasswordRules {\n Length,\n UpperLatin,\n LowerLatin,\n Digit,\n LatinAndSpecialSymbols,\n Custom\n}\n\nexport const regExpPasswordValidator = {\n [PasswordRules.LowerLatin]: RegExp(/^(?=.*?[a-z])/),\n [PasswordRules.UpperLatin]: RegExp(/^(?=.*?[A-Z])/),\n [PasswordRules.Digit]: RegExp(/^(?=.*?[0-9])/),\n [PasswordRules.LatinAndSpecialSymbols]: RegExp(/[^ !`\"'#№$%&()*+,-./\\\\:;<=>?@[\\]^_{|}~A-Za-z0-9]/)\n};\n\nexport const hasPasswordStrengthError = (\n passwordHints: QueryList<KbqPasswordHint> | readonly KbqPasswordHint[]\n): boolean => {\n return passwordHints.some((hint: KbqPasswordHint) => hint.hasError);\n};\n\n@Component({\n selector: 'kbq-password-hint',\n imports: [KbqIconModule],\n template: `\n <i class=\"kbq-password-hint__icon\" [kbq-icon]=\"icon\" [color]=\"iconColor\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: ['hint.scss', 'hint-tokens.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[attr.id]': 'id()',\n class: 'kbq-hint kbq-password-hint',\n '[class.kbq-success]': 'checked',\n '[class.kbq-error]': 'hasError',\n '[class.kbq-hint_fill-text-off]': 'fillTextOff',\n '[class.kbq-hint_compact]': 'compact'\n }\n})\nexport class KbqPasswordHint extends KbqHint implements AfterContentInit {\n private changeDetectorRef = inject(ChangeDetectorRef);\n private formField = inject(KBQ_FORM_FIELD_REF, { optional: true })!;\n\n readonly id = input<string>(`kbq-hint-${nextPasswordHintUniqueId++}`);\n\n readonly rule = input<PasswordRules | any>();\n\n readonly min = input<number>(undefined!);\n readonly max = input<number>(undefined!);\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() regex: RegExp | null;\n readonly customCheckRule = input<(value: string) => boolean>(undefined!, { alias: 'checkRule' });\n\n readonly viewFormField = input<KbqFormField>();\n\n // TODO: Skipped for migration because:\n // This input is inherited from a superclass, but the parent cannot be migrated.\n @Input() fillTextOff: boolean = true;\n\n hasError: boolean = false;\n checked: boolean = false;\n\n get icon(): string {\n return this.checked ? 'kbq-check-s_16' : 'kbq-xmark-s_16';\n }\n\n /**\n * The form field hint icon color.\n *\n * @docs-private\n */\n protected get iconColor(): KbqComponentColors {\n if (this.control?.ngControl.untouched && this.control?.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.checked ? KbqComponentColors.Success : KbqComponentColors.Error;\n }\n\n private checkRule: (value: string) => boolean;\n\n private get control() {\n return this.formField.control();\n }\n\n private lastControlValue: string;\n\n constructor() {\n super();\n this.color = KbqComponentColors.ContrastFade;\n this.setDefaultColor(KbqComponentColors.ContrastFade);\n }\n\n ngAfterContentInit(): void {\n this.formField = this.formField || this.viewFormField();\n\n const rule = this.rule();\n const customCheckRule = this.customCheckRule();\n\n if (rule === PasswordRules.Custom && this.regex === undefined && customCheckRule === undefined) {\n throw Error('You should set [regex] or [checkRule] for PasswordRules.Custom');\n }\n\n if (rule === PasswordRules.Length && (this.min() || this.max()) === null) {\n throw Error('For [rule] \"Length\" need set [min] and [max]');\n }\n\n if (rule === PasswordRules.Length) {\n this.checkRule = this.checkLengthRule;\n } else if ([PasswordRules.UpperLatin, PasswordRules.LowerLatin, PasswordRules.Digit].includes(rule)) {\n this.regex = regExpPasswordValidator[rule];\n this.checkRule = this.checkRegexRule;\n } else if (rule === PasswordRules.LatinAndSpecialSymbols) {\n this.regex = regExpPasswordValidator[rule];\n this.checkRule = this.checkSpecialSymbolsRegexRule;\n } else if (rule === PasswordRules.Custom) {\n this.checkRule = this.regex === undefined ? customCheckRule : this.checkRegexRule;\n } else {\n throw Error(`Unknown [rule]=${rule}`);\n }\n\n // prevent error when formField.control is undefined\n setTimeout(() => {\n this.formField.control().stateChanges.subscribe(this.checkValue);\n\n (this.formField.control() as unknown as { checkRule: Subject<any> }).checkRule.subscribe(() => {\n this.checked = this.checkRule(this.control.value);\n this.hasError = !this.checkRule(this.control.value);\n });\n });\n }\n\n private checkValue = () => {\n if (this.control.focused && this.isValueChanged()) {\n this.hasError = false;\n\n this.checked = this.checkRule(this.control.value);\n } else if (!this.control.focused && !this.isValueChanged()) {\n this.hasError = !this.checkRule(this.control.value);\n }\n\n if (!this.control.required && !this.control.value) {\n this.checked = this.hasError = false;\n }\n\n this.lastControlValue = this.control.value;\n this.changeDetectorRef.markForCheck();\n };\n\n private checkLengthRule(value: string): boolean {\n return value.length >= this.min() && value.length <= this.max();\n }\n\n private checkRegexRule = (value: string): boolean => {\n return !!this.regex?.test(value);\n };\n\n private checkSpecialSymbolsRegexRule(value: string): boolean {\n return !!value && !this.regex?.test(value);\n }\n\n private isValueChanged(): boolean {\n return this.lastControlValue !== this.formField.control().value;\n }\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\n\nimport { F8 } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n afterNextRender,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { kbqInjectA11yLocaleConfiguration, kbqInjectNativeElement, PopUpTriggers } from '@koobiq/components/core';\nimport { KbqIconButton, KbqIconModule } from '@koobiq/components/icon';\nimport { KbqToolTipModule, KbqTooltipTrigger } from '@koobiq/components/tooltip';\nimport { EMPTY, fromEvent } from 'rxjs';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for `kbqInputPassword`, duck-typed here to avoid a circular\n * dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqPasswordToggleControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-password';\n elementType: 'text' | 'password';\n toggleType: () => void;\n};\n\n/**\n * Checks whether the given control structurally matches `KbqPasswordToggleControl`.\n */\nconst isPasswordToggleControl = (control: unknown): control is KbqPasswordToggleControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-password' &&\n 'elementType' in control &&\n 'toggleType' in control &&\n typeof control.toggleType === 'function'\n );\n};\n\nconst getKbqPasswordToggleMissingControlError = (): Error => {\n return Error('You should use kbq-password-toggle with kbqInputPassword');\n};\n\n/** Component which changes password visibility. */\n@Component({\n selector: `kbq-password-toggle`,\n imports: [KbqIconModule, KbqToolTipModule],\n template: `\n <ng-content>\n <i\n role=\"button\"\n [attr.aria-label]=\"accessibleName\"\n [attr.aria-pressed]=\"!hidden\"\n [color]=\"hasError ? 'error' : 'contrast-fade'\"\n [kbq-icon-button]=\"iconClass\"\n [tabindex]=\"tabindex()\"\n ></i>\n </ng-content>\n `,\n styleUrls: ['password-toggle.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-password-toggle',\n // `visibility` is what takes the disabled toggle out of the tab order and the accessibility tree;\n // `cdk-visually-hidden` and `aria-hidden` are kept for backward compatibility with consumer styles.\n '[style.visibility]': 'visibility',\n '[class.cdk-visually-hidden]': 'visibility === \"hidden\"',\n '[attr.aria-hidden]': 'visibility === \"hidden\"',\n '(click)': 'toggle($event)',\n '(keydown.ENTER)': 'toggle($event)',\n '(keydown.SPACE)': 'toggle($event)'\n },\n exportAs: 'kbqPasswordToggle'\n})\nexport class KbqPasswordToggle extends KbqTooltipTrigger implements AfterViewInit, OnDestroy, AfterContentInit {\n protected readonly nativeElement = kbqInjectNativeElement();\n protected readonly focusMonitor = inject(FocusMonitor);\n protected readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n private readonly a11yLocaleConfiguration = kbqInjectA11yLocaleConfiguration();\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n\n readonly tabindex = input<number, unknown>(0, { transform: numberAttribute });\n\n /**\n * @docs-private\n */\n readonly icon = viewChild.required(KbqIconButton);\n\n /**\n * Tooltip shown while the password is visible. Reading it resolves to the tooltip matching the current\n * visibility, so that the base trigger renders the right one.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input('kbqTooltipNotHidden')\n get content(): string | TemplateRef<any> {\n return this.control.elementType === 'password' ? this.kbqTooltipHidden() : this._content;\n }\n\n set content(content: string | TemplateRef<any>) {\n this._content = content;\n\n this.updateData();\n }\n\n /** Tooltip shown while the password is hidden. */\n readonly kbqTooltipHidden = input<string | TemplateRef<any>>(undefined!);\n\n protected hasError: boolean = false;\n\n /** Form field password control. */\n private get control(): KbqPasswordToggleControl {\n const control = this.formField?.control();\n\n if (!isPasswordToggleControl(control)) {\n throw getKbqPasswordToggleMissingControlError();\n }\n\n return control;\n }\n\n /**\n * @docs-private\n */\n get hidden(): boolean {\n return this.control.elementType === 'password';\n }\n\n /**\n * @docs-private\n */\n get iconClass(): string {\n return this.hidden ? 'kbq-eye_16' : 'kbq-eye-slash_16';\n }\n\n /**\n * @docs-private\n */\n get visibility(): 'hidden' | 'visible' {\n return this.control.disabled ? 'hidden' : 'visible';\n }\n\n /**\n * Accessible name of the icon-only toggle, describing the action it performs.\n *\n * @docs-private\n */\n protected get accessibleName(): string {\n const { showPassword, hidePassword } = this.a11yLocaleConfiguration();\n\n return this.hidden ? showPassword : hidePassword;\n }\n\n constructor() {\n super();\n\n this.trigger = `${PopUpTriggers.Hover}`;\n\n const keydownTarget = this.formField?.elementRef.nativeElement;\n\n if (keydownTarget) {\n fromEvent<KeyboardEvent>(keydownTarget, 'keydown')\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => this.onFormFieldKeyDown(event));\n }\n\n // `stateChanges` is owned by the control and outlives the toggle, so the subscription has to be torn\n // down explicitly. Subscribing after render also keeps it off the server, matching KbqReactivePasswordHint.\n afterNextRender(() => {\n (this.formField?.control()?.stateChanges || EMPTY)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(this.updateState);\n });\n }\n\n ngAfterContentInit(): void {\n this.updateState();\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.nativeElement);\n }\n\n /**\n * @docs-private\n */\n toggle(event: Event): void {\n if (this.control.disabled) return;\n\n this.hide();\n\n this.control.toggleType();\n\n this.updateData();\n\n event.preventDefault();\n }\n\n /**\n * Toggles password visibility for the Alt+F8 shortcut.\n */\n private onFormFieldKeyDown(event: KeyboardEvent): void {\n if (event.altKey && event.keyCode === F8) {\n this.toggle(event);\n }\n }\n\n private updateState = () => {\n this.hasError = !!this.control.errorState;\n\n this.changeDetectorRef.markForCheck();\n };\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed in front of the form field. */\n@Directive({\n selector: '[kbqPrefix]',\n host: {\n class: 'kbq-prefix'\n },\n exportAs: 'kbqPrefix'\n})\nexport class KbqPrefix {}\n","import {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqComponentColors } from '@koobiq/components/core';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { EMPTY } from 'rxjs';\nimport { delay } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport { KbqHint } from './hint';\n\n/** Password hint to be shown below the password form field control. */\n@Component({\n selector: 'kbq-reactive-password-hint',\n imports: [KbqIconModule],\n template: `\n <i [kbq-icon]=\"icon()\" [color]=\"color\"></i>\n\n <span class=\"kbq-hint__text\">\n <ng-content />\n </span>\n `,\n styleUrls: [\n './hint.scss',\n './hint-tokens.scss'\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-reactive-password-hint'\n },\n exportAs: 'kbqReactivePasswordHint'\n})\nexport class KbqReactivePasswordHint extends KbqHint {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n\n /** Whether the form field control has an error. */\n readonly hasError = input(false, { transform: booleanAttribute });\n\n /**\n * The form field hint icon.\n *\n * @docs-private\n */\n protected readonly icon = computed(() => (this.hasError() ? 'kbq-xmark-s_16' : 'kbq-check-s_16'));\n\n constructor() {\n super();\n\n this.fillTextOff = true;\n this.compact = false;\n this.color = KbqComponentColors.ContrastFade;\n\n afterNextRender(() => {\n (this.formField?.control()?.stateChanges || EMPTY)\n .pipe(delay(0), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.color = this.makeColor();\n\n this.changeDetectorRef.markForCheck();\n });\n });\n }\n\n private makeColor(): KbqComponentColors {\n const control = this.formField?.control();\n\n if (control?.ngControl?.untouched && control.ngControl.pristine) {\n return KbqComponentColors.ContrastFade;\n }\n\n return this.hasError() ? KbqComponentColors.Error : KbqComponentColors.Success;\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n output,\n OutputEmitterRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { KbqIconModule } from '@koobiq/components/icon';\nimport { concatMap, fromEvent, interval, Subject, timer } from 'rxjs';\nimport { take, takeUntil } from 'rxjs/operators';\nimport { KBQ_FORM_FIELD } from './form-field';\nimport type { KbqFormFieldControl } from './form-field-control';\n\n/**\n * Narrow structural contract for the control hosted by `kbqNumberInput`, duck-typed here to avoid\n * a circular dependency between `@koobiq/components/form-field` and `@koobiq/components/input`.\n */\ntype KbqStepperControl = KbqFormFieldControl<unknown> & {\n readonly controlType: 'input-number';\n readonly step: number;\n stepUp: (step: number) => void;\n /** Decreases the value by `step`. */\n stepDown: (step: number) => void;\n};\n\n/**\n * Checks whether the given value structurally matches `KbqStepperControl`.\n */\nconst isStepperControl = (control: unknown): control is KbqStepperControl => {\n return (\n !!control &&\n typeof control === 'object' &&\n 'controlType' in control &&\n control.controlType === 'input-number' &&\n 'stepUp' in control &&\n typeof control.stepUp === 'function' &&\n 'stepDown' in control &&\n typeof control.stepDown === 'function'\n );\n};\n\nconst getKbqStepperToggleMissingControlError = (): Error => {\n return Error('You should use kbq-stepper with kbqNumberInput');\n};\n\n/**\n * Timeout duration when clicking the up/down arrow\n * @docs-private\n */\nexport const KBQ_STEPPER_INITIAL_TIMEOUT = 300;\n\n/**\n * Interval delay when clicking the up/down arrow\n * @docs-private\n */\nexport const KBQ_STEPPER_INTERVAL_DELAY = 75;\n\n/** Component which allow to increment or decrement number value. */\n@Component({\n selector: 'kbq-stepper',\n imports: [KbqIconModule],\n template: `\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-up\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-up-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepUp($event)\"\n ></i>\n <i\n aria-hidden=\"true\"\n class=\"kbq-stepper-step-down\"\n color=\"contrast-fade\"\n kbq-icon-button=\"kbq-chevron-down-s_16\"\n [tabindex]=\"-1\"\n [autoColor]=\"true\"\n [disabled]=\"control().disabled\"\n (mousedown)=\"onStepDown($event)\"\n ></i>\n `,\n styleUrls: ['stepper.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-stepper'\n },\n exportAs: 'kbqStepper'\n})\nexport class KbqStepper {\n private readonly formField = inject(KBQ_FORM_FIELD, { optional: true });\n private readonly document = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n\n /** Emitted when the stepper is incremented. */\n readonly stepUp = output<void>();\n\n /** Emitted when the stepper is decremented. */\n readonly stepDown = output<void>();\n\n /** @docs-private */\n protected readonly mouseUp = new Subject<void>();\n\n /**\n * Timing observable simulating long press in native input-number.\n * - Value increases/decreases by step immediately.\n * - Brief pause (`300ms`)\n * - Numbers start running upward/downward with selected speed\n * (controlled by interval period)\n * @see KBQ_STEPPER_INTERVAL_DELAY\n * @see KBQ_STEPPER_INITIAL_TIMEOUT\n * @docs-private\n */\n private readonly longPress = timer(KBQ_STEPPER_INITIAL_TIMEOUT).pipe(\n concatMap(() => interval(KBQ_STEPPER_INTERVAL_DELAY)),\n takeUntilDestroyed(),\n takeUntil(this.mouseUp)\n );\n\n /**\n * Form field number control. Resolved once per control change instead of on every template read.\n *\n * @docs-private\n */\n protected readonly control = computed<KbqStepperControl>(() => {\n const control = this.formField?.control();\n // `formFieldControl` here is `KbqInput` (it owns the `KbqFormFieldControl` provider on\n // `<input kbqNumberInput>`), not the number-input itself: `stepUp`/`stepDown`/`step`\n // live on the sibling `KbqNumberInput` directive, reachable only via `KbqInput.numberInput`.\n const inputNumberControl =\n control?.controlType === 'input-number' && 'numberInput' in control ? control.numberInput : null;\n\n if (!isStepperControl(inputNumberControl)) {\n throw getKbqStepperToggleMissingControlError();\n }\n\n return inputNumberControl;\n });\n\n constructor() {\n this.destroyRef.onDestroy(() => this.mouseUp.complete());\n }\n\n /**\n * @deprecated No longer required — `KbqStepper` resolves its control automatically via DI.\n * @docs-private\n */\n connectTo(_: any): void {}\n\n /** @docs-private */\n onStepUp(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepUp(control.step), this.stepUp);\n }\n\n /** @docs-private */\n onStepDown(event: MouseEvent): void {\n this.handleStep(event, (control) => control.stepDown(control.step), this.stepDown);\n }\n\n private handleStep(\n event: MouseEvent,\n step: (control: KbqStepperControl) => void,\n emitter: OutputEmitterRef<void>\n ): void {\n const control = this.control();\n\n if (control.disabled) return;\n\n const performStep = () => {\n step(control);\n emitter.emit();\n };\n\n performStep();\n // handle case when cursor is out of viewport.\n fromEvent(this.document, 'mouseup')\n .pipe(take(1), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.mouseUp.next());\n this.longPress.subscribe(performStep);\n event.preventDefault();\n }\n}\n","import { Directive } from '@angular/core';\n\n/** Element to be placed at the end of the form field. */\n@Directive({\n selector: '[kbqSuffix]',\n host: {\n class: 'kbq-suffix'\n }\n})\nexport class KbqSuffix {}\n","import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterContentChecked,\n AfterContentInit,\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n contentChild,\n ContentChildren,\n DestroyRef,\n Directive,\n ElementRef,\n HostAttributeToken,\n inject,\n InjectionToken,\n input,\n model,\n OnDestroy,\n Provider,\n QueryList,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { KBQ_CONNECTED_OVERLAY_ORIGIN, KBQ_FORM_FIELD_REF, KbqColorDirective } from '@koobiq/components/core';\nimport { kbqIconErrorStateContextFactoryProvider } from '@koobiq/components/icon';\nimport { EMPTY, merge } from 'rxjs';\nimport { delay, startWith } from 'rxjs/operators';\nimport { KbqCleaner, kbqCleanerFactoryProvider } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFormFieldControl } from './form-field-control';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { hasPasswordStrengthError, KbqPasswordHint } from './password-hint';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\n/** @docs-private */\nexport function getKbqFormFieldMissingControlError(): Error {\n return Error('kbq-form-field must contain a KbqFormFieldControl');\n}\n\n/**\n * Injection token used to access the owning `KbqFormField`.\n * @docs-private\n */\nexport const KBQ_FORM_FIELD = new InjectionToken<KbqFormField>('KbqFormField');\n\n/**\n * Default options for the kbq-form-field that can be configured using the `KBQ_FORM_FIELD_DEFAULT_OPTIONS`\n * injection token.\n */\nexport type KbqFormFieldDefaultOptions = Partial<{\n /** Disables form field borders and shadows. */\n noBorders: boolean;\n /** Use when KbqFormField is in an overlay container. */\n inOverlay: boolean;\n /** Whether the form field is displayed horizontally. */\n horizontal: boolean;\n /** Additional CSS classes applied to the label element. */\n labelClass: string | string[] | Set<string>;\n /** Additional CSS classes applied to the content wrapper element. */\n contentClass: string | string[] | Set<string>;\n}>;\n\n/**\n * Injection token that can be used to configure the default options for all kbq-form-field's.\n * @docs-private\n */\nexport const KBQ_FORM_FIELD_DEFAULT_OPTIONS = new InjectionToken<KbqFormFieldDefaultOptions>(\n 'KBQ_FORM_FIELD_DEFAULT_OPTIONS'\n);\n\n/** Utility provider for `KBQ_FORM_FIELD_DEFAULT_OPTIONS`. */\nexport const kbqFormFieldDefaultOptionsProvider = (options: KbqFormFieldDefaultOptions): Provider => ({\n provide: KBQ_FORM_FIELD_DEFAULT_OPTIONS,\n useValue: options\n});\n\n/** Container for form controls that applies styling and behavior. */\n@Component({\n selector: 'kbq-form-field',\n imports: [],\n templateUrl: 'form-field.html',\n styleUrls: [\n 'form-field.scss',\n 'form-field-tokens.scss',\n // KbqInput is a directive and can't have styles, so we need to include its styles here.\n // The KbqInput styles are fairly minimal so it shouldn't be a big deal for people who aren't using KbqInput.\n '../input/input.scss',\n '../input/input-tokens.scss',\n '../timepicker/timepicker.scss',\n '../datepicker/datepicker-input.scss',\n '../textarea/textarea.scss',\n '../tags/tag-input-tokens.scss'\n ],\n providers: [\n // Kept for consumers that cannot depend on the form-field entry point.\n { provide: KBQ_FORM_FIELD_REF, useExisting: KbqFormField },\n { provide: KBQ_FORM_FIELD, useExisting: KbqFormField },\n kbqCleanerFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get control() {\n return formField.control();\n },\n get keydownTarget() {\n return formField.elementRef.nativeElement;\n },\n clearByEscape: true\n };\n }),\n kbqIconErrorStateContextFactoryProvider(() => {\n const formField = inject(KBQ_FORM_FIELD);\n\n return {\n get errorState() {\n return formField.control().errorState;\n },\n get stateChanges() {\n return formField.control().stateChanges;\n }\n };\n })\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-form-field',\n\n '[class.kbq-form-field_invalid]': 'invalid',\n '[class.kbq-disabled]': 'disabled',\n '[class.kbq-form-field_autofilled]': 'autofilled',\n '[class.kbq-form-field_no-borders]': 'noBorders()',\n '[class.kbq-form-field_in-overlay]': 'inOverlay()',\n '[class.kbq-form-field_horizontal]': 'horizontal()',\n\n '[class.ng-untouched]': 'shouldForward(\"untouched\")',\n '[class.ng-touched]': 'shouldForward(\"touched\")',\n '[class.ng-pristine]': 'shouldForward(\"pristine\")',\n '[class.ng-dirty]': 'shouldForward(\"dirty\")',\n '[class.ng-valid]': 'shouldForward(\"valid\")',\n '[class.ng-invalid]': 'shouldForward(\"invalid\")',\n '[class.ng-pending]': 'shouldForward(\"pending\")',\n\n '(keydown)': 'onKeyDown($event)',\n '(mouseenter)': 'onHoverChanged(true)',\n '(mouseleave)': 'onHoverChanged(false)'\n },\n exportAs: 'kbqFormField'\n})\nexport class KbqFormField\n extends KbqColorDirective\n implements AfterContentInit, AfterViewInit, OnDestroy, AfterContentChecked\n{\n private readonly destroyRef = inject(DestroyRef);\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly defaultOptions = inject(KBQ_FORM_FIELD_DEFAULT_OPTIONS, { optional: true });\n private readonly customOverlayOrigin = inject(KBQ_CONNECTED_OVERLAY_ORIGIN, { optional: true });\n /**\n * @docs-private\n */\n readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n /** Disables form field borders and shadows. */\n readonly noBorders = input(this.defaultOptions?.noBorders, { transform: booleanAttribute });\n\n /** Use when KbqFormField is in an overlay container. */\n readonly inOverlay = model(this.defaultOptions?.inOverlay);\n\n /** Whether the form field is displayed horizontally. */\n readonly horizontal = input(this.defaultOptions?.horizontal, { transform: booleanAttribute });\n\n /** Additional CSS classes applied to the label element. */\n readonly labelClass = input(this.defaultOptions?.labelClass);\n\n /** Additional CSS classes applied to the content wrapper element. */\n readonly contentClass = input(this.defaultOptions?.contentClass);\n\n /**\n * The form field control.\n *\n * @docs-private\n */\n readonly control = contentChild.required(KbqFormFieldControl);\n /**\n * @docs-private\n */\n readonly stepper = contentChild(KbqStepper);\n /**\n * @docs-private\n *\n * @TODO Should be readonly (#DS-3883)\n */\n @ContentChild(KbqCleaner, { descendants: false }) cleaner: KbqCleaner | null;\n /**\n * @docs-private\n */\n @ContentChild(KbqPasswordToggle) passwordToggle: KbqPasswordToggle | null;\n /**\n * @docs-private\n */\n @ContentChildren(KbqHint) hint: QueryList<KbqHint>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqPasswordHint) passwordHints: QueryList<KbqPasswordHint>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqSuffix) suffix: QueryList<KbqSuffix>;\n /**\n * @docs-private\n */\n @ContentChildren(KbqPrefix) prefix: QueryList<KbqPrefix>;\n /**\n * @docs-private\n */\n readonly connectionContainerRef = viewChild.required<ElementRef>('connectionContainer');\n\n @ContentChildren(KbqReactivePasswordHint) private readonly reactivePasswordHint: QueryList<KbqReactivePasswordHint>;\n @ContentChildren(KbqError) private readonly error: QueryList<KbqError>;\n @ContentChild(KbqLabel) private readonly label: KbqLabel | null;\n\n /**\n * @docs-private\n */\n hovered: boolean = false;\n\n /**\n * @docs-private\n * @deprecated Unused. This property is no longer used by the form field and will be removed in a future version.\n */\n canCleanerClearByEsc: boolean = true;\n\n /** Whether the form field is invalid. */\n get invalid(): boolean {\n return !!this.control()?.errorState;\n }\n\n /**\n * Whether the form field control has an reactive password hint.\n *\n * @docs-private\n */\n protected get hasReactivePasswordHint(): boolean {\n return this.reactivePasswordHint.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-error.\n *\n * @docs-private\n */\n protected get hasError(): boolean {\n return this.error.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-label.\n *\n * @docs-private\n */\n protected get hasLabel(): boolean {\n return !!this.label;\n }\n\n /**\n * Whether the form-field contains kbq-password-hint.\n *\n * @docs-private\n */\n get hasPasswordHint(): boolean {\n return this.passwordHints?.length > 0;\n }\n\n /**\n * Current focus origin state.\n *\n * @docs-private\n */\n get focusOrigin(): FocusOrigin {\n return this._focusOrigin;\n }\n\n private _focusOrigin: FocusOrigin;\n\n /**\n * @docs-private\n */\n get hasFocus(): boolean {\n return this.control()?.focused;\n }\n\n /**\n * Whether the form-field contains kbq-hint.\n *\n * @docs-private\n */\n get hasHint(): boolean {\n return this.hint?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbqSuffix.\n *\n * @docs-private\n */\n get hasSuffix(): boolean {\n return this.suffix?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbqPrefix.\n *\n * @docs-private\n */\n get hasPrefix(): boolean {\n return this.prefix?.length > 0;\n }\n\n /**\n * Whether the form-field contains kbq-cleaner.\n *\n * @docs-private\n */\n get hasCleaner(): boolean {\n return !!this.cleaner;\n }\n\n /**\n * Whether the form-field contains kbq-stepper.\n *\n * @docs-private\n */\n get hasStepper(): boolean {\n return !!this.stepper();\n }\n\n /**\n * Whether the form-field contains kbq-password-toggle.\n *\n * @docs-private\n */\n get hasPasswordToggle(): boolean {\n return !!this.passwordToggle;\n }\n\n /**\n * @docs-private\n */\n get canShowCleaner(): boolean {\n return !!this.cleaner?.canShow;\n }\n\n /** Whether the form field is disabled. */\n get disabled(): boolean {\n return this.control()?.disabled;\n }\n\n /**\n * Whether the form field control's value was filled in by the browser. Controls that cannot be\n * autofilled do not implement `autofilled`, and report `false` here.\n *\n * Reflected as `kbq-form-field_autofilled` for application code to key on. The autofill styling\n * does not use it: CSS matches `:autofill` directly, in the same style pass the browser fills\n * the field, where this arrives a frame or two later. Keeping the paint on one source also means\n * a class left behind by a detached or re-attached control cannot tint a field the browser no\n * longer considers autofilled.\n */\n get autofilled(): boolean {\n return !!this.control()?.autofilled?.();\n }\n ngAfterContentInit(): void {\n this.validateControlChild();\n\n // Subscribe to changes in the child control state in order to update the form field UI.\n this.control()\n .stateChanges.pipe(startWith(), delay(0))\n .subscribe((state: any) => {\n if (this.passwordHints.length && !state?.focused && hasPasswordStrengthError(this.passwordHints)) {\n this.control().ngControl?.control?.setErrors({ passwordStrength: true });\n }\n });\n\n this.initializeControl();\n this.initializePrefixAndSuffix();\n this.initializeHint();\n }\n\n ngAfterContentChecked(): void {\n this.validateControlChild();\n }\n\n ngAfterViewInit(): void {\n this.runFocusMonitor();\n\n // Because the above changes a value used in the template after it was checked, we need\n // to trigger CD or the change might not be reflected if there is no other CD scheduled.\n this.changeDetectorRef.detectChanges();\n }\n\n ngOnDestroy(): void {\n this.stopFocusMonitor();\n }\n\n /** Focuses the control. */\n focus(options?: FocusOptions): void {\n this.control().focus(options);\n }\n\n /**\n * @docs-private\n */\n clearValue(event: Event): void {\n this.cleaner?.clear(event);\n }\n\n /**\n * Handles a click on the control's container.\n *\n * @docs-private\n */\n onContainerClick(event: MouseEvent): void {\n const control = this.control();\n\n if (control?.onContainerClick) {\n control.onContainerClick(event);\n }\n }\n\n /**\n * Handles keydown events.\n * @deprecated Unused. This method is no longer called by the form field and will be removed in a future version.\n * @docs-private\n */\n onKeyDown(_event: KeyboardEvent): void {}\n\n /**\n * @docs-private\n */\n onHoverChanged(isHovered: boolean): void {\n if (isHovered !== this.hovered) {\n this.hovered = isHovered;\n this.changeDetectorRef.markForCheck();\n }\n }\n\n /**\n * Gets an ElementRef for the element that a overlay attached to the form-field should be positioned relative to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return (\n this.customOverlayOrigin?.getConnectedOverlayOrigin() ?? this.connectionContainerRef() ?? this.elementRef\n );\n }\n\n /**\n * Determines whether a class from the NgControl should be forwarded to the host element.\n *\n * @docs-private\n */\n shouldForward(prop: keyof NgControl): boolean {\n const ngControl = this.control()?.ngControl;\n\n return ngControl && ngControl[prop];\n }\n\n /**\n * Runs the focus monitor for the form field.\n *\n * @docs-private\n */\n runFocusMonitor = () => {\n this.focusMonitor\n .monitor(this.elementRef.nativeElement, true)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((origin) => (this._focusOrigin = origin));\n };\n\n /**\n * Stops the focus monitor for the form field.\n *\n * @docs-private\n */\n stopFocusMonitor(): void {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n /**\n * Throws an error if the form-field control is missing.\n *\n * @docs-private\n */\n protected validateControlChild() {\n let control: KbqFormFieldControl<unknown> | undefined;\n\n try {\n control = this.control();\n } catch {\n throw getKbqFormFieldMissingControlError();\n }\n\n if (!control) {\n throw getKbqFormFieldMissingControlError();\n }\n }\n\n /** Initializes the form field control. */\n private initializeControl(): void {\n const control = this.control();\n\n if (control.controlType) {\n this.elementRef.nativeElement.classList.add(`kbq-form-field-type-${control.controlType}`);\n }\n\n merge(control.stateChanges, control.ngControl?.valueChanges || EMPTY)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n /** Initializes the kbqPrefix and kbqSuffix containers. */\n private initializePrefixAndSuffix(): void {\n // Mark the form field as dirty whenever the prefix or suffix children change. This is necessary because we\n // conditionally display the prefix/suffix containers based on whether there is projected content.\n merge(this.prefix.changes, this.suffix.changes)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n\n /** Initializes the KbqHint, KbqPasswordHint, KbqReactivePasswordHint and KbqError containers. */\n private initializeHint(): void {\n merge(this.hint.changes, this.passwordHints.changes, this.reactivePasswordHint.changes, this.error.changes)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.changeDetectorRef.markForCheck());\n }\n}\n\n/**\n * @docs-private\n */\n@Directive({\n selector: '[kbqInput], [kbqTextarea]',\n host: { class: 'kbq-trim' },\n exportAs: 'KbqTrim'\n})\nexport class KbqTrim {\n private readonly noTrim = coerceBooleanProperty(inject(new HostAttributeToken('no-trim'), { optional: true }));\n private readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n constructor() {\n if (this.noTrim || !this.ngControl) {\n return;\n }\n\n // Wrapped through the declared accessors rather than through `NgControl.valueAccessor`, which\n // Angular 22 leaves null until the form directive's first `ngOnChanges` — after this\n // constructor. Resolved here rather than in a field initializer so that an element without a\n // form control neither patches nor eagerly constructs its accessors. An accessor the form\n // does not select is patched too, but Angular never registers on it. An accessor installed by\n // assigning `NgControl.valueAccessor` directly is not covered.\n const valueAccessors = inject(NG_VALUE_ACCESSOR, { optional: true, self: true });\n\n for (const valueAccessor of valueAccessors ?? []) {\n const original = valueAccessor.registerOnChange.bind(valueAccessor);\n\n valueAccessor.registerOnChange = (fn: (value: unknown) => void) =>\n original((value: unknown) => fn(this.trim(value)));\n }\n }\n\n trim(value) {\n if (this.noTrim) {\n return value;\n }\n\n return typeof value === 'string' ? value.trim() : value;\n }\n}\n","@if (hasLabel) {\n <label class=\"kbq-form-field__label\" [class]=\"labelClass()\" [attr.for]=\"control().id\">\n <ng-content select=\"kbq-label\" />\n </label>\n}\n\n<div class=\"kbq-form-field__content\" [class]=\"contentClass()\">\n <div #connectionContainer class=\"kbq-form-field__container\" (click)=\"onContainerClick($event)\">\n @if (hasPrefix) {\n <div class=\"kbq-form-field__prefix\">\n <ng-content select=\"[kbqPrefix]\" />\n </div>\n }\n\n <div class=\"kbq-form-field__infix\">\n <ng-content />\n </div>\n\n @if (hasSuffix || hasCleaner || hasPasswordToggle || hasStepper) {\n <div class=\"kbq-form-field__suffix\">\n @if (canShowCleaner) {\n <div class=\"kbq-form-field__cleaner\">\n <ng-content select=\"kbq-cleaner\" />\n </div>\n }\n\n <ng-content select=\"kbq-password-toggle, kbq-stepper, [kbqSuffix]\" />\n </div>\n }\n </div>\n\n @if (hasHint || hasPasswordHint || hasError || hasReactivePasswordHint) {\n <div class=\"kbq-form-field__hint\">\n @if (invalid) {\n <ng-content select=\"kbq-error\" />\n }\n\n <ng-content select=\"kbq-hint, kbq-password-hint, kbq-reactive-password-hint\" />\n </div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { KbqCleaner } from './cleaner';\nimport { KbqError } from './error';\nimport { KbqFieldset, KbqFieldsetItem, KbqLegend } from './fieldset';\nimport { KbqFormField, KbqTrim } from './form-field';\nimport { KbqHint } from './hint';\nimport { KbqLabel } from './label';\nimport { KbqPasswordHint } from './password-hint';\nimport { KbqPasswordToggle } from './password-toggle';\nimport { KbqPrefix } from './prefix';\nimport { KbqReactivePasswordHint } from './reactive-password-hint';\nimport { KbqStepper } from './stepper';\nimport { KbqSuffix } from './suffix';\n\nconst COMPONENTS = [\n KbqCleaner,\n KbqFormField,\n KbqPrefix,\n KbqSuffix,\n KbqPasswordToggle,\n KbqStepper,\n KbqLabel,\n KbqHint,\n KbqError,\n KbqReactivePasswordHint,\n KbqLegend,\n KbqFieldset,\n KbqFieldsetItem,\n\n // Legacy components\n KbqPasswordHint,\n KbqTrim\n];\n\n@NgModule({\n imports: COMPONENTS,\n exports: COMPONENTS\n})\nexport class KbqFormFieldModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Overlay, OverlayRef, OverlayModule } from '@angular/cdk/overlay';
|
|
|
3
3
|
import { _getFocusedElementPierceShadowDom } from '@angular/cdk/platform';
|
|
4
4
|
import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Pipe, inject, Injectable, Renderer2,
|
|
6
|
+
import { Pipe, inject, Injectable, Renderer2, EnvironmentInjector, ElementRef, ViewContainerRef, ChangeDetectorRef, output, EventEmitter, viewChild, viewChildren, signal, TemplateRef, Type, Injector, createComponent, Input, Output, ViewEncapsulation, ChangeDetectionStrategy, Component, effect, Directive, InjectionToken, isDevMode, NgModule } from '@angular/core';
|
|
7
7
|
import * as i1 from '@koobiq/components/button';
|
|
8
8
|
import { KbqButtonModule } from '@koobiq/components/button';
|
|
9
9
|
import * as i3$1 from '@koobiq/components/core';
|
|
@@ -177,7 +177,7 @@ class KbqModalComponent extends KbqModalRef {
|
|
|
177
177
|
super(...arguments);
|
|
178
178
|
this.overlay = inject(Overlay);
|
|
179
179
|
this.renderer = inject(Renderer2);
|
|
180
|
-
this.
|
|
180
|
+
this.environmentInjector = inject(EnvironmentInjector);
|
|
181
181
|
this.elementRef = inject(ElementRef);
|
|
182
182
|
this.viewContainer = inject(ViewContainerRef);
|
|
183
183
|
this.modalControl = inject(KbqModalControlService);
|
|
@@ -358,6 +358,9 @@ class KbqModalComponent extends KbqModalRef {
|
|
|
358
358
|
this.getElement().querySelector('button[autofocus]')?.focus();
|
|
359
359
|
}
|
|
360
360
|
ngOnDestroy() {
|
|
361
|
+
// Created in `ngOnInit` but owned by `bodyContainer` only from `ngAfterViewInit`, so a modal
|
|
362
|
+
// closed in between would leak it. Destroying an already-destroyed view is a no-op.
|
|
363
|
+
this.contentComponentRef?.destroy();
|
|
361
364
|
if (this.container instanceof OverlayRef) {
|
|
362
365
|
this.container.dispose();
|
|
363
366
|
}
|
|
@@ -617,12 +620,17 @@ class KbqModalComponent extends KbqModalRef {
|
|
|
617
620
|
* @param component Component class
|
|
618
621
|
*/
|
|
619
622
|
createDynamicComponent(component) {
|
|
620
|
-
const factory = this.cfr.resolveComponentFactory(component);
|
|
621
623
|
const childInjector = Injector.create({
|
|
622
624
|
providers: [{ provide: KbqModalRef, useValue: this }],
|
|
623
625
|
parent: this.viewContainer.injector
|
|
624
626
|
});
|
|
625
|
-
this
|
|
627
|
+
// `ngOnInit` runs this for `kbqContent` and `kbqComponent` in turn, and only the last one is
|
|
628
|
+
// ever inserted into `bodyContainer`, so an overwritten ref would have nothing to destroy it.
|
|
629
|
+
this.contentComponentRef?.destroy();
|
|
630
|
+
this.contentComponentRef = createComponent(component, {
|
|
631
|
+
environmentInjector: this.environmentInjector,
|
|
632
|
+
elementInjector: childInjector
|
|
633
|
+
});
|
|
626
634
|
// Do the first change detection immediately
|
|
627
635
|
// (or we do detection at ngAfterViewInit, multi-changes error will be thrown)
|
|
628
636
|
this.contentComponentRef.changeDetectorRef.detectChanges();
|