@spartan-ng/brain 0.0.1-alpha.506 → 0.0.1-alpha.508

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 (44) hide show
  1. package/calendar/lib/brn-calendar-next-button.d.ts +1 -1
  2. package/calendar/lib/brn-calendar-previous-button.d.ts +1 -1
  3. package/calendar/lib/brn-calendar.d.ts +4 -2
  4. package/calendar/lib/i18n/calendar-i18n.d.ts +16 -5
  5. package/calendar/lib/mode/brn-calendar-multiple.d.ts +4 -2
  6. package/calendar/lib/mode/brn-calendar-range.d.ts +4 -2
  7. package/dialog/lib/brn-dialog.d.ts +4 -12
  8. package/fesm2022/spartan-ng-brain-accordion.mjs +1 -1
  9. package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
  10. package/fesm2022/spartan-ng-brain-calendar.mjs +75 -48
  11. package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
  12. package/fesm2022/spartan-ng-brain-checkbox.mjs +1 -1
  13. package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
  14. package/fesm2022/spartan-ng-brain-collapsible.mjs +1 -1
  15. package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
  16. package/fesm2022/spartan-ng-brain-command.mjs +4 -4
  17. package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
  18. package/fesm2022/spartan-ng-brain-dialog.mjs +24 -32
  19. package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
  20. package/fesm2022/spartan-ng-brain-label.mjs +1 -1
  21. package/fesm2022/spartan-ng-brain-label.mjs.map +1 -1
  22. package/fesm2022/spartan-ng-brain-popover.mjs +6 -6
  23. package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
  24. package/fesm2022/spartan-ng-brain-radio-group.mjs +1 -1
  25. package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
  26. package/fesm2022/spartan-ng-brain-select.mjs +23 -25
  27. package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
  28. package/fesm2022/spartan-ng-brain-separator.mjs +12 -11
  29. package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -1
  30. package/fesm2022/spartan-ng-brain-sheet.mjs +4 -4
  31. package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
  32. package/fesm2022/spartan-ng-brain-switch.mjs +1 -1
  33. package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
  34. package/fesm2022/spartan-ng-brain-toggle-group.mjs +1 -1
  35. package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
  36. package/fesm2022/spartan-ng-brain-toggle.mjs +1 -1
  37. package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -1
  38. package/hlm-tailwind-preset.css +1 -0
  39. package/hlm-tailwind-preset.js +1 -0
  40. package/package.json +1 -1
  41. package/select/lib/brn-select-content.d.ts +2 -2
  42. package/select/lib/brn-select-option.d.ts +3 -3
  43. package/separator/index.d.ts +2 -0
  44. package/separator/lib/brn-separator.d.ts +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-label.mjs","sources":["../../../../libs/brain/label/src/lib/brn-label.ts","../../../../libs/brain/label/src/index.ts","../../../../libs/brain/label/src/spartan-ng-brain-label.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, type OnInit, PLATFORM_ID, inject, input, signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[brnLabel]',\n\thost: {\n\t\t'[id]': 'id()',\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},\n})\nexport class BrnLabel implements OnInit {\n\tprotected readonly _ngControl = inject(NgControl, { optional: true });\n\n\tpublic readonly id = input<string>(`brn-label-${nextId++}`);\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\tprivate _changes?: MutationObserver;\n\tprivate readonly _dataDisabled = signal<boolean | 'auto'>('auto');\n\tpublic readonly dataDisabled = this._dataDisabled.asReadonly();\n\n\tngOnInit(): void {\n\t\tif (!this._isBrowser) return;\n\t\tthis._changes = new MutationObserver((mutations: MutationRecord[]) => {\n\t\t\tmutations.forEach((mutation: MutationRecord) => {\n\t\t\t\tif (mutation.attributeName !== 'data-disabled') return;\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tconst state = (mutation.target as any).attributes.getNamedItem(mutation.attributeName)?.value === 'true';\n\t\t\t\tthis._dataDisabled.set(state ?? 'auto');\n\t\t\t});\n\t\t});\n\t\tthis._changes?.observe(this._element, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnLabel } from './lib/brn-label';\n\nexport * from './lib/brn-label';\n\n@NgModule({\n\timports: [BrnLabel],\n\texports: [BrnLabel],\n})\nexport class BrnLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAIA,IAAI,MAAM,GAAG,CAAC;MAYD,QAAQ,CAAA;IACD,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAErD,EAAE,GAAG,KAAK,CAAS,CAAA,UAAA,EAAa,MAAM,EAAE,CAAA,CAAE,CAAC;IAE1C,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACnD,IAAA,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,aAAa;AACpD,IAAA,QAAQ;AACC,IAAA,aAAa,GAAG,MAAM,CAAmB,MAAM,CAAC;AACjD,IAAA,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;IAE9D,QAAQ,GAAA;QACP,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAA2B,KAAI;AACpE,YAAA,SAAS,CAAC,OAAO,CAAC,CAAC,QAAwB,KAAI;AAC9C,gBAAA,IAAI,QAAQ,CAAC,aAAa,KAAK,eAAe;oBAAE;;AAEhD,gBAAA,MAAM,KAAK,GAAI,QAAQ,CAAC,MAAc,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,KAAK,MAAM;gBACxG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC;AACxC,aAAC,CAAC;AACH,SAAC,CAAC;QACF,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE;AACrC,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACnB,SAAA,CAAC;;0HAzBS,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAR,QAAQ,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,kCAAA,EAAA,gBAAA,EAAA,gCAAA,EAAA,gBAAA,EAAA,gCAAA,EAAA,kBAAA,EAAA,kCAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAVpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE;AACL,wBAAA,MAAM,EAAE,MAAM;AACd,wBAAA,oBAAoB,EAAE,kCAAkC;AACxD,wBAAA,kBAAkB,EAAE,gCAAgC;AACpD,wBAAA,kBAAkB,EAAE,gCAAgC;AACpD,wBAAA,oBAAoB,EAAE,kCAAkC;AACxD,qBAAA;AACD,iBAAA;;;MCNY,cAAc,CAAA;0HAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;2HAAd,cAAc,EAAA,OAAA,EAAA,CAHhB,QAAQ,CAAA,EAAA,OAAA,EAAA,CACR,QAAQ,CAAA,EAAA,CAAA;2HAEN,cAAc,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACT,OAAO,EAAE,CAAC,QAAQ,CAAC;oBACnB,OAAO,EAAE,CAAC,QAAQ,CAAC;AACnB,iBAAA;;;ACRD;;AAEG;;;;"}
