@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.
- package/calendar/lib/brn-calendar-next-button.d.ts +1 -1
- package/calendar/lib/brn-calendar-previous-button.d.ts +1 -1
- package/calendar/lib/brn-calendar.d.ts +4 -2
- package/calendar/lib/i18n/calendar-i18n.d.ts +16 -5
- package/calendar/lib/mode/brn-calendar-multiple.d.ts +4 -2
- package/calendar/lib/mode/brn-calendar-range.d.ts +4 -2
- package/dialog/lib/brn-dialog.d.ts +4 -12
- package/fesm2022/spartan-ng-brain-accordion.mjs +1 -1
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-calendar.mjs +75 -48
- package/fesm2022/spartan-ng-brain-calendar.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-checkbox.mjs +1 -1
- package/fesm2022/spartan-ng-brain-checkbox.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs +1 -1
- package/fesm2022/spartan-ng-brain-collapsible.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-command.mjs +4 -4
- package/fesm2022/spartan-ng-brain-command.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-dialog.mjs +24 -32
- package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-label.mjs +1 -1
- package/fesm2022/spartan-ng-brain-label.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-popover.mjs +6 -6
- package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-radio-group.mjs +1 -1
- package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs +23 -25
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-separator.mjs +12 -11
- package/fesm2022/spartan-ng-brain-separator.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-sheet.mjs +4 -4
- package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-switch.mjs +1 -1
- package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-toggle-group.mjs +1 -1
- package/fesm2022/spartan-ng-brain-toggle-group.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-toggle.mjs +1 -1
- package/fesm2022/spartan-ng-brain-toggle.mjs.map +1 -1
- package/hlm-tailwind-preset.css +1 -0
- package/hlm-tailwind-preset.js +1 -0
- package/package.json +1 -1
- package/select/lib/brn-select-content.d.ts +2 -2
- package/select/lib/brn-select-option.d.ts +3 -3
- package/separator/index.d.ts +2 -0
- 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
|
|
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
|
|
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
|
|
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
|
|
116
|
-
this._brnDialog.mutableCloseOnOutsidePointerEvents
|
|
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
|
|
123
|
-
brnDialog.mutableCloseOnOutsidePointerEvents
|
|
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,
|
|
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 {
|
|
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
|
|
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.
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
189
|
+
const selectedOption = options.find((option) => option.selected());
|
|
190
|
+
if (selectedOption) {
|
|
191
|
+
afterNextRender(() => {
|
|
193
192
|
this.keyManager?.setActiveItem(selectedOption);
|
|
194
|
-
}
|
|
195
|
-
|
|
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", "
|
|
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())
|