@spartan-ng/brain 0.0.1-alpha.412 → 0.0.1-alpha.413

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-select.mjs","sources":["../../../../libs/brain/select/src/lib/brn-select.service.ts","../../../../libs/brain/select/src/lib/brn-select-option.directive.ts","../../../../libs/brain/select/src/lib/brn-select-content.component.ts","../../../../libs/brain/select/src/lib/brn-select-group.directive.ts","../../../../libs/brain/select/src/lib/brn-select-label.directive.ts","../../../../libs/brain/select/src/lib/brn-select-value.component.ts","../../../../libs/brain/select/src/lib/brn-select.component.ts","../../../../libs/brain/select/src/index.ts","../../../../libs/brain/select/src/spartan-ng-brain-select.ts"],"sourcesContent":["import type { CdkOption, ListboxValueChangeEvent } from '@angular/cdk/listbox';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\ttype AfterViewInit,\n\tDirective,\n\tElementRef,\n\tInjectable,\n\tOnDestroy,\n\tPLATFORM_ID,\n\tSignal,\n\tcomputed,\n\tinject,\n\tsignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { NgControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { skip } from 'rxjs/operators';\n\n@Directive({\n\tselector: '[brnSelectTrigger]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'combobox',\n\t\t'[attr.id]': 'selectTriggerId()',\n\t\t'[disabled]': 'selectDisable()',\n\t\t'[attr.aria-expanded]': 'isExpanded()',\n\t\t'[attr.aria-controls]': \"selectContentId() + ''\",\n\t\t'[attr.aria-labelledBy]': 'selectTriggerLabelledBy()',\n\t\t'aria-autocomplete': 'none',\n\t\t'[attr.dir]': '_selectService.dir()',\n\t\t'[class.ng-invalid]': 'this._ngControl?.invalid || null',\n\t\t'[class.ng-dirty]': 'this._ngControl?.dirty || null',\n\t\t'[class.ng-valid]': 'this._ngControl?.valid || null',\n\t\t'[class.ng-touched]': 'this._ngControl?.touched || null',\n\t\t'[class.ng-untouched]': 'this._ngControl?.untouched || null',\n\t\t'[class.ng-pristine]': 'this._ngControl?.pristine || null',\n\t\ttype: 'button',\n\t},\n})\nexport class BrnSelectTriggerDirective implements AfterViewInit, OnDestroy {\n\tprivate readonly _el = inject(ElementRef);\n\tprotected readonly _selectService = inject(BrnSelectService);\n\tprotected readonly _ngControl = inject(NgControl, { optional: true });\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\tpublic readonly isExpanded = this._selectService.isExpanded;\n\tpublic readonly selectTriggerId = computed(() => `${this._selectService.id()}--trigger`);\n\tpublic readonly selectContentId = computed(() => `${this._selectService.id()}--content`);\n\tpublic readonly selectDisable = computed(() => this._selectService.disabled());\n\tpublic readonly selectTriggerLabelledBy = computed(() => {\n\t\tif (this._selectService.value() && this._selectService.value().length > 0) {\n\t\t\treturn `${this._selectService.labelId()} ${this._selectService.id()}--value`;\n\t\t}\n\t\treturn this._selectService.labelId();\n\t});\n\n\tprivate _resizeObserver?: ResizeObserver;\n\n\tconstructor() {\n\t\tif (!this._selectService) return;\n\t\tthis._selectService._setSelectTrigger(this);\n\t}\n\n\tngAfterViewInit() {\n\t\tthis._selectService.setTriggerWidth(this._el.nativeElement.offsetWidth);\n\n\t\t// if we are on the client, listen for element resize events\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._resizeObserver = new ResizeObserver(() =>\n\t\t\t\tthis._selectService.setTriggerWidth(this._el.nativeElement.offsetWidth),\n\t\t\t);\n\n\t\t\tthis._resizeObserver.observe(this._el.nativeElement);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._resizeObserver?.disconnect();\n\t}\n\n\tpublic focus() {\n\t\tthis._el.nativeElement.focus();\n\t}\n}\n\ntype BrnReadDirection = 'ltr' | 'rtl';\n\n@Injectable()\nexport class BrnSelectService {\n\tpublic readonly state = signal<{\n\t\tid: string;\n\t\tlabelId: string;\n\t\tpanelId: string;\n\t\tplaceholder: Signal<string>;\n\t\tisExpanded: boolean;\n\t\tmultiple: Signal<boolean>;\n\t\tdisabled: Signal<boolean>;\n\t\tdisabledBySetDisabled: Signal<boolean>;\n\t\tdir: Signal<BrnReadDirection>;\n\t\tselectedOptions: Array<CdkOption | null>;\n\t\tpossibleOptions: Array<CdkOption | null>;\n\t\tvalue: string | string[];\n\t\ttriggerWidth: number;\n\t}>({\n\t\tid: '',\n\t\tlabelId: '',\n\t\tpanelId: '',\n\t\tisExpanded: false,\n\t\tplaceholder: signal(''),\n\t\tmultiple: signal(false),\n\t\tdisabled: signal(false),\n\t\tdisabledBySetDisabled: signal(false),\n\t\tdir: signal('ltr' as BrnReadDirection),\n\t\tselectedOptions: [],\n\t\tpossibleOptions: [],\n\t\tvalue: '',\n\t\ttriggerWidth: 0,\n\t});\n\n\tpublic readonly id = computed(() => this.state().id);\n\tpublic readonly labelId = computed(() => this.state().labelId);\n\tpublic readonly panelId = computed(() => this.state().panelId);\n\tpublic readonly placeholder = computed(() => this.state().placeholder());\n\tpublic readonly disabled = computed(() => this.state().disabled() || this.state().disabledBySetDisabled());\n\tpublic readonly isExpanded = computed(() => this.state().isExpanded);\n\tpublic readonly multiple = computed(() => this.state().multiple());\n\tpublic readonly dir = computed(() => this.state().dir());\n\tpublic readonly selectedOptions = computed(() => this.state().selectedOptions);\n\tpublic readonly value = computed(() => this.state().value);\n\tpublic readonly triggerWidth = computed(() => this.state().triggerWidth);\n\tpublic readonly possibleOptions = computed(() => this.state().possibleOptions);\n\n\tprivate readonly _multiple$ = toObservable(this.multiple);\n\n\tpublic readonly listBoxValueChangeEvent$ = new Subject<ListboxValueChangeEvent<unknown>>();\n\n\tprivate _selectTrigger?: BrnSelectTriggerDirective;\n\tpublic get selectTrigger() {\n\t\treturn this._selectTrigger;\n\t}\n\n\tconstructor() {\n\t\tthis.listBoxValueChangeEvent$.pipe(takeUntilDestroyed()).subscribe((listBoxChange) => {\n\t\t\tconst updatedSelections = this.multiple() ? this.getUpdatedOptions(listBoxChange) : [listBoxChange.option];\n\t\t\tconst value = this.multiple() ? listBoxChange.value : listBoxChange.value[0];\n\t\t\tthis.state.update((state) => ({\n\t\t\t\t...state,\n\t\t\t\tselectedOptions: [...updatedSelections],\n\t\t\t\tvalue: value as string | string[],\n\t\t\t}));\n\t\t});\n\n\t\t// We need to skip the first value because we don't want to deselect all options when the component is initialized with a preselected value e.g. by the form control\n\t\tthis._multiple$.pipe(skip(1), takeUntilDestroyed()).subscribe((multiple) => {\n\t\t\tif (!multiple && this.value().length > 1) {\n\t\t\t\tthis.deselectAllOptions();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setTriggerWidth(triggerWidth: number) {\n\t\tthis.state.update((s) => ({ ...s, triggerWidth }));\n\t}\n\n\tpublic getUpdatedOptions(latestListboxChange: ListboxValueChangeEvent<unknown>): Array<CdkOption | null> {\n\t\tconst isNewSelection = latestListboxChange.value.findIndex((value) => value === latestListboxChange.option?.value);\n\t\tif (isNewSelection === -1) {\n\t\t\tconst removedOptionIndex = this.selectedOptions().findIndex((option) => latestListboxChange.option === option);\n\t\t\tconst options = this.selectedOptions();\n\t\t\toptions.splice(removedOptionIndex, 1);\n\t\t\treturn options;\n\t\t}\n\t\treturn [...this.selectedOptions(), latestListboxChange.option];\n\t}\n\n\tpublic deselectAllOptions() {\n\t\tthis.state.update((state) => ({\n\t\t\t...state,\n\t\t\tselectedOptions: [],\n\t\t\tvalue: [],\n\t\t}));\n\t}\n\n\t// Needed due to https://github.com/angular/angular/issues/20810\n\tpublic _setSelectTrigger(trigger: BrnSelectTriggerDirective) {\n\t\tthis._selectTrigger = trigger;\n\t}\n\n\tpublic setInitialSelectedOptions(value: unknown) {\n\t\tthis.selectOptionByValue(value);\n\t\tthis.state.update((state) => ({\n\t\t\t...state,\n\t\t\tvalue: value as string | string[],\n\t\t\tinitialSelectedOptions: this.selectedOptions(),\n\t\t\tselectedOptions: this.selectedOptions(),\n\t\t}));\n\t}\n\n\t/**\n\t * Sync the updated options with \"possibleOptions\" in the select service\n\t */\n\tpublic updatePossibleOptions(options: readonly CdkOption[]) {\n\t\tthis.state.update((state) => ({\n\t\t\t...state,\n\t\t\tpossibleOptions: options as CdkOption[],\n\t\t}));\n\t}\n\n\tprivate selectOptionByValue(value: unknown) {\n\t\tconst options = this.possibleOptions();\n\t\tif (value === null || value === undefined) {\n\t\t\tconst nullOrUndefinedOption = options.find((o) => o && o.value === value);\n\t\t\tif (!nullOrUndefinedOption) {\n\t\t\t\tthis.state.update((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedOptions: [],\n\t\t\t\t\tvalue: this.multiple() ? [] : '',\n\t\t\t\t}));\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (this.multiple()) {\n\t\t\tconst selectedOptions = options.filter((option) => {\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\treturn value.includes(option?.value as string);\n\t\t\t\t}\n\t\t\t\treturn value === option?.value;\n\t\t\t});\n\t\t\tthis.state.update((state) => ({\n\t\t\t\t...state,\n\t\t\t\tselectedOptions,\n\t\t\t\tvalue: value as string[],\n\t\t\t}));\n\t\t} else {\n\t\t\tconst selectedOption = options.find((option) => option?.value === value);\n\t\t\tif (!selectedOption) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.state.update((state) => ({\n\t\t\t\t...state,\n\t\t\t\tselectedOptions: [selectedOption as CdkOption | null],\n\t\t\t\tvalue: selectedOption.value as string,\n\t\t\t}));\n\t\t}\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { CdkOption } from '@angular/cdk/listbox';\nimport {\n\tAfterContentChecked,\n\tDirective,\n\tElementRef,\n\tbooleanAttribute,\n\tcomputed,\n\teffect,\n\tinject,\n\tinput,\n\tsignal,\n} from '@angular/core';\nimport { BrnSelectService } from './brn-select.service';\n\n@Directive({\n\tselector: '[brnOption]',\n\tstandalone: true,\n\thostDirectives: [CdkOption],\n\thost: {\n\t\t'(mouseenter)': 'hover()',\n\t\t'(blur)': 'blur()',\n\t\t'[attr.dir]': '_selectService.dir()',\n\t\t'[attr.data-disabled]': \"disabledSignal() ? '' : undefined\",\n\t},\n})\nexport class BrnSelectOptionDirective implements FocusableOption, AfterContentChecked {\n\tprivate readonly _cdkSelectOption = inject(CdkOption, { host: true });\n\tprotected readonly _selectService = inject(BrnSelectService);\n\n\tprivate readonly _focused = signal<boolean>(false);\n\tpublic readonly elementRef = inject(ElementRef);\n\n\tpublic readonly selected = computed(() => {\n\t\tif (Array.isArray(this._selectService.value())) {\n\t\t\tconst itemFound = (this._selectService.value() as Array<unknown>).find(\n\t\t\t\t(val) => val === this._cdkSelectOption.value,\n\t\t\t);\n\t\t\treturn !!itemFound;\n\t\t}\n\t\treturn this._cdkSelectOption.value === this._selectService.value();\n\t});\n\tpublic readonly focused = computed(() => this._focused());\n\tpublic readonly checkedState = computed(() => (this.selected() ? 'checked' : 'unchecked'));\n\tpublic readonly dir = computed(() => this._selectService.dir());\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._cdkSelectOption.value = this.value();\n\t\t});\n\t\teffect(() => {\n\t\t\tthis._cdkSelectOption.disabled = this.disabledSignal();\n\t\t});\n\t}\n\tngAfterContentChecked(): void {\n\t\tthis._cdkSelectOption.value = this.value();\n\t}\n\n\tpublic value = input<unknown | null>(null);\n\n\t// we use \"disabledSignal\" here because disabled is already defined in the FocusableOption interface\n\tpublic readonly disabledSignal = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\tprotected hover(): void {\n\t\tthis.focus();\n\t}\n\n\tpublic focus(): void {\n\t\tthis._cdkSelectOption.focus();\n\t\tthis._focused.set(true);\n\t}\n\n\tpublic blur(): void {\n\t\tthis._focused.set(false);\n\t}\n}\n","import { CdkListbox, type ListboxValueChangeEvent } from '@angular/cdk/listbox';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n\ttype AfterViewInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tcontentChild,\n\tcontentChildren,\n\teffect,\n\tinject,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { BrnSelectOptionDirective } from './brn-select-option.directive';\nimport { BrnSelectService } from './brn-select.service';\n\nimport { Directive } from '@angular/core';\nimport { Subject, fromEvent, interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nconst SCROLLBY_PIXELS = 100;\n\n@Directive({\n\tselector: '[brnSelectScrollUp], brn-select-scroll-up, hlm-select-scroll-up:not(noHlm)',\n\tstandalone: true,\n\thost: {\n\t\t'aria-hidden': 'true',\n\t\t'(mouseenter)': 'startEmittingEvents()',\n\t},\n})\nexport class BrnSelectScrollUpDirective {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _selectContent = inject(BrnSelectContentComponent);\n\n\tprivate readonly _endReached = new Subject<boolean>();\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tpublic startEmittingEvents(): void {\n\t\tconst mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');\n\n\t\tinterval(100)\n\t\t\t.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe(() => this._selectContent.moveFocusUp());\n\t}\n\n\tpublic stopEmittingEvents(): void {\n\t\tthis._endReached.next(true);\n\t}\n}\n\n@Directive({\n\tselector: '[brnSelectScrollDown], brn-select-scroll-down, hlm-select-scroll-down:not(noHlm)',\n\tstandalone: true,\n\thost: {\n\t\t'aria-hidden': 'true',\n\t\t'(mouseenter)': 'startEmittingEvents()',\n\t},\n})\nexport class BrnSelectScrollDownDirective {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _selectContent = inject(BrnSelectContentComponent);\n\n\tprivate readonly _endReached = new Subject<boolean>();\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tpublic startEmittingEvents(): void {\n\t\tconst mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');\n\n\t\tinterval(100)\n\t\t\t.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe(() => this._selectContent.moveFocusDown());\n\t}\n\n\tpublic stopEmittingEvents(): void {\n\t\tthis._endReached.next(true);\n\t}\n}\n\n@Component({\n\tselector: 'brn-select-content, hlm-select-content:not(noHlm)',\n\tstandalone: true,\n\timports: [BrnSelectScrollUpDirective, BrnSelectScrollDownDirective, NgTemplateOutlet],\n\thostDirectives: [CdkListbox],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\t'[attr.aria-labelledBy]': 'labelledBy()',\n\t\t'[attr.aria-controlledBy]': \"id() +'--trigger'\",\n\t\t'[id]': \"id() + '--content'\",\n\t\t'[attr.dir]': '_selectService.dir()',\n\t},\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tflex-direction: column;\n\t\t\t\toutline: none;\n\t\t\t\tpointer-events: auto;\n\t\t\t}\n\n\t\t\t[data-brn-select-viewport] {\n\t\t\t\tscrollbar-width: none;\n\t\t\t\t-ms-overflow-style: none;\n\t\t\t\t-webkit-overflow-scrolling: touch;\n\t\t\t}\n\n\t\t\t[data-brn-select-viewport]::-webkit-scrollbar {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t<ng-template #scrollUp>\n\t\t\t<ng-content select=\"hlm-select-scroll-up\" />\n\t\t\t<ng-content select=\"brnSelectScrollUp\" />\n\t\t</ng-template>\n\t\t<ng-container *ngTemplateOutlet=\"canScrollUp() && scrollUpBtn() ? scrollUp : null\" />\n\t\t<div\n\t\t\tdata-brn-select-viewport\n\t\t\t#viewport\n\t\t\t(scroll)=\"handleScroll()\"\n\t\t\tstyle=\"flex: 1 1 0%;\n\t\t\tposition: relative;\n\t\t\twidth:100%;\n\t\t\toverflow:auto;\n\t\t\tmin-height: 36px;\n padding-bottom: 2px;\n margin-bottom: -2px;\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</div>\n\t\t<ng-template #scrollDown>\n\t\t\t<ng-content select=\"brnSelectScrollDown\" />\n\t\t\t<ng-content select=\"hlm-select-scroll-down\" />\n\t\t</ng-template>\n\t\t<ng-container *ngTemplateOutlet=\"canScrollDown() && scrollDownBtn() ? scrollDown : null\" />\n\t`,\n})\nexport class BrnSelectContentComponent implements AfterViewInit {\n\tprivate readonly _el: ElementRef<HTMLElement> = inject(ElementRef);\n\tprivate readonly _cdkListbox = inject(CdkListbox, { host: true });\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\tprotected readonly _selectService = inject(BrnSelectService);\n\n\tprotected readonly labelledBy = this._selectService.labelId;\n\tprotected readonly id = this._selectService.id;\n\tprotected readonly canScrollUp = signal(false);\n\tprotected readonly canScrollDown = signal(false);\n\n\tprotected initialSelectedOptions$ = toObservable(this._selectService.selectedOptions);\n\n\tprotected viewport = viewChild.required<ElementRef<HTMLElement>>('viewport');\n\n\tprotected scrollUpBtn = contentChild(BrnSelectScrollUpDirective);\n\n\tprotected scrollDownBtn = contentChild(BrnSelectScrollDownDirective);\n\n\tprotected _options = contentChildren(BrnSelectOptionDirective, { descendants: true });\n\n\tconstructor() {\n\t\tthis._cdkListbox.valueChange\n\t\t\t.asObservable()\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe((val: ListboxValueChangeEvent<unknown>) => this._selectService.listBoxValueChangeEvent$.next(val));\n\n\t\teffect(() => {\n\t\t\tthis._cdkListbox.multiple = this._selectService.multiple();\n\t\t\tthis._selectService.isExpanded() && setTimeout(() => this.updateArrowDisplay());\n\t\t});\n\t}\n\n\tngAfterViewInit(): void {\n\t\tthis.setInitiallySelectedOptions();\n\t}\n\n\tprivate setInitiallySelectedOptions() {\n\t\tthis.initialSelectedOptions$.pipe(takeUntilDestroyed(this._destroyRef)).subscribe((selectedOptions) => {\n\t\t\t// Reapplying cdkLibstbox multiple because seems this is running before effect that\n\t\t\t// updates cdklistbox, reapplying multiple true so we can set the multiple initial options\n\t\t\tif (this._selectService.multiple()) {\n\t\t\t\tthis._cdkListbox.multiple = true;\n\t\t\t}\n\n\t\t\tfor (const cdkOption of this._selectService.possibleOptions()) {\n\t\t\t\tif (selectedOptions.includes(cdkOption)) {\n\t\t\t\t\tcdkOption?.select();\n\t\t\t\t} else {\n\t\t\t\t\tcdkOption?.deselect();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const cdkOption of selectedOptions) {\n\t\t\t\tcdkOption?.select();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic updateArrowDisplay(): void {\n\t\tconst { scrollTop, scrollHeight, clientHeight } = this.viewport().nativeElement;\n\t\tthis.canScrollUp.set(scrollTop > 0);\n\t\tconst maxScroll = scrollHeight - clientHeight;\n\t\tthis.canScrollDown.set(Math.ceil(scrollTop) < maxScroll);\n\t}\n\n\tpublic handleScroll() {\n\t\tthis.updateArrowDisplay();\n\t}\n\n\tpublic focusList(): void {\n\t\tthis._cdkListbox.focus();\n\t}\n\n\tpublic moveFocusUp() {\n\t\tthis.viewport().nativeElement.scrollBy({ top: -SCROLLBY_PIXELS, behavior: 'smooth' });\n\t\tif (this.viewport().nativeElement.scrollTop === 0) {\n\t\t\tthis.scrollUpBtn()?.stopEmittingEvents();\n\t\t}\n\t}\n\n\tpublic moveFocusDown() {\n\t\tthis.viewport().nativeElement.scrollBy({ top: SCROLLBY_PIXELS, behavior: 'smooth' });\n\t\tconst viewportSize = this._el.nativeElement.scrollHeight;\n\t\tconst viewportScrollPosition = this.viewport().nativeElement.scrollTop;\n\t\tif (\n\t\t\tviewportSize + viewportScrollPosition + SCROLLBY_PIXELS >\n\t\t\tthis.viewport().nativeElement.scrollHeight + SCROLLBY_PIXELS / 2\n\t\t) {\n\t\t\tthis.scrollDownBtn()?.stopEmittingEvents();\n\t\t}\n\t}\n}\n","import { Directive, signal } from '@angular/core';\n\n@Directive({\n\tselector: '[brnSelectGroup]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.aria-labelledby]': 'labelledBy()',\n\t},\n})\nexport class BrnSelectGroupDirective {\n\tpublic readonly labelledBy = signal('');\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnLabelDirective } from '@spartan-ng/brain/label';\nimport { BrnSelectGroupDirective } from './brn-select-group.directive';\n\n@Directive({\n\tselector: '[brnSelectLabel]',\n\thostDirectives: [BrnLabelDirective],\n\tstandalone: true,\n})\nexport class BrnSelectLabelDirective {\n\tprivate readonly _group = inject(BrnSelectGroupDirective, { optional: true });\n\tprivate readonly _label = inject(BrnLabelDirective, { host: true });\n\n\tconstructor() {\n\t\tthis._group?.labelledBy.set(this._label.id());\n\t}\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input } from '@angular/core';\nimport { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';\nimport { BrnSelectService } from './brn-select.service';\n\n@Component({\n\tselector: 'brn-select-value, hlm-select-value',\n\ttemplate: `\n\t\t{{ value || placeholder() }}\n\t`,\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t-webkit-line-clamp: 1;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t`,\n\t],\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnSelectValueComponent {\n\tprivate readonly _selectService = inject(BrnSelectService);\n\n\tpublic readonly id = computed(() => `${this._selectService.id()}--value`);\n\tpublic readonly placeholder = computed(() => this._selectService.placeholder());\n\tpublic value: string | null = null;\n\n\tpublic readonly transformFn = input<(values: (string | undefined)[]) => any>((values) => (values ?? []).join(', '));\n\n\tconstructor() {\n\t\tconst cdr = inject(ChangeDetectorRef);\n\n\t\t// In certain cases (when using a computed signal for value) where the value of the select and the options are\n\t\t// changed dynamically, the template does not update until the next frame. To work around this we can use a simple\n\t\t// string variable in the template and manually trigger change detection when we update it.\n\t\ttoObservable(this._selectService.selectedOptions)\n\t\t\t.pipe(takeUntilDestroyed())\n\t\t\t.subscribe((value) => {\n\t\t\t\tif (value.length === 0) {\n\t\t\t\t\tthis.value = null;\n\t\t\t\t\tcdr.detectChanges();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selectedLabels = value.map((selectedOption) => selectedOption?.getLabel());\n\n\t\t\t\tif (this._selectService.dir() === 'rtl') {\n\t\t\t\t\tselectedLabels.reverse();\n\t\t\t\t}\n\t\t\t\tconst result = this.transformFn()(selectedLabels);\n\t\t\t\tthis.value = result;\n\t\t\t\tcdr.detectChanges();\n\t\t\t});\n\t}\n}\n","import { CdkListbox, CdkListboxModule, CdkOption } from '@angular/cdk/listbox';\nimport {\n\tCdkConnectedOverlay,\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\tOverlayModule,\n} from '@angular/cdk/overlay';\nimport {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\ttype DoCheck,\n\ttype Signal,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tinject,\n\tinput,\n\toutput,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { type ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BrnFormFieldControl } from '@spartan-ng/brain/form-field';\nimport { ChangeFn, ErrorStateMatcher, ErrorStateTracker, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnLabelDirective } from '@spartan-ng/brain/label';\nimport { Subject, combineLatest, of } from 'rxjs';\nimport { delay, map, switchMap } from 'rxjs/operators';\nimport { BrnSelectContentComponent } from './brn-select-content.component';\nimport { BrnSelectService } from './brn-select.service';\n\nexport type BrnReadDirection = 'ltr' | 'rtl';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'brn-select, hlm-select',\n\tstandalone: true,\n\timports: [OverlayModule, CdkListboxModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\tBrnSelectService,\n\t\tCdkListbox,\n\t\tprovideExposedSideProviderExisting(() => BrnSelectComponent),\n\t\tprovideExposesStateProviderExisting(() => BrnSelectComponent),\n\t\t{\n\t\t\tprovide: BrnFormFieldControl,\n\t\t\tuseExisting: BrnSelectComponent,\n\t\t},\n\t],\n\ttemplate: `\n\t\t@if (!labelProvided() && placeholder()) {\n\t\t\t<label class=\"hidden\" [attr.id]=\"backupLabelId()\">{{ placeholder() }}</label>\n\t\t} @else {\n\t\t\t<ng-content select=\"label[hlmLabel],label[brnLabel]\" />\n\t\t}\n\n\t\t<div cdk-overlay-origin (click)=\"toggle()\" #trigger=\"cdkOverlayOrigin\">\n\t\t\t<ng-content select=\"hlm-select-trigger,[brnSelectTrigger]\" />\n\t\t</div>\n\t\t<ng-template\n\t\t\tcdk-connected-overlay\n\t\t\tcdkConnectedOverlayLockPosition\n\t\t\tcdkConnectedOverlayHasBackdrop\n\t\t\tcdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n\t\t\t[cdkConnectedOverlayOrigin]=\"trigger\"\n\t\t\t[cdkConnectedOverlayOpen]=\"_delayedExpanded()\"\n\t\t\t[cdkConnectedOverlayPositions]=\"_positions\"\n\t\t\t[cdkConnectedOverlayWidth]=\"triggerWidth() > 0 ? triggerWidth() : 'auto'\"\n\t\t\t(backdropClick)=\"close()\"\n\t\t\t(detach)=\"close()\"\n\t\t\t(positionChange)=\"_positionChanges$.next($event)\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n})\nexport class BrnSelectComponent<T = unknown>\n\timplements ControlValueAccessor, AfterContentInit, DoCheck, ExposesSide, ExposesState, BrnFormFieldControl\n{\n\tprivate readonly _selectService = inject(BrnSelectService);\n\n\tpublic readonly triggerWidth = this._selectService.triggerWidth;\n\n\tpublic readonly multiple = input<boolean>(false);\n\tpublic readonly placeholder = input<string>('');\n\tpublic readonly disabled = input<boolean>(false);\n\tpublic readonly dir = input<BrnReadDirection>('ltr');\n\tprivate readonly _disabledFromSetDisabledState = signal(false);\n\n\tprotected selectLabel = contentChild(BrnLabelDirective, { descendants: false });\n\t/** Overlay pane containing the options. */\n\tprotected selectContent = contentChild.required(BrnSelectContentComponent);\n\n\tprotected options = contentChildren(CdkOption, { descendants: true });\n\tprotected options$ = toObservable(this.options);\n\tprotected optionsAndIndex$ = this.options$.pipe(map((options, index) => [options, index] as const));\n\n\t/** Overlay pane containing the options. */\n\tprotected _overlayDir = viewChild(CdkConnectedOverlay);\n\n\tpublic readonly closeDelay = input<number>(100);\n\tpublic readonly isExpanded = this._selectService.isExpanded;\n\tprotected readonly _delayedExpanded = toSignal(\n\t\ttoObservable(this.isExpanded).pipe(\n\t\t\tswitchMap((expanded) => (!expanded ? of(expanded).pipe(delay(this.closeDelay())) : of(expanded))),\n\t\t\ttakeUntilDestroyed(),\n\t\t),\n\t\t{ initialValue: false },\n\t);\n\tpublic readonly state = computed(() => (this.isExpanded() ? 'open' : 'closed'));\n\n\tpublic readonly openedChange = output<boolean>();\n\tpublic readonly valueChange = output<T>();\n\n\tprotected readonly _positionChanges$ = new Subject<ConnectedOverlayPositionChange>();\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis._positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic readonly backupLabelId = computed(() => this._selectService.labelId());\n\tpublic readonly labelProvided = signal(false);\n\n\tpublic readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onChange: ChangeFn<T> = () => {};\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onTouched: TouchFn = () => {};\n\n\tprivate readonly _shouldEmitValueChange = signal(false);\n\n\t/*\n\t * This position config ensures that the top \"start\" corner of the overlay\n\t * is aligned with with the top \"start\" of the origin by default (overlapping\n\t * the trigger completely). If the panel cannot fit below the trigger, it\n\t * will fall back to a position above the trigger.\n\t */\n\tprotected _positions: ConnectedPosition[] = [\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t\t{\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t];\n\n\tpublic errorStateTracker: ErrorStateTracker;\n\n\tprivate readonly _defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\tprivate readonly _parentForm = inject(NgForm, { optional: true });\n\tprivate readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\n\tpublic errorState = computed(() => this.errorStateTracker.errorState());\n\n\tpublic writeValue$ = new Subject<T>();\n\n\tconstructor() {\n\t\tthis._selectService.state.update((state) => ({\n\t\t\t...state,\n\t\t\tmultiple: this.multiple,\n\t\t\tplaceholder: this.placeholder,\n\t\t\tdisabled: this.disabled,\n\t\t\tdisabledBySetDisabled: this._disabledFromSetDisabledState,\n\t\t\tdir: this.dir,\n\t\t}));\n\t\tthis.handleOptionChanges();\n\t\tthis.handleInitialOptionSelect();\n\n\t\tthis._selectService.state.update((state) => ({\n\t\t\t...state,\n\t\t\tid: `brn-select-${nextId++}`,\n\t\t}));\n\t\tif (this.ngControl !== null) {\n\t\t\tthis.ngControl.valueAccessor = this;\n\t\t}\n\n\t\t// Watch for Listbox Selection Changes to trigger Collapse and Value Change\n\t\tthis._selectService.listBoxValueChangeEvent$.pipe(takeUntilDestroyed()).subscribe(() => {\n\t\t\tif (!this.multiple()) {\n\t\t\t\tthis.close();\n\t\t\t}\n\n\t\t\t// we set shouldEmitValueChange to true because we want to propagate the value change\n\t\t\t// as a result of user interaction\n\t\t\tthis._shouldEmitValueChange.set(true);\n\t\t});\n\n\t\t/**\n\t\t * Listening to value changes in order to trigger forms api on change\n\t\t * ShouldEmitValueChange simply ensures we only propagate value change when a user makes a selection\n\t\t * we don't propagate changes made from outside the component (ex. patch value or initial value from form control)\n\t\t */\n\t\ttoObservable(this._selectService.value).subscribe((value) => {\n\t\t\tif (this._shouldEmitValueChange()) {\n\t\t\t\tthis._onChange((value ?? null) as T);\n\t\t\t\tthis.valueChange.emit((value ?? null) as T);\n\t\t\t}\n\t\t\tthis._shouldEmitValueChange.set(true);\n\t\t});\n\n\t\tthis.errorStateTracker = new ErrorStateTracker(\n\t\t\tthis._defaultErrorStateMatcher,\n\t\t\tthis.ngControl,\n\t\t\tthis._parentFormGroup,\n\t\t\tthis._parentForm,\n\t\t);\n\t}\n\n\tpublic ngAfterContentInit(): void {\n\t\t// Check if Label Directive Provided and pass to service\n\t\tconst label = this.selectLabel();\n\t\tif (label) {\n\t\t\tthis.labelProvided.set(true);\n\t\t\tthis._selectService.state.update((state) => ({\n\t\t\t\t...state,\n\t\t\t\tlabelId: label.id(),\n\t\t\t}));\n\t\t} else if (this.placeholder()) {\n\t\t\tthis._selectService.state.update((state) => ({\n\t\t\t\t...state,\n\t\t\t\tlabelId: `${state.id}--label`,\n\t\t\t}));\n\t\t}\n\t}\n\n\tngDoCheck() {\n\t\tthis.errorStateTracker.updateErrorState();\n\t}\n\n\tpublic toggle(): void {\n\t\tif (this.isExpanded()) {\n\t\t\tthis.close();\n\t\t} else {\n\t\t\tthis.open();\n\t\t}\n\t}\n\n\tpublic open(): void {\n\t\tif (!this._canOpen()) return;\n\t\tthis._selectService.state.update((state) => ({\n\t\t\t...state,\n\t\t\tisExpanded: true,\n\t\t}));\n\t\tthis.openedChange.emit(true);\n\t\tthis._moveFocusToCDKList();\n\t}\n\n\tpublic close(): void {\n\t\tif (!this.isExpanded()) return;\n\n\t\tif (this._selectService.selectTrigger) {\n\t\t\tthis._selectService.selectTrigger.focus();\n\t\t}\n\n\t\tthis.openedChange.emit(false);\n\t\tthis._selectService.state.update((state) => ({\n\t\t\t...state,\n\t\t\tisExpanded: false,\n\t\t}));\n\t\tthis._onTouched();\n\t}\n\n\tprotected _canOpen(): boolean {\n\t\treturn !this.isExpanded() && !this.disabled() && this.options()?.length > 0;\n\t}\n\n\tprivate _moveFocusToCDKList(): void {\n\t\tsetTimeout(() => {\n\t\t\tthis.selectContent()?.focusList();\n\t\t});\n\t}\n\n\tpublic writeValue(value: T): void {\n\t\tthis.writeValue$.next(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean) {\n\t\tthis._disabledFromSetDisabledState.set(isDisabled);\n\t}\n\n\t/**\n\t * Once writeValue is called and options are available we can handle setting the initial options\n\t * @private\n\t */\n\tprivate handleInitialOptionSelect() {\n\t\t// Write value cannot be handled until options are available, so we wait until both are available with a combineLatest\n\t\tcombineLatest([this.writeValue$, this.options$])\n\t\t\t.pipe(\n\t\t\t\tmap((values, index) => [...values, index]),\n\t\t\t\ttakeUntilDestroyed(),\n\t\t\t)\n\t\t\t.subscribe(([value, _, index]) => {\n\t\t\t\tthis._shouldEmitValueChange.set(false);\n\t\t\t\tthis._selectService.setInitialSelectedOptions(value);\n\t\t\t\t// the first time this observable emits a value we are simply setting the initial state\n\t\t\t\t// this change should not count as changing the state of the select, so we need to mark as pristine\n\t\t\t\tif (index === 0) {\n\t\t\t\t\tthis.ngControl?.control?.markAsPristine();\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t/**\n\t * When options change, our current selected options may become invalid\n\t * Here we will automatically update our current selected options so that they are always inline with the possibleOptions\n\t * @private\n\t */\n\tprivate handleOptionChanges() {\n\t\tthis.optionsAndIndex$.pipe(takeUntilDestroyed()).subscribe(([options, index]) => {\n\t\t\tif (index > 0) {\n\t\t\t\tthis.handleInvalidOptions(options);\n\t\t\t}\n\t\t\tthis._selectService.updatePossibleOptions(options);\n\t\t});\n\t}\n\n\t/**\n\t * Check that our \"selectedOptions\" are still valid when \"possibleOptions\" is about to be updated\n\t */\n\tprivate handleInvalidOptions(options: readonly CdkOption[]) {\n\t\tconst selectedOptions = this._selectService.selectedOptions();\n\t\tconst availableOptionSet = new Set<CdkOption | null>(options);\n\t\tif (this._selectService.multiple()) {\n\t\t\tconst filteredOptions = selectedOptions.filter((o) => availableOptionSet.has(o));\n\t\t\tif (selectedOptions.length !== filteredOptions.length) {\n\t\t\t\tconst value = filteredOptions.map((o) => (o?.value as string) ?? '');\n\t\t\t\tthis._selectService.state.update((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedOptions: filteredOptions,\n\t\t\t\t\tvalue: value,\n\t\t\t\t}));\n\t\t\t}\n\t\t} else {\n\t\t\tconst selectedOption = selectedOptions[0] ?? null;\n\t\t\tif (selectedOption !== null && !availableOptionSet.has(selectedOption)) {\n\t\t\t\tthis._selectService.state.update((state) => ({\n\t\t\t\t\t...state,\n\t\t\t\t\tselectedOptions: [],\n\t\t\t\t\tvalue: '',\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport {\n\tBrnSelectContentComponent,\n\tBrnSelectScrollDownDirective,\n\tBrnSelectScrollUpDirective,\n} from './lib/brn-select-content.component';\nimport { BrnSelectGroupDirective } from './lib/brn-select-group.directive';\nimport { BrnSelectLabelDirective } from './lib/brn-select-label.directive';\nimport { BrnSelectOptionDirective } from './lib/brn-select-option.directive';\nimport { BrnSelectValueComponent } from './lib/brn-select-value.component';\nimport { BrnSelectComponent } from './lib/brn-select.component';\nimport { BrnSelectTriggerDirective } from './lib/brn-select.service';\nexport * from './lib/brn-select-content.component';\nexport * from './lib/brn-select-group.directive';\nexport * from './lib/brn-select-label.directive';\nexport * from './lib/brn-select-option.directive';\nexport * from './lib/brn-select-value.component';\nexport * from './lib/brn-select.component';\nexport * from './lib/brn-select.service';\n\nexport const BrnSelectImports = [\n\tBrnSelectComponent,\n\tBrnSelectContentComponent,\n\tBrnSelectTriggerDirective,\n\tBrnSelectOptionDirective,\n\tBrnSelectValueComponent,\n\tBrnSelectScrollDownDirective,\n\tBrnSelectScrollUpDirective,\n\tBrnSelectGroupDirective,\n\tBrnSelectLabelDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnSelectImports],\n\texports: [...BrnSelectImports],\n})\nexport class BrnSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"spartan-ng-brain-select.mjs","sources":["../../../../libs/brain/select/src/lib/brn-select-content.token.ts","../../../../libs/brain/select/src/lib/brn-select.token.ts","../../../../libs/brain/select/src/lib/brn-select-option.directive.ts","../../../../libs/brain/select/src/lib/brn-select-content.component.ts","../../../../libs/brain/select/src/lib/brn-select-group.directive.ts","../../../../libs/brain/select/src/lib/brn-select-label.directive.ts","../../../../libs/brain/select/src/lib/brn-select-placeholder.directive.ts","../../../../libs/brain/select/src/lib/brn-select-trigger.directive.ts","../../../../libs/brain/select/src/lib/brn-select-value.directive.ts","../../../../libs/brain/select/src/lib/brn-select-value.component.ts","../../../../libs/brain/select/src/lib/brn-select.component.ts","../../../../libs/brain/select/src/index.ts","../../../../libs/brain/select/src/spartan-ng-brain-select.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnSelectContentComponent } from './brn-select-content.component';\n\nconst BrnSelectContentToken = new InjectionToken<BrnSelectContentComponent<unknown>>('BrnSelectContentToken');\n\nexport function injectBrnSelectContent<T>(): BrnSelectContentComponent<T> {\n\treturn inject(BrnSelectContentToken) as BrnSelectContentComponent<T>;\n}\n\nexport function provideBrnSelectContent(select: Type<BrnSelectContentComponent<unknown>>): ExistingProvider {\n\treturn { provide: BrnSelectContentToken, useExisting: select };\n}\n","import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnSelectComponent } from './brn-select.component';\n\nconst BrnSelectToken = new InjectionToken<BrnSelectComponent>('BrnSelectToken');\n\nexport function injectBrnSelect<T>(): BrnSelectComponent<T> {\n\treturn inject(BrnSelectToken) as BrnSelectComponent<T>;\n}\n\nexport function provideBrnSelect(select: Type<BrnSelectComponent>): ExistingProvider {\n\treturn { provide: BrnSelectToken, useExisting: select };\n}\n","import type { Highlightable } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { Directive, ElementRef, booleanAttribute, computed, inject, input, signal } from '@angular/core';\nimport { injectBrnSelectContent } from './brn-select-content.token';\nimport { injectBrnSelect } from './brn-select.token';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[brnOption]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'option',\n\t\t'[id]': 'id()',\n\t\t'[attr.aria-selected]': 'selected()',\n\t\t'[attr.aria-disabled]': '_disabled()',\n\t\t'(click)': 'select()',\n\t\t'[attr.dir]': '_select.dir()',\n\t\t'[attr.data-active]': \"_active() ? '' : undefined\",\n\t\t'[attr.data-disabled]': \"_disabled() ? '' : undefined\",\n\t\t'(mouseenter)': 'activate()',\n\t},\n})\nexport class BrnSelectOptionDirective<T> implements Highlightable {\n\tprotected readonly _select = injectBrnSelect();\n\tprotected readonly _content = injectBrnSelectContent<T>();\n\tpublic readonly elementRef = inject(ElementRef);\n\tpublic readonly id = input(`brn-option-${nextId++}`);\n\tpublic readonly value = input<T>();\n\n\t// we use \"_disabled\" here because disabled is already defined in the Highlightable interface\n\tpublic readonly _disabled = input<boolean, BooleanInput>(false, {\n\t\talias: 'disabled',\n\t\ttransform: booleanAttribute,\n\t});\n\n\tpublic get disabled(): boolean {\n\t\treturn this._disabled();\n\t}\n\n\tpublic readonly selected = computed(() => this.value() !== undefined && this._select.isSelected(this.value()));\n\tprotected readonly _active = signal(false);\n\tpublic readonly checkedState = computed(() => (this.selected() ? 'checked' : 'unchecked'));\n\tpublic readonly dir = this._select.dir;\n\n\tpublic select(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._select.selectOption(this.value());\n\t}\n\n\t/** Get the label for this element which is required by the FocusableOption interface. */\n\tgetLabel(): string {\n\t\treturn this.elementRef.nativeElement.textContent?.trim() ?? '';\n\t}\n\n\tsetActiveStyles(): void {\n\t\tthis._active.set(true);\n\n\t\t// scroll the option into view if it is not visible\n\t\tthis.elementRef.nativeElement.scrollIntoView({ block: 'nearest' });\n\t}\n\n\tsetInactiveStyles(): void {\n\t\tthis._active.set(false);\n\t}\n\n\tprotected activate(): void {\n\t\tif (this._disabled()) {\n\t\t\treturn;\n\t\t}\n\t\tthis._content.setActiveOption(this);\n\t}\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n\tAfterContentInit,\n\tChangeDetectionStrategy,\n\tComponent,\n\tDestroyRef,\n\tElementRef,\n\tInjector,\n\tafterNextRender,\n\tcontentChild,\n\tcontentChildren,\n\teffect,\n\tinject,\n\tsignal,\n\tuntracked,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { BrnSelectOptionDirective } from './brn-select-option.directive';\n\nimport { ActiveDescendantKeyManager } from '@angular/cdk/a11y';\nimport { Directive } from '@angular/core';\nimport { Subject, fromEvent, interval } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { provideBrnSelectContent } from './brn-select-content.token';\nimport { injectBrnSelect } from './brn-select.token';\n\nconst SCROLLBY_PIXELS = 100;\n\n@Directive({\n\tselector: '[brnSelectScrollUp], brn-select-scroll-up, hlm-select-scroll-up:not(noHlm)',\n\tstandalone: true,\n\thost: {\n\t\t'aria-hidden': 'true',\n\t\t'(mouseenter)': 'startEmittingEvents()',\n\t},\n})\nexport class BrnSelectScrollUpDirective {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _selectContent = inject(BrnSelectContentComponent);\n\n\tprivate readonly _endReached = new Subject<boolean>();\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tpublic startEmittingEvents(): void {\n\t\tconst mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');\n\n\t\tinterval(100)\n\t\t\t.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe(() => this._selectContent.moveFocusUp());\n\t}\n\n\tpublic stopEmittingEvents(): void {\n\t\tthis._endReached.next(true);\n\t}\n}\n\n@Directive({\n\tselector: '[brnSelectScrollDown], brn-select-scroll-down, hlm-select-scroll-down:not(noHlm)',\n\tstandalone: true,\n\thost: {\n\t\t'aria-hidden': 'true',\n\t\t'(mouseenter)': 'startEmittingEvents()',\n\t},\n})\nexport class BrnSelectScrollDownDirective {\n\tprivate readonly _el = inject(ElementRef);\n\tprivate readonly _selectContent = inject(BrnSelectContentComponent);\n\n\tprivate readonly _endReached = new Subject<boolean>();\n\tprivate readonly _destroyRef = inject(DestroyRef);\n\n\tpublic startEmittingEvents(): void {\n\t\tconst mouseLeave$ = fromEvent(this._el.nativeElement, 'mouseleave');\n\n\t\tinterval(100)\n\t\t\t.pipe(takeUntil(mouseLeave$), takeUntil(this._endReached), takeUntilDestroyed(this._destroyRef))\n\t\t\t.subscribe(() => this._selectContent.moveFocusDown());\n\t}\n\n\tpublic stopEmittingEvents(): void {\n\t\tthis._endReached.next(true);\n\t}\n}\n\n@Component({\n\tstandalone: true,\n\tselector: 'brn-select-content, hlm-select-content:not(noHlm)',\n\timports: [NgTemplateOutlet],\n\tproviders: [provideBrnSelectContent(BrnSelectContentComponent)],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\thost: {\n\t\trole: 'listbox',\n\t\ttabindex: '0',\n\t\t'[attr.aria-multiselectable]': '_select.multiple()',\n\t\t'[attr.aria-disabled]': '_select.disabled() || _select._formDisabled()',\n\t\t'aria-orientation': 'vertical',\n\t\t'[attr.aria-activedescendant]': 'keyManager?.activeItem?.id()',\n\t\t'[attr.aria-labelledBy]': '_select.labelId()',\n\t\t'[attr.aria-controlledBy]': \"_select.id() +'--trigger'\",\n\t\t'[id]': \"_select.id() + '--content'\",\n\t\t'[attr.dir]': '_select.dir()',\n\t\t'(keydown)': 'keyManager?.onKeydown($event)',\n\t\t'(keydown.enter)': 'selectActiveItem($event)',\n\t\t'(keydown.space)': 'selectActiveItem($event)',\n\t},\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: flex;\n\t\t\t\tbox-sizing: border-box;\n\t\t\t\tflex-direction: column;\n\t\t\t\toutline: none;\n\t\t\t\tpointer-events: auto;\n\t\t\t}\n\n\t\t\t[data-brn-select-viewport] {\n\t\t\t\tscrollbar-width: none;\n\t\t\t\t-ms-overflow-style: none;\n\t\t\t\t-webkit-overflow-scrolling: touch;\n\t\t\t}\n\n\t\t\t[data-brn-select-viewport]::-webkit-scrollbar {\n\t\t\t\tdisplay: none;\n\t\t\t}\n\t\t`,\n\t],\n\ttemplate: `\n\t\t<ng-template #scrollUp>\n\t\t\t<ng-content select=\"hlm-select-scroll-up\" />\n\t\t\t<ng-content select=\"brnSelectScrollUp\" />\n\t\t</ng-template>\n\t\t<ng-container *ngTemplateOutlet=\"canScrollUp() && scrollUpBtn() ? scrollUp : null\" />\n\t\t<div\n\t\t\tdata-brn-select-viewport\n\t\t\t#viewport\n\t\t\t(scroll)=\"handleScroll()\"\n\t\t\tstyle=\"flex: 1 1 0%;\n\t\t\tposition: relative;\n\t\t\twidth:100%;\n\t\t\toverflow:auto;\n\t\t\tmin-height: 36px;\n padding-bottom: 2px;\n margin-bottom: -2px;\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</div>\n\t\t<ng-template #scrollDown>\n\t\t\t<ng-content select=\"brnSelectScrollDown\" />\n\t\t\t<ng-content select=\"hlm-select-scroll-down\" />\n\t\t</ng-template>\n\t\t<ng-container *ngTemplateOutlet=\"canScrollDown() && scrollDownBtn() ? scrollDown : null\" />\n\t`,\n})\nexport class BrnSelectContentComponent<T> implements AfterContentInit {\n\tprivate readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\n\tprivate readonly _injector = inject(Injector);\n\tprotected readonly _select = injectBrnSelect<T>();\n\tprotected readonly canScrollUp = signal(false);\n\tprotected readonly canScrollDown = signal(false);\n\tprotected readonly viewport = viewChild.required<ElementRef<HTMLElement>>('viewport');\n\tprotected readonly scrollUpBtn = contentChild(BrnSelectScrollUpDirective);\n\tprotected readonly scrollDownBtn = contentChild(BrnSelectScrollDownDirective);\n\tprivate readonly _options = contentChildren(BrnSelectOptionDirective, { descendants: true });\n\n\t/** @internal */\n\tpublic keyManager: ActiveDescendantKeyManager<BrnSelectOptionDirective<T>> | null = null;\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tthis._select.open() && afterNextRender(() => this.updateArrowDisplay(), { injector: this._injector });\n\t\t});\n\t}\n\n\tngAfterContentInit(): void {\n\t\tthis.keyManager = new ActiveDescendantKeyManager(this._options, this._injector)\n\t\t\t.withHomeAndEnd()\n\t\t\t.withVerticalOrientation()\n\t\t\t.withTypeAhead()\n\t\t\t.withAllowedModifierKeys(['shiftKey'])\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((option) => option._disabled());\n\n\t\teffect(\n\t\t\t() => {\n\t\t\t\t// any time the select is opened, we need to focus the first selected option or the first option\n\t\t\t\tconst open = this._select.open();\n\t\t\t\tconst options = this._options();\n\n\t\t\t\tif (!open || !options.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tuntracked(() => {\n\t\t\t\t\tconst selectedOption = options.find((option) => option.selected());\n\n\t\t\t\t\tif (selectedOption) {\n\t\t\t\t\t\tthis.keyManager?.setActiveItem(selectedOption);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.keyManager?.setFirstItemActive();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t\t{ injector: this._injector },\n\t\t);\n\t}\n\n\tpublic updateArrowDisplay(): void {\n\t\tconst { scrollTop, scrollHeight, clientHeight } = this.viewport().nativeElement;\n\t\tthis.canScrollUp.set(scrollTop > 0);\n\t\tconst maxScroll = scrollHeight - clientHeight;\n\t\tthis.canScrollDown.set(Math.ceil(scrollTop) < maxScroll);\n\t}\n\n\tpublic handleScroll(): void {\n\t\tthis.updateArrowDisplay();\n\t}\n\n\tpublic focusList(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n\n\tpublic moveFocusUp(): void {\n\t\tthis.viewport().nativeElement.scrollBy({ top: -SCROLLBY_PIXELS, behavior: 'smooth' });\n\t\tif (this.viewport().nativeElement.scrollTop === 0) {\n\t\t\tthis.scrollUpBtn()?.stopEmittingEvents();\n\t\t}\n\t}\n\n\tpublic moveFocusDown(): void {\n\t\tthis.viewport().nativeElement.scrollBy({ top: SCROLLBY_PIXELS, behavior: 'smooth' });\n\t\tconst viewportSize = this._elementRef.nativeElement.scrollHeight;\n\t\tconst viewportScrollPosition = this.viewport().nativeElement.scrollTop;\n\t\tif (\n\t\t\tviewportSize + viewportScrollPosition + SCROLLBY_PIXELS >\n\t\t\tthis.viewport().nativeElement.scrollHeight + SCROLLBY_PIXELS / 2\n\t\t) {\n\t\t\tthis.scrollDownBtn()?.stopEmittingEvents();\n\t\t}\n\t}\n\n\tsetActiveOption(option: BrnSelectOptionDirective<T>): void {\n\t\tconst index = this._options().findIndex((o) => o === option);\n\n\t\tif (index === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.keyManager?.setActiveItem(index);\n\t}\n\n\tprotected selectActiveItem(event: KeyboardEvent): void {\n\t\tevent.preventDefault();\n\n\t\tconst activeOption = this.keyManager?.activeItem;\n\n\t\tif (activeOption) {\n\t\t\tthis._select.selectOption(activeOption.value()!);\n\t\t}\n\t}\n}\n","import { Directive, signal } from '@angular/core';\n\n@Directive({\n\tselector: '[brnSelectGroup]',\n\tstandalone: true,\n\thost: {\n\t\trole: 'group',\n\t\t'[attr.aria-labelledby]': 'labelledBy()',\n\t},\n})\nexport class BrnSelectGroupDirective {\n\tpublic readonly labelledBy = signal('');\n}\n","import { Directive, inject } from '@angular/core';\nimport { BrnLabelDirective } from '@spartan-ng/brain/label';\nimport { BrnSelectGroupDirective } from './brn-select-group.directive';\n\n@Directive({\n\tselector: '[brnSelectLabel]',\n\thostDirectives: [BrnLabelDirective],\n\tstandalone: true,\n})\nexport class BrnSelectLabelDirective {\n\tprivate readonly _group = inject(BrnSelectGroupDirective, { optional: true });\n\tprivate readonly _label = inject(BrnLabelDirective, { host: true });\n\n\tconstructor() {\n\t\tthis._group?.labelledBy.set(this._label.id());\n\t}\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnSelectPlaceholder], [hlmSelectPlaceholder]',\n})\nexport class BrnSelectPlaceholderDirective {\n\t/** @internale */\n\tpublic readonly templateRef = inject<TemplateRef<void>>(TemplateRef);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport { type AfterViewInit, Directive, ElementRef, OnDestroy, PLATFORM_ID, computed, inject } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { injectBrnSelect } from './brn-select.token';\n\n@Directive({\n\tselector: '[brnSelectTrigger]',\n\tstandalone: true,\n\thost: {\n\t\ttype: 'button',\n\t\trole: 'combobox',\n\t\t'[attr.id]': '_triggerId()',\n\t\t'[disabled]': '_disabled()',\n\t\t'[attr.aria-expanded]': '_select.open()',\n\t\t'[attr.aria-controls]': '_contentId()',\n\t\t'[attr.aria-labelledBy]': '_labelledBy()',\n\t\t'aria-autocomplete': 'none',\n\t\t'[attr.dir]': '_select.dir()',\n\t\t'[class.ng-invalid]': '_ngControl?.invalid || null',\n\t\t'[class.ng-dirty]': '_ngControl?.dirty || null',\n\t\t'[class.ng-valid]': '_ngControl?.valid || null',\n\t\t'[class.ng-touched]': '_ngControl?.touched || null',\n\t\t'[class.ng-untouched]': '_ngControl?.untouched || null',\n\t\t'[class.ng-pristine]': '_ngControl?.pristine || null',\n\t\t'(keydown.ArrowDown)': '_select.show()',\n\t},\n})\nexport class BrnSelectTriggerDirective<T> implements AfterViewInit, OnDestroy {\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprotected readonly _select = injectBrnSelect<T>();\n\tprotected readonly _ngControl = inject(NgControl, { optional: true });\n\tprivate readonly _platform = inject(PLATFORM_ID);\n\tprotected readonly _triggerId = computed(() => `${this._select.id()}--trigger`);\n\tprotected readonly _contentId = computed(() => `${this._select.id()}--content`);\n\tprotected readonly _disabled = computed(() => this._select.disabled() || this._select._formDisabled());\n\tprotected readonly _labelledBy = computed(() => {\n\t\tconst value = this._select.value();\n\n\t\tif (Array.isArray(value) && value.length > 0) {\n\t\t\treturn `${this._select.labelId()} ${this._select.id()}--value`;\n\t\t}\n\t\treturn this._select.labelId();\n\t});\n\n\tprivate _resizeObserver?: ResizeObserver;\n\n\tconstructor() {\n\t\tthis._select.trigger.set(this);\n\t}\n\n\tngAfterViewInit() {\n\t\tthis._select.triggerWidth.set(this._elementRef.nativeElement.offsetWidth);\n\n\t\t// if we are on the client, listen for element resize events\n\t\tif (isPlatformBrowser(this._platform)) {\n\t\t\tthis._resizeObserver = new ResizeObserver(() =>\n\t\t\t\tthis._select.triggerWidth.set(this._elementRef.nativeElement.offsetWidth),\n\t\t\t);\n\n\t\t\tthis._resizeObserver.observe(this._elementRef.nativeElement);\n\t\t}\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._resizeObserver?.disconnect();\n\t}\n\n\tfocus(): void {\n\t\tthis._elementRef.nativeElement.focus();\n\t}\n}\n","import { Directive, inject, TemplateRef } from '@angular/core';\n\n@Directive({\n\tstandalone: true,\n\tselector: '[brnSelectValue], [hlmSelectValue]',\n})\nexport class BrnSelectValueDirective<T> {\n\t/** @internale */\n\tpublic readonly templateRef = inject<TemplateRef<BrnSelectValueContext<T>>>(TemplateRef);\n}\n\nexport interface BrnSelectValueContext<T> {\n\t$implicit: T | T[];\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, contentChild, input } from '@angular/core';\nimport { BrnSelectPlaceholderDirective } from './brn-select-placeholder.directive';\nimport { BrnSelectValueDirective } from './brn-select-value.directive';\nimport { injectBrnSelect } from './brn-select.token';\n\n@Component({\n\tselector: 'brn-select-value, hlm-select-value',\n\timports: [NgTemplateOutlet],\n\ttemplate: `\n\t\t@if (_showPlaceholder()) {\n\t\t\t<ng-container [ngTemplateOutlet]=\"customPlaceholderTemplate()?.templateRef ?? defaultPlaceholderTemplate\" />\n\t\t} @else {\n\t\t\t<ng-container\n\t\t\t\t[ngTemplateOutlet]=\"customValueTemplate()?.templateRef ?? defaultValueTemplate\"\n\t\t\t\t[ngTemplateOutletContext]=\"{ $implicit: _select.value() }\"\n\t\t\t/>\n\t\t}\n\n\t\t<ng-template #defaultValueTemplate>{{ value() }}</ng-template>\n\t\t<ng-template #defaultPlaceholderTemplate>{{ placeholder() }}</ng-template>\n\t`,\n\thost: {\n\t\t'[id]': 'id()',\n\t},\n\tstyles: [\n\t\t`\n\t\t\t:host {\n\t\t\t\tdisplay: -webkit-box;\n\t\t\t\t-webkit-box-orient: vertical;\n\t\t\t\t-webkit-line-clamp: 1;\n\t\t\t\twhite-space: nowrap;\n\t\t\t\tpointer-events: none;\n\t\t\t}\n\t\t`,\n\t],\n\tstandalone: true,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BrnSelectValueComponent<T> {\n\tprotected readonly _select = injectBrnSelect<T>();\n\tpublic readonly id = computed(() => `${this._select.id()}--value`);\n\tpublic readonly placeholder = computed(() => this._select.placeholder());\n\n\tprotected readonly _showPlaceholder = computed(\n\t\t() => this.value() === null || this.value() === undefined || this.value() === '',\n\t);\n\n\t/** Allow a custom value template */\n\tprotected readonly customValueTemplate = contentChild(BrnSelectValueDirective, { descendants: true });\n\tprotected readonly customPlaceholderTemplate = contentChild(BrnSelectPlaceholderDirective, { descendants: true });\n\n\tprotected readonly value = computed(() => {\n\t\tconst value = this._values();\n\n\t\tif (value.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// remove any selected values that are not in the options list\n\t\tconst existingOptions = value.filter((val) => this._select.options().some((option) => option.value() === val));\n\t\tconst selectedOption = existingOptions.map((val) =>\n\t\t\tthis._select.options().find((option) => option.value() === val),\n\t\t);\n\n\t\tif (selectedOption.length === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst selectedLabels = selectedOption.map((option) => option?.getLabel());\n\n\t\tif (this._select.dir() === 'rtl') {\n\t\t\tselectedLabels.reverse();\n\t\t}\n\t\treturn this.transformFn()(selectedLabels);\n\t});\n\n\t/** Normalize the values as an array */\n\tprotected readonly _values = computed(() =>\n\t\tArray.isArray(this._select.value()) ? (this._select.value() as T[]) : ([this._select.value()] as T[]),\n\t);\n\n\tpublic readonly transformFn = input<(values: (string | undefined)[]) => any>((values) => (values ?? []).join(', '));\n}\n","import { BooleanInput, NumberInput } from '@angular/cdk/coercion';\nimport { CdkListboxModule } from '@angular/cdk/listbox';\nimport {\n\tCdkConnectedOverlay,\n\ttype ConnectedOverlayPositionChange,\n\ttype ConnectedPosition,\n\tOverlayModule,\n} from '@angular/cdk/overlay';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\ttype DoCheck,\n\tInjector,\n\ttype Signal,\n\tafterNextRender,\n\tbooleanAttribute,\n\tcomputed,\n\tcontentChild,\n\tcontentChildren,\n\tinject,\n\tinput,\n\tmodel,\n\tnumberAttribute,\n\tsignal,\n\tviewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { type ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\nimport {\n\ttype ExposesSide,\n\ttype ExposesState,\n\tprovideExposedSideProviderExisting,\n\tprovideExposesStateProviderExisting,\n} from '@spartan-ng/brain/core';\nimport { BrnFormFieldControl } from '@spartan-ng/brain/form-field';\nimport { ChangeFn, ErrorStateMatcher, ErrorStateTracker, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnLabelDirective } from '@spartan-ng/brain/label';\nimport { Subject, of } from 'rxjs';\nimport { delay, map, switchMap } from 'rxjs/operators';\nimport { BrnSelectContentComponent } from './brn-select-content.component';\nimport { BrnSelectOptionDirective } from './brn-select-option.directive';\nimport { BrnSelectTriggerDirective } from './brn-select-trigger.directive';\nimport { provideBrnSelect } from './brn-select.token';\n\nexport type BrnReadDirection = 'ltr' | 'rtl';\n\nlet nextId = 0;\n\n@Component({\n\tselector: 'brn-select, hlm-select',\n\tstandalone: true,\n\timports: [OverlayModule, CdkListboxModule],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tproviders: [\n\t\tprovideExposedSideProviderExisting(() => BrnSelectComponent),\n\t\tprovideExposesStateProviderExisting(() => BrnSelectComponent),\n\t\tprovideBrnSelect(BrnSelectComponent),\n\t\t{\n\t\t\tprovide: BrnFormFieldControl,\n\t\t\tuseExisting: BrnSelectComponent,\n\t\t},\n\t],\n\ttemplate: `\n\t\t@if (!selectLabel() && placeholder()) {\n\t\t\t<label class=\"hidden\" [attr.id]=\"labelId()\">{{ placeholder() }}</label>\n\t\t} @else {\n\t\t\t<ng-content select=\"label[hlmLabel],label[brnLabel]\" />\n\t\t}\n\n\t\t<div cdk-overlay-origin (click)=\"toggle()\" #trigger=\"cdkOverlayOrigin\">\n\t\t\t<ng-content select=\"hlm-select-trigger,[brnSelectTrigger]\" />\n\t\t</div>\n\n\t\t<ng-template\n\t\t\tcdk-connected-overlay\n\t\t\tcdkConnectedOverlayLockPosition\n\t\t\tcdkConnectedOverlayHasBackdrop\n\t\t\tcdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n\t\t\t[cdkConnectedOverlayOrigin]=\"trigger\"\n\t\t\t[cdkConnectedOverlayOpen]=\"_delayedExpanded()\"\n\t\t\t[cdkConnectedOverlayPositions]=\"_positions\"\n\t\t\t[cdkConnectedOverlayWidth]=\"triggerWidth() > 0 ? triggerWidth() : 'auto'\"\n\t\t\t(backdropClick)=\"hide()\"\n\t\t\t(detach)=\"hide()\"\n\t\t\t(positionChange)=\"_positionChanges$.next($event)\"\n\t\t>\n\t\t\t<ng-content />\n\t\t</ng-template>\n\t`,\n})\nexport class BrnSelectComponent<T = unknown>\n\timplements ControlValueAccessor, DoCheck, ExposesSide, ExposesState, BrnFormFieldControl\n{\n\tprivate readonly _defaultErrorStateMatcher = inject(ErrorStateMatcher);\n\tprivate readonly _parentForm = inject(NgForm, { optional: true });\n\tprivate readonly _injector = inject(Injector);\n\tprivate readonly _parentFormGroup = inject(FormGroupDirective, { optional: true });\n\tpublic readonly ngControl = inject(NgControl, { optional: true, self: true });\n\n\tpublic readonly id = input<string>(`brn-select-${nextId++}`);\n\tpublic readonly multiple = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\tpublic readonly placeholder = input<string>('');\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\tpublic readonly dir = input<BrnReadDirection>('ltr');\n\tpublic readonly closeDelay = input<number, NumberInput>(100, {\n\t\ttransform: numberAttribute,\n\t});\n\n\tpublic readonly open = model<boolean>(false);\n\tpublic readonly value = model<T | T[]>();\n\tpublic readonly compareWith = input<(o1: T, o2: T) => boolean>((o1, o2) => o1 === o2);\n\tpublic readonly _formDisabled = signal(false);\n\n\t/** Label provided by the consumer. */\n\tprotected readonly selectLabel = contentChild(BrnLabelDirective, { descendants: false });\n\n\t/** Overlay pane containing the options. */\n\tprotected readonly selectContent = contentChild.required(BrnSelectContentComponent);\n\n\t/** @internal */\n\tpublic readonly options = contentChildren(BrnSelectOptionDirective, { descendants: true });\n\n\t/** @internal Derive the selected options to filter out the unselected options */\n\tpublic readonly selectedOptions = computed(() => this.options().filter((option) => option.selected()));\n\n\t/** Overlay pane containing the options. */\n\tprotected readonly _overlayDir = viewChild.required(CdkConnectedOverlay);\n\tpublic readonly trigger = signal<BrnSelectTriggerDirective<T> | null>(null);\n\tpublic readonly triggerWidth = signal<number>(0);\n\n\tprotected readonly _delayedExpanded = toSignal(\n\t\ttoObservable(this.open).pipe(\n\t\t\tswitchMap((expanded) => (!expanded ? of(expanded).pipe(delay(this.closeDelay())) : of(expanded))),\n\t\t\ttakeUntilDestroyed(),\n\t\t),\n\t\t{ initialValue: false },\n\t);\n\n\tpublic readonly state = computed(() => (this.open() ? 'open' : 'closed'));\n\n\tprotected readonly _positionChanges$ = new Subject<ConnectedOverlayPositionChange>();\n\n\tpublic readonly side: Signal<'top' | 'bottom' | 'left' | 'right'> = toSignal(\n\t\tthis._positionChanges$.pipe(\n\t\t\tmap<ConnectedOverlayPositionChange, 'top' | 'bottom' | 'left' | 'right'>((change) =>\n\t\t\t\t// todo: better translation or adjusting hlm to take that into account\n\t\t\t\tchange.connectionPair.originY === 'center'\n\t\t\t\t\t? change.connectionPair.originX === 'start'\n\t\t\t\t\t\t? 'left'\n\t\t\t\t\t\t: 'right'\n\t\t\t\t\t: change.connectionPair.originY,\n\t\t\t),\n\t\t),\n\t\t{ initialValue: 'bottom' },\n\t);\n\n\tpublic readonly labelId = computed(() => this.selectLabel()?.id ?? `${this.id()}--label`);\n\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onChange: ChangeFn<T | T[]> = () => {};\n\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\tprivate _onTouched: TouchFn = () => {};\n\n\t/*\n\t * This position config ensures that the top \"start\" corner of the overlay\n\t * is aligned with with the top \"start\" of the origin by default (overlapping\n\t * the trigger completely). If the panel cannot fit below the trigger, it\n\t * will fall back to a position above the trigger.\n\t */\n\tprotected _positions: ConnectedPosition[] = [\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'bottom',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'top',\n\t\t},\n\t\t{\n\t\t\toriginX: 'start',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'start',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t\t{\n\t\t\toriginX: 'end',\n\t\t\toriginY: 'top',\n\t\t\toverlayX: 'end',\n\t\t\toverlayY: 'bottom',\n\t\t},\n\t];\n\n\tpublic errorStateTracker: ErrorStateTracker;\n\n\tpublic readonly errorState = computed(() => this.errorStateTracker.errorState());\n\n\tconstructor() {\n\t\tif (this.ngControl !== null) {\n\t\t\tthis.ngControl.valueAccessor = this;\n\t\t}\n\n\t\tthis.errorStateTracker = new ErrorStateTracker(\n\t\t\tthis._defaultErrorStateMatcher,\n\t\t\tthis.ngControl,\n\t\t\tthis._parentFormGroup,\n\t\t\tthis._parentForm,\n\t\t);\n\t}\n\n\tngDoCheck() {\n\t\tthis.errorStateTracker.updateErrorState();\n\t}\n\n\tpublic toggle(): void {\n\t\tif (this.open()) {\n\t\t\tthis.hide();\n\t\t} else {\n\t\t\tthis.show();\n\t\t}\n\t}\n\n\tpublic show(): void {\n\t\tif (this.open() || this.disabled() || this._formDisabled() || this.options()?.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.open.set(true);\n\t\tafterNextRender(() => this.selectContent().focusList(), { injector: this._injector });\n\t}\n\n\tpublic hide(): void {\n\t\tif (!this.open()) return;\n\n\t\tthis.open.set(false);\n\t\tthis._onTouched();\n\n\t\t// restore focus to the trigger\n\t\tthis.trigger()?.focus();\n\t}\n\n\tpublic writeValue(value: T): void {\n\t\tthis.value.set(value);\n\t}\n\n\tpublic registerOnChange(fn: ChangeFn<T | T[]>): void {\n\t\tthis._onChange = fn;\n\t}\n\n\tpublic registerOnTouched(fn: TouchFn): void {\n\t\tthis._onTouched = fn;\n\t}\n\n\tpublic setDisabledState(isDisabled: boolean) {\n\t\tthis._formDisabled.set(isDisabled);\n\t}\n\n\tselectOption(value: T): void {\n\t\t// if this is a multiple select we need to add the value to the array\n\t\tif (this.multiple()) {\n\t\t\tconst currentValue = this.value() as T[];\n\t\t\tconst newValue = currentValue ? [...currentValue, value] : [value];\n\t\t\tthis.value.set(newValue);\n\t\t} else {\n\t\t\tthis.value.set(value);\n\t\t}\n\n\t\tthis._onChange?.(this.value() as T | T[]);\n\n\t\t// if this is single select close the dropdown\n\t\tif (!this.multiple()) {\n\t\t\tthis.hide();\n\t\t}\n\t}\n\n\tdeselectOption(value: T): void {\n\t\tif (this.multiple()) {\n\t\t\tconst currentValue = this.value() as T[];\n\t\t\tconst newValue = currentValue.filter((val) => val !== value);\n\t\t\tthis.value.set(newValue);\n\t\t} else {\n\t\t\tthis.value.set(null as T);\n\t\t}\n\n\t\tthis._onChange?.(this.value() as T | T[]);\n\t}\n\n\ttoggleSelect(value: T): void {\n\t\tif (this.isSelected(value)) {\n\t\t\tthis.deselectOption(value);\n\t\t} else {\n\t\t\tthis.selectOption(value);\n\t\t}\n\t}\n\n\tisSelected(value: T): boolean {\n\t\tconst selection = this.value();\n\n\t\tif (Array.isArray(selection)) {\n\t\t\treturn selection.some((val) => this.compareWith()(val, value));\n\t\t} else if (value !== undefined) {\n\t\t\treturn this.compareWith()(selection as T, value);\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport {\n\tBrnSelectContentComponent,\n\tBrnSelectScrollDownDirective,\n\tBrnSelectScrollUpDirective,\n} from './lib/brn-select-content.component';\nimport { BrnSelectGroupDirective } from './lib/brn-select-group.directive';\nimport { BrnSelectLabelDirective } from './lib/brn-select-label.directive';\nimport { BrnSelectOptionDirective } from './lib/brn-select-option.directive';\nimport { BrnSelectPlaceholderDirective } from './lib/brn-select-placeholder.directive';\nimport { BrnSelectTriggerDirective } from './lib/brn-select-trigger.directive';\nimport { BrnSelectValueComponent } from './lib/brn-select-value.component';\nimport { BrnSelectValueDirective } from './lib/brn-select-value.directive';\nimport { BrnSelectComponent } from './lib/brn-select.component';\nexport * from './lib/brn-select-content.component';\nexport * from './lib/brn-select-group.directive';\nexport * from './lib/brn-select-label.directive';\nexport * from './lib/brn-select-option.directive';\nexport * from './lib/brn-select-placeholder.directive';\nexport * from './lib/brn-select-trigger.directive';\nexport * from './lib/brn-select-value.component';\nexport * from './lib/brn-select-value.directive';\nexport * from './lib/brn-select.component';\n\nexport const BrnSelectImports = [\n\tBrnSelectComponent,\n\tBrnSelectContentComponent,\n\tBrnSelectTriggerDirective,\n\tBrnSelectOptionDirective,\n\tBrnSelectValueComponent,\n\tBrnSelectScrollDownDirective,\n\tBrnSelectScrollUpDirective,\n\tBrnSelectGroupDirective,\n\tBrnSelectLabelDirective,\n\tBrnSelectValueDirective,\n\tBrnSelectPlaceholderDirective,\n] as const;\n\n@NgModule({\n\timports: [...BrnSelectImports],\n\texports: [...BrnSelectImports],\n})\nexport class BrnSelectModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spartan-ng/brain",
3
- "version": "0.0.1-alpha.412",
3
+ "version": "0.0.1-alpha.413",
4
4
  "sideEffects": false,
5
5
  "exports": {
6
6
  "./hlm-tailwind-preset": {
package/select/index.d.ts CHANGED
@@ -2,27 +2,33 @@ import { BrnSelectContentComponent, BrnSelectScrollDownDirective, BrnSelectScrol
2
2
  import { BrnSelectGroupDirective } from './lib/brn-select-group.directive';
3
3
  import { BrnSelectLabelDirective } from './lib/brn-select-label.directive';
4
4
  import { BrnSelectOptionDirective } from './lib/brn-select-option.directive';
5
+ import { BrnSelectPlaceholderDirective } from './lib/brn-select-placeholder.directive';
6
+ import { BrnSelectTriggerDirective } from './lib/brn-select-trigger.directive';
5
7
  import { BrnSelectValueComponent } from './lib/brn-select-value.component';
8
+ import { BrnSelectValueDirective } from './lib/brn-select-value.directive';
6
9
  import { BrnSelectComponent } from './lib/brn-select.component';
7
- import { BrnSelectTriggerDirective } from './lib/brn-select.service';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "./lib/brn-select.component";
10
12
  import * as i2 from "./lib/brn-select-content.component";
11
- import * as i3 from "./lib/brn-select.service";
13
+ import * as i3 from "./lib/brn-select-trigger.directive";
12
14
  import * as i4 from "./lib/brn-select-option.directive";
13
15
  import * as i5 from "./lib/brn-select-value.component";
14
16
  import * as i6 from "./lib/brn-select-group.directive";
15
17
  import * as i7 from "./lib/brn-select-label.directive";
18
+ import * as i8 from "./lib/brn-select-value.directive";
19
+ import * as i9 from "./lib/brn-select-placeholder.directive";
16
20
  export * from './lib/brn-select-content.component';
17
21
  export * from './lib/brn-select-group.directive';
18
22
  export * from './lib/brn-select-label.directive';
19
23
  export * from './lib/brn-select-option.directive';
24
+ export * from './lib/brn-select-placeholder.directive';
25
+ export * from './lib/brn-select-trigger.directive';
20
26
  export * from './lib/brn-select-value.component';
27
+ export * from './lib/brn-select-value.directive';
21
28
  export * from './lib/brn-select.component';
22
- export * from './lib/brn-select.service';
23
- export declare const BrnSelectImports: readonly [typeof BrnSelectComponent, typeof BrnSelectContentComponent, typeof BrnSelectTriggerDirective, typeof BrnSelectOptionDirective, typeof BrnSelectValueComponent, typeof BrnSelectScrollDownDirective, typeof BrnSelectScrollUpDirective, typeof BrnSelectGroupDirective, typeof BrnSelectLabelDirective];
29
+ export declare const BrnSelectImports: readonly [typeof BrnSelectComponent, typeof BrnSelectContentComponent, typeof BrnSelectTriggerDirective, typeof BrnSelectOptionDirective, typeof BrnSelectValueComponent, typeof BrnSelectScrollDownDirective, typeof BrnSelectScrollUpDirective, typeof BrnSelectGroupDirective, typeof BrnSelectLabelDirective, typeof BrnSelectValueDirective, typeof BrnSelectPlaceholderDirective];
24
30
  export declare class BrnSelectModule {
25
31
  static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectModule, never>;
26
- static ɵmod: i0.ɵɵNgModuleDeclaration<BrnSelectModule, never, [typeof i1.BrnSelectComponent, typeof i2.BrnSelectContentComponent, typeof i3.BrnSelectTriggerDirective, typeof i4.BrnSelectOptionDirective, typeof i5.BrnSelectValueComponent, typeof i2.BrnSelectScrollDownDirective, typeof i2.BrnSelectScrollUpDirective, typeof i6.BrnSelectGroupDirective, typeof i7.BrnSelectLabelDirective], [typeof i1.BrnSelectComponent, typeof i2.BrnSelectContentComponent, typeof i3.BrnSelectTriggerDirective, typeof i4.BrnSelectOptionDirective, typeof i5.BrnSelectValueComponent, typeof i2.BrnSelectScrollDownDirective, typeof i2.BrnSelectScrollUpDirective, typeof i6.BrnSelectGroupDirective, typeof i7.BrnSelectLabelDirective]>;
32
+ static ɵmod: i0.ɵɵNgModuleDeclaration<BrnSelectModule, never, [typeof i1.BrnSelectComponent, typeof i2.BrnSelectContentComponent, typeof i3.BrnSelectTriggerDirective, typeof i4.BrnSelectOptionDirective, typeof i5.BrnSelectValueComponent, typeof i2.BrnSelectScrollDownDirective, typeof i2.BrnSelectScrollUpDirective, typeof i6.BrnSelectGroupDirective, typeof i7.BrnSelectLabelDirective, typeof i8.BrnSelectValueDirective, typeof i9.BrnSelectPlaceholderDirective], [typeof i1.BrnSelectComponent, typeof i2.BrnSelectContentComponent, typeof i3.BrnSelectTriggerDirective, typeof i4.BrnSelectOptionDirective, typeof i5.BrnSelectValueComponent, typeof i2.BrnSelectScrollDownDirective, typeof i2.BrnSelectScrollUpDirective, typeof i6.BrnSelectGroupDirective, typeof i7.BrnSelectLabelDirective, typeof i8.BrnSelectValueDirective, typeof i9.BrnSelectPlaceholderDirective]>;
27
33
  static ɵinj: i0.ɵɵInjectorDeclaration<BrnSelectModule>;
28
34
  }
@@ -1,8 +1,7 @@
1
- import { type AfterViewInit, ElementRef } from '@angular/core';
1
+ import { AfterContentInit, ElementRef } from '@angular/core';
2
2
  import { BrnSelectOptionDirective } from './brn-select-option.directive';
3
- import { BrnSelectService } from './brn-select.service';
3
+ import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
4
4
  import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/cdk/listbox";
6
5
  export declare class BrnSelectScrollUpDirective {
7
6
  private readonly _el;
8
7
  private readonly _selectContent;
@@ -23,28 +22,27 @@ export declare class BrnSelectScrollDownDirective {
23
22
  static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectScrollDownDirective, never>;
24
23
  static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectScrollDownDirective, "[brnSelectScrollDown], brn-select-scroll-down, hlm-select-scroll-down:not(noHlm)", never, {}, {}, never, never, true, never>;
25
24
  }
26
- export declare class BrnSelectContentComponent implements AfterViewInit {
27
- private readonly _el;
28
- private readonly _cdkListbox;
29
- private readonly _destroyRef;
30
- protected readonly _selectService: BrnSelectService;
31
- protected readonly labelledBy: import("@angular/core").Signal<string>;
32
- protected readonly id: import("@angular/core").Signal<string>;
25
+ export declare class BrnSelectContentComponent<T> implements AfterContentInit {
26
+ private readonly _elementRef;
27
+ private readonly _injector;
28
+ protected readonly _select: import("@spartan-ng/brain/select").BrnSelectComponent<T>;
33
29
  protected readonly canScrollUp: import("@angular/core").WritableSignal<boolean>;
34
30
  protected readonly canScrollDown: import("@angular/core").WritableSignal<boolean>;
35
- protected initialSelectedOptions$: import("rxjs").Observable<(import("@angular/cdk/listbox").CdkOption<unknown> | null)[]>;
36
- protected viewport: import("@angular/core").Signal<ElementRef<HTMLElement>>;
37
- protected scrollUpBtn: import("@angular/core").Signal<BrnSelectScrollUpDirective | undefined>;
38
- protected scrollDownBtn: import("@angular/core").Signal<BrnSelectScrollDownDirective | undefined>;
39
- protected _options: import("@angular/core").Signal<readonly BrnSelectOptionDirective[]>;
31
+ protected readonly viewport: import("@angular/core").Signal<ElementRef<HTMLElement>>;
32
+ protected readonly scrollUpBtn: import("@angular/core").Signal<BrnSelectScrollUpDirective | undefined>;
33
+ protected readonly scrollDownBtn: import("@angular/core").Signal<BrnSelectScrollDownDirective | undefined>;
34
+ private readonly _options;
35
+ /** @internal */
36
+ keyManager: ActiveDescendantKeyManager<BrnSelectOptionDirective<T>> | null;
40
37
  constructor();
41
- ngAfterViewInit(): void;
42
- private setInitiallySelectedOptions;
38
+ ngAfterContentInit(): void;
43
39
  updateArrowDisplay(): void;
44
40
  handleScroll(): void;
45
41
  focusList(): void;
46
42
  moveFocusUp(): void;
47
43
  moveFocusDown(): void;
48
- static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectContentComponent, never>;
49
- static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectContentComponent, "brn-select-content, hlm-select-content:not(noHlm)", never, {}, {}, ["scrollUpBtn", "scrollDownBtn", "_options"], ["hlm-select-scroll-up", "brnSelectScrollUp", "*", "brnSelectScrollDown", "hlm-select-scroll-down"], true, [{ directive: typeof i1.CdkListbox; inputs: {}; outputs: {}; }]>;
44
+ setActiveOption(option: BrnSelectOptionDirective<T>): void;
45
+ protected selectActiveItem(event: KeyboardEvent): void;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectContentComponent<any>, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectContentComponent<any>, "brn-select-content, hlm-select-content:not(noHlm)", never, {}, {}, ["scrollUpBtn", "scrollDownBtn", "_options"], ["hlm-select-scroll-up", "brnSelectScrollUp", "*", "brnSelectScrollDown", "hlm-select-scroll-down"], true, never>;
50
48
  }
@@ -0,0 +1,4 @@
1
+ import { ExistingProvider, Type } from '@angular/core';
2
+ import type { BrnSelectContentComponent } from './brn-select-content.component';
3
+ export declare function injectBrnSelectContent<T>(): BrnSelectContentComponent<T>;
4
+ export declare function provideBrnSelectContent(select: Type<BrnSelectContentComponent<unknown>>): ExistingProvider;
@@ -1,25 +1,25 @@
1
- import type { FocusableOption } from '@angular/cdk/a11y';
1
+ import type { Highlightable } from '@angular/cdk/a11y';
2
2
  import { BooleanInput } from '@angular/cdk/coercion';
3
- import { AfterContentChecked, ElementRef } from '@angular/core';
4
- import { BrnSelectService } from './brn-select.service';
3
+ import { ElementRef } from '@angular/core';
5
4
  import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/cdk/listbox";
7
- export declare class BrnSelectOptionDirective implements FocusableOption, AfterContentChecked {
8
- private readonly _cdkSelectOption;
9
- protected readonly _selectService: BrnSelectService;
10
- private readonly _focused;
5
+ export declare class BrnSelectOptionDirective<T> implements Highlightable {
6
+ protected readonly _select: import("@spartan-ng/brain/select").BrnSelectComponent<unknown>;
7
+ protected readonly _content: import("@spartan-ng/brain/select").BrnSelectContentComponent<T>;
11
8
  readonly elementRef: ElementRef<any>;
9
+ readonly id: import("@angular/core").InputSignal<string>;
10
+ readonly value: import("@angular/core").InputSignal<T | undefined>;
11
+ readonly _disabled: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
12
+ get disabled(): boolean;
12
13
  readonly selected: import("@angular/core").Signal<boolean>;
13
- readonly focused: import("@angular/core").Signal<boolean>;
14
+ protected readonly _active: import("@angular/core").WritableSignal<boolean>;
14
15
  readonly checkedState: import("@angular/core").Signal<"checked" | "unchecked">;
15
- readonly dir: import("@angular/core").Signal<"ltr" | "rtl">;
16
- constructor();
17
- ngAfterContentChecked(): void;
18
- value: import("@angular/core").InputSignal<unknown>;
19
- readonly disabledSignal: import("@angular/core").InputSignalWithTransform<boolean, BooleanInput>;
20
- protected hover(): void;
21
- focus(): void;
22
- blur(): void;
23
- static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectOptionDirective, never>;
24
- static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectOptionDirective, "[brnOption]", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabledSignal": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.CdkOption; inputs: {}; outputs: {}; }]>;
16
+ readonly dir: import("@angular/core").InputSignal<import("@spartan-ng/brain/select").BrnReadDirection>;
17
+ select(): void;
18
+ /** Get the label for this element which is required by the FocusableOption interface. */
19
+ getLabel(): string;
20
+ setActiveStyles(): void;
21
+ setInactiveStyles(): void;
22
+ protected activate(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectOptionDirective<any>, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectOptionDirective<any>, "[brnOption]", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "_disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
25
25
  }
@@ -0,0 +1,8 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class BrnSelectPlaceholderDirective {
4
+ /** @internale */
5
+ readonly templateRef: TemplateRef<void>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectPlaceholderDirective, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectPlaceholderDirective, "[brnSelectPlaceholder], [hlmSelectPlaceholder]", never, {}, {}, never, never, true, never>;
8
+ }
@@ -0,0 +1,20 @@
1
+ import { type AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ export declare class BrnSelectTriggerDirective<T> implements AfterViewInit, OnDestroy {
5
+ private readonly _elementRef;
6
+ protected readonly _select: import("@spartan-ng/brain/select").BrnSelectComponent<T>;
7
+ protected readonly _ngControl: NgControl | null;
8
+ private readonly _platform;
9
+ protected readonly _triggerId: import("@angular/core").Signal<string>;
10
+ protected readonly _contentId: import("@angular/core").Signal<string>;
11
+ protected readonly _disabled: import("@angular/core").Signal<boolean>;
12
+ protected readonly _labelledBy: import("@angular/core").Signal<string | import("@angular/core").InputSignal<string>>;
13
+ private _resizeObserver?;
14
+ constructor();
15
+ ngAfterViewInit(): void;
16
+ ngOnDestroy(): void;
17
+ focus(): void;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectTriggerDirective<any>, never>;
19
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectTriggerDirective<any>, "[brnSelectTrigger]", never, {}, {}, never, never, true, never>;
20
+ }
@@ -1,11 +1,18 @@
1
+ import { BrnSelectPlaceholderDirective } from './brn-select-placeholder.directive';
2
+ import { BrnSelectValueDirective } from './brn-select-value.directive';
1
3
  import * as i0 from "@angular/core";
2
- export declare class BrnSelectValueComponent {
3
- private readonly _selectService;
4
+ export declare class BrnSelectValueComponent<T> {
5
+ protected readonly _select: import("@spartan-ng/brain/select").BrnSelectComponent<T>;
4
6
  readonly id: import("@angular/core").Signal<string>;
5
7
  readonly placeholder: import("@angular/core").Signal<string>;
6
- value: string | null;
8
+ protected readonly _showPlaceholder: import("@angular/core").Signal<boolean>;
9
+ /** Allow a custom value template */
10
+ protected readonly customValueTemplate: import("@angular/core").Signal<BrnSelectValueDirective<any> | undefined>;
11
+ protected readonly customPlaceholderTemplate: import("@angular/core").Signal<BrnSelectPlaceholderDirective | undefined>;
12
+ protected readonly value: import("@angular/core").Signal<any>;
13
+ /** Normalize the values as an array */
14
+ protected readonly _values: import("@angular/core").Signal<T[]>;
7
15
  readonly transformFn: import("@angular/core").InputSignal<(values: (string | undefined)[]) => any>;
8
- constructor();
9
- static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectValueComponent, never>;
10
- static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectValueComponent, "brn-select-value, hlm-select-value", never, { "transformFn": { "alias": "transformFn"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
16
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectValueComponent<any>, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<BrnSelectValueComponent<any>, "brn-select-value, hlm-select-value", never, { "transformFn": { "alias": "transformFn"; "required": false; "isSignal": true; }; }, {}, ["customValueTemplate", "customPlaceholderTemplate"], never, true, never>;
11
18
  }
@@ -0,0 +1,11 @@
1
+ import { TemplateRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class BrnSelectValueDirective<T> {
4
+ /** @internale */
5
+ readonly templateRef: TemplateRef<BrnSelectValueContext<T>>;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<BrnSelectValueDirective<any>, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BrnSelectValueDirective<any>, "[brnSelectValue], [hlmSelectValue]", never, {}, {}, never, never, true, never>;
8
+ }
9
+ export interface BrnSelectValueContext<T> {
10
+ $implicit: T | T[];
11
+ }