1
+ {"version":3,"file":"spartan-ng-brain-label.mjs","sources":["../../../../libs/brain/label/src/lib/brn-label.ts","../../../../libs/brain/label/src/index.ts","../../../../libs/brain/label/src/spartan-ng-brain-label.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, type OnInit, PLATFORM_ID, inject, input, signal } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nlet nextId = 0;\n\n@Directive({\n\tselector: '[brnLabel]',\n\thost: {\n\t\t'[id]': 'id()',\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},\n})\nexport class BrnLabel implements OnInit {\n\tprotected readonly _ngControl = inject(NgControl, { optional: true });\n\n\tpublic readonly id = input<string>(`brn-label-${++nextId}`);\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _element = inject(ElementRef).nativeElement;\n\tprivate _changes?: MutationObserver;\n\tprivate readonly _dataDisabled = signal<boolean | 'auto'>('auto');\n\tpublic readonly dataDisabled = this._dataDisabled.asReadonly();\n\n\tngOnInit(): void {\n\t\tif (!this._isBrowser) return;\n\t\tthis._changes = new MutationObserver((mutations: MutationRecord[]) => {\n\t\t\tmutations.forEach((mutation: MutationRecord) => {\n\t\t\t\tif (mutation.attributeName !== 'data-disabled') return;\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tconst state = (mutation.target as any).attributes.getNamedItem(mutation.attributeName)?.value === 'true';\n\t\t\t\tthis._dataDisabled.set(state ?? 'auto');\n\t\t\t});\n\t\t});\n\t\tthis._changes?.observe(this._element, {\n\t\t\tattributes: true,\n\t\t\tchildList: true,\n\t\t\tcharacterData: true,\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\nimport { BrnLabel } from './lib/brn-label';\n\nexport * from './lib/brn-label';\n\n@NgModule({\n\timports: [BrnLabel],\n\texports: [BrnLabel],\n})\nexport class BrnLabelModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ class BrnPopover extends BrnDialog {
17
17
  effect(() => {
18
18
  const align = this.align();
19
19
  untracked(() => {
20
- this.mutableAttachPositions().set([
20
+ this.mutableAttachPositions.set([
21
21
  {
22
22
  originX: align,
23
23
  originY: 'bottom',
@@ -44,7 +44,7 @@ class BrnPopover extends BrnDialog {
44
44
  });
45
45
  }
46
46
  applySideOffset(sideOffset) {
47
- this.mutableAttachPositions().update((positions) => positions.map((position) => ({
47
+ this.mutableAttachPositions.update((positions) => positions.map((position) => ({
48
48
  ...position,
49
49
  offsetY: position.originY === 'top' ? -sideOffset : sideOffset,
50
50
  })));
@@ -112,15 +112,15 @@ class BrnPopoverTrigger extends BrnDialogTrigger {
112
112
  super();
113
113
  if (!this._brnDialog)
114
114
  return;
115
- this._brnDialog.mutableAttachTo().set(this._host.nativeElement);
116
- this._brnDialog.mutableCloseOnOutsidePointerEvents().set(true);
115
+ this._brnDialog.mutableAttachTo.set(this._host.nativeElement);
116
+ this._brnDialog.mutableCloseOnOutsidePointerEvents.set(true);
117
117
  effect(() => {
118
118
  const brnDialog = this.brnPopoverTriggerFor();
119
119
  untracked(() => {
120
120
  if (!brnDialog)
121
121
  return;
122
- brnDialog.mutableAttachTo().set(this._host.nativeElement);
123
- brnDialog.mutableCloseOnOutsidePointerEvents().set(true);
122
+ brnDialog.mutableAttachTo.set(this._host.nativeElement);
123
+ brnDialog.mutableCloseOnOutsidePointerEvents.set(true);
124
124
  this.mutableBrnDialogTriggerFor().set(brnDialog);
125
125
  });
126
126
  });
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-popover.mjs","sources":["../../../../libs/brain/popover/src/lib/brn-popover.ts","../../../../libs/brain/popover/src/lib/brn-popover-close.ts","../../../../libs/brain/popover/src/lib/brn-popover-content.ts","../../../../libs/brain/popover/src/lib/brn-popover-trigger.ts","../../../../libs/brain/popover/src/index.ts","../../../../libs/brain/popover/src/spartan-ng-brain-popover.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tforwardRef,\n\tinput,\n\tnumberAttribute,\n\tuntracked,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { BrnDialog, BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_POPOVER_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\thasBackdrop: false,\n\tscrollStrategy: 'reposition',\n};\n\nexport type BrnPopoverAlign = 'start' | 'center' | 'end';\n\n@Component({\n\tselector: 'brn-popover',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnPopover),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_POPOVER_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnPopover',\n})\nexport class BrnPopover extends BrnDialog {\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\tpublic readonly sideOffset = input(0, { transform: numberAttribute });\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.setAriaDescribedBy('');\n\t\tthis.setAriaLabelledBy('');\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.mutableAttachPositions().set([\n\t\t\t\t\t{\n\t\t\t\t\t\toriginX: align,\n\t\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\t\toverlayX: align,\n\t\t\t\t\t\toverlayY: 'top',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\toriginX: align,\n\t\t\t\t\t\toriginY: 'top',\n\t\t\t\t\t\toverlayX: align,\n\t\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t});\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applySideOffset(this.sideOffset());\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst sideOffset = this.sideOffset();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applySideOffset(sideOffset);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate applySideOffset(sideOffset: number) {\n\t\tthis.mutableAttachPositions().update((positions) =>\n\t\t\tpositions.map((position) => ({\n\t\t\t\t...position,\n\t\t\t\toffsetY: position.originY === 'top' ? -sideOffset : sideOffset,\n\t\t\t})),\n\t\t);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[brnPopoverClose]',\n})\nexport class BrnPopoverClose extends BrnDialogClose {}\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: '[brnPopoverContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnPopoverContent)],\n})\nexport class BrnPopoverContent<T> extends BrnDialogContent<T> {}\n","import { Directive, ElementRef, effect, inject, input, untracked } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnPopover } from './brn-popover';\n\n@Directive({\n\tselector: 'button[brnPopoverTrigger],button[brnPopoverTriggerFor]',\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},\n})\nexport class BrnPopoverTrigger extends BrnDialogTrigger {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\n\tpublic readonly brnPopoverTriggerFor = input<BrnPopover | undefined>(undefined, {\n\t\talias: 'brnPopoverTriggerFor',\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.mutableAttachTo().set(this._host.nativeElement);\n\t\tthis._brnDialog.mutableCloseOnOutsidePointerEvents().set(true);\n\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnPopoverTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (!brnDialog) return;\n\t\t\t\tbrnDialog.mutableAttachTo().set(this._host.nativeElement);\n\t\t\t\tbrnDialog.mutableCloseOnOutsidePointerEvents().set(true);\n\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnPopover } from './lib/brn-popover';\nimport { BrnPopoverClose } from './lib/brn-popover-close';\nimport { BrnPopoverContent } from './lib/brn-popover-content';\nimport { BrnPopoverTrigger } from './lib/brn-popover-trigger';\n\nexport * from './lib/brn-popover';\nexport * from './lib/brn-popover-close';\nexport * from './lib/brn-popover-content';\nexport * from './lib/brn-popover-trigger';\n\nexport const BrnPopoverImports = [BrnPopover, BrnPopoverTrigger, BrnPopoverClose, BrnPopoverContent] as const;\n\n@NgModule({\n\timports: [...BrnPopoverImports],\n\texports: [...BrnPopoverImports],\n})\nexport class BrnPopoverModule {}\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-popover.mjs","sources":["../../../../libs/brain/popover/src/lib/brn-popover.ts","../../../../libs/brain/popover/src/lib/brn-popover-close.ts","../../../../libs/brain/popover/src/lib/brn-popover-content.ts","../../../../libs/brain/popover/src/lib/brn-popover-trigger.ts","../../../../libs/brain/popover/src/index.ts","../../../../libs/brain/popover/src/spartan-ng-brain-popover.ts"],"sourcesContent":["import {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tforwardRef,\n\tinput,\n\tnumberAttribute,\n\tuntracked,\n\tViewEncapsulation,\n} from '@angular/core';\nimport { BrnDialog, BrnDialogDefaultOptions, provideBrnDialogDefaultOptions } from '@spartan-ng/brain/dialog';\n\nexport const BRN_POPOVER_DIALOG_DEFAULT_OPTIONS: Partial<BrnDialogDefaultOptions> = {\n\thasBackdrop: false,\n\tscrollStrategy: 'reposition',\n};\n\nexport type BrnPopoverAlign = 'start' | 'center' | 'end';\n\n@Component({\n\tselector: 'brn-popover',\n\ttemplate: `\n\t\t<ng-content />\n\t`,\n\tproviders: [\n\t\t{\n\t\t\tprovide: BrnDialog,\n\t\t\tuseExisting: forwardRef(() => BrnPopover),\n\t\t},\n\t\tprovideBrnDialogDefaultOptions(BRN_POPOVER_DIALOG_DEFAULT_OPTIONS),\n\t],\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\tencapsulation: ViewEncapsulation.None,\n\texportAs: 'brnPopover',\n})\nexport class BrnPopover extends BrnDialog {\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\tpublic readonly sideOffset = input(0, { transform: numberAttribute });\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.setAriaDescribedBy('');\n\t\tthis.setAriaLabelledBy('');\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.mutableAttachPositions.set([\n\t\t\t\t\t{\n\t\t\t\t\t\toriginX: align,\n\t\t\t\t\t\toriginY: 'bottom',\n\t\t\t\t\t\toverlayX: align,\n\t\t\t\t\t\toverlayY: 'top',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\toriginX: align,\n\t\t\t\t\t\toriginY: 'top',\n\t\t\t\t\t\toverlayX: align,\n\t\t\t\t\t\toverlayY: 'bottom',\n\t\t\t\t\t},\n\t\t\t\t]);\n\t\t\t});\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applySideOffset(this.sideOffset());\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst sideOffset = this.sideOffset();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applySideOffset(sideOffset);\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate applySideOffset(sideOffset: number) {\n\t\tthis.mutableAttachPositions.update((positions) =>\n\t\t\tpositions.map((position) => ({\n\t\t\t\t...position,\n\t\t\t\toffsetY: position.originY === 'top' ? -sideOffset : sideOffset,\n\t\t\t})),\n\t\t);\n\t}\n}\n","import { Directive } from '@angular/core';\nimport { BrnDialogClose } from '@spartan-ng/brain/dialog';\n\n@Directive({\n\tselector: 'button[brnPopoverClose]',\n})\nexport class BrnPopoverClose extends BrnDialogClose {}\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: '[brnPopoverContent]',\n\tproviders: [provideExposesStateProviderExisting(() => BrnPopoverContent)],\n})\nexport class BrnPopoverContent<T> extends BrnDialogContent<T> {}\n","import { Directive, ElementRef, effect, inject, input, untracked } from '@angular/core';\nimport { BrnDialogTrigger } from '@spartan-ng/brain/dialog';\nimport type { BrnPopover } from './brn-popover';\n\n@Directive({\n\tselector: 'button[brnPopoverTrigger],button[brnPopoverTriggerFor]',\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},\n})\nexport class BrnPopoverTrigger extends BrnDialogTrigger {\n\tprivate readonly _host = inject(ElementRef, { host: true });\n\n\tpublic readonly brnPopoverTriggerFor = input<BrnPopover | undefined>(undefined, {\n\t\talias: 'brnPopoverTriggerFor',\n\t});\n\n\tconstructor() {\n\t\tsuper();\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t\tthis._brnDialog.mutableCloseOnOutsidePointerEvents.set(true);\n\n\t\teffect(() => {\n\t\t\tconst brnDialog = this.brnPopoverTriggerFor();\n\t\t\tuntracked(() => {\n\t\t\t\tif (!brnDialog) return;\n\t\t\t\tbrnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t\t\t\tbrnDialog.mutableCloseOnOutsidePointerEvents.set(true);\n\t\t\t\tthis.mutableBrnDialogTriggerFor().set(brnDialog);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnPopover } from './lib/brn-popover';\nimport { BrnPopoverClose } from './lib/brn-popover-close';\nimport { BrnPopoverContent } from './lib/brn-popover-content';\nimport { BrnPopoverTrigger } from './lib/brn-popover-trigger';\n\nexport * from './lib/brn-popover';\nexport * from './lib/brn-popover-close';\nexport * from './lib/brn-popover-content';\nexport * from './lib/brn-popover-trigger';\n\nexport const BrnPopoverImports = [BrnPopover, BrnPopoverTrigger, BrnPopoverClose, BrnPopoverContent] as const;\n\n@NgModule({\n\timports: [...BrnPopoverImports],\n\texports: [...BrnPopoverImports],\n})\nexport class BrnPopoverModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -193,7 +193,7 @@ class BrnRadioGroup {
193
193
  static _nextUniqueId = 0;
194
194
  onChange = () => { };
195
195
  onTouched = () => { };
196
- name = input(`brn-radio-group-${BrnRadioGroup._nextUniqueId++}`);
196
+ name = input(`brn-radio-group-${++BrnRadioGroup._nextUniqueId}`);
197
197
  /**
198
198
  * The value of the selected radio button.
199
199
  */
@@ -1 +1 @@
1
- {"version":3,"file":"spartan-ng-brain-radio-group.mjs","sources":["../../../../libs/brain/radio-group/src/lib/brn-radio-group.token.ts","../../../../libs/brain/radio-group/src/lib/brn-radio.ts","../../../../libs/brain/radio-group/src/lib/brn-radio-group.ts","../../../../libs/brain/radio-group/src/index.ts","../../../../libs/brain/radio-group/src/spartan-ng-brain-radio-group.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnRadioGroup } from './brn-radio-group';\n\nconst BrnRadioGroupToken = new InjectionToken<BrnRadioGroup<unknown>>('BrnRadioGroupToken');\n\nexport function provideBrnRadioGroupToken<T>(directive: Type<BrnRadioGroup<T>>): ExistingProvider {\n\treturn { provide: BrnRadioGroupToken, useExisting: directive };\n}\n\nexport function injectBrnRadioGroup<T = unknown>(): BrnRadioGroup<T> {\n\treturn inject(BrnRadioGroupToken) as BrnRadioGroup<T>;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\ttype OnDestroy,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { injectBrnRadioGroup } from './brn-radio-group.token';\n\nexport class BrnRadioChange<T> {\n\tconstructor(\n\t\tpublic source: BrnRadio<T>,\n\t\tpublic value: T,\n\t) {}\n}\n\nconst CONTAINER_POST_FIX = '-radio';\n\n@Component({\n\tselector: 'brn-radio',\n\thost: {\n\t\tclass: 'brn-radio',\n\t\t'[attr.id]': '_hostId()',\n\t\t'[class.brn-radio-checked]': '_checked()',\n\t\t'[class.brn-radio-disabled]': '_disabledState()',\n\t\t'[attr.data-checked]': '_checked()',\n\t\t'[attr.data-disabled]': '_disabledState()',\n\t\t'[attr.data-value]': 'value()',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': '_inputElement().nativeElement.focus()',\n\t},\n\texportAs: 'brnRadio',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div data-slot=\"indicator\" (click)=\"onTouchTargetClick($event)\">\n\t\t\t<ng-content select=\"[target],[indicator]\" />\n\t\t</div>\n\t\t<input\n\t\t\t#input\n\t\t\tstyle=\"position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;\"\n\t\t\ttype=\"radio\"\n\t\t\t[id]=\"id()\"\n\t\t\t[checked]=\"_checked()\"\n\t\t\t[disabled]=\"_disabledState()\"\n\t\t\t[tabIndex]=\"_tabIndex()\"\n\t\t\t[attr.name]=\"_radioGroup.name()\"\n\t\t\t[attr.value]=\"value()\"\n\t\t\t[required]=\"required()\"\n\t\t\t[attr.aria-checked]=\"_checked()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby()\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby()\"\n\t\t\t[attr.aria-disabled]=\"_disabledState()\"\n\t\t\t(change)=\"onInputInteraction($event)\"\n\t\t\t(click)=\"onInputClick($event)\"\n\t\t/>\n\t\t<ng-content />\n\t`,\n\tstyles: `\n\t\t[data-slot='indicator'] {\n\t\t\tdisplay: flex;\n\t\t\theight: fit-content;\n\t\t\twidth: fit-content;\n\t\t}\n\n\t\t[data-slot='indicator']:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t`,\n})\nexport class BrnRadio<T = unknown> implements OnDestroy {\n\tprivate static _nextUniqueId = 0;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprotected readonly _radioGroup = injectBrnRadioGroup<T>();\n\n\t/**\n\t * Whether the radio button is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether the radio button is disabled or the radio group is disabled.\n\t */\n\tprotected readonly _disabledState = computed(() => this.disabled() || this._radioGroup.disabledState());\n\n\t/**\n\t * Whether the radio button is checked.\n\t */\n\tprotected readonly _checked = computed(() => this._radioGroup.value() === this.value());\n\n\tprotected readonly _tabIndex = computed(() => {\n\t\tconst disabled = this._disabledState();\n\t\tconst checked = this._checked();\n\t\tconst hasSelectedRadio = this._radioGroup.value() !== undefined;\n\t\tconst isFirstRadio = this._radioGroup.radioButtons()[0] === this;\n\n\t\tif (disabled || (!checked && (hasSelectedRadio || !isFirstRadio))) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\t/**\n\t * The unique ID for the radio button input. If none is supplied, it will be auto-generated.\n\t */\n\tpublic readonly id = input<string | undefined>(undefined);\n\n\tpublic readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n\tpublic readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n\tpublic readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n\t/**\n\t * The value this radio button represents.\n\t */\n\tpublic readonly value = input.required<T>();\n\n\t/**\n\t * Whether the radio button is required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Event emitted when the checked state of this radio button changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\tprotected readonly _hostId = computed(() => {\n\t\treturn this.id() ? this.id() + CONTAINER_POST_FIX : `brn-radio-${++BrnRadio._nextUniqueId}`;\n\t});\n\n\tprotected readonly _inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n\tconstructor() {\n\t\tthis._focusMonitor.monitor(this._elementRef, true);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/** Dispatch change event with current value. */\n\tprivate emitChangeEvent(): void {\n\t\tthis.change.emit(new BrnRadioChange(this, this.value()));\n\t}\n\n\tprotected onInputClick(event: Event): void {\n\t\t// We have to stop propagation for click events on the visual hidden input element.\n\t\t// By default, when a user clicks on a label element, a generated click event will be\n\t\t// dispatched on the associated input element. Since we are using a label element as our\n\t\t// root container, the click event on the `radio-button` will be executed twice.\n\t\t// The real click event will bubble up, and the generated click event also tries to bubble up.\n\t\t// This will lead to multiple click events.\n\t\t// Preventing bubbling for the second event will solve that issue.\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected onInputInteraction(event: Event): void {\n\t\t// We always have to stop propagation on the change event.\n\t\t// Otherwise the change event, from the input element, will bubble up and\n\t\t// emit its event object to the `change` output.\n\t\tevent.stopPropagation();\n\n\t\tif (!this._checked() && !this._disabledState()) {\n\t\t\tthis.emitChangeEvent();\n\t\t\tthis._radioGroup.select(this, this.value());\n\t\t}\n\t}\n\n\t/** Triggered when the user clicks on the touch target. */\n\tprotected onTouchTargetClick(event: Event): void {\n\t\tthis.onInputInteraction(event);\n\n\t\tif (!this._disabledState()) {\n\t\t\t// Normally the input should be focused already, but if the click\n\t\t\t// comes from the touch target, then we might have to focus it ourselves.\n\t\t\tthis._inputElement().nativeElement.focus();\n\t\t}\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcontentChildren,\n\tDirective,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\toutput,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnRadio, BrnRadioChange } from './brn-radio';\nimport { provideBrnRadioGroupToken } from './brn-radio-group.token';\n\nexport const BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnRadioGroup),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnRadioGroup]',\n\tproviders: [BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, provideBrnRadioGroupToken(BrnRadioGroup)],\n\thost: {\n\t\trole: 'radiogroup',\n\t\t'[dir]': 'direction()',\n\t\t'(focusout)': 'onTouched()',\n\t},\n})\nexport class BrnRadioGroup<T = unknown> implements ControlValueAccessor {\n\tprivate static _nextUniqueId = 0;\n\n\tprotected onChange: ChangeFn<T> = () => {};\n\n\tprotected onTouched: TouchFn = () => {};\n\n\tpublic readonly name = input(`brn-radio-group-${BrnRadioGroup._nextUniqueId++}`);\n\n\t/**\n\t * The value of the selected radio button.\n\t */\n\tpublic readonly value = model<T>();\n\n\t/**\n\t * Whether the radio group is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Whether the radio group should be required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * The direction of the radio group.\n\t */\n\tpublic readonly direction = input<'ltr' | 'rtl' | null>('ltr');\n\n\t/**\n\t * Event emitted when the group value changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\t/**\n\t * The internal disabled state of the radio group. This could be switched to a linkedSignal when we can drop v18 support.\n\t * @internal\n\t */\n\tpublic readonly disabledState = linkedSignal(() => this.disabled());\n\n\t/**\n\t * Access the radio buttons within the group.\n\t * @internal\n\t */\n\tpublic readonly radioButtons = contentChildren(BrnRadio, { descendants: true });\n\n\twriteValue(value: T): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T>): 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): void {\n\t\tthis.disabledState.set(isDisabled);\n\t}\n\n\t/**\n\t * Select a radio button.\n\t * @internal\n\t */\n\tselect(radioButton: BrnRadio<T>, value: T): void {\n\t\tif (this.value() === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value.set(value);\n\t\tthis.onChange(value);\n\t\tthis.change.emit(new BrnRadioChange<T>(radioButton, value));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnRadio } from './lib/brn-radio';\nimport { BrnRadioGroup } from './lib/brn-radio-group';\n\nexport * from './lib/brn-radio';\nexport * from './lib/brn-radio-group';\n\nexport const BrnRadioGroupImports = [BrnRadioGroup, BrnRadio] as const;\n\n@NgModule({\n\timports: [...BrnRadioGroupImports],\n\texports: [...BrnRadioGroupImports],\n})\nexport class BrnRadioGroupModule {}\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-radio-group.mjs","sources":["../../../../libs/brain/radio-group/src/lib/brn-radio-group.token.ts","../../../../libs/brain/radio-group/src/lib/brn-radio.ts","../../../../libs/brain/radio-group/src/lib/brn-radio-group.ts","../../../../libs/brain/radio-group/src/index.ts","../../../../libs/brain/radio-group/src/spartan-ng-brain-radio-group.ts"],"sourcesContent":["import { ExistingProvider, inject, InjectionToken, Type } from '@angular/core';\nimport type { BrnRadioGroup } from './brn-radio-group';\n\nconst BrnRadioGroupToken = new InjectionToken<BrnRadioGroup<unknown>>('BrnRadioGroupToken');\n\nexport function provideBrnRadioGroupToken<T>(directive: Type<BrnRadioGroup<T>>): ExistingProvider {\n\treturn { provide: BrnRadioGroupToken, useExisting: directive };\n}\n\nexport function injectBrnRadioGroup<T = unknown>(): BrnRadioGroup<T> {\n\treturn inject(BrnRadioGroupToken) as BrnRadioGroup<T>;\n}\n","import { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\tElementRef,\n\ttype OnDestroy,\n\tViewEncapsulation,\n\tbooleanAttribute,\n\tcomputed,\n\tinject,\n\tinput,\n\toutput,\n\tviewChild,\n} from '@angular/core';\nimport { injectBrnRadioGroup } from './brn-radio-group.token';\n\nexport class BrnRadioChange<T> {\n\tconstructor(\n\t\tpublic source: BrnRadio<T>,\n\t\tpublic value: T,\n\t) {}\n}\n\nconst CONTAINER_POST_FIX = '-radio';\n\n@Component({\n\tselector: 'brn-radio',\n\thost: {\n\t\tclass: 'brn-radio',\n\t\t'[attr.id]': '_hostId()',\n\t\t'[class.brn-radio-checked]': '_checked()',\n\t\t'[class.brn-radio-disabled]': '_disabledState()',\n\t\t'[attr.data-checked]': '_checked()',\n\t\t'[attr.data-disabled]': '_disabledState()',\n\t\t'[attr.data-value]': 'value()',\n\t\t// Needs to be removed since it causes some a11y issues (see #21266).\n\t\t'[attr.tabindex]': 'null',\n\t\t'[attr.aria-label]': 'null',\n\t\t'[attr.aria-labelledby]': 'null',\n\t\t'[attr.aria-describedby]': 'null',\n\t\t// Note: under normal conditions focus shouldn't land on this element, however it may be\n\t\t// programmatically set, for example inside of a focus trap, in this case we want to forward\n\t\t// the focus to the native element.\n\t\t'(focus)': '_inputElement().nativeElement.focus()',\n\t},\n\texportAs: 'brnRadio',\n\tencapsulation: ViewEncapsulation.None,\n\tchangeDetection: ChangeDetectionStrategy.OnPush,\n\ttemplate: `\n\t\t<div data-slot=\"indicator\" (click)=\"onTouchTargetClick($event)\">\n\t\t\t<ng-content select=\"[target],[indicator]\" />\n\t\t</div>\n\t\t<input\n\t\t\t#input\n\t\t\tstyle=\"position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border-width: 0;\"\n\t\t\ttype=\"radio\"\n\t\t\t[id]=\"id()\"\n\t\t\t[checked]=\"_checked()\"\n\t\t\t[disabled]=\"_disabledState()\"\n\t\t\t[tabIndex]=\"_tabIndex()\"\n\t\t\t[attr.name]=\"_radioGroup.name()\"\n\t\t\t[attr.value]=\"value()\"\n\t\t\t[required]=\"required()\"\n\t\t\t[attr.aria-checked]=\"_checked()\"\n\t\t\t[attr.aria-label]=\"ariaLabel()\"\n\t\t\t[attr.aria-labelledby]=\"ariaLabelledby()\"\n\t\t\t[attr.aria-describedby]=\"ariaDescribedby()\"\n\t\t\t[attr.aria-disabled]=\"_disabledState()\"\n\t\t\t(change)=\"onInputInteraction($event)\"\n\t\t\t(click)=\"onInputClick($event)\"\n\t\t/>\n\t\t<ng-content />\n\t`,\n\tstyles: `\n\t\t[data-slot='indicator'] {\n\t\t\tdisplay: flex;\n\t\t\theight: fit-content;\n\t\t\twidth: fit-content;\n\t\t}\n\n\t\t[data-slot='indicator']:empty {\n\t\t\tdisplay: none;\n\t\t}\n\t`,\n})\nexport class BrnRadio<T = unknown> implements OnDestroy {\n\tprivate static _nextUniqueId = 0;\n\tprivate readonly _focusMonitor = inject(FocusMonitor);\n\tprivate readonly _elementRef = inject(ElementRef);\n\tprotected readonly _radioGroup = injectBrnRadioGroup<T>();\n\n\t/**\n\t * Whether the radio button is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });\n\n\t/**\n\t * Whether the radio button is disabled or the radio group is disabled.\n\t */\n\tprotected readonly _disabledState = computed(() => this.disabled() || this._radioGroup.disabledState());\n\n\t/**\n\t * Whether the radio button is checked.\n\t */\n\tprotected readonly _checked = computed(() => this._radioGroup.value() === this.value());\n\n\tprotected readonly _tabIndex = computed(() => {\n\t\tconst disabled = this._disabledState();\n\t\tconst checked = this._checked();\n\t\tconst hasSelectedRadio = this._radioGroup.value() !== undefined;\n\t\tconst isFirstRadio = this._radioGroup.radioButtons()[0] === this;\n\n\t\tif (disabled || (!checked && (hasSelectedRadio || !isFirstRadio))) {\n\t\t\treturn -1;\n\t\t}\n\t\treturn 0;\n\t});\n\n\t/**\n\t * The unique ID for the radio button input. If none is supplied, it will be auto-generated.\n\t */\n\tpublic readonly id = input<string | undefined>(undefined);\n\n\tpublic readonly ariaLabel = input<string | undefined>(undefined, { alias: 'aria-label' });\n\n\tpublic readonly ariaLabelledby = input<string | undefined>(undefined, { alias: 'aria-labelledby' });\n\n\tpublic readonly ariaDescribedby = input<string | undefined>(undefined, { alias: 'aria-describedby' });\n\n\t/**\n\t * The value this radio button represents.\n\t */\n\tpublic readonly value = input.required<T>();\n\n\t/**\n\t * Whether the radio button is required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Event emitted when the checked state of this radio button changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\tprotected readonly _hostId = computed(() => {\n\t\treturn this.id() ? this.id() + CONTAINER_POST_FIX : `brn-radio-${++BrnRadio._nextUniqueId}`;\n\t});\n\n\tprotected readonly _inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n\tconstructor() {\n\t\tthis._focusMonitor.monitor(this._elementRef, true);\n\t}\n\n\tngOnDestroy(): void {\n\t\tthis._focusMonitor.stopMonitoring(this._elementRef);\n\t}\n\n\t/** Dispatch change event with current value. */\n\tprivate emitChangeEvent(): void {\n\t\tthis.change.emit(new BrnRadioChange(this, this.value()));\n\t}\n\n\tprotected onInputClick(event: Event): void {\n\t\t// We have to stop propagation for click events on the visual hidden input element.\n\t\t// By default, when a user clicks on a label element, a generated click event will be\n\t\t// dispatched on the associated input element. Since we are using a label element as our\n\t\t// root container, the click event on the `radio-button` will be executed twice.\n\t\t// The real click event will bubble up, and the generated click event also tries to bubble up.\n\t\t// This will lead to multiple click events.\n\t\t// Preventing bubbling for the second event will solve that issue.\n\t\tevent.stopPropagation();\n\t}\n\n\tprotected onInputInteraction(event: Event): void {\n\t\t// We always have to stop propagation on the change event.\n\t\t// Otherwise the change event, from the input element, will bubble up and\n\t\t// emit its event object to the `change` output.\n\t\tevent.stopPropagation();\n\n\t\tif (!this._checked() && !this._disabledState()) {\n\t\t\tthis.emitChangeEvent();\n\t\t\tthis._radioGroup.select(this, this.value());\n\t\t}\n\t}\n\n\t/** Triggered when the user clicks on the touch target. */\n\tprotected onTouchTargetClick(event: Event): void {\n\t\tthis.onInputInteraction(event);\n\n\t\tif (!this._disabledState()) {\n\t\t\t// Normally the input should be focused already, but if the click\n\t\t\t// comes from the touch target, then we might have to focus it ourselves.\n\t\t\tthis._inputElement().nativeElement.focus();\n\t\t}\n\t}\n}\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport {\n\tbooleanAttribute,\n\tcontentChildren,\n\tDirective,\n\tforwardRef,\n\tinput,\n\tlinkedSignal,\n\tmodel,\n\toutput,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ChangeFn, TouchFn } from '@spartan-ng/brain/forms';\nimport { BrnRadio, BrnRadioChange } from './brn-radio';\nimport { provideBrnRadioGroupToken } from './brn-radio-group.token';\n\nexport const BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR = {\n\tprovide: NG_VALUE_ACCESSOR,\n\tuseExisting: forwardRef(() => BrnRadioGroup),\n\tmulti: true,\n};\n\n@Directive({\n\tselector: '[brnRadioGroup]',\n\tproviders: [BRN_RADIO_GROUP_CONTROL_VALUE_ACCESSOR, provideBrnRadioGroupToken(BrnRadioGroup)],\n\thost: {\n\t\trole: 'radiogroup',\n\t\t'[dir]': 'direction()',\n\t\t'(focusout)': 'onTouched()',\n\t},\n})\nexport class BrnRadioGroup<T = unknown> implements ControlValueAccessor {\n\tprivate static _nextUniqueId = 0;\n\n\tprotected onChange: ChangeFn<T> = () => {};\n\n\tprotected onTouched: TouchFn = () => {};\n\n\tpublic readonly name = input(`brn-radio-group-${++BrnRadioGroup._nextUniqueId}`);\n\n\t/**\n\t * The value of the selected radio button.\n\t */\n\tpublic readonly value = model<T>();\n\n\t/**\n\t * Whether the radio group is disabled.\n\t */\n\tpublic readonly disabled = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * Whether the radio group should be required.\n\t */\n\tpublic readonly required = input<boolean, BooleanInput>(false, {\n\t\ttransform: booleanAttribute,\n\t});\n\n\t/**\n\t * The direction of the radio group.\n\t */\n\tpublic readonly direction = input<'ltr' | 'rtl' | null>('ltr');\n\n\t/**\n\t * Event emitted when the group value changes.\n\t */\n\tpublic readonly change = output<BrnRadioChange<T>>();\n\n\t/**\n\t * The internal disabled state of the radio group. This could be switched to a linkedSignal when we can drop v18 support.\n\t * @internal\n\t */\n\tpublic readonly disabledState = linkedSignal(() => this.disabled());\n\n\t/**\n\t * Access the radio buttons within the group.\n\t * @internal\n\t */\n\tpublic readonly radioButtons = contentChildren(BrnRadio, { descendants: true });\n\n\twriteValue(value: T): void {\n\t\tthis.value.set(value);\n\t}\n\n\tregisterOnChange(fn: ChangeFn<T>): 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): void {\n\t\tthis.disabledState.set(isDisabled);\n\t}\n\n\t/**\n\t * Select a radio button.\n\t * @internal\n\t */\n\tselect(radioButton: BrnRadio<T>, value: T): void {\n\t\tif (this.value() === value) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.value.set(value);\n\t\tthis.onChange(value);\n\t\tthis.change.emit(new BrnRadioChange<T>(radioButton, value));\n\t}\n}\n","import { NgModule } from '@angular/core';\n\nimport { BrnRadio } from './lib/brn-radio';\nimport { BrnRadioGroup } from './lib/brn-radio-group';\n\nexport * from './lib/brn-radio';\nexport * from './lib/brn-radio-group';\n\nexport const BrnRadioGroupImports = [BrnRadioGroup, BrnRadio] as const;\n\n@NgModule({\n\timports: [...BrnRadioGroupImports],\n\texports: [...BrnRadioGroupImports],\n})\nexport class BrnRadioGroupModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, inject, ElementRef, input, booleanAttribute, computed, signal, Directive, DestroyRef, Injector, viewChild, contentChild, contentChildren, effect, afterNextRender, untracked, ChangeDetectionStrategy, Component, numberAttribute, model, forwardRef, TemplateRef, ChangeDetectorRef, PLATFORM_ID, NgModule } from '@angular/core';
2
+ import { InjectionToken, inject, ElementRef, input, booleanAttribute, computed, signal, Directive, DestroyRef, Injector, viewChild, contentChild, contentChildren, effect, afterNextRender, ChangeDetectionStrategy, Component, numberAttribute, model, forwardRef, TemplateRef, ChangeDetectorRef, PLATFORM_ID, NgModule } from '@angular/core';
3
3
  import { CdkListboxModule } from '@angular/cdk/listbox';
4
4
  import * as i1 from '@angular/cdk/overlay';
5
5
  import { CdkConnectedOverlay, OverlayModule } from '@angular/cdk/overlay';
@@ -13,7 +13,7 @@ import { BrnLabel } from '@spartan-ng/brain/label';
13
13
  import { Subject, fromEvent, interval, of } from 'rxjs';
14
14
  import { takeUntil, switchMap, delay, map } from 'rxjs/operators';
15
15
  import { NgTemplateOutlet, isPlatformBrowser } from '@angular/common';
16
- import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
16
+ import { FocusKeyManager } from '@angular/cdk/a11y';
17
17
 
18
18
  const BrnSelectContentToken = new InjectionToken('BrnSelectContentToken');
19
19
  function injectBrnSelectContent() {
@@ -36,7 +36,7 @@ class BrnSelectOption {
36
36
  _select = injectBrnSelect();
37
37
  _content = injectBrnSelectContent();
38
38
  elementRef = inject(ElementRef);
39
- id = input(`brn-option-${nextId$1++}`);
39
+ id = input(`brn-option-${++nextId$1}`);
40
40
  value = input();
41
41
  // we use "_disabled" here because disabled is already defined in the Highlightable interface
42
42
  // eslint-disable-next-line @typescript-eslint/naming-convention
@@ -65,11 +65,6 @@ class BrnSelectOption {
65
65
  getLabel() {
66
66
  return this.elementRef.nativeElement.textContent?.trim() ?? '';
67
67
  }
68
- setActiveStyles() {
69
- this._active.set(true);
70
- // scroll the option into view if it is not visible
71
- this.elementRef.nativeElement.scrollIntoView({ block: 'nearest' });
72
- }
73
68
  setInactiveStyles() {
74
69
  this._active.set(false);
75
70
  }
@@ -79,8 +74,12 @@ class BrnSelectOption {
79
74
  }
80
75
  this._content.setActiveOption(this);
81
76
  }
77
+ focus() {
78
+ this.elementRef.nativeElement.focus();
79
+ this._active.set(true);
80
+ }
82
81
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnSelectOption, deps: [], target: i0.ɵɵFactoryTarget.Directive });
83
- /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnSelectOption, isStandalone: true, selector: "[brnOption]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option" }, listeners: { "click": "select()", "mouseenter": "activate()" }, properties: { "id": "id()", "attr.aria-selected": "selected()", "attr.aria-disabled": "_disabled()", "attr.dir": "_select.dir()", "attr.data-active": "_active() ? '' : undefined", "attr.data-disabled": "_disabled() ? '' : undefined" } }, ngImport: i0 });
82
+ /** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: BrnSelectOption, isStandalone: true, selector: "[brnOption]", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, _disabled: { classPropertyName: "_disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "option" }, listeners: { "click": "select()", "mouseenter": "activate()", "blur": "setInactiveStyles()" }, properties: { "id": "id()", "attr.aria-selected": "selected()", "attr.aria-disabled": "_disabled()", "attr.dir": "_select.dir()", "attr.data-active": "_active() ? '' : undefined", "attr.data-disabled": "_disabled() ? '' : undefined", "tabindex": "-1" } }, ngImport: i0 });
84
83
  }
85
84
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnSelectOption, decorators: [{
86
85
  type: Directive,
@@ -96,6 +95,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
96
95
  '[attr.data-active]': "_active() ? '' : undefined",
97
96
  '[attr.data-disabled]': "_disabled() ? '' : undefined",
98
97
  '(mouseenter)': 'activate()',
98
+ '(blur)': 'setInactiveStyles()',
99
+ '[tabindex]': '-1',
99
100
  },
100
101
  }]
101
102
  }] });
@@ -173,29 +174,29 @@ class BrnSelectContent {
173
174
  });
174
175
  }
175
176
  ngAfterContentInit() {
176
- this.keyManager = new ActiveDescendantKeyManager(this._options, this._injector)
177
+ this.keyManager = new FocusKeyManager(this._options, this._injector)
177
178
  .withHomeAndEnd()
178
179
  .withVerticalOrientation()
179
180
  .withTypeAhead()
180
- .withAllowedModifierKeys(['shiftKey'])
181
181
  .withWrap()
182
- .skipPredicate((option) => option._disabled());
182
+ .skipPredicate((option) => option.disabled);
183
183
  effect(() => {
184
- // any time the select is opened, we need to focus the first selected option or the first option
185
184
  const open = this._select.open();
186
185
  const options = this._options();
187
186
  if (!open || !options.length) {
188
187
  return;
189
188
  }
190
- untracked(() => {
191
- const selectedOption = options.find((option) => option.selected());
192
- if (selectedOption) {
189
+ const selectedOption = options.find((option) => option.selected());
190
+ if (selectedOption) {
191
+ afterNextRender(() => {
193
192
  this.keyManager?.setActiveItem(selectedOption);
194
- }
195
- else {
193
+ }, { injector: this._injector });
194
+ }
195
+ else {
196
+ afterNextRender(() => {
196
197
  this.keyManager?.setFirstItemActive();
197
- }
198
- });
198
+ }, { injector: this._injector });
199
+ }
199
200
  }, { injector: this._injector });
200
201
  }
201
202
  updateArrowDisplay() {
@@ -240,7 +241,7 @@ class BrnSelectContent {
240
241
  }
241
242
  }
242
243
  /** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: BrnSelectContent, deps: [], target: i0.ɵɵFactoryTarget.Component });
243
- /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.8", type: BrnSelectContent, isStandalone: true, selector: "brn-select-content, hlm-select-content:not(noHlm)", host: { attributes: { "role": "listbox", "tabindex": "0", "aria-orientation": "vertical" }, listeners: { "keydown": "keyManager?.onKeydown($event)", "keydown.enter": "selectActiveItem($event)", "keydown.space": "selectActiveItem($event)" }, properties: { "attr.aria-multiselectable": "_select.multiple()", "attr.aria-disabled": "_select.disabled() || _select.formDisabled()", "attr.aria-activedescendant": "keyManager?.activeItem?.id()", "attr.aria-labelledBy": "_select.labelId()", "attr.aria-controlledBy": "_select.id() +'--trigger'", "id": "_select.id() + '--content'", "attr.dir": "_select.dir()" } }, providers: [provideBrnSelectContent(BrnSelectContent)], queries: [{ propertyName: "_scrollUpBtn", first: true, predicate: BrnSelectScrollUp, descendants: true, isSignal: true }, { propertyName: "_scrollDownBtn", first: true, predicate: BrnSelectScrollDown, descendants: true, isSignal: true }, { propertyName: "_options", predicate: BrnSelectOption, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, isSignal: true }], ngImport: i0, template: `
244
+ /** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.8", type: BrnSelectContent, isStandalone: true, selector: "brn-select-content, hlm-select-content:not(noHlm)", host: { attributes: { "role": "listbox", "aria-orientation": "vertical" }, listeners: { "keydown": "keyManager?.onKeydown($event)", "keydown.enter": "selectActiveItem($event)", "keydown.space": "selectActiveItem($event)" }, properties: { "attr.aria-multiselectable": "_select.multiple()", "attr.aria-disabled": "_select.disabled() || _select.formDisabled()", "attr.aria-labelledBy": "_select.labelId()", "attr.aria-controlledBy": "_select.id() +'--trigger'", "id": "_select.id() + '--content'", "attr.dir": "_select.dir()" } }, providers: [provideBrnSelectContent(BrnSelectContent)], queries: [{ propertyName: "_scrollUpBtn", first: true, predicate: BrnSelectScrollUp, descendants: true, isSignal: true }, { propertyName: "_scrollDownBtn", first: true, predicate: BrnSelectScrollDown, descendants: true, isSignal: true }, { propertyName: "_options", predicate: BrnSelectOption, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_viewport", first: true, predicate: ["viewport"], descendants: true, isSignal: true }], ngImport: i0, template: `
244
245
  <ng-template #scrollUp>
245
246
  <ng-content select="hlm-select-scroll-up" />
246
247
  <ng-content select="brnSelectScrollUp" />
@@ -271,11 +272,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
271
272
  type: Component,
272
273
  args: [{ selector: 'brn-select-content, hlm-select-content:not(noHlm)', imports: [NgTemplateOutlet], providers: [provideBrnSelectContent(BrnSelectContent)], changeDetection: ChangeDetectionStrategy.OnPush, host: {
273
274
  role: 'listbox',
274
- tabindex: '0',
275
275
  '[attr.aria-multiselectable]': '_select.multiple()',
276
276
  '[attr.aria-disabled]': '_select.disabled() || _select.formDisabled()',
277
277
  'aria-orientation': 'vertical',
278
- '[attr.aria-activedescendant]': 'keyManager?.activeItem?.id()',
279
278
  '[attr.aria-labelledBy]': '_select.labelId()',
280
279
  '[attr.aria-controlledBy]': "_select.id() +'--trigger'",
281
280
  '[id]': "_select.id() + '--content'",
@@ -318,7 +317,7 @@ class BrnSelect {
318
317
  _injector = inject(Injector);
319
318
  _parentFormGroup = inject(FormGroupDirective, { optional: true });
320
319
  ngControl = inject(NgControl, { optional: true, self: true });
321
- id = input(`brn-select-${nextId++}`);
320
+ id = input(`brn-select-${++nextId}`);
322
321
  multiple = input(false, {
323
322
  transform: booleanAttribute,
324
323
  });
@@ -417,7 +416,6 @@ class BrnSelect {
417
416
  return;
418
417
  }
419
418
  this.open.set(true);
420
- afterNextRender(() => this._selectContent().focusList(), { injector: this._injector });
421
419
  }
422
420
  hide() {
423
421
  if (!this.open())