@spartan-ng/brain 0.0.1-alpha.657 → 0.0.1-alpha.659

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.
Files changed (46) hide show
  1. package/autocomplete/index.d.ts +44 -21
  2. package/checkbox/index.d.ts +15 -1
  3. package/combobox/index.d.ts +59 -23
  4. package/fesm2022/spartan-ng-brain-autocomplete.mjs +80 -9
  5. package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
  6. package/fesm2022/spartan-ng-brain-checkbox.mjs +31 -10
  7. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  8. package/fesm2022/spartan-ng-brain-combobox.mjs +151 -48
  9. package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
  10. package/fesm2022/spartan-ng-brain-field.mjs +174 -0
  11. package/fesm2022/spartan-ng-brain-field.mjs.map +1 -0
  12. package/fesm2022/spartan-ng-brain-forms.mjs +79 -22
  13. package/fesm2022/spartan-ng-brain-forms.mjs.map +1 -1
  14. package/fesm2022/spartan-ng-brain-input.mjs +43 -0
  15. package/fesm2022/spartan-ng-brain-input.mjs.map +1 -0
  16. package/fesm2022/spartan-ng-brain-label.mjs +17 -35
  17. package/fesm2022/spartan-ng-brain-label.mjs.map +1 -1
  18. package/fesm2022/spartan-ng-brain-radio-group.mjs +26 -4
  19. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  20. package/fesm2022/spartan-ng-brain-select.mjs +44 -9
  21. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  22. package/fesm2022/spartan-ng-brain-slider.mjs +27 -23
  23. package/fesm2022/spartan-ng-brain-slider.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-switch.mjs +27 -5
  25. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
  26. package/fesm2022/spartan-ng-brain-tabs.mjs +0 -3
  27. package/fesm2022/spartan-ng-brain-tabs.mjs.map +1 -1
  28. package/fesm2022/spartan-ng-brain-textarea.mjs +43 -0
  29. package/fesm2022/spartan-ng-brain-textarea.mjs.map +1 -0
  30. package/field/README.md +3 -0
  31. package/field/index.d.ts +84 -0
  32. package/forms/index.d.ts +57 -18
  33. package/input/README.md +3 -0
  34. package/input/index.d.ts +20 -0
  35. package/label/index.d.ts +8 -11
  36. package/package.json +12 -4
  37. package/radio-group/index.d.ts +13 -2
  38. package/select/index.d.ts +39 -21
  39. package/slider/index.d.ts +15 -4
  40. package/switch/index.d.ts +11 -2
  41. package/textarea/README.md +3 -0
  42. package/textarea/index.d.ts +20 -0
  43. package/fesm2022/spartan-ng-brain-form-field.mjs +0 -21
  44. package/fesm2022/spartan-ng-brain-form-field.mjs.map +0 -1
  45. package/form-field/README.md +0 -3
  46. package/form-field/index.d.ts +0 -14
@@ -1,9 +1,34 @@
1
+ import * as _spartan_ng_brain_forms from '@spartan-ng/brain/forms';
2
+ import { ControlState, ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
1
3
  import * as _angular_core from '@angular/core';
2
4
  import { InputSignal, ModelSignal, Signal, InjectionToken, Type, ExistingProvider, ValueProvider } from '@angular/core';
3
5
  import { Highlightable, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
4
6
  import { BooleanInput } from '@angular/cdk/coercion';
5
7
  import { ControlValueAccessor } from '@angular/forms';
6
- import { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
8
+ import * as i1 from '@spartan-ng/brain/field';
9
+
10
+ declare class BrnAutocompleteInput<T> {
11
+ private static _id;
12
+ private readonly _el;
13
+ private readonly _autocomplete;
14
+ /** The id of the autocomplete input */
15
+ readonly id: _angular_core.InputSignal<string>;
16
+ /** Manual override for aria-invalid. When not set, auto-detects from the parent autocomplete error state. */
17
+ readonly ariaInvalidOverride: _angular_core.InputSignalWithTransform<boolean | undefined, BooleanInput>;
18
+ readonly disabled: _angular_core.Signal<boolean>;
19
+ /** Whether the autocomplete panel is expanded */
20
+ protected readonly _isExpanded: _angular_core.Signal<boolean>;
21
+ /** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */
22
+ protected readonly _ariaInvalid: _angular_core.Signal<boolean | undefined>;
23
+ protected readonly _spartanInvalid: _angular_core.Signal<boolean | undefined>;
24
+ protected readonly _touched: _angular_core.Signal<boolean | undefined>;
25
+ protected readonly _dirty: _angular_core.Signal<boolean | undefined>;
26
+ constructor();
27
+ protected onInput(event: Event): void;
28
+ protected onKeyDown(event: KeyboardEvent): void;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocompleteInput<any>, never>;
30
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteInput<any>, "input[brnAutocompleteInput]", ["brnAutocompleteInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaInvalidOverride": { "alias": "aria-invalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
31
+ }
7
32
 
8
33
  declare class BrnAutocompleteItem<T> implements Highlightable {
9
34
  private static _id;
@@ -40,6 +65,7 @@ interface BrnAutocompleteBase<T> {
40
65
  visibleItems: Signal<boolean>;
41
66
  isExpanded: Signal<boolean>;
42
67
  searchInputWrapperWidth: Signal<number | null>;
68
+ controlState: Signal<ControlState | null> | undefined;
43
69
  updateSearch: (value: string) => void;
44
70
  isSelected: (itemValue: T) => boolean;
45
71
  select: (itemValue: T) => void;
@@ -47,6 +73,7 @@ interface BrnAutocompleteBase<T> {
47
73
  resetValue: () => void;
48
74
  /** Select the active item with Enter key. */
49
75
  selectActiveItem: () => void;
76
+ registerAutocompleteInput: (input: BrnAutocompleteInput<T>) => void;
50
77
  }
51
78
  declare const BrnAutocompleteBaseToken: InjectionToken<BrnAutocompleteBase<unknown>>;
52
79
  declare function provideBrnAutocompleteBase<T>(autocomplete: Type<BrnAutocompleteBase<T>>): ExistingProvider;
@@ -61,13 +88,14 @@ interface BrnAutocompleteConfig<T> {
61
88
  declare function provideBrnAutocompleteConfig<T>(config: Partial<BrnAutocompleteConfig<T>>): ValueProvider;
62
89
  declare function injectBrnAutocompleteConfig<T>(): BrnAutocompleteConfig<T>;
63
90
 
64
- declare const BRN_AUTOCOMPLETE_VALUE_ACCESSOR: {
91
+ declare const BRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR: {
65
92
  provide: _angular_core.InjectionToken<readonly ControlValueAccessor[]>;
66
93
  useExisting: _angular_core.Type<any>;
67
94
  multi: boolean;
68
95
  };
69
96
  declare class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {
70
97
  private readonly _injector;
98
+ private readonly _fieldControl;
71
99
  private readonly _config;
72
100
  /** Access the popover if present */
73
101
  private readonly _brnPopover;
@@ -97,9 +125,13 @@ declare class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValue
97
125
  readonly keyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;
98
126
  /** @internal Whether the autocomplete is expanded */
99
127
  readonly isExpanded: _angular_core.Signal<boolean>;
128
+ private readonly _autocompleteInput;
100
129
  protected _onChange?: ChangeFn<T | null>;
101
130
  protected _onTouched?: TouchFn;
131
+ readonly labelableId: _angular_core.Signal<string | undefined>;
132
+ readonly controlState: _angular_core.Signal<_spartan_ng_brain_forms.ControlState | null> | undefined;
102
133
  constructor();
134
+ registerAutocompleteInput(input: BrnAutocompleteInput<T>): void;
103
135
  updateSearch(value: string): void;
104
136
  isSelected(itemValue: T): boolean;
105
137
  select(itemValue: T): void;
@@ -114,8 +146,9 @@ declare class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValue
114
146
  registerOnChange(fn: ChangeFn<T | null>): void;
115
147
  registerOnTouched(fn: TouchFn): void;
116
148
  setDisabledState(isDisabled: boolean): void;
149
+ protected _onFocusOut(event: FocusEvent): void;
117
150
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocomplete<any>, never>;
118
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocomplete<any>, "[brnAutocomplete]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, never>;
151
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocomplete<any>, "[brnAutocomplete]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, [{ directive: typeof i1.BrnFieldControl; inputs: {}; outputs: {}; }]>;
119
152
  }
120
153
 
121
154
  declare class BrnAutocompleteAnchor {
@@ -165,22 +198,6 @@ declare class BrnAutocompleteGroup {
165
198
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteGroup, "[brnAutocompleteGroup]", never, {}, {}, ["_items", "_label"], never, true, never>;
166
199
  }
167
200
 
168
- declare class BrnAutocompleteInput<T> {
169
- private static _id;
170
- private readonly _el;
171
- private readonly _autocomplete;
172
- /** The id of the autocomplete input */
173
- readonly id: _angular_core.InputSignal<string>;
174
- readonly disabled: _angular_core.Signal<boolean>;
175
- /** Whether the autocomplete panel is expanded */
176
- protected readonly _isExpanded: _angular_core.Signal<boolean>;
177
- constructor();
178
- protected onInput(event: Event): void;
179
- protected onKeyDown(event: KeyboardEvent): void;
180
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocompleteInput<any>, never>;
181
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteInput<any>, "input[brnAutocompleteInput]", ["brnAutocompleteInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
182
- }
183
-
184
201
  declare class BrnAutocompleteInputWrapper {
185
202
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocompleteInputWrapper, never>;
186
203
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteInputWrapper, "[brnAutocompleteInputWrapper]", never, {}, {}, never, never, true, never>;
@@ -212,9 +229,11 @@ declare const BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR: {
212
229
  };
213
230
  declare class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {
214
231
  private readonly _injector;
232
+ private readonly _fieldControl;
215
233
  private readonly _config;
216
234
  /** Access the popover if present */
217
235
  private readonly _brnPopover;
236
+ readonly controlState: _angular_core.Signal<_spartan_ng_brain_forms.ControlState | null> | undefined;
218
237
  /** Whether the autocomplete is disabled */
219
238
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
220
239
  protected readonly _disabled: _angular_core.WritableSignal<boolean>;
@@ -239,9 +258,12 @@ declare class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, Contro
239
258
  readonly keyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;
240
259
  /** @internal Whether the autocomplete is expanded */
241
260
  readonly isExpanded: _angular_core.Signal<boolean>;
261
+ private readonly _autocompleteInput;
242
262
  protected _onChange?: ChangeFn<string | null>;
243
263
  protected _onTouched?: TouchFn;
264
+ readonly labelableId: _angular_core.Signal<string | undefined>;
244
265
  constructor();
266
+ registerAutocompleteInput(input: BrnAutocompleteInput<T>): void;
245
267
  updateSearch(value: string): void;
246
268
  isSelected(itemValue: T): boolean;
247
269
  select(itemValue: T): void;
@@ -256,8 +278,9 @@ declare class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, Contro
256
278
  registerOnChange(fn: ChangeFn<string | null>): void;
257
279
  registerOnTouched(fn: TouchFn): void;
258
280
  setDisabledState(isDisabled: boolean): void;
281
+ protected _onFocusOut(event: FocusEvent): void;
259
282
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnAutocompleteSearch<any>, never>;
260
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteSearch<any>, "[brnAutocomplete]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, never>;
283
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnAutocompleteSearch<any>, "[brnAutocomplete]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, [{ directive: typeof i1.BrnFieldControl; inputs: {}; outputs: {}; }]>;
261
284
  }
262
285
 
263
286
  declare class BrnAutocompleteSeparator {
@@ -276,5 +299,5 @@ declare function provideBrnAutocompleteItem<T>(autocomplete: Type<BrnAutocomplet
276
299
 
277
300
  declare const BrnAutocompleteImports: readonly [typeof BrnAutocomplete, typeof BrnAutocompleteAnchor, typeof BrnAutocompleteClear, typeof BrnAutocompleteContent, typeof BrnAutocompleteEmpty, typeof BrnAutocompleteGroup, typeof BrnAutocompleteInput, typeof BrnAutocompleteInputWrapper, typeof BrnAutocompleteItem, typeof BrnAutocompleteLabel, typeof BrnAutocompleteList, typeof BrnAutocompleteSearch, typeof BrnAutocompleteSeparator, typeof BrnAutocompleteStatus];
278
301
 
279
- export { BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR, BRN_AUTOCOMPLETE_VALUE_ACCESSOR, BrnAutocomplete, BrnAutocompleteAnchor, BrnAutocompleteBaseToken, BrnAutocompleteClear, BrnAutocompleteContent, BrnAutocompleteEmpty, BrnAutocompleteGroup, BrnAutocompleteImports, BrnAutocompleteInput, BrnAutocompleteInputWrapper, BrnAutocompleteItem, BrnAutocompleteItemToken, BrnAutocompleteLabel, BrnAutocompleteList, BrnAutocompleteSearch, BrnAutocompleteSeparator, BrnAutocompleteStatus, injectBrnAutocompleteBase, injectBrnAutocompleteConfig, provideBrnAutocompleteBase, provideBrnAutocompleteConfig, provideBrnAutocompleteItem };
302
+ export { BRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR, BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR, BrnAutocomplete, BrnAutocompleteAnchor, BrnAutocompleteBaseToken, BrnAutocompleteClear, BrnAutocompleteContent, BrnAutocompleteEmpty, BrnAutocompleteGroup, BrnAutocompleteImports, BrnAutocompleteInput, BrnAutocompleteInputWrapper, BrnAutocompleteItem, BrnAutocompleteItemToken, BrnAutocompleteLabel, BrnAutocompleteList, BrnAutocompleteSearch, BrnAutocompleteSeparator, BrnAutocompleteStatus, injectBrnAutocompleteBase, injectBrnAutocompleteConfig, provideBrnAutocompleteBase, provideBrnAutocompleteConfig, provideBrnAutocompleteItem };
280
303
  export type { AutocompleteItemEqualToValue, AutocompleteItemToString, BrnAutocompleteBase, BrnAutocompleteConfig };
@@ -3,6 +3,7 @@ import { AfterContentInit, OnDestroy, ElementRef } from '@angular/core';
3
3
  import { BooleanInput } from '@angular/cdk/coercion';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
6
+ import * as i1 from '@spartan-ng/brain/field';
6
7
 
7
8
  declare const BRN_CHECKBOX_VALUE_ACCESSOR: {
8
9
  provide: _angular_core.InjectionToken<readonly ControlValueAccessor[]>;
@@ -15,6 +16,7 @@ declare class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnD
15
16
  private readonly _elementRef;
16
17
  private readonly _focusMonitor;
17
18
  private readonly _cdr;
19
+ private readonly _fieldControl;
18
20
  private readonly _document;
19
21
  private readonly _isBrowser;
20
22
  protected readonly _focusVisible: _angular_core.WritableSignal<boolean>;
@@ -81,6 +83,11 @@ declare class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnD
81
83
  * Disabled checkboxes cannot be toggled and indicate disabled state through data-disabled attribute.
82
84
  */
83
85
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
86
+ /**
87
+ * Whether to force the field into an invalid state, regardless of the form control's state.
88
+ * Overrides both the `data-invalid` and `data-matches-spartan-invalid` attributes.
89
+ */
90
+ readonly forceInvalid: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
84
91
  /**
85
92
  * Computed state for checkbox container and accessibility.
86
93
  * Manages ID, name, and disabled state.
@@ -90,6 +97,13 @@ declare class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnD
90
97
  name: string | null;
91
98
  id: string | null;
92
99
  }>;
100
+ protected readonly _buttonId: _angular_core.Signal<string | null>;
101
+ protected readonly _buttonName: _angular_core.Signal<string | null>;
102
+ readonly labelableId: _angular_core.Signal<string | null>;
103
+ protected readonly _dirty: _angular_core.Signal<boolean | null> | undefined;
104
+ protected readonly _invalid: _angular_core.Signal<boolean | null>;
105
+ readonly spartanInvalid: _angular_core.Signal<boolean | null>;
106
+ protected readonly _controlTouched: _angular_core.Signal<boolean | null> | undefined;
93
107
  protected _onChange: ChangeFn<boolean>;
94
108
  private _onTouched;
95
109
  /**
@@ -148,7 +162,7 @@ declare class BrnCheckbox implements ControlValueAccessor, AfterContentInit, OnD
148
162
  */
149
163
  setDisabledState(isDisabled: boolean): void;
150
164
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnCheckbox, never>;
151
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrnCheckbox, "brn-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "checkedChange": "checkedChange"; "indeterminate": "indeterminateChange"; "touched": "touched"; }, never, ["*"], true, never>;
165
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<BrnCheckbox, "brn-checkbox", never, { "checked": { "alias": "checked"; "required": false; "isSignal": true; }; "indeterminate": { "alias": "indeterminate"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "aria-label"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "aria-labelledby"; "required": false; "isSignal": true; }; "ariaDescribedby": { "alias": "aria-describedby"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "forceInvalid": { "alias": "forceInvalid"; "required": false; "isSignal": true; }; }, { "checked": "checkedChange"; "checkedChange": "checkedChange"; "indeterminate": "indeterminateChange"; "touched": "touched"; }, never, ["*"], true, [{ directive: typeof i1.BrnFieldControl; inputs: {}; outputs: {}; }]>;
152
166
  }
153
167
 
154
168
  declare const BrnCheckboxImports: readonly [typeof BrnCheckbox];
@@ -1,9 +1,35 @@
1
+ import * as _spartan_ng_brain_forms from '@spartan-ng/brain/forms';
2
+ import { ControlState, ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
1
3
  import * as _angular_core from '@angular/core';
2
- import { InputSignal, Signal, ModelSignal, InjectionToken, Type, ExistingProvider, ValueProvider } from '@angular/core';
4
+ import { InputSignal, Signal, ModelSignal, InjectionToken, Type, ExistingProvider, ValueProvider, ElementRef } from '@angular/core';
3
5
  import { Highlightable, ActiveDescendantKeyManager } from '@angular/cdk/a11y';
4
6
  import { BooleanInput } from '@angular/cdk/coercion';
5
7
  import { ControlValueAccessor } from '@angular/forms';
6
- import { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';
8
+ import * as i1 from '@spartan-ng/brain/field';
9
+
10
+ declare class BrnComboboxChipInput<T> {
11
+ private static _id;
12
+ private readonly _el;
13
+ private readonly _combobox;
14
+ /** The id of the combobox input */
15
+ readonly id: _angular_core.InputSignal<string>;
16
+ /** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */
17
+ readonly ariaInvalidOverride: _angular_core.InputSignalWithTransform<boolean | undefined, BooleanInput>;
18
+ /** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */
19
+ protected readonly _ariaInvalid: _angular_core.Signal<boolean | undefined>;
20
+ protected readonly _dirty: _angular_core.Signal<boolean | undefined>;
21
+ protected readonly _touched: _angular_core.Signal<boolean | undefined>;
22
+ protected readonly _spartanInvalid: _angular_core.Signal<boolean | undefined>;
23
+ protected readonly _disabled: _angular_core.Signal<boolean>;
24
+ /** Whether the combobox panel is expanded */
25
+ protected readonly _isExpanded: _angular_core.Signal<boolean>;
26
+ constructor();
27
+ protected onInput(event: Event): void;
28
+ /** Listen for keydown events */
29
+ protected onKeyDown(event: KeyboardEvent): void;
30
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxChipInput<any>, never>;
31
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxChipInput<any>, "input[brnComboboxChipInput]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaInvalidOverride": { "alias": "aria-invalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
32
+ }
7
33
 
8
34
  declare class BrnComboboxItem<T> implements Highlightable {
9
35
  private static _id;
@@ -46,6 +72,7 @@ interface BrnComboboxBase<T> {
46
72
  isExpanded: Signal<boolean>;
47
73
  searchInputWrapperWidth: Signal<number | null>;
48
74
  mode: Signal<ComboboxInputMode>;
75
+ controlState?: Signal<ControlState | null>;
49
76
  hasValue: Signal<boolean>;
50
77
  isSelected: (itemValue: T) => boolean;
51
78
  select: (itemValue: T) => void;
@@ -59,6 +86,8 @@ interface BrnComboboxBase<T> {
59
86
  removeValue: (value: T) => void;
60
87
  /** Register the combobox input component for single selection mode */
61
88
  registerComboboxInput?: (input: BrnComboboxInput<T>) => void;
89
+ /** Register the combobox chip input component for multi selection mode */
90
+ registerComboboxChipInput?: (input: BrnComboboxChipInput<T>) => void;
62
91
  }
63
92
  declare const BrnComboboxBaseToken: InjectionToken<BrnComboboxBase<unknown>>;
64
93
  declare function provideBrnComboboxBase<T>(instance: Type<BrnComboboxBase<T>>): ExistingProvider;
@@ -94,15 +123,22 @@ declare class BrnComboboxInput<T> {
94
123
  readonly mode: _angular_core.Signal<ComboboxInputMode>;
95
124
  /** The id of the combobox input */
96
125
  readonly id: _angular_core.InputSignal<string>;
126
+ /** Manual override for aria-invalid. When not set, auto-detects from the parent combobox error state. */
127
+ readonly ariaInvalidOverride: _angular_core.InputSignalWithTransform<boolean | undefined, BooleanInput>;
97
128
  readonly disabled: _angular_core.Signal<boolean>;
98
129
  /** Whether the combobox panel is expanded */
99
130
  protected readonly _isExpanded: _angular_core.Signal<boolean>;
131
+ /** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */
132
+ protected readonly _ariaInvalid: _angular_core.Signal<boolean | undefined>;
133
+ protected readonly _dirty: _angular_core.Signal<boolean | undefined>;
134
+ protected readonly _touched: _angular_core.Signal<boolean | undefined>;
135
+ protected readonly _spartanInvalid: _angular_core.Signal<boolean | undefined>;
100
136
  constructor();
101
137
  protected onInput(event: Event): void;
102
138
  /** Listen for keydown events */
103
139
  protected onKeyDown(event: KeyboardEvent): void;
104
140
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxInput<any>, never>;
105
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxInput<any>, "input[brnComboboxInput]", ["brnComboboxInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
141
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxInput<any>, "input[brnComboboxInput]", ["brnComboboxInput"], { "id": { "alias": "id"; "required": false; "isSignal": true; }; "ariaInvalidOverride": { "alias": "aria-invalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
106
142
  }
107
143
 
108
144
  declare const BRN_COMBOBOX_VALUE_ACCESSOR: {
@@ -112,9 +148,11 @@ declare const BRN_COMBOBOX_VALUE_ACCESSOR: {
112
148
  };
113
149
  declare class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor {
114
150
  private readonly _injector;
151
+ private readonly _fieldControl;
115
152
  private readonly _config;
116
153
  /** Access the popover if present */
117
154
  private readonly _brnPopover;
155
+ readonly controlState: _angular_core.Signal<_spartan_ng_brain_forms.ControlState | null> | undefined;
118
156
  /** Whether the combobox is disabled */
119
157
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
120
158
  protected readonly _disabled: _angular_core.WritableSignal<boolean>;
@@ -142,6 +180,7 @@ declare class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor
142
180
  readonly searchInputWrapperWidth: _angular_core.Signal<number | null>;
143
181
  /** @internal Access all the items within the combobox */
144
182
  readonly items: _angular_core.Signal<readonly BrnComboboxItem<T>[]>;
183
+ private readonly _content;
145
184
  /** Determine if the combobox has any visible items */
146
185
  readonly visibleItems: _angular_core.Signal<boolean>;
147
186
  /** @internal The key manager for managing active descendant */
@@ -150,6 +189,7 @@ declare class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor
150
189
  readonly isExpanded: _angular_core.Signal<boolean>;
151
190
  private readonly _comboboxInput;
152
191
  readonly mode: _angular_core.Signal<ComboboxInputMode>;
192
+ readonly labelableId: _angular_core.Signal<string | undefined>;
153
193
  protected _onChange?: ChangeFn<T | null>;
154
194
  protected _onTouched?: TouchFn;
155
195
  constructor();
@@ -163,14 +203,15 @@ declare class BrnCombobox<T> implements BrnComboboxBase<T>, ControlValueAccessor
163
203
  removeValue(_: T): void;
164
204
  removeLastSelectedItem(): void;
165
205
  open(): void;
166
- private close;
167
206
  /** CONTROL VALUE ACCESSOR */
168
207
  writeValue(value: T | null): void;
169
208
  registerOnChange(fn: ChangeFn<T | null>): void;
170
209
  registerOnTouched(fn: TouchFn): void;
171
210
  setDisabledState(isDisabled: boolean): void;
211
+ protected _onFocusOut(event: FocusEvent): void;
212
+ private close;
172
213
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnCombobox<any>, never>;
173
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCombobox<any>, "[brnCombobox]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, never>;
214
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnCombobox<any>, "[brnCombobox]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items", "_content"], never, true, [{ directive: typeof i1.BrnFieldControl; inputs: {}; outputs: {}; }]>;
174
215
  }
175
216
 
176
217
  declare class BrnComboboxAnchor {
@@ -190,23 +231,6 @@ declare class BrnComboboxChip<T> {
190
231
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxChip<any>, "[brnComboboxChip]", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
191
232
  }
192
233
 
193
- declare class BrnComboboxChipInput<T> {
194
- private static _id;
195
- private readonly _el;
196
- private readonly _combobox;
197
- /** The id of the combobox input */
198
- readonly id: _angular_core.InputSignal<string>;
199
- protected readonly _disabled: _angular_core.Signal<boolean>;
200
- /** Whether the combobox panel is expanded */
201
- protected readonly _isExpanded: _angular_core.Signal<boolean>;
202
- constructor();
203
- protected onInput(event: Event): void;
204
- /** Listen for keydown events */
205
- protected onKeyDown(event: KeyboardEvent): void;
206
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxChipInput<any>, never>;
207
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxChipInput<any>, "input[brnComboboxChipInput]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
208
- }
209
-
210
234
  declare class BrnComboboxChipRemove<T> {
211
235
  private readonly _combobox;
212
236
  private readonly _chip;
@@ -231,6 +255,7 @@ declare class BrnComboboxClear {
231
255
 
232
256
  declare class BrnComboboxContent {
233
257
  private readonly _combobox;
258
+ readonly el: ElementRef<HTMLElement>;
234
259
  /** Determine if the combobox is empty */
235
260
  protected readonly _empty: _angular_core.Signal<boolean>;
236
261
  protected readonly _comboboxWidth: _angular_core.Signal<number | null>;
@@ -286,9 +311,11 @@ declare const BRN_COMBOBOX_MULTIPLE_VALUE_ACCESSOR: {
286
311
  };
287
312
  declare class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValueAccessor {
288
313
  private readonly _injector;
314
+ private readonly _fieldControl;
289
315
  private readonly _config;
290
316
  /** Access the popover if present */
291
317
  private readonly _brnPopover;
318
+ readonly controlState: _angular_core.Signal<_spartan_ng_brain_forms.ControlState | null> | undefined;
292
319
  /** Whether the combobox is disabled */
293
320
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, BooleanInput>;
294
321
  protected readonly _disabled: _angular_core.WritableSignal<boolean>;
@@ -316,16 +343,20 @@ declare class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValue
316
343
  readonly searchInputWrapperWidth: _angular_core.Signal<number | null>;
317
344
  /** @internal Access all the items within the combobox */
318
345
  readonly items: _angular_core.Signal<readonly BrnComboboxItem<T>[]>;
346
+ private readonly _content;
319
347
  /** Determine if the combobox has any visible items */
320
348
  readonly visibleItems: _angular_core.Signal<boolean>;
321
349
  /** @internal The key manager for managing active descendant */
322
350
  readonly keyManager: ActiveDescendantKeyManager<BrnComboboxItem<T>>;
323
351
  /** @internal Whether the autocomplete is expanded */
324
352
  readonly isExpanded: _angular_core.Signal<boolean>;
353
+ private readonly _comboboxChipInput;
325
354
  readonly mode: _angular_core.Signal<ComboboxInputMode>;
355
+ readonly labelableId: _angular_core.Signal<string | undefined>;
326
356
  protected _onChange?: ChangeFn<T[] | null>;
327
357
  protected _onTouched?: TouchFn;
328
358
  constructor();
359
+ registerComboboxChipInput(input: BrnComboboxChipInput<T>): void;
329
360
  isSelected(itemValue: T): boolean;
330
361
  select(itemValue: T): void;
331
362
  /** Select the active item with Enter key. */
@@ -335,6 +366,7 @@ declare class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValue
335
366
  removeValue(itemValue: T): void;
336
367
  removeLastSelectedItem(): void;
337
368
  open(): void;
369
+ protected _onFocusOut(event: FocusEvent): void;
338
370
  private close;
339
371
  /** CONTROL VALUE ACCESSOR */
340
372
  writeValue(value: T[] | null): void;
@@ -342,7 +374,7 @@ declare class BrnComboboxMultiple<T> implements BrnComboboxBase<T>, ControlValue
342
374
  registerOnTouched(fn: TouchFn): void;
343
375
  setDisabledState(isDisabled: boolean): void;
344
376
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxMultiple<any>, never>;
345
- static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxMultiple<any>, "[brnCombobox]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items"], never, true, never>;
377
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BrnComboboxMultiple<any>, "[brnCombobox]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "filterOptions": { "alias": "filterOptions"; "required": false; "isSignal": true; }; "isItemEqualToValue": { "alias": "isItemEqualToValue"; "required": false; "isSignal": true; }; "itemToString": { "alias": "itemToString"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "autoHighlight": { "alias": "autoHighlight"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "searchChange"; }, ["_searchInputWrapper", "items", "_content"], never, true, [{ directive: typeof i1.BrnFieldControl; inputs: {}; outputs: {}; }]>;
346
378
  }
347
379
 
348
380
  declare class BrnComboboxPlaceholder {
@@ -376,6 +408,10 @@ declare class BrnComboboxTrigger<T> {
376
408
  protected readonly _isExpanded: _angular_core.Signal<boolean>;
377
409
  protected readonly _disabled: _angular_core.Signal<boolean>;
378
410
  protected readonly _isPlaceholder: _angular_core.Signal<boolean>;
411
+ protected readonly _ariaInvalid: _angular_core.Signal<boolean | undefined>;
412
+ protected readonly _dirty: _angular_core.Signal<boolean | undefined>;
413
+ protected readonly _touched: _angular_core.Signal<boolean | undefined>;
414
+ protected readonly _spartanInvalid: _angular_core.Signal<boolean | undefined>;
379
415
  /** Listen for keydown events */
380
416
  protected onKeyDown(event: KeyboardEvent): void;
381
417
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<BrnComboboxTrigger<any>, never>;