@spartan-ng/brain 0.0.1-alpha.715 → 0.0.1-alpha.717

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 (47) hide show
  1. package/fesm2022/spartan-ng-brain-alert-dialog.mjs +7 -15
  2. package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
  3. package/fesm2022/spartan-ng-brain-autocomplete.mjs +7 -9
  4. package/fesm2022/spartan-ng-brain-autocomplete.mjs.map +1 -1
  5. package/fesm2022/spartan-ng-brain-avatar.mjs +4 -4
  6. package/fesm2022/spartan-ng-brain-avatar.mjs.map +1 -1
  7. package/fesm2022/spartan-ng-brain-combobox.mjs +9 -11
  8. package/fesm2022/spartan-ng-brain-combobox.mjs.map +1 -1
  9. package/fesm2022/spartan-ng-brain-command.mjs +9 -9
  10. package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
  11. package/fesm2022/spartan-ng-brain-core.mjs +45 -20
  12. package/fesm2022/spartan-ng-brain-core.mjs.map +1 -1
  13. package/fesm2022/spartan-ng-brain-dialog.mjs +326 -368
  14. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  15. package/fesm2022/spartan-ng-brain-drawer.mjs +35 -24
  16. package/fesm2022/spartan-ng-brain-drawer.mjs.map +1 -1
  17. package/fesm2022/spartan-ng-brain-navigation-menu.mjs +38 -7
  18. package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
  19. package/fesm2022/spartan-ng-brain-overlay.mjs +576 -0
  20. package/fesm2022/spartan-ng-brain-overlay.mjs.map +1 -0
  21. package/fesm2022/spartan-ng-brain-popover.mjs +82 -99
  22. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
  23. package/fesm2022/spartan-ng-brain-radio-group.mjs +0 -12
  24. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  25. package/fesm2022/spartan-ng-brain-resizable.mjs +27 -4
  26. package/fesm2022/spartan-ng-brain-resizable.mjs.map +1 -1
  27. package/fesm2022/spartan-ng-brain-select.mjs +34 -27
  28. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  29. package/fesm2022/spartan-ng-brain-sheet.mjs +15 -23
  30. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
  31. package/overlay/README.md +3 -0
  32. package/package.json +5 -1
  33. package/types/spartan-ng-brain-alert-dialog.d.ts +2 -2
  34. package/types/spartan-ng-brain-autocomplete.d.ts +1 -1
  35. package/types/spartan-ng-brain-avatar.d.ts +2 -2
  36. package/types/spartan-ng-brain-combobox.d.ts +2 -2
  37. package/types/spartan-ng-brain-command.d.ts +2 -2
  38. package/types/spartan-ng-brain-core.d.ts +7 -4
  39. package/types/spartan-ng-brain-dialog.d.ts +89 -120
  40. package/types/spartan-ng-brain-drawer.d.ts +5 -2
  41. package/types/spartan-ng-brain-navigation-menu.d.ts +3 -1
  42. package/types/spartan-ng-brain-overlay.d.ts +198 -0
  43. package/types/spartan-ng-brain-popover.d.ts +18 -11
  44. package/types/spartan-ng-brain-radio-group.d.ts +0 -1
  45. package/types/spartan-ng-brain-resizable.d.ts +2 -0
  46. package/types/spartan-ng-brain-select.d.ts +8 -3
  47. package/types/spartan-ng-brain-sheet.d.ts +3 -2
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { forwardRef, Directive, input, effect, untracked } from '@angular/core';
2
+ import { forwardRef, Directive, input } from '@angular/core';
3
3
  import * as i1 from '@spartan-ng/brain/dialog';
4
4
  import { BrnDialog, provideBrnDialogDefaultOptions, BrnDialogContent, BrnDialogDescription, BrnDialogOverlay, BrnDialogTitle, BrnDialogTrigger } from '@spartan-ng/brain/dialog';
5
5
  import { provideExposesStateProviderExisting, provideCustomClassSettableExisting } from '@spartan-ng/brain/core';
@@ -84,19 +84,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
84
84
 
85
85
  class BrnAlertDialogTrigger extends BrnDialogTrigger {
86
86
  brnAlertDialogTriggerFor = input(...(ngDevMode ? [undefined, { debugName: "brnAlertDialogTriggerFor" }] : /* istanbul ignore next */ []));
87
- constructor() {
88
- super();
89
- effect(() => {
90
- const brnDialog = this.brnAlertDialogTriggerFor();
91
- untracked(() => {
92
- if (brnDialog) {
93
- this.mutableBrnDialogTriggerFor().set(brnDialog);
94
- }
95
- });
96
- });
87
+ getDialog() {
88
+ return this.brnAlertDialogTriggerFor() ?? super.getDialog();
97
89
  }
98
- /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAlertDialogTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
99
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnAlertDialogTrigger, isStandalone: true, selector: "button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]", inputs: { brnAlertDialogTriggerFor: { classPropertyName: "brnAlertDialogTriggerFor", publicName: "brnAlertDialogTriggerFor", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-haspopup": "dialog" }, properties: { "id": "id()", "attr.aria-expanded": "state() === 'open' ? 'true': 'false'", "attr.data-state": "state()", "attr.aria-controls": "dialogId", "type": "type()" } }, usesInheritance: true, ngImport: i0 });
90
+ /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAlertDialogTrigger, deps: null, target: i0.ɵɵFactoryTarget.Directive });
91
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.16", type: BrnAlertDialogTrigger, isStandalone: true, selector: "button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]", inputs: { brnAlertDialogTriggerFor: { classPropertyName: "brnAlertDialogTriggerFor", publicName: "brnAlertDialogTriggerFor", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "aria-haspopup": "dialog" }, properties: { "id": "id()", "attr.aria-expanded": "state() === 'open' ? 'true': 'false'", "attr.data-state": "state()", "attr.aria-controls": "dialogId()", "type": "type()" } }, usesInheritance: true, ngImport: i0 });
100
92
  }
101
93
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAlertDialogTrigger, decorators: [{
102
94
  type: Directive,
@@ -107,11 +99,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
107
99
  'aria-haspopup': 'dialog',
108
100
  '[attr.aria-expanded]': "state() === 'open' ? 'true': 'false'",
109
101
  '[attr.data-state]': 'state()',
110
- '[attr.aria-controls]': 'dialogId',
102
+ '[attr.aria-controls]': 'dialogId()',
111
103
  '[type]': 'type()',
112
104
  },
113
105
  }]
114
- }], ctorParameters: () => [], propDecorators: { brnAlertDialogTriggerFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "brnAlertDialogTriggerFor", required: false }] }] } });
106
+ }], propDecorators: { brnAlertDialogTriggerFor: [{ type: i0.Input, args: [{ isSignal: true, alias: "brnAlertDialogTriggerFor", required: false }] }] } });
115
107
 
116
108
  const BrnAlertDialogImports = [
117
109
  BrnAlertDialog,
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { Directive, forwardRef } from '@angular/core';\nimport { BrnDialog, type BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Directive({\n\tselector: '[brnAlertDialog],brn-alert-dialog',\n\texportAs: 'brnAlertDialog',\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialog),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n})\nexport class BrnAlertDialog extends BrnDialog {}\n","import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContent)],\n})\nexport class BrnAlertDialogContent<T> extends BrnDialogContent<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thostDirectives: [BrnDialogDescription],\n})\nexport class BrnAlertDialogDescription {}\n","import { Directive } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogOverlay],brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlay)],\n})\nexport class BrnAlertDialogOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thostDirectives: [BrnDialogTitle],\n})\nexport class BrnAlertDialogTitle {}\n","import { Directive, effect, input, untracked } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialog } from './brn-alert-dialog';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnAlertDialogTrigger extends BrnDialogTrigger {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialog | undefined>();\n\n\tconstructor() {\n\t\tsuper();\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnAlertDialogTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (brnDialog) {\n\t\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n}\n","import { BrnAlertDialog } from './lib/brn-alert-dialog';\nimport { BrnAlertDialogContent } from './lib/brn-alert-dialog-content';\nimport { BrnAlertDialogDescription } from './lib/brn-alert-dialog-description';\nimport { BrnAlertDialogOverlay } from './lib/brn-alert-dialog-overlay';\nimport { BrnAlertDialogTitle } from './lib/brn-alert-dialog-title';\nimport { BrnAlertDialogTrigger } from './lib/brn-alert-dialog-trigger';\n\nexport * from './lib/brn-alert-dialog';\nexport * from './lib/brn-alert-dialog-content';\nexport * from './lib/brn-alert-dialog-description';\nexport * from './lib/brn-alert-dialog-overlay';\nexport * from './lib/brn-alert-dialog-title';\nexport * from './lib/brn-alert-dialog-trigger';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialog,\n\tBrnAlertDialogOverlay,\n\tBrnAlertDialogTrigger,\n\tBrnAlertDialogContent,\n\tBrnAlertDialogTitle,\n\tBrnAlertDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-alert-dialog.mjs","sources":["../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-content.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-description.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-overlay.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-title.ts","../../../../libs/brain/alert-dialog/src/lib/brn-alert-dialog-trigger.ts","../../../../libs/brain/alert-dialog/src/index.ts","../../../../libs/brain/alert-dialog/src/spartan-ng-brain-alert-dialog.ts"],"sourcesContent":["import { Directive, forwardRef } from '@angular/core';\nimport { BrnDialog, type BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_ALERT_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\tcloseOnBackdropClick: false,\n\tcloseOnOutsidePointerEvents: false,\n\trole: 'alertdialog',\n};\n\n@Directive({\n\tselector: '[brnAlertDialog],brn-alert-dialog',\n\texportAs: 'brnAlertDialog',\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnAlertDialog),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_ALERT_DIALOG_DEFAULT_OPTIONS),\n\t],\n})\nexport class BrnAlertDialog extends BrnDialog {}\n","import { Directive } from '@angular/core';\nimport { provideExposesStateProviderExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogContent } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnAlertDialogContent)],\n})\nexport class BrnAlertDialogContent<T extends Record<string, unknown>> extends BrnDialogContent<T> {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogDescription } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogDescription]',\n\thostDirectives: [BrnDialogDescription],\n})\nexport class BrnAlertDialogDescription {}\n","import { Directive } from '@angular/core';\nimport { provideCustomClassSettableExisting } from '@spartan-ng/brain/core';\nimport { BrnDialogOverlay } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogOverlay],brn-alert-dialog-overlay',\n\tproviders: [provideCustomClassSettableExisting(() => BrnAlertDialogOverlay)],\n})\nexport class BrnAlertDialogOverlay extends BrnDialogOverlay {}\n","import { Directive } from '@angular/core';\nimport { BrnDialogTitle } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: '[brnAlertDialogTitle]',\n\thostDirectives: [BrnDialogTitle],\n})\nexport class BrnAlertDialogTitle {}\n","import { Directive, input } from '@angular/core';\nimport { BrnDialog, BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnAlertDialog } from './brn-alert-dialog';\n\n@Directive({\n\tselector: 'button[brnAlertDialogTrigger],button[brnAlertDialogTriggerFor]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'aria-haspopup': 'dialog',\n\t\t'[attr.aria-expanded]': \"state() === 'open' ? 'true': 'false'\",\n\t\t'[attr.data-state]': 'state()',\n\t\t'[attr.aria-controls]': 'dialogId()',\n\t\t'[type]': 'type()',\n\t},\n})\nexport class BrnAlertDialogTrigger extends BrnDialogTrigger {\n\tpublic readonly brnAlertDialogTriggerFor = input<BrnAlertDialog | undefined>();\n\n\tprotected override getDialog(): BrnDialog | undefined {\n\t\treturn this.brnAlertDialogTriggerFor() ?? super.getDialog();\n\t}\n}\n","import { BrnAlertDialog } from './lib/brn-alert-dialog';\nimport { BrnAlertDialogContent } from './lib/brn-alert-dialog-content';\nimport { BrnAlertDialogDescription } from './lib/brn-alert-dialog-description';\nimport { BrnAlertDialogOverlay } from './lib/brn-alert-dialog-overlay';\nimport { BrnAlertDialogTitle } from './lib/brn-alert-dialog-title';\nimport { BrnAlertDialogTrigger } from './lib/brn-alert-dialog-trigger';\n\nexport * from './lib/brn-alert-dialog';\nexport * from './lib/brn-alert-dialog-content';\nexport * from './lib/brn-alert-dialog-description';\nexport * from './lib/brn-alert-dialog-overlay';\nexport * from './lib/brn-alert-dialog-title';\nexport * from './lib/brn-alert-dialog-trigger';\n\nexport const BrnAlertDialogImports = [\n\tBrnAlertDialog,\n\tBrnAlertDialogOverlay,\n\tBrnAlertDialogTrigger,\n\tBrnAlertDialogContent,\n\tBrnAlertDialogTitle,\n\tBrnAlertDialogDescription,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as i1 from '@spartan-ng/brain/field';
6
6
  import { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';
7
7
  import { BrnPopover } from '@spartan-ng/brain/popover';
8
8
  import { injectElementSize, stringifyAsLabel } from '@spartan-ng/brain/core';
9
- import { BrnDialog } from '@spartan-ng/brain/dialog';
9
+ import { BrnOverlay } from '@spartan-ng/brain/overlay';
10
10
  import { isPlatformBrowser } from '@angular/common';
11
11
 
12
12
  const BrnAutocompleteItemToken = new InjectionToken('BrnAutocompleteItemToken');
@@ -204,20 +204,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
204
204
 
205
205
  class BrnAutocompleteAnchor {
206
206
  _host = inject(ElementRef, { host: true });
207
- _brnDialog = inject(BrnDialog, { optional: true });
207
+ _brnOverlay = inject(BrnOverlay, { optional: true });
208
208
  _autocomplete = injectBrnAutocompleteBase();
209
209
  _elementSize = injectElementSize();
210
210
  constructor() {
211
+ this._brnOverlay?.setOrigin(this._host.nativeElement);
211
212
  effect(() => {
212
213
  const size = this._elementSize();
213
- if (size) {
214
- this._autocomplete.updateInputWidth(size.width);
215
- this._brnDialog?.updatePosition();
216
- }
214
+ if (!size)
215
+ return;
216
+ this._autocomplete.updateInputWidth(size.width);
217
+ this._brnOverlay?.updatePosition();
217
218
  });
218
- if (!this._brnDialog)
219
- return;
220
- this._brnDialog.mutableAttachTo.set(this._host.nativeElement);
221
219
  }
222
220
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAutocompleteAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
223
221
  /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAutocompleteAnchor, isStandalone: true, selector: "[brnAutocompleteAnchor]", ngImport: i0 });
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-autocomplete.mjs","sources":["../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-anchor.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-clear.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-content.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-empty.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-label.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-group.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-list.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-search.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-separator.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-status.ts","../../../../libs/brain/autocomplete/src/index.ts","../../../../libs/brain/autocomplete/src/spartan-ng-brain-autocomplete.ts"],"sourcesContent":["import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport const BrnAutocompleteItemToken = new InjectionToken<BrnAutocompleteItem<unknown>>('BrnAutocompleteItemToken');\n\nexport function provideBrnAutocompleteItem<T>(autocomplete: Type<BrnAutocompleteItem<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteItemToken, useExisting: autocomplete };\n}\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport type { ControlState } from '@spartan-ng/brain/forms';\nimport type { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport interface BrnAutocompleteBase<T> {\n\titemToString: InputSignal<AutocompleteItemToString<T> | undefined>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;\n\tvalue: ModelSignal<T | undefined | null> | ModelSignal<string | undefined | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\tcontrolState: Signal<ControlState | null> | undefined;\n\n\tupdateSearch: (value: string) => void;\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n\tregisterAutocompleteInput: (input: BrnAutocompleteInput<T>) => void;\n\tupdateInputWidth: (width: number | null) => void;\n}\n\nexport const BrnAutocompleteBaseToken = new InjectionToken<BrnAutocompleteBase<unknown>>('BrnAutocompleteBaseToken');\n\nexport function provideBrnAutocompleteBase<T>(autocomplete: Type<BrnAutocompleteBase<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteBaseToken, useExisting: autocomplete };\n}\n\nexport function injectBrnAutocompleteBase<T>(): BrnAutocompleteBase<T> {\n\treturn inject(BrnAutocompleteBaseToken) as BrnAutocompleteBase<T>;\n}\n\n// config\nexport type AutocompleteItemEqualToValue<T> = (itemValue: T, selectedValue: T | undefined | null) => boolean;\nexport type AutocompleteItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnAutocompleteConfig<T> {\n\tisItemEqualToValue: AutocompleteItemEqualToValue<T>;\n\titemToString?: AutocompleteItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnAutocompleteConfig<T> {\n\treturn {\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | undefined | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnAutocompleteConfigToken = new InjectionToken<BrnAutocompleteConfig<unknown>>('BrnAutocompleteConfig');\n\nexport function provideBrnAutocompleteConfig<T>(config: Partial<BrnAutocompleteConfig<T>>): ValueProvider {\n\treturn { provide: BrnAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnAutocompleteConfig<T>(): BrnAutocompleteConfig<T> {\n\tconst injectedConfig = inject(BrnAutocompleteConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnAutocompleteConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemEqualToValue,\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocomplete),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [\n\t\tBRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR,\n\t\tprovideBrnAutocompleteBase(BrnAutocomplete),\n\t\tprovideBrnLabelable(BrnAutocomplete),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<AutocompleteItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<T | undefined | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _autocompleteInput = signal<BrnAutocompleteInput<T> | undefined>(undefined);\n\n\tprotected _onChange?: ChangeFn<T | undefined | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tpublic readonly labelableId = computed(() => this._autocompleteInput()?.id());\n\n\tpublic readonly controlState = this._fieldControl?.controlState;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerAutocompleteInput(input: BrnAutocompleteInput<T>): void {\n\t\treturn this._autocompleteInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.search.set(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tselect(itemValue: T) {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: T | undefined | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T | undefined | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\n\t\tif (!currentTarget.contains(focusedEl)) {\n\t\t\tthis._onTouched?.();\n\t\t}\n\t}\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectElementSize } from '@spartan-ng/brain/core';\nimport { BrnDialog } from '@spartan-ng/brain/dialog';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({ selector: '[brnAutocompleteAnchor]' })\nexport class BrnAutocompleteAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnDialog = inject(BrnDialog, { optional: true });\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _elementSize = injectElementSize();\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst size = this._elementSize();\n\t\t\tif (size) {\n\t\t\t\tthis._autocomplete.updateInputWidth(size.width);\n\t\t\t\tthis._brnDialog?.updatePosition();\n\t\t\t}\n\t\t});\n\n\t\tif (!this._brnDialog) return;\n\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteClear]',\n})\nexport class BrnAutocompleteClear {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the autocomplete has a value or search text */\n\tprivate readonly _shouldShowClear = computed(() => {\n\t\tconst value = this._autocomplete.value();\n\t\treturn (value !== null && value !== undefined) || this._autocomplete.search() !== '';\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._shouldShowClear()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tclear() {\n\t\tthis._autocomplete.resetValue();\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteContent]',\n\thost: {\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t\t'[style.--brn-autocomplete-width.px]': '_autocompleteWidth()',\n\t},\n})\nexport class BrnAutocompleteContent {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\tprotected readonly _autocompleteWidth = this._autocomplete.searchInputWrapperWidth;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnAutocompleteLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the autocomplete label */\n\tpublic readonly id = input<string>(`brn-autocomplete-label-${++BrnAutocompleteLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport { BrnAutocompleteLabel } from './brn-autocomplete-label';\n\n@Directive({\n\tselector: '[brnAutocompleteGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnAutocompleteGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().length > 0);\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnAutocompleteLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: 'input[brnAutocompleteInput]',\n\texportAs: 'brnAutocompleteInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.aria-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': '_dirty() ? \"true\": null',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnAutocompleteInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** The id of the autocomplete input */\n\tpublic readonly id = input<string>(`brn-autocomplete-input-${++BrnAutocompleteInput._id}`);\n\n\t/** Manual override for aria-invalid. When not set, auto-detects from the parent autocomplete error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\n\n\t/** Forces the invalid state visually, regardless of form control state. */\n\tpublic readonly forceInvalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tpublic readonly disabled = this._autocomplete.disabledState;\n\n\t/** Whether the autocomplete panel is expanded */\n\tprotected readonly _isExpanded = this._autocomplete.isExpanded;\n\n\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._autocomplete.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _spartanInvalid = computed(\n\t\t() => this.forceInvalid() || this._autocomplete.controlState?.()?.spartanInvalid,\n\t);\n\tprotected readonly _touched = computed(() => this._autocomplete.controlState?.()?.touched);\n\tprotected readonly _dirty = computed(() => this._autocomplete.controlState?.()?.dirty);\n\n\tconstructor() {\n\t\tthis._autocomplete.registerAutocompleteInput(this);\n\n\t\teffect(() => {\n\t\t\tconst value = this._autocomplete.value();\n\t\t\tconst valueLabel = stringifyAsLabel(value, this._autocomplete.itemToString());\n\t\t\tthis._el.nativeElement.value = valueLabel ?? '';\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst search = this._autocomplete.search();\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._autocomplete.updateSearch(value);\n\t}\n\n\tprotected onKeyDown(event: KeyboardEvent) {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t}\n\n\t\tif (this._isExpanded()) {\n\t\t\tif (event.key === 'Tab') {\n\t\t\t\tthis._autocomplete.selectActiveItem();\n\t\t\t}\n\t\t} else {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._autocomplete.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._autocomplete.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._autocomplete.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnAutocompleteItem } from './brn-autocomplete-item.token';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteItem]',\n\tproviders: [provideBrnAutocompleteItem(BrnAutocompleteItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnAutocompleteItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the autocomplete component */\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-autocomplete-item-${++BrnAutocompleteItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._autocomplete.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\tsetActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tgetLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._autocomplete.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t\tthis._autocomplete.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnAutocompleteList {\n\tprivate static _id = 0;\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\t/** The id of the autocomplete list */\n\tpublic readonly id = input<string>(`brn-autocomplete-list-${++BrnAutocompleteList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocompleteSearch),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [\n\t\tBRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR,\n\t\tprovideBrnAutocompleteBase(BrnAutocompleteSearch),\n\t\tprovideBrnLabelable(BrnAutocompleteSearch),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\tpublic readonly controlState = this._fieldControl?.controlState;\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<string | undefined | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _autocompleteInput = signal<BrnAutocompleteInput<T> | undefined>(undefined);\n\n\tprotected _onChange?: ChangeFn<string | undefined | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tpublic readonly labelableId = computed(() => this._autocompleteInput()?.id());\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerAutocompleteInput(input: BrnAutocompleteInput<T>): void {\n\t\treturn this._autocompleteInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.value.set(value);\n\t\tthis.search.set(value);\n\t\tthis._onChange?.(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn stringifyAsLabel(itemValue, this.itemToString()) === this.value();\n\t}\n\n\tselect(itemValue: T) {\n\t\tconst label = stringifyAsLabel(itemValue, this.itemToString());\n\n\t\tthis.value.set(label);\n\t\tthis._onChange?.(label);\n\t\tthis.search.set(label);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | undefined | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | undefined | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\n\t\tif (!currentTarget.contains(focusedEl)) {\n\t\t\tthis._onTouched?.();\n\t\t}\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnAutocompleteSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteStatus {}\n","import { BrnAutocomplete } from './lib/brn-autocomplete';\nimport { BrnAutocompleteAnchor } from './lib/brn-autocomplete-anchor';\nimport { BrnAutocompleteClear } from './lib/brn-autocomplete-clear';\nimport { BrnAutocompleteContent } from './lib/brn-autocomplete-content';\nimport { BrnAutocompleteEmpty } from './lib/brn-autocomplete-empty';\nimport { BrnAutocompleteGroup } from './lib/brn-autocomplete-group';\nimport { BrnAutocompleteInput } from './lib/brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './lib/brn-autocomplete-item';\nimport { BrnAutocompleteLabel } from './lib/brn-autocomplete-label';\nimport { BrnAutocompleteList } from './lib/brn-autocomplete-list';\nimport { BrnAutocompleteSearch } from './lib/brn-autocomplete-search';\nimport { BrnAutocompleteSeparator } from './lib/brn-autocomplete-separator';\nimport { BrnAutocompleteStatus } from './lib/brn-autocomplete-status';\n\nexport * from './lib/brn-autocomplete';\nexport * from './lib/brn-autocomplete-anchor';\nexport * from './lib/brn-autocomplete-clear';\nexport * from './lib/brn-autocomplete-content';\nexport * from './lib/brn-autocomplete-empty';\nexport * from './lib/brn-autocomplete-group';\nexport * from './lib/brn-autocomplete-input';\nexport * from './lib/brn-autocomplete-item';\nexport * from './lib/brn-autocomplete-item.token';\nexport * from './lib/brn-autocomplete-label';\nexport * from './lib/brn-autocomplete-list';\nexport * from './lib/brn-autocomplete-search';\nexport * from './lib/brn-autocomplete-separator';\nexport * from './lib/brn-autocomplete-status';\nexport * from './lib/brn-autocomplete.token';\n\nexport const BrnAutocompleteImports = [\n\tBrnAutocomplete,\n\tBrnAutocompleteAnchor,\n\tBrnAutocompleteClear,\n\tBrnAutocompleteContent,\n\tBrnAutocompleteEmpty,\n\tBrnAutocompleteGroup,\n\tBrnAutocompleteInput,\n\tBrnAutocompleteItem,\n\tBrnAutocompleteLabel,\n\tBrnAutocompleteList,\n\tBrnAutocompleteSearch,\n\tBrnAutocompleteSeparator,\n\tBrnAutocompleteStatus,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-autocomplete.mjs","sources":["../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.token.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-anchor.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-clear.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-content.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-empty.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-label.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-group.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-input.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-item.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-list.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-search.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-separator.ts","../../../../libs/brain/autocomplete/src/lib/brn-autocomplete-status.ts","../../../../libs/brain/autocomplete/src/index.ts","../../../../libs/brain/autocomplete/src/spartan-ng-brain-autocomplete.ts"],"sourcesContent":["import { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport const BrnAutocompleteItemToken = new InjectionToken<BrnAutocompleteItem<unknown>>('BrnAutocompleteItemToken');\n\nexport function provideBrnAutocompleteItem<T>(autocomplete: Type<BrnAutocompleteItem<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteItemToken, useExisting: autocomplete };\n}\n","import type { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport {\n\ttype ExistingProvider,\n\tinject,\n\tInjectionToken,\n\ttype InputSignal,\n\ttype ModelSignal,\n\ttype Signal,\n\ttype Type,\n\ttype ValueProvider,\n} from '@angular/core';\nimport type { ControlState } from '@spartan-ng/brain/forms';\nimport type { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport type { BrnAutocompleteItem } from './brn-autocomplete-item';\n\nexport interface BrnAutocompleteBase<T> {\n\titemToString: InputSignal<AutocompleteItemToString<T> | undefined>;\n\tsearch: ModelSignal<string>;\n\tdisabled: Signal<boolean>;\n\tdisabledState: Signal<boolean>;\n\tkeyManager: ActiveDescendantKeyManager<BrnAutocompleteItem<T>>;\n\tvalue: ModelSignal<T | undefined | null> | ModelSignal<string | undefined | null>;\n\tvisibleItems: Signal<boolean>;\n\tisExpanded: Signal<boolean>;\n\tsearchInputWrapperWidth: Signal<number | null>;\n\tcontrolState: Signal<ControlState | null> | undefined;\n\n\tupdateSearch: (value: string) => void;\n\tisSelected: (itemValue: T) => boolean;\n\tselect: (itemValue: T) => void;\n\topen: () => void;\n\tresetValue: () => void;\n\t/** Select the active item with Enter key. */\n\tselectActiveItem: () => void;\n\tregisterAutocompleteInput: (input: BrnAutocompleteInput<T>) => void;\n\tupdateInputWidth: (width: number | null) => void;\n}\n\nexport const BrnAutocompleteBaseToken = new InjectionToken<BrnAutocompleteBase<unknown>>('BrnAutocompleteBaseToken');\n\nexport function provideBrnAutocompleteBase<T>(autocomplete: Type<BrnAutocompleteBase<T>>): ExistingProvider {\n\treturn { provide: BrnAutocompleteBaseToken, useExisting: autocomplete };\n}\n\nexport function injectBrnAutocompleteBase<T>(): BrnAutocompleteBase<T> {\n\treturn inject(BrnAutocompleteBaseToken) as BrnAutocompleteBase<T>;\n}\n\n// config\nexport type AutocompleteItemEqualToValue<T> = (itemValue: T, selectedValue: T | undefined | null) => boolean;\nexport type AutocompleteItemToString<T> = (itemValue: T) => string;\n\nexport interface BrnAutocompleteConfig<T> {\n\tisItemEqualToValue: AutocompleteItemEqualToValue<T>;\n\titemToString?: AutocompleteItemToString<T>;\n\tautoHighlight: boolean;\n}\n\nfunction getDefaultConfig<T>(): BrnAutocompleteConfig<T> {\n\treturn {\n\t\tisItemEqualToValue: (itemValue: T, selectedValue: T | undefined | null) => Object.is(itemValue, selectedValue),\n\t\titemToString: undefined,\n\t\tautoHighlight: false,\n\t};\n}\n\nconst BrnAutocompleteConfigToken = new InjectionToken<BrnAutocompleteConfig<unknown>>('BrnAutocompleteConfig');\n\nexport function provideBrnAutocompleteConfig<T>(config: Partial<BrnAutocompleteConfig<T>>): ValueProvider {\n\treturn { provide: BrnAutocompleteConfigToken, useValue: { ...getDefaultConfig(), ...config } };\n}\n\nexport function injectBrnAutocompleteConfig<T>(): BrnAutocompleteConfig<T> {\n\tconst injectedConfig = inject(BrnAutocompleteConfigToken, { optional: true });\n\treturn injectedConfig ? (injectedConfig as BrnAutocompleteConfig<T>) : getDefaultConfig();\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemEqualToValue,\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocomplete),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [\n\t\tBRN_AUTOCOMPLETE_CONTROL_VALUE_ACCESSOR,\n\t\tprovideBrnAutocompleteBase(BrnAutocomplete),\n\t\tprovideBrnLabelable(BrnAutocomplete),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnAutocomplete<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to compare an item with the selected value. */\n\tpublic readonly isItemEqualToValue = input<AutocompleteItemEqualToValue<T>>(this._config.isItemEqualToValue);\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<T | undefined | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _autocompleteInput = signal<BrnAutocompleteInput<T> | undefined>(undefined);\n\n\tprotected _onChange?: ChangeFn<T | undefined | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tpublic readonly labelableId = computed(() => this._autocompleteInput()?.id());\n\n\tpublic readonly controlState = this._fieldControl?.controlState;\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerAutocompleteInput(input: BrnAutocompleteInput<T>): void {\n\t\treturn this._autocompleteInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.search.set(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn this.isItemEqualToValue()(itemValue, this.value());\n\t}\n\n\tselect(itemValue: T) {\n\t\tthis.value.set(itemValue);\n\t\tthis._onChange?.(itemValue);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: T | undefined | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T | undefined | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\n\t\tif (!currentTarget.contains(focusedEl)) {\n\t\t\tthis._onTouched?.();\n\t\t}\n\t}\n}\n","import { Directive, effect, ElementRef, inject } from '@angular/core';\nimport { injectElementSize } from '@spartan-ng/brain/core';\nimport { BrnOverlay } from '@spartan-ng/brain/overlay';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({ selector: '[brnAutocompleteAnchor]' })\nexport class BrnAutocompleteAnchor {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\tprivate readonly _brnOverlay = inject(BrnOverlay, { optional: true });\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _elementSize = injectElementSize();\n\n\tconstructor() {\n\t\tthis._brnOverlay?.setOrigin(this._host.nativeElement);\n\n\t\teffect(() => {\n\t\t\tconst size = this._elementSize();\n\t\t\tif (!size) return;\n\n\t\t\tthis._autocomplete.updateInputWidth(size.width);\n\t\t\tthis._brnOverlay?.updatePosition();\n\t\t});\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteClear]',\n})\nexport class BrnAutocompleteClear {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _templateRef = inject<TemplateRef<void>>(TemplateRef);\n\tprivate readonly _viewContainerRef = inject(ViewContainerRef);\n\n\t/** Determine if the autocomplete has a value or search text */\n\tprivate readonly _shouldShowClear = computed(() => {\n\t\tconst value = this._autocomplete.value();\n\t\treturn (value !== null && value !== undefined) || this._autocomplete.search() !== '';\n\t});\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._viewContainerRef.clear();\n\t\t\tif (this._shouldShowClear()) {\n\t\t\t\tconst view = this._viewContainerRef.createEmbeddedView(this._templateRef);\n\t\t\t\tview.rootNodes.forEach((node) => {\n\t\t\t\t\tthis._renderer.listen(node, 'click', (e) => {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tthis.clear();\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tclear() {\n\t\tthis._autocomplete.resetValue();\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteContent]',\n\thost: {\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t\t'[style.--brn-autocomplete-width.px]': '_autocompleteWidth()',\n\t},\n})\nexport class BrnAutocompleteContent {\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\tprotected readonly _autocompleteWidth = this._autocomplete.searchInputWrapperWidth;\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteEmpty]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteEmpty {}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteLabel]',\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n})\nexport class BrnAutocompleteLabel {\n\tprivate static _id = 0;\n\n\t/** The id of the autocomplete label */\n\tpublic readonly id = input<string>(`brn-autocomplete-label-${++BrnAutocompleteLabel._id}`);\n}\n","import { computed, contentChild, contentChildren, Directive } from '@angular/core';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport { BrnAutocompleteLabel } from './brn-autocomplete-label';\n\n@Directive({\n\tselector: '[brnAutocompleteGroup]',\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.data-hidden]': '!_visible() ? \"\" : null',\n\t\t'[attr.aria-labelledby]': '_labelledBy()',\n\t},\n})\nexport class BrnAutocompleteGroup {\n\t/** Get the items in the group */\n\tprivate readonly _items = contentChildren(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if there are any visible items in the group */\n\tprotected readonly _visible = computed(() => this._items().length > 0);\n\n\t/** Get the label associated with the group */\n\tprivate readonly _label = contentChild(BrnAutocompleteLabel);\n\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst label = this._label();\n\t\treturn label ? label.id() : null;\n\t});\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, effect, ElementRef, inject, input } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: 'input[brnAutocompleteInput]',\n\texportAs: 'brnAutocompleteInput',\n\thost: {\n\t\t'[id]': 'id()',\n\t\ttype: 'text',\n\t\trole: 'combobox',\n\t\tautocomplete: 'off',\n\t\tautocorrect: 'off',\n\t\tautocapitalize: 'none',\n\t\tspellcheck: 'false',\n\t\t'aria-autocomplete': 'list',\n\t\t'aria-haspopup': 'listbox',\n\t\t'[attr.aria-expanded]': '_isExpanded()',\n\t\t'[attr.aria-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-invalid]': '_ariaInvalid() ? \"true\": null',\n\t\t'[attr.data-matches-spartan-invalid]': '_spartanInvalid() ? \"true\": null',\n\t\t'[attr.data-touched]': '_touched() ? \"true\": null',\n\t\t'[attr.data-dirty]': '_dirty() ? \"true\": null',\n\t\t'[attr.disabled]': 'disabled() ? \"\" : null',\n\t\t'(keydown)': 'onKeyDown($event)',\n\t\t'(input)': 'onInput($event)',\n\t},\n})\nexport class BrnAutocompleteInput<T> {\n\tprivate static _id = 0;\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** The id of the autocomplete input */\n\tpublic readonly id = input<string>(`brn-autocomplete-input-${++BrnAutocompleteInput._id}`);\n\n\t/** Manual override for aria-invalid. When not set, auto-detects from the parent autocomplete error state. */\n\tpublic readonly ariaInvalidOverride = input<boolean | undefined, BooleanInput>(undefined, {\n\t\ttransform: (v: BooleanInput) => (v === '' || v === undefined ? undefined : booleanAttribute(v)),\n\t\talias: 'aria-invalid',\n\t});\n\n\t/** Forces the invalid state visually, regardless of form control state. */\n\tpublic readonly forceInvalid = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tpublic readonly disabled = this._autocomplete.disabledState;\n\n\t/** Whether the autocomplete panel is expanded */\n\tprotected readonly _isExpanded = this._autocomplete.isExpanded;\n\n\t/** Computed aria-invalid: uses manual override if provided, otherwise reads from parent error state. */\n\tprotected readonly _ariaInvalid = computed(\n\t\t() => this.ariaInvalidOverride() ?? this._autocomplete.controlState?.()?.invalid,\n\t);\n\n\tprotected readonly _spartanInvalid = computed(\n\t\t() => this.forceInvalid() || this._autocomplete.controlState?.()?.spartanInvalid,\n\t);\n\tprotected readonly _touched = computed(() => this._autocomplete.controlState?.()?.touched);\n\tprotected readonly _dirty = computed(() => this._autocomplete.controlState?.()?.dirty);\n\n\tconstructor() {\n\t\tthis._autocomplete.registerAutocompleteInput(this);\n\n\t\teffect(() => {\n\t\t\tconst value = this._autocomplete.value();\n\t\t\tconst valueLabel = stringifyAsLabel(value, this._autocomplete.itemToString());\n\t\t\tthis._el.nativeElement.value = valueLabel ?? '';\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst search = this._autocomplete.search();\n\t\t\tif (this._el.nativeElement.value !== search) {\n\t\t\t\tthis._el.nativeElement.value = search;\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected onInput(event: Event) {\n\t\tconst value = (event.target as HTMLInputElement).value;\n\n\t\tthis._autocomplete.updateSearch(value);\n\t}\n\n\tprotected onKeyDown(event: KeyboardEvent) {\n\t\tif (event.key === 'Enter') {\n\t\t\t// prevent form submission if inside a form\n\t\t\tevent.preventDefault();\n\n\t\t\tthis._autocomplete.selectActiveItem();\n\t\t}\n\n\t\tif (this._isExpanded()) {\n\t\t\tif (event.key === 'Tab') {\n\t\t\t\tthis._autocomplete.selectActiveItem();\n\t\t\t}\n\t\t} else {\n\t\t\tif (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n\t\t\t\tthis._autocomplete.open();\n\t\t\t}\n\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\tthis._autocomplete.resetValue();\n\t\t\t}\n\t\t}\n\n\t\tthis._autocomplete.keyManager.onKeydown(event);\n\t}\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input, PLATFORM_ID, signal } from '@angular/core';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { provideBrnAutocompleteItem } from './brn-autocomplete-item.token';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteItem]',\n\tproviders: [provideBrnAutocompleteItem(BrnAutocompleteItem)],\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-highlighted]': '_highlighted() ? \"\" : null',\n\t\t'[attr.data-value]': 'value()',\n\t\t'[attr.aria-selected]': 'active()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'[attr.data-disabled]': '_disabled() ? \"\" : null',\n\t\t'(click)': 'select()',\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnAutocompleteItem<T> implements Highlightable {\n\tprivate static _id = 0;\n\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\n\tprivate readonly _elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\t/** Access the autocomplete component */\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase<T>();\n\n\t/** A unique id for the item */\n\tpublic readonly id = input<string>(`brn-autocomplete-item-${++BrnAutocompleteItem._id}`);\n\n\t/** The value this item represents. */\n\tpublic readonly value = input.required<T>();\n\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** Expose disabled as a value - used by the Highlightable interface */\n\tpublic get disabled() {\n\t\treturn this._disabled();\n\t}\n\n\t/** Whether the item is selected. */\n\tpublic readonly active = computed(() => this._autocomplete.isSelected(this.value()));\n\n\tprotected readonly _highlighted = signal(false);\n\n\tsetActiveStyles(): void {\n\t\tthis._highlighted.set(true);\n\n\t\t// ensure the item is in view\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t\t}\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis._highlighted.set(false);\n\t}\n\n\tgetLabel(): string {\n\t\treturn stringifyAsLabel(this.value(), this._autocomplete.itemToString());\n\t}\n\n\tprotected select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t\tthis._autocomplete.select(this.value());\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._autocomplete.keyManager.setActiveItem(this);\n\t}\n}\n","import { Directive, input } from '@angular/core';\nimport { injectBrnAutocompleteBase } from './brn-autocomplete.token';\n\n@Directive({\n\tselector: '[brnAutocompleteList]',\n\thost: {\n\t\trole: 'listbox',\n\t\ttabIndex: '-1',\n\t\t'aria-orientation': 'vertical',\n\t\t'[id]': 'id()',\n\t\t'[attr.data-empty]': '!_visibleItems() ? \"\" : null',\n\t},\n})\nexport class BrnAutocompleteList {\n\tprivate static _id = 0;\n\n\tprivate readonly _autocomplete = injectBrnAutocompleteBase();\n\n\t/** Determine if the autocomplete has any visible items */\n\tprotected readonly _visibleItems = this._autocomplete.visibleItems;\n\n\t/** The id of the autocomplete list */\n\tpublic readonly id = input<string>(`brn-autocomplete-list-${++BrnAutocompleteList._id}`);\n}\n","import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport type { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tforwardRef,\n\tinject,\n\tInjector,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\tsignal,\n\tuntracked,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { stringifyAsLabel } from '@spartan-ng/brain/core';\nimport { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnPopover } from '@spartan-ng/brain/popover';\nimport { BrnAutocompleteInput } from './brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './brn-autocomplete-item';\nimport { BrnAutocompleteItemToken } from './brn-autocomplete-item.token';\nimport {\n\tAutocompleteItemToString,\n\tBrnAutocompleteBase,\n\tinjectBrnAutocompleteConfig,\n\tprovideBrnAutocompleteBase,\n} from './brn-autocomplete.token';\n\nexport const BRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnAutocompleteSearch),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnAutocomplete]',\n\tproviders: [\n\t\tBRN_AUTOCOMPLETE_SEARCH_VALUE_ACCESSOR,\n\t\tprovideBrnAutocompleteBase(BrnAutocompleteSearch),\n\t\tprovideBrnLabelable(BrnAutocompleteSearch),\n\t],\n\thostDirectives: [BrnFieldControl],\n\thost: {\n\t\t'(focusout)': '_onFocusOut($event)',\n\t},\n})\nexport class BrnAutocompleteSearch<T> implements BrnAutocompleteBase<T>, ControlValueAccessor {\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _fieldControl = inject(BrnFieldControl, { optional: true });\n\n\tprivate readonly _config = injectBrnAutocompleteConfig<T>();\n\n\t/** Access the popover if present */\n\tprivate readonly _brnPopover = inject(BrnPopover, { optional: true });\n\n\tpublic readonly controlState = this._fieldControl?.controlState;\n\n\t/** Whether the autocomplete is disabled */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\tprotected readonly _disabled = linkedSignal(this.disabled);\n\n\t/** @internal The disabled state as a readonly signal */\n\tpublic readonly disabledState = this._disabled.asReadonly();\n\n\t/** A function to convert an item to a string for display. */\n\tpublic readonly itemToString = input<AutocompleteItemToString<T> | undefined>(this._config.itemToString);\n\n\t/** Whether to auto-highlight the first matching item. */\n\tpublic readonly autoHighlight = input<boolean, BooleanInput>(this._config.autoHighlight, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/** The selected value of the autocomplete. */\n\tpublic readonly value = model<string | undefined | null>(null);\n\n\t/** The current search query. */\n\tpublic readonly search = model<string>('');\n\n\tprivate readonly _inputWidth = signal<number | null>(null);\n\n\t/** @internal The width of the search input wrapper */\n\tpublic readonly searchInputWrapperWidth = this._inputWidth.asReadonly();\n\n\t/** @internal Access all the items within the autocomplete */\n\tpublic readonly items = contentChildren<BrnAutocompleteItem<T>>(BrnAutocompleteItemToken, {\n\t\tdescendants: true,\n\t});\n\n\t/** Determine if the autocomplete has any visible items */\n\tpublic readonly visibleItems = computed(() => this.items().length > 0);\n\n\t/** @internal The key manager for managing active descendant */\n\tpublic readonly keyManager = new ActiveDescendantKeyManager(this.items, this._injector);\n\n\t/** @internal Whether the autocomplete is expanded */\n\tpublic readonly isExpanded = computed(() => this._brnPopover?.stateComputed() === 'open');\n\n\tprivate readonly _autocompleteInput = signal<BrnAutocompleteInput<T> | undefined>(undefined);\n\n\tprotected _onChange?: ChangeFn<string | undefined | null>;\n\tprotected _onTouched?: TouchFn;\n\n\tpublic readonly labelableId = computed(() => this._autocompleteInput()?.id());\n\n\tconstructor() {\n\t\tthis.keyManager\n\t\t\t.withVerticalOrientation()\n\t\t\t.withHomeAndEnd()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((item) => item.disabled);\n\n\t\tthis._brnPopover?.closed.subscribe(() => {\n\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t});\n\n\t\tafterNextRender(() => {\n\t\t\teffect(\n\t\t\t\t() => {\n\t\t\t\t\tif (!this.autoHighlight() || !this.isExpanded() || !this.search()) return;\n\n\t\t\t\t\tconst hasVisibleItems = this.visibleItems();\n\n\t\t\t\t\tuntracked(() => {\n\t\t\t\t\t\tif (hasVisibleItems) {\n\t\t\t\t\t\t\tthis.keyManager.setFirstItemActive();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.keyManager.setActiveItem(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t\t{ injector: this._injector },\n\t\t\t);\n\t\t});\n\t}\n\n\tpublic registerAutocompleteInput(input: BrnAutocompleteInput<T>): void {\n\t\treturn this._autocompleteInput.set(input);\n\t}\n\n\tpublic updateInputWidth(width: number | null): void {\n\t\tthis._inputWidth.set(width);\n\t}\n\n\tupdateSearch(value: string) {\n\t\tthis.value.set(value);\n\t\tthis.search.set(value);\n\t\tthis._onChange?.(value);\n\t\tthis.open();\n\n\t\tif (value === '') {\n\t\t\tthis.resetValue();\n\t\t}\n\t}\n\n\tisSelected(itemValue: T): boolean {\n\t\treturn stringifyAsLabel(itemValue, this.itemToString()) === this.value();\n\t}\n\n\tselect(itemValue: T) {\n\t\tconst label = stringifyAsLabel(itemValue, this.itemToString());\n\n\t\tthis.value.set(label);\n\t\tthis._onChange?.(label);\n\t\tthis.search.set(label);\n\t\tthis.close();\n\t}\n\n\t/** Select the active item with Enter key. */\n\tselectActiveItem() {\n\t\tif (!this.isExpanded()) return;\n\n\t\tconst value = this.keyManager.activeItem?.value();\n\n\t\tif (value) {\n\t\t\tthis.select(value);\n\t\t} else {\n\t\t\tthis.close();\n\t\t}\n\t}\n\n\tresetValue() {\n\t\tthis.value.set(null);\n\t\tthis.search.set('');\n\t\tthis._onChange?.(null);\n\t}\n\n\topen() {\n\t\tif (this._disabled() || this.isExpanded()) return;\n\n\t\tthis._brnPopover?.open();\n\t}\n\n\tclose() {\n\t\tif (this._disabled() || !this.isExpanded()) return;\n\n\t\tthis._brnPopover?.close();\n\t}\n\n\ttoggle() {\n\t\tif (this._disabled()) return;\n\n\t\tthis.isExpanded() ? this.close() : this.open();\n\t}\n\n\t/** CONTROL VALUE ACCESSOR */\n\twriteValue(value: string | undefined | null): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<string | undefined | null>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tregisterOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tsetDisabledState(isDisabled: boolean) {\n\t\tthis._disabled.set(isDisabled);\n\t}\n\n\tprotected _onFocusOut(event: FocusEvent): void {\n\t\tconst currentTarget = event.currentTarget as HTMLElement;\n\t\tconst focusedEl = event.relatedTarget as HTMLElement | null;\n\n\t\tif (!currentTarget.contains(focusedEl)) {\n\t\t\tthis._onTouched?.();\n\t\t}\n\t}\n}\n","import { Directive, input } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteSeparator]',\n\thost: {\n\t\trole: 'separator',\n\t\t'[attr.aria-orientation]': 'orientation()',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t},\n})\nexport class BrnAutocompleteSeparator {\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAutocompleteStatus]',\n\thost: {\n\t\trole: 'status',\n\t\t'aria-live': 'polite',\n\t\t'aria-atomic': 'true',\n\t},\n})\nexport class BrnAutocompleteStatus {}\n","import { BrnAutocomplete } from './lib/brn-autocomplete';\nimport { BrnAutocompleteAnchor } from './lib/brn-autocomplete-anchor';\nimport { BrnAutocompleteClear } from './lib/brn-autocomplete-clear';\nimport { BrnAutocompleteContent } from './lib/brn-autocomplete-content';\nimport { BrnAutocompleteEmpty } from './lib/brn-autocomplete-empty';\nimport { BrnAutocompleteGroup } from './lib/brn-autocomplete-group';\nimport { BrnAutocompleteInput } from './lib/brn-autocomplete-input';\nimport { BrnAutocompleteItem } from './lib/brn-autocomplete-item';\nimport { BrnAutocompleteLabel } from './lib/brn-autocomplete-label';\nimport { BrnAutocompleteList } from './lib/brn-autocomplete-list';\nimport { BrnAutocompleteSearch } from './lib/brn-autocomplete-search';\nimport { BrnAutocompleteSeparator } from './lib/brn-autocomplete-separator';\nimport { BrnAutocompleteStatus } from './lib/brn-autocomplete-status';\n\nexport * from './lib/brn-autocomplete';\nexport * from './lib/brn-autocomplete-anchor';\nexport * from './lib/brn-autocomplete-clear';\nexport * from './lib/brn-autocomplete-content';\nexport * from './lib/brn-autocomplete-empty';\nexport * from './lib/brn-autocomplete-group';\nexport * from './lib/brn-autocomplete-input';\nexport * from './lib/brn-autocomplete-item';\nexport * from './lib/brn-autocomplete-item.token';\nexport * from './lib/brn-autocomplete-label';\nexport * from './lib/brn-autocomplete-list';\nexport * from './lib/brn-autocomplete-search';\nexport * from './lib/brn-autocomplete-separator';\nexport * from './lib/brn-autocomplete-status';\nexport * from './lib/brn-autocomplete.token';\n\nexport const BrnAutocompleteImports = [\n\tBrnAutocomplete,\n\tBrnAutocompleteAnchor,\n\tBrnAutocompleteClear,\n\tBrnAutocompleteContent,\n\tBrnAutocompleteEmpty,\n\tBrnAutocompleteGroup,\n\tBrnAutocompleteInput,\n\tBrnAutocompleteItem,\n\tBrnAutocompleteLabel,\n\tBrnAutocompleteList,\n\tBrnAutocompleteSearch,\n\tBrnAutocompleteSeparator,\n\tBrnAutocompleteStatus,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -11,13 +11,13 @@ class BrnAvatarImage {
11
11
  }
12
12
  canShow = computed(() => this._loaded(), ...(ngDevMode ? [{ debugName: "canShow" }] : /* istanbul ignore next */ []));
13
13
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarImage, deps: [], target: i0.ɵɵFactoryTarget.Directive });
14
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarImage, isStandalone: true, selector: "img[brnAvatarImage]", host: { listeners: { "load": "_onLoad()", "error": "_onError()" } }, exportAs: ["avatarImage"], ngImport: i0 });
14
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarImage, isStandalone: true, selector: "img[brnAvatarImage]", host: { listeners: { "load": "_onLoad()", "error": "_onError()" } }, exportAs: ["brnAvatarImage"], ngImport: i0 });
15
15
  }
16
16
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarImage, decorators: [{
17
17
  type: Directive,
18
18
  args: [{
19
19
  selector: 'img[brnAvatarImage]',
20
- exportAs: 'avatarImage',
20
+ exportAs: 'brnAvatarImage',
21
21
  host: {
22
22
  '(load)': '_onLoad()',
23
23
  '(error)': '_onError()',
@@ -53,13 +53,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
53
53
 
54
54
  class BrnAvatarFallback {
55
55
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarFallback, deps: [], target: i0.ɵɵFactoryTarget.Directive });
56
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarFallback, isStandalone: true, selector: "[brnAvatarFallback]", exportAs: ["avatarFallback"], ngImport: i0 });
56
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnAvatarFallback, isStandalone: true, selector: "[brnAvatarFallback]", exportAs: ["brnAvatarFallback"], ngImport: i0 });
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnAvatarFallback, decorators: [{
59
59
  type: Directive,
60
60
  args: [{
61
61
  selector: '[brnAvatarFallback]',
62
- exportAs: 'avatarFallback',
62
+ exportAs: 'brnAvatarFallback',
63
63
  }]
64
64
  }] });
65
65
 
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'avatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'avatarFallback',\n})\nexport class BrnAvatarFallback {}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-avatar.mjs","sources":["../../../../libs/brain/avatar/src/lib/image/brn-avatar-image.ts","../../../../libs/brain/avatar/src/lib/brn-avatar.ts","../../../../libs/brain/avatar/src/lib/fallback/brn-avatar-fallback.ts","../../../../libs/brain/avatar/src/lib/util/hex-color-for.ts","../../../../libs/brain/avatar/src/lib/util/initials.pipe.ts","../../../../libs/brain/avatar/src/lib/util/is-bright.ts","../../../../libs/brain/avatar/src/index.ts","../../../../libs/brain/avatar/src/spartan-ng-brain-avatar.ts"],"sourcesContent":["import { Directive, computed, signal } from '@angular/core';\n\n@Directive({\n\tselector: 'img[brnAvatarImage]',\n\texportAs: 'brnAvatarImage',\n\thost: {\n\t\t'(load)': '_onLoad()',\n\t\t'(error)': '_onError()',\n\t},\n})\nexport class BrnAvatarImage {\n\tprivate readonly _loaded = signal(false);\n\n\tprotected _onError() {\n\t\tthis._loaded.set(false);\n\t}\n\n\tprotected _onLoad() {\n\t\tthis._loaded.set(true);\n\t}\n\n\tpublic readonly canShow = computed(() => this._loaded());\n}\n","import { ChangeDetectionStrategy, Component, contentChild } from '@angular/core';\nimport { BrnAvatarImage } from './image';\n\n@Component({\n\tselector: 'brn-avatar',\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t@if (_image()?.canShow()) {\n\t\t\t<ng-content select=\"[brnAvatarImage]\" />\n\t\t} @else {\n\t\t\t<ng-content select=\"[brnAvatarFallback]\" />\n\t\t}\n\t`,\n})\nexport class BrnAvatar {\n\tprotected readonly _image = contentChild(BrnAvatarImage);\n}\n","import { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnAvatarFallback]',\n\texportAs: 'brnAvatarFallback',\n})\nexport class BrnAvatarFallback {}\n","function hashString(str: string) {\n\tlet h;\n\tfor (let i = 0; i < str.length; i++) h = (Math.imul(31, h || 0) + str.charCodeAt(i)) | 0;\n\n\treturn h || 0;\n}\n\nfunction hashManyTimes(times: number, str: string) {\n\tlet h = hashString(str);\n\n\tfor (let i = 0; i < times; i++) h = hashString(String(h));\n\n\treturn h;\n}\n\nexport function hexColorFor(str: string) {\n\tconst hash = str.length <= 2 ? hashManyTimes(5, str) : hashString(str);\n\n\tlet color = '#';\n\n\tfor (let i = 0; i < 3; i += 1) {\n\t\tconst value = (hash >> (i * 8)) & 0xff;\n\t\tcolor += `00${value.toString(16)}`.slice(-2);\n\t}\n\n\treturn color;\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\n\nconst toInitial =\n\t(capitalize = true) =>\n\t(word: string) => {\n\t\tconst initial = word.charAt(0);\n\t\treturn capitalize ? initial.toLocaleUpperCase() : initial;\n\t};\n\nconst firstAndLast = (initials: string[]) => `${initials[0]}${initials[initials.length - 1]}`;\n\n@Pipe({\n\tname: 'initials',\n})\nexport class InitialsPipe implements PipeTransform {\n\ttransform(name: string, capitalize = true, firstAndLastOnly = true, delimiter = ' '): string {\n\t\tif (!name) return '';\n\n\t\tconst initials = name.trim().split(delimiter).filter(Boolean).map(toInitial(capitalize));\n\n\t\tif (firstAndLastOnly && initials.length > 1) return firstAndLast(initials);\n\n\t\treturn initials.join('');\n\t}\n}\n","const isShortHand = (hex: string) => hex.length === 3;\n\nconst cleanup = (hex: string) => {\n\tconst noHash = hex.replace('#', '').trim().toLowerCase();\n\n\tif (!isShortHand(noHash)) return noHash;\n\n\treturn noHash\n\t\t.split('')\n\t\t.map((char) => char + char)\n\t\t.join('');\n};\n\nexport const isBright = (hex: string) => Number.parseInt(cleanup(hex), 16) > 0xffffff / 1.25;\n","import { BrnAvatar } from './lib/brn-avatar';\nimport { BrnAvatarFallback } from './lib/fallback';\nimport { BrnAvatarImage } from './lib/image';\n\nexport * from './lib/brn-avatar';\nexport * from './lib/fallback';\nexport * from './lib/image';\nexport * from './lib/util';\n\nexport const BrnAvatarImports = [BrnAvatar, BrnAvatarFallback, BrnAvatarImage] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as i1 from '@spartan-ng/brain/field';
6
6
  import { BrnFieldControl, provideBrnLabelable } from '@spartan-ng/brain/field';
7
7
  import { BrnPopover } from '@spartan-ng/brain/popover';
8
8
  import { stringifyAsLabel, injectElementSize } from '@spartan-ng/brain/core';
9
- import { BrnDialog } from '@spartan-ng/brain/dialog';
9
+ import { BrnOverlay } from '@spartan-ng/brain/overlay';
10
10
  import { isPlatformBrowser } from '@angular/common';
11
11
 
12
12
  const comboboxContainsFilter = (item, query, collator, itemToString) => {
@@ -274,7 +274,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
274
274
 
275
275
  class BrnComboboxAnchor {
276
276
  _host = inject(ElementRef, { host: true });
277
- _brnDialog = inject(BrnDialog, { optional: true });
277
+ _brnOverlay = inject(BrnOverlay, { optional: true });
278
278
  _content = inject(BrnComboboxContent, { optional: true });
279
279
  _combobox = injectBrnComboboxBase();
280
280
  _elementSize = injectElementSize();
@@ -282,16 +282,14 @@ class BrnComboboxAnchor {
282
282
  // skip if it's inside a combobox content
283
283
  if (this._content)
284
284
  return;
285
+ this._brnOverlay?.setOrigin(this._host.nativeElement);
285
286
  effect(() => {
286
287
  const size = this._elementSize();
287
- if (size) {
288
- this._combobox.updateInputWidth(size.width);
289
- this._brnDialog?.updatePosition();
290
- }
288
+ if (!size)
289
+ return;
290
+ this._combobox.updateInputWidth(size.width);
291
+ this._brnOverlay?.updatePosition();
291
292
  });
292
- if (!this._brnDialog)
293
- return;
294
- this._brnDialog.mutableAttachTo.set(this._host.nativeElement);
295
293
  }
296
294
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnComboboxAnchor, deps: [], target: i0.ɵɵFactoryTarget.Directive });
297
295
  /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnComboboxAnchor, isStandalone: true, selector: "[brnComboboxAnchor]", ngImport: i0 });
@@ -961,11 +959,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.16", ngImpo
961
959
 
962
960
  class BrnComboboxPopoverTrigger {
963
961
  _combobox = injectBrnComboboxBase();
964
- _brnDialog = inject(BrnDialog, { optional: true });
962
+ _brnOverlay = inject(BrnOverlay, { optional: true });
965
963
  open() {
966
964
  if (this._combobox.disabledState())
967
965
  return;
968
- this._brnDialog?.open();
966
+ this._brnOverlay?.open();
969
967
  }
970
968
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.16", ngImport: i0, type: BrnComboboxPopoverTrigger, deps: [], target: i0.ɵɵFactoryTarget.Directive });
971
969
  /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.16", type: BrnComboboxPopoverTrigger, isStandalone: true, selector: "[brnComboboxPopoverTrigger]", host: { listeners: { "click": "open()" } }, ngImport: i0 });