@spartan-ng/brain 0.0.1-alpha.557 → 0.0.1-alpha.558
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/fesm2022/spartan-ng-brain-accordion.mjs +4 -4
- package/fesm2022/spartan-ng-brain-accordion.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs +5 -5
- package/fesm2022/spartan-ng-brain-alert-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-checkbox.mjs +14 -14
- 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-dialog.mjs +4 -4
- package/fesm2022/spartan-ng-brain-dialog.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-hover-card.mjs +1 -1
- package/fesm2022/spartan-ng-brain-hover-card.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-input-otp.mjs +10 -10
- package/fesm2022/spartan-ng-brain-input-otp.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-menu.mjs +1 -1
- package/fesm2022/spartan-ng-brain-menu.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-navigation-menu.mjs +16 -16
- package/fesm2022/spartan-ng-brain-navigation-menu.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-popover.mjs +4 -4
- package/fesm2022/spartan-ng-brain-popover.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-radio-group.mjs +2 -2
- package/fesm2022/spartan-ng-brain-radio-group.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-select.mjs +7 -7
- package/fesm2022/spartan-ng-brain-select.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-sheet.mjs +5 -5
- package/fesm2022/spartan-ng-brain-sheet.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-switch.mjs +16 -16
- package/fesm2022/spartan-ng-brain-switch.mjs.map +1 -1
- package/fesm2022/spartan-ng-brain-tabs.mjs +4 -4
- package/fesm2022/spartan-ng-brain-tabs.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-tooltip.mjs +9 -9
- package/fesm2022/spartan-ng-brain-tooltip.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.ts","../../../../libs/brain/menu/src/lib/brn-menu.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end';\nexport type BrnMenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nexport const getBrnMenuPosition = (align: BrnMenuAlign, side: BrnMenuSide): ConnectedPosition[] => {\n\tconst verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';\n\n\tconst createPositions = (\n\t\toriginX: 'start' | 'center' | 'end',\n\t\toriginY: 'top' | 'center' | 'bottom',\n\t\toverlayX: 'start' | 'center' | 'end',\n\t\toverlayY: 'top' | 'center' | 'bottom',\n\t): ConnectedPosition[] => [\n\t\t{ originX, originY, overlayX, overlayY },\n\t\t{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },\n\t];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\treturn createPositions(align, 'top', align, 'bottom');\n\t\tcase 'bottom':\n\t\t\treturn createPositions(align, 'bottom', align, 'top');\n\t\tcase 'left':\n\t\t\treturn createPositions('start', verticalAlign, 'end', verticalAlign);\n\t\tcase 'right':\n\t\t\treturn createPositions('end', verticalAlign, 'start', verticalAlign);\n\t}\n};\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic readonly brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic readonly brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n\thostDirectives: [CdkMenu],\n})\nexport class BrnMenu {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tif (!ps) {\n\t\t\t\t// if we have no last position we default to the most likely option\n\t\t\t\t// I hate that we have to do this and hope we can revisit soon and improve\n\t\t\t\tthis._side.set(isRoot ? 'top' : 'left');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBar {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroup {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t\t'[attr.data-disabled]': 'disabled() ? \"\" : null',\n\t},\n})\nexport class BrnMenuItem {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckbox {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadio {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { BrnContextMenuTrigger } from './lib/brn-context-menu-trigger';\nimport { BrnMenu } from './lib/brn-menu';\nimport { BrnMenuBar } from './lib/brn-menu-bar';\nimport { BrnMenuGroup } from './lib/brn-menu-group';\nimport { BrnMenuItem } from './lib/brn-menu-item';\nimport { BrnMenuItemCheckbox } from './lib/brn-menu-item-checkbox';\nimport { BrnMenuItemRadio } from './lib/brn-menu-item-radio';\nimport { BrnMenuTrigger } from './lib/brn-menu-trigger';\n\nexport * from './lib/brn-context-menu-trigger';\nexport * from './lib/brn-menu';\nexport * from './lib/brn-menu-bar';\nexport * from './lib/brn-menu-group';\nexport * from './lib/brn-menu-item';\nexport * from './lib/brn-menu-item-checkbox';\nexport * from './lib/brn-menu-item-radio';\nexport * from './lib/brn-menu-trigger';\n\nexport const BrnMenuImports = [\n\tBrnMenuTrigger,\n\tBrnMenu,\n\tBrnMenuBar,\n\tBrnContextMenuTrigger,\n\tBrnMenuGroup,\n\tBrnMenuItem,\n\tBrnMenuItemRadio,\n\tBrnMenuItemCheckbox,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-menu.mjs","sources":["../../../../libs/brain/menu/src/lib/brn-menu-align.ts","../../../../libs/brain/menu/src/lib/brn-context-menu-trigger.ts","../../../../libs/brain/menu/src/lib/brn-menu.ts","../../../../libs/brain/menu/src/lib/brn-menu-bar.ts","../../../../libs/brain/menu/src/lib/brn-menu-group.ts","../../../../libs/brain/menu/src/lib/brn-menu-item.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-checkbox.ts","../../../../libs/brain/menu/src/lib/brn-menu-item-radio.ts","../../../../libs/brain/menu/src/lib/brn-menu-trigger.ts","../../../../libs/brain/menu/src/index.ts","../../../../libs/brain/menu/src/spartan-ng-brain-menu.ts"],"sourcesContent":["import type { ConnectedPosition } from '@angular/cdk/overlay';\n\nexport type BrnMenuAlign = 'start' | 'center' | 'end';\nexport type BrnMenuSide = 'top' | 'bottom' | 'left' | 'right';\n\nexport const getBrnMenuPosition = (align: BrnMenuAlign, side: BrnMenuSide): ConnectedPosition[] => {\n\tconst verticalAlign = align === 'start' ? 'top' : align === 'end' ? 'bottom' : 'center';\n\n\tconst createPositions = (\n\t\toriginX: 'start' | 'center' | 'end',\n\t\toriginY: 'top' | 'center' | 'bottom',\n\t\toverlayX: 'start' | 'center' | 'end',\n\t\toverlayY: 'top' | 'center' | 'bottom',\n\t): ConnectedPosition[] => [\n\t\t{ originX, originY, overlayX, overlayY },\n\t\t{ originX: overlayX, originY: overlayY, overlayX: originX, overlayY: originY },\n\t];\n\n\tswitch (side) {\n\t\tcase 'top':\n\t\t\treturn createPositions(align, 'top', align, 'bottom');\n\t\tcase 'bottom':\n\t\t\treturn createPositions(align, 'bottom', align, 'top');\n\t\tcase 'left':\n\t\t\treturn createPositions('start', verticalAlign, 'end', verticalAlign);\n\t\tcase 'right':\n\t\t\treturn createPositions('end', verticalAlign, 'start', verticalAlign);\n\t}\n};\n","import { CdkContextMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input, type TemplateRef } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnCtxMenuTriggerFor]',\n\thostDirectives: [CdkContextMenuTrigger],\n})\nexport class BrnContextMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkContextMenuTrigger, { host: true });\n\tpublic readonly brnCtxMenuTriggerFor = input<TemplateRef<unknown> | null>(null);\n\tpublic readonly brnCtxMenuTriggerData = input<unknown>(undefined);\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => (this._cdkTrigger.menuTemplateRef = this.brnCtxMenuTriggerFor()));\n\t\teffect(() => (this._cdkTrigger.menuData = this.brnCtxMenuTriggerData()));\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { CdkMenu } from '@angular/cdk/menu';\nimport { Directive, inject, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenu],[brnSubMenu]',\n\thostDirectives: [CdkMenu],\n\thost: {\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.data-side]': '_side()',\n\t},\n})\nexport class BrnMenu {\n\tprivate readonly _host = inject(CdkMenu);\n\n\tprotected readonly _state = signal('open');\n\tprotected readonly _side = signal('top');\n\n\tconstructor() {\n\t\tthis.setSideWithDarkMagic();\n\t\t// this is a best effort, but does not seem to work currently\n\t\t// TODO: figure out a way for us to know the host is about to be closed. might not be possible with CDK\n\t\tthis._host.closed.pipe(takeUntilDestroyed()).subscribe(() => this._state.set('closed'));\n\t}\n\n\tprivate setSideWithDarkMagic() {\n\t\t/**\n\t\t * This is an ugly workaround to at least figure out the correct side of where a submenu\n\t\t * will appear and set the attribute to the host accordingly\n\t\t *\n\t\t * First of all we take advantage of the menu stack not being aware of the root\n\t\t * object immediately after it is added. This code executes before the root element is added,\n\t\t * which means the stack is still empty and the peek method returns undefined.\n\t\t */\n\t\tconst isRoot = this._host.menuStack.peek() === undefined;\n\t\tsetTimeout(() => {\n\t\t\t// our menu trigger directive leaves the last position used for use immediately after opening\n\t\t\t// we can access it here and determine the correct side.\n\t\t\t// eslint-disable-next-line\n\t\t\tconst ps = (this._host as any)._parentTrigger._spartanLastPosition;\n\t\t\tif (!ps) {\n\t\t\t\t// if we have no last position we default to the most likely option\n\t\t\t\t// I hate that we have to do this and hope we can revisit soon and improve\n\t\t\t\tthis._side.set(isRoot ? 'top' : 'left');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst side = isRoot ? ps.originY : ps.originX === 'end' ? 'right' : 'left';\n\t\t\tthis._side.set(side);\n\t\t});\n\t}\n}\n","import { CdkMenuBar } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuBar]',\n\thostDirectives: [CdkMenuBar],\n})\nexport class BrnMenuBar {}\n","import { CdkMenuGroup } from '@angular/cdk/menu';\nimport { Directive } from '@angular/core';\n\n@Directive({\n\tselector: '[brnMenuGroup]',\n\thostDirectives: [CdkMenuGroup],\n})\nexport class BrnMenuGroup {}\n","import { CdkMenuItem } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItem]',\n\thostDirectives: [CdkMenuItem],\n\thost: {\n\t\t'[disabled]': 'disabled()',\n\t\t'[attr.data-disabled]': 'disabled() ? \"\" : null',\n\t},\n})\nexport class BrnMenuItem {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItem);\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t}\n}\n","import { CdkMenuItemCheckbox } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemCheckbox]',\n\thostDirectives: [CdkMenuItemCheckbox],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemCheckbox {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemCheckbox);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuItemRadio } from '@angular/cdk/menu';\nimport { booleanAttribute, Directive, effect, inject, input } from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\n\n@Directive({\n\tselector: '[brnMenuItemRadio]',\n\thostDirectives: [CdkMenuItemRadio],\n\thost: {\n\t\t'[class.checked]': 'checked()',\n\t\t'[disabled]': 'disabled()',\n\t},\n})\nexport class BrnMenuItemRadio {\n\tprivate readonly _cdkMenuItem = inject(CdkMenuItemRadio);\n\tpublic readonly checked = input(this._cdkMenuItem.checked, { transform: booleanAttribute });\n\tpublic readonly disabled = input(this._cdkMenuItem.disabled, { transform: booleanAttribute });\n\tpublic readonly triggered = outputFromObservable(this._cdkMenuItem.triggered);\n\n\tconstructor() {\n\t\teffect(() => (this._cdkMenuItem.disabled = this.disabled()));\n\t\teffect(() => (this._cdkMenuItem.checked = this.checked()));\n\t}\n}\n","import { CdkMenuTrigger } from '@angular/cdk/menu';\nimport { Directive, effect, inject, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { type BrnMenuAlign, BrnMenuSide, getBrnMenuPosition } from './brn-menu-align';\n\n@Directive({\n\tselector: '[brnMenuTriggerFor]',\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: CdkMenuTrigger,\n\t\t\tinputs: ['cdkMenuTriggerFor: brnMenuTriggerFor', 'cdkMenuTriggerData: brnMenuTriggerData'],\n\t\t\toutputs: ['cdkMenuOpened: brnMenuOpened', 'cdkMenuClosed: brnMenuClosed'],\n\t\t},\n\t],\n})\nexport class BrnMenuTrigger {\n\tprivate readonly _cdkTrigger = inject(CdkMenuTrigger, { host: true });\n\tpublic readonly align = input<BrnMenuAlign>('center');\n\tpublic readonly side = input<BrnMenuSide>('bottom');\n\n\tconstructor() {\n\t\t// once the trigger opens we wait until the next tick and then grab the last position\n\t\t// used to position the menu. we store this in our trigger which the brnMenu directive has\n\t\t// access to through DI\n\t\tthis._cdkTrigger.opened.pipe(takeUntilDestroyed()).subscribe(() =>\n\t\t\tsetTimeout(\n\t\t\t\t() =>\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t((this._cdkTrigger as any)._spartanLastPosition = // eslint-disable-next-line\n\t\t\t\t\t\t(this._cdkTrigger as any).overlayRef._positionStrategy._lastPosition),\n\t\t\t),\n\t\t);\n\n\t\teffect(() => {\n\t\t\tconst align = this.align();\n\t\t\tconst side = this.side();\n\t\t\tthis._cdkTrigger.menuPosition = getBrnMenuPosition(align, side);\n\t\t});\n\t}\n}\n","import { BrnContextMenuTrigger } from './lib/brn-context-menu-trigger';\nimport { BrnMenu } from './lib/brn-menu';\nimport { BrnMenuBar } from './lib/brn-menu-bar';\nimport { BrnMenuGroup } from './lib/brn-menu-group';\nimport { BrnMenuItem } from './lib/brn-menu-item';\nimport { BrnMenuItemCheckbox } from './lib/brn-menu-item-checkbox';\nimport { BrnMenuItemRadio } from './lib/brn-menu-item-radio';\nimport { BrnMenuTrigger } from './lib/brn-menu-trigger';\n\nexport * from './lib/brn-context-menu-trigger';\nexport * from './lib/brn-menu';\nexport * from './lib/brn-menu-bar';\nexport * from './lib/brn-menu-group';\nexport * from './lib/brn-menu-item';\nexport * from './lib/brn-menu-item-checkbox';\nexport * from './lib/brn-menu-item-radio';\nexport * from './lib/brn-menu-trigger';\n\nexport const BrnMenuImports = [\n\tBrnMenuTrigger,\n\tBrnMenu,\n\tBrnMenuBar,\n\tBrnContextMenuTrigger,\n\tBrnMenuGroup,\n\tBrnMenuItem,\n\tBrnMenuItemRadio,\n\tBrnMenuItemCheckbox,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAKO,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAE,IAAiB,KAAyB;IACjG,MAAM,aAAa,GAAG,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,QAAQ,GAAG,QAAQ;AAEvF,IAAA,MAAM,eAAe,GAAG,CACvB,OAAmC,EACnC,OAAoC,EACpC,QAAoC,EACpC,QAAqC,KACZ;AACzB,QAAA,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE;AACxC,QAAA,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;KAC9E;IAED,QAAQ,IAAI;AACX,QAAA,KAAK,KAAK;YACT,OAAO,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;AACtD,QAAA,KAAK,QAAQ;YACZ,OAAO,eAAe,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;AACtD,QAAA,KAAK,MAAM;YACV,OAAO,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC;AACrE,QAAA,KAAK,OAAO;YACX,OAAO,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC;;AAEvE,CAAC;;MCnBY,qBAAqB,CAAA;IAChB,WAAW,GAAG,MAAM,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5D,IAAA,oBAAoB,GAAG,KAAK,CAA8B,IAAI,CAAC;AAC/D,IAAA,qBAAqB,GAAG,KAAK,CAAU,SAAS,CAAC;AACjD,IAAA,KAAK,GAAG,KAAK,CAAe,QAAQ,CAAC;AACrC,IAAA,IAAI,GAAG,KAAK,CAAc,QAAQ,CAAC;AAEnD,IAAA,WAAA,GAAA;;;;AAIC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAC5D,UAAU,CACT;;AAEC,SAAE,IAAI,CAAC,WAAmB,CAAC,oBAAoB;YAC7C,IAAI,CAAC,WAAmB,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACvE,CACD;AAED,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC9E,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,SAAC,CAAC;;0HA1BS,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,oBAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,qBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,qBAAqB,CAAC;AACvC,iBAAA;;;MCIY,OAAO,CAAA;AACF,IAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;AAErB,IAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,IAAA,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAExC,IAAA,WAAA,GAAA;QACC,IAAI,CAAC,oBAAoB,EAAE;;;QAG3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;IAGhF,oBAAoB,GAAA;AAC3B;;;;;;;AAOG;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,SAAS;QACxD,UAAU,CAAC,MAAK;;;;YAIf,MAAM,EAAE,GAAI,IAAI,CAAC,KAAa,CAAC,cAAc,CAAC,oBAAoB;YAClE,IAAI,CAAC,EAAE,EAAE;;;AAGR,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;gBACvC;;YAED,MAAM,IAAI,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,KAAK,KAAK,GAAG,OAAO,GAAG,MAAM;AAC1E,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACrB,SAAC,CAAC;;0HApCS,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBARnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,OAAO,CAAC;AACzB,oBAAA,IAAI,EAAE;AACL,wBAAA,mBAAmB,EAAE,UAAU;AAC/B,wBAAA,kBAAkB,EAAE,SAAS;AAC7B,qBAAA;AACD,iBAAA;;;MCJY,UAAU,CAAA;0HAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,cAAc;oBACxB,cAAc,EAAE,CAAC,UAAU,CAAC;AAC5B,iBAAA;;;MCCY,YAAY,CAAA;0HAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,cAAc,EAAE,CAAC,YAAY,CAAC;AAC9B,iBAAA;;;MCMY,WAAW,CAAA;AACN,IAAA,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7E,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAE7E,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;0HANjD,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAX,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,0BAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,eAAe;oBACzB,cAAc,EAAE,CAAC,WAAW,CAAC;AAC7B,oBAAA,IAAI,EAAE;AACL,wBAAA,YAAY,EAAE,YAAY;AAC1B,wBAAA,sBAAsB,EAAE,wBAAwB;AAChD,qBAAA;AACD,iBAAA;;;MCCY,mBAAmB,CAAA;AACd,IAAA,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,IAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC3E,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7E,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAE7E,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;0HAR/C,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,cAAc,EAAE,CAAC,mBAAmB,CAAC;AACrC,oBAAA,IAAI,EAAE;AACL,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,YAAY,EAAE,YAAY;AAC1B,qBAAA;AACD,iBAAA;;;MCCY,gBAAgB,CAAA;AACX,IAAA,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACxC,IAAA,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;AAC3E,IAAA,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC7E,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAE7E,IAAA,WAAA,GAAA;AACC,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5D,QAAA,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;;0HAR/C,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,oBAAoB;oBAC9B,cAAc,EAAE,CAAC,gBAAgB,CAAC;AAClC,oBAAA,IAAI,EAAE;AACL,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,YAAY,EAAE,YAAY;AAC1B,qBAAA;AACD,iBAAA;;;MCIY,cAAc,CAAA;IACT,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACrD,IAAA,KAAK,GAAG,KAAK,CAAe,QAAQ,CAAC;AACrC,IAAA,IAAI,GAAG,KAAK,CAAc,QAAQ,CAAC;AAEnD,IAAA,WAAA,GAAA;;;;AAIC,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAC,MAC5D,UAAU,CACT;;AAEC,SAAE,IAAI,CAAC,WAAmB,CAAC,oBAAoB;YAC7C,IAAI,CAAC,WAAmB,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CACvE,CACD;QAED,MAAM,CAAC,MAAK;AACX,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE;YACxB,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC;AAChE,SAAC,CAAC;;0HAtBS,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;8GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,eAAA,EAAA,eAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAV1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,cAAc,EAAE;AACf,wBAAA;AACC,4BAAA,SAAS,EAAE,cAAc;AACzB,4BAAA,MAAM,EAAE,CAAC,sCAAsC,EAAE,wCAAwC,CAAC;AAC1F,4BAAA,OAAO,EAAE,CAAC,8BAA8B,EAAE,8BAA8B,CAAC;AACzE,yBAAA;AACD,qBAAA;AACD,iBAAA;;;ACIM,MAAM,cAAc,GAAG;IAC7B,cAAc;IACd,OAAO;IACP,UAAU;IACV,qBAAqB;IACrB,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,mBAAmB;;;AC1BpB;;AAEG;;;;"}
|
|
@@ -206,12 +206,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
206
206
|
type: Directive,
|
|
207
207
|
args: [{
|
|
208
208
|
selector: 'li[brnNavigationMenuItem]',
|
|
209
|
+
providers: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],
|
|
209
210
|
host: {
|
|
210
211
|
'[id]': 'id()',
|
|
211
212
|
'[attr.data-disabled]': 'disabled() || null',
|
|
212
213
|
'data-slot': 'navigation-menu-item',
|
|
213
214
|
},
|
|
214
|
-
providers: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],
|
|
215
215
|
}]
|
|
216
216
|
}] });
|
|
217
217
|
|
|
@@ -263,6 +263,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
263
263
|
type: Directive,
|
|
264
264
|
args: [{
|
|
265
265
|
selector: 'a[brnNavigationMenuLink]',
|
|
266
|
+
providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],
|
|
267
|
+
hostDirectives: [
|
|
268
|
+
{
|
|
269
|
+
directive: BrnButton,
|
|
270
|
+
inputs: ['disabled'],
|
|
271
|
+
},
|
|
272
|
+
],
|
|
266
273
|
host: {
|
|
267
274
|
'(click)': 'onClick()',
|
|
268
275
|
'(mouseenter)': 'activate()',
|
|
@@ -271,13 +278,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
271
278
|
'[attr.aria-current]': '_isActive() ? "page" : undefined',
|
|
272
279
|
'data-slot': 'navigation-menu-link',
|
|
273
280
|
},
|
|
274
|
-
hostDirectives: [
|
|
275
|
-
{
|
|
276
|
-
directive: BrnButton,
|
|
277
|
-
inputs: ['disabled'],
|
|
278
|
-
},
|
|
279
|
-
],
|
|
280
|
-
providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],
|
|
281
281
|
}]
|
|
282
282
|
}] });
|
|
283
283
|
|
|
@@ -398,6 +398,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
398
398
|
type: Directive,
|
|
399
399
|
args: [{
|
|
400
400
|
selector: 'nav[brnNavigationMenu]',
|
|
401
|
+
providers: [provideBrnNavigationMenu(BrnNavigationMenu)],
|
|
401
402
|
host: {
|
|
402
403
|
'(keydown)': 'handleKeydown($event)',
|
|
403
404
|
'[attr.data-orientation]': 'orientation()',
|
|
@@ -405,7 +406,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
405
406
|
'aria-label': 'Main',
|
|
406
407
|
'data-slot': 'navigation-menu',
|
|
407
408
|
},
|
|
408
|
-
providers: [provideBrnNavigationMenu(BrnNavigationMenu)],
|
|
409
409
|
}]
|
|
410
410
|
}], ctorParameters: () => [] });
|
|
411
411
|
|
|
@@ -644,6 +644,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
644
644
|
type: Directive,
|
|
645
645
|
args: [{
|
|
646
646
|
selector: 'button[brnNavigationMenuTrigger]',
|
|
647
|
+
providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],
|
|
648
|
+
hostDirectives: [
|
|
649
|
+
{
|
|
650
|
+
directive: BrnButton,
|
|
651
|
+
inputs: ['disabled'],
|
|
652
|
+
},
|
|
653
|
+
],
|
|
647
654
|
host: {
|
|
648
655
|
'(keydown.escape)': 'onEscape($event)',
|
|
649
656
|
'(keydown.tab)': 'onTab($event)',
|
|
@@ -654,13 +661,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
654
661
|
'[attr.aria-controls]': '_contentId',
|
|
655
662
|
'data-slot': 'navigation-menu-trigger',
|
|
656
663
|
},
|
|
657
|
-
hostDirectives: [
|
|
658
|
-
{
|
|
659
|
-
directive: BrnButton,
|
|
660
|
-
inputs: ['disabled'],
|
|
661
|
-
},
|
|
662
|
-
],
|
|
663
|
-
providers: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],
|
|
664
664
|
}]
|
|
665
665
|
}], ctorParameters: () => [] });
|
|
666
666
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? \"\" : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, { transform: booleanAttribute });\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': '_dir()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _directionality = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl'>();\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this._dir())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tprivate readonly _dir$ = toObservable(this.dir);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t * If input is not passed, inherits globally from Directionality or assumes LTR (left-to-right) reading mode.\n\t */\n\tprotected readonly _dir = toSignal(\n\t\tcombineLatest([\n\t\t\tthis._dir$.pipe(startWith(undefined)),\n\t\t\tthis._directionality.change.pipe(startWith(undefined)),\n\t\t\tof('ltr' as const),\n\t\t]).pipe(map(([dir, dirChange, fallback]) => dir ?? dirChange ?? fallback)),\n\t\t{ requireSync: true },\n\t);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this._dir() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: KeyboardEvent) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: KeyboardEvent) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spartan-ng-brain-navigation-menu.mjs","sources":["../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.service.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item-focusable.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-item.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-link.ts","../../../../libs/brain/navigation-menu/src/lib/brn-parent-nav-menu.token.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-content.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-list.ts","../../../../libs/brain/navigation-menu/src/lib/brn-navigation-menu-trigger.ts","../../../../libs/brain/navigation-menu/src/index.ts","../../../../libs/brain/navigation-menu/src/spartan-ng-brain-navigation-menu.ts"],"sourcesContent":["import { Direction } from '@angular/cdk/bidi';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n\tConnectedPosition,\n\tFlexibleConnectedPositionStrategy,\n\tOverlay,\n\tOverlayConfig,\n\tOverlayPositionBuilder,\n\tOverlayRef,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport {\n\tElementRef,\n\tinject,\n\tInjectable,\n\tNgZone,\n\tRenderer2,\n\tsignal,\n\tTemplateRef,\n\tViewContainerRef,\n} from '@angular/core';\nimport { createHoverObservable, waitForElementAnimations } from '@spartan-ng/brain/core';\nimport { BehaviorSubject, fromEvent, Observable, of, Subject } from 'rxjs';\nimport { map, share, switchMap, takeUntil } from 'rxjs/operators';\n\nexport type BrnNavigationMenuContentOptions = Partial<\n\t{\n\t\tattachTo: ElementRef<HTMLElement>;\n\t\torientation: 'horizontal' | 'vertical';\n\t} & OverlayConfig\n>;\n\nconst horizontalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'bottom',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n];\n\nconst verticalPositions: ConnectedPosition[] = [\n\t{\n\t\toriginX: 'end',\n\t\toriginY: 'top',\n\t\toverlayX: 'start',\n\t\toverlayY: 'top',\n\t},\n\t{\n\t\toriginX: 'start',\n\t\toriginY: 'top',\n\t\toverlayX: 'end',\n\t\toverlayY: 'top',\n\t},\n];\n\n@Injectable()\nexport class BrnNavigationMenuContentService {\n\tprivate static _id = 0;\n\n\tprivate readonly _overlay = inject(Overlay);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _psBuilder = inject(OverlayPositionBuilder);\n\tprivate readonly _renderer = inject(Renderer2);\n\n\tprivate readonly _content = signal<TemplatePortal<unknown> | null>(null);\n\n\tpublic readonly id = `brn-navigation-menu-content-${++BrnNavigationMenuContentService._id}`;\n\n\tprivate _shouldDetach = false;\n\n\tprivate _config: BrnNavigationMenuContentOptions = {};\n\tprivate _overlayRef?: OverlayRef;\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\n\tprivate _destroyed$ = new Subject<void>();\n\n\tprivate readonly _contentEl = signal<HTMLElement | undefined>(undefined);\n\tpublic readonly contentEl = this._contentEl.asReadonly();\n\n\tprivate readonly _overlayHoveredObservables$ = new BehaviorSubject<Observable<boolean> | undefined>(undefined);\n\n\tprivate readonly _overlayShiftTabObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tprivate readonly _overlayEscapeObservables$ = new BehaviorSubject<Observable<KeyboardEvent> | undefined>(undefined);\n\n\tpublic readonly hovered$: Observable<boolean> = this._overlayHoveredObservables$.pipe(\n\t\tswitchMap((overlayHoveredObservable) => (overlayHoveredObservable !== undefined ? overlayHoveredObservable : of())),\n\t\tshare(),\n\t);\n\n\tprivate readonly _shiftTabPressed$ = this._overlayShiftTabObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tpublic readonly escapePressed$ = this._overlayEscapeObservables$.pipe(\n\t\tswitchMap((contentFocused$) => (contentFocused$ !== undefined ? contentFocused$ : of())),\n\t);\n\n\tconstructor() {\n\t\tthis._shiftTabPressed$.pipe(takeUntil(this._destroyed$)).subscribe((e) => {\n\t\t\tif (this._config.attachTo?.nativeElement) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis._config.attachTo.nativeElement.focus();\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic setConfig(config: BrnNavigationMenuContentOptions) {\n\t\tthis._config = config;\n\n\t\tif (config.attachTo) {\n\t\t\tconst positions = this._getPositions(config.orientation);\n\t\t\tthis._positionStrategy = this._buildPositionStrategy(config.attachTo, positions);\n\n\t\t\tthis._config = {\n\t\t\t\t...this._config,\n\t\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t\t};\n\t\t}\n\n\t\tthis._overlayRef = this._overlay.create(this._config);\n\t}\n\n\tpublic updateOrientation(orientation: 'horizontal' | 'vertical') {\n\t\tif (!this._config.attachTo) return;\n\n\t\tconst positions = this._getPositions(orientation);\n\t\tthis._positionStrategy = this._buildPositionStrategy(this._config.attachTo, positions);\n\n\t\tthis._config = {\n\t\t\t...this._config,\n\t\t\tpositionStrategy: this._positionStrategy,\n\t\t\tscrollStrategy: this._overlay.scrollStrategies.reposition(),\n\t\t};\n\n\t\tthis._overlayRef?.updatePositionStrategy(this._positionStrategy);\n\t}\n\n\tpublic updateDirection(dir: Direction) {\n\t\tthis._overlayRef?.setDirection(dir);\n\t}\n\n\tpublic setContent(value: TemplateRef<unknown>, vcr: ViewContainerRef) {\n\t\tthis._content.set(new TemplatePortal<unknown>(value, vcr));\n\n\t\tif (!this._overlayRef) {\n\t\t\tthis._overlayRef = this._overlay.create(this._config);\n\t\t}\n\t}\n\n\tpublic show() {\n\t\tconst content = this._content();\n\t\tif (!content || !this._overlayRef) return;\n\t\tthis._shouldDetach = false;\n\n\t\tthis._overlayRef?.detach();\n\t\tconst embededViewRef = this._overlayRef?.attach(content);\n\n\t\tthis._destroyed$ = new Subject<void>();\n\n\t\tconst contentEl = embededViewRef.rootNodes[0] as HTMLElement;\n\n\t\tconst attachToId = this._config.attachTo?.nativeElement.id;\n\n\t\tthis._renderer.setAttribute(contentEl, 'id', this.id);\n\t\tif (attachToId !== undefined) {\n\t\t\tthis._renderer.setAttribute(contentEl, 'aria-labelledby', attachToId);\n\t\t}\n\n\t\tthis._contentEl.set(contentEl);\n\n\t\tthis._overlayHoveredObservables$.next(\n\t\t\tcreateHoverObservable(this._overlayRef.hostElement, this._zone, this._destroyed$).pipe(map((e) => e.hover)),\n\t\t);\n\n\t\tthis._overlayShiftTabObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Tab' && e.shiftKey && e.target === this.contentEl() ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\n\t\tthis._overlayEscapeObservables$.next(\n\t\t\tfromEvent<KeyboardEvent>(contentEl, 'keydown').pipe(\n\t\t\t\tswitchMap((e) => (e.key === 'Escape' && !hasModifierKey(e) ? of(e) : of())),\n\t\t\t\ttakeUntil(this._destroyed$),\n\t\t\t),\n\t\t);\n\t}\n\n\tpublic async hide() {\n\t\tconst contentEl = this._contentEl();\n\t\tif (!contentEl) return;\n\n\t\tthis._shouldDetach = true;\n\t\tif (!this._hasAnimation()) {\n\t\t\tthis._detach();\n\t\t}\n\n\t\tawait waitForElementAnimations(contentEl);\n\t\tthis._detach();\n\t}\n\n\tprivate readonly _detach = () => {\n\t\tif (!this._shouldDetach) return;\n\n\t\tthis._overlayRef?.detach();\n\t\tthis._contentEl.set(undefined);\n\n\t\tthis._destroyed$.next();\n\t\tthis._destroyed$.complete();\n\t\tthis._destroyed$ = new Subject<void>();\n\t};\n\n\tprivate _hasAnimation() {\n\t\tconst contentEl = this.contentEl();\n\t\tif (!contentEl) return;\n\n\t\treturn getComputedStyle(contentEl).animationName !== 'none';\n\t}\n\n\tprivate _getPositions(orientation?: 'horizontal' | 'vertical') {\n\t\treturn orientation === 'vertical' ? verticalPositions : horizontalPositions;\n\t}\n\n\tprivate _buildPositionStrategy(attachTo: ElementRef, positions: ConnectedPosition[]) {\n\t\treturn this._psBuilder\n\t\t\t.flexibleConnectedTo(attachTo)\n\t\t\t.withPositions(positions)\n\t\t\t.withDefaultOffsetY(0)\n\t\t\t.withDefaultOffsetX(0)\n\t\t\t.withPush(false);\n\t}\n}\n","import type { FocusableOption } from '@angular/cdk/a11y';\nimport { type ExistingProvider, InjectionToken, type Type } from '@angular/core';\n\nexport const BrnNavigationMenuFocusable = new InjectionToken<FocusableOption>('BrnNavigationMenuFocusable');\n\nexport function provideBrnNavigationMenuFocusable<T extends FocusableOption>(focusable: Type<T>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuFocusable, useExisting: focusable };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenuItem } from './brn-navigation-menu-item';\n\nexport const BrnNavigationMenuItemToken = new InjectionToken<BrnNavigationMenuItem>('BrnNavigationMenuItemToken');\n\nexport function injectBrnNavigationMenuItem(): BrnNavigationMenuItem {\n\treturn inject(BrnNavigationMenuItemToken);\n}\n\nexport function provideBrnNavigationMenuItem(navigationMenuItem: Type<BrnNavigationMenuItem>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuItemToken, useExisting: navigationMenuItem };\n}\n","import { type ExistingProvider, inject, InjectionToken, type Type } from '@angular/core';\nimport type { BrnNavigationMenu } from './brn-navigation-menu';\n\nexport const BrnNavigationMenuToken = new InjectionToken<BrnNavigationMenu>('BrnNavigationMenuToken');\n\nexport function injectBrnNavigationMenu(): BrnNavigationMenu {\n\treturn inject(BrnNavigationMenuToken);\n}\n\nexport function provideBrnNavigationMenu(navigationMenu: Type<BrnNavigationMenu>): ExistingProvider {\n\treturn { provide: BrnNavigationMenuToken, useExisting: navigationMenu };\n}\n","import { computed, contentChild, Directive, ElementRef, inject, input, signal, TemplateRef } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { Observable, Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { provideBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'li[brnNavigationMenuItem]',\n\tproviders: [provideBrnNavigationMenuItem(BrnNavigationMenuItem), BrnNavigationMenuContentService],\n\thost: {\n\t\t'[id]': 'id()',\n\t\t'[attr.data-disabled]': 'disabled() || null',\n\t\t'data-slot': 'navigation-menu-item',\n\t},\n})\nexport class BrnNavigationMenuItem {\n\tprivate static _id = 0;\n\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n\tpublic readonly navMenuElRef = this._navigationMenu.el;\n\n\t/** The id of the navigation menu item */\n\tpublic readonly id = input<string>(`brn-navigation-menu-item-${++BrnNavigationMenuItem._id}`);\n\n\tpublic readonly isActive = computed(() => this.id() === this._navigationMenu.value());\n\n\tpublic readonly wasActive = computed(() => this.id() === this._navigationMenu.previousValue());\n\n\tpublic readonly state = computed(() => (this.isActive() ? 'open' : 'closed'));\n\n\tpublic readonly contentTemplate = signal<TemplateRef<unknown> | null>(null);\n\n\tpublic readonly contentHovered$ = this._contentService.hovered$;\n\n\tpublic readonly subNavVisible$ = new Subject<Observable<boolean>>();\n\n\tpublic readonly focusable = contentChild.required(BrnNavigationMenuFocusable);\n\n\tprivate readonly _triggerOrLinkBtn = contentChild.required(BrnNavigationMenuFocusable, { read: BrnButton });\n\n\tpublic readonly disabled = computed(() => this._triggerOrLinkBtn().disabled());\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { booleanAttribute, computed, Directive, ElementRef, inject, input } from '@angular/core';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'a[brnNavigationMenuLink]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuLink)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(click)': 'onClick()',\n\t\t'(mouseenter)': 'activate()',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[attr.data-active]': '_isActive() ? \"\" : undefined',\n\t\t'[attr.aria-current]': '_isActive() ? \"page\" : undefined',\n\t\t'data-slot': 'navigation-menu-link',\n\t},\n})\nexport class BrnNavigationMenuLink implements FocusableOption {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _el = inject<ElementRef<HTMLAnchorElement>>(ElementRef);\n\n\t// Returns false if this BrnNavigationMenuLink is used \"standalone\", meaning it doesn't have a parent BrnNavigationMenuItem element.\n\tprivate readonly _hasParentNavMenuItem =\n\t\tthis._el.nativeElement.parentElement === this._navigationMenuItem.el.nativeElement;\n\n\t/**\n\t * Used to identify the link as the currently active page.\n\t */\n\tpublic readonly active = input<boolean | undefined, BooleanInput>(undefined, { transform: booleanAttribute });\n\n\tprotected readonly _isActive = computed(() => {\n\t\tconst active = this.active();\n\t\tif (active !== undefined) return active;\n\n\t\tif (!this._hasParentNavMenuItem) return false;\n\n\t\treturn this._navigationMenuItem.isActive();\n\t});\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (!this._hasParentNavMenuItem || this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onClick() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprotected activate() {\n\t\tif (!this._hasParentNavMenuItem) return;\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n}\n","import { type FactoryProvider, inject, InjectionToken } from '@angular/core';\nimport type { Subject } from 'rxjs';\n\nexport interface BrnParentNavMenu {\n\tsubNavVisible$: Subject<boolean>;\n}\n\nexport const BrnParentNavMenu = new InjectionToken<BrnParentNavMenu>('BrnParentNavMenu');\n\nexport function injectBrnParentNavMenu(): BrnParentNavMenu | null {\n\treturn inject(BrnParentNavMenu, { optional: true });\n}\n\nexport function provideBrnParentNavMenu(parentNavMenu: () => BrnParentNavMenu): FactoryProvider {\n\treturn { provide: BrnParentNavMenu, useFactory: parentNavMenu };\n}\n","import { FocusableOption, FocusKeyManager } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport {\n\tcomputed,\n\tcontentChildren,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tinput,\n\tmodel,\n\tNgZone,\n\tOnDestroy,\n\tsignal,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { computedPrevious, createHoverObservable } from '@spartan-ng/brain/core';\nimport { combineLatest, merge, of, Subject } from 'rxjs';\nimport { debounceTime, filter, map, pairwise, startWith, switchMap, takeUntil } from 'rxjs/operators';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './brn-navigation-menu-link';\nimport { provideBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { injectBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\nfunction areArraysSameByElRef(arr1: unknown[], arr2: unknown[]) {\n\tif (arr1.length !== arr2.length) return false;\n\treturn arr1.every((item, index) => item === arr2[index]);\n}\n\n@Directive({\n\tselector: 'nav[brnNavigationMenu]',\n\tproviders: [provideBrnNavigationMenu(BrnNavigationMenu)],\n\thost: {\n\t\t'(keydown)': 'handleKeydown($event)',\n\t\t'[attr.data-orientation]': 'orientation()',\n\t\t'[attr.dir]': '_dir()',\n\t\t'aria-label': 'Main',\n\t\t'data-slot': 'navigation-menu',\n\t},\n})\nexport class BrnNavigationMenu implements OnDestroy {\n\tprivate readonly _directionality = inject(Directionality);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _destroy$ = new Subject<void>();\n\n\tpublic readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tpublic readonly parentNavMenu = injectBrnParentNavMenu();\n\n\t/**\n\t * The controlled value of the menu item to activate.\n\t */\n\tpublic readonly value = model<string>();\n\n\t/**\n\t * The duration from when the mouse enters a trigger until the content opens.\n\t */\n\tpublic readonly delayDuration = input<number>(200);\n\n\t/**\n\t * How much time a user has to enter another trigger without incurring a delay again.\n\t */\n\tpublic readonly skipDelayDuration = input<number>(300);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t */\n\tpublic readonly dir = input<'ltr' | 'rtl'>();\n\n\t/**\n\t * The orientation of the menu.\n\t */\n\tpublic readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n\n\tprivate readonly _isOpenDelayed = signal(true);\n\tpublic readonly isOpenDelayed = this._isOpenDelayed.asReadonly();\n\n\tprivate _skipDelayTimerRef: ReturnType<typeof setTimeout> | undefined;\n\n\tprivate readonly _navAndSubnavMenuItems = contentChildren(BrnNavigationMenuItem, { descendants: true });\n\n\tpublic readonly menuItems = computed(\n\t\t() => this._navAndSubnavMenuItems().filter((mi) => mi.navMenuElRef === this.el),\n\t\t{\n\t\t\tequal: areArraysSameByElRef,\n\t\t},\n\t);\n\n\tpublic readonly menuItemIds = computed(() => this.menuItems().map((mi) => mi.id()));\n\n\tprivate readonly _triggersAndLinks = computed(() => this.menuItems().map((mi) => mi.focusable()));\n\n\tprivate readonly _linkMenuItems = computed(() =>\n\t\tthis.menuItems().filter((i) => i.focusable() instanceof BrnNavigationMenuLink),\n\t);\n\n\tprivate readonly _keyManager = computed(() => {\n\t\treturn new FocusKeyManager<FocusableOption>(this._triggersAndLinks())\n\t\t\t.withHorizontalOrientation(this._dir())\n\t\t\t.withHomeAndEnd()\n\t\t\t.withPageUpDown()\n\t\t\t.withWrap()\n\t\t\t.skipPredicate((e) => !!e.disabled);\n\t});\n\n\tprivate readonly _reset$ = toObservable(this.value).pipe(\n\t\tpairwise(),\n\t\tfilter(([prev, curr]) => curr === undefined && curr !== prev),\n\t\tmap(() => undefined),\n\t);\n\n\tprivate readonly _hovered$ = merge(\n\t\tcreateHoverObservable(this.el.nativeElement, this._zone, this._destroy$).pipe(map((e) => e.hover)),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tprivate readonly _contentHovered$ = merge(\n\t\ttoObservable(this._navAndSubnavMenuItems).pipe(\n\t\t\tswitchMap((menuItems) => merge(...menuItems.map((mi) => mi.contentHovered$))),\n\t\t),\n\t\tthis._reset$,\n\t).pipe(startWith(undefined));\n\n\tpublic readonly previousValue = computedPrevious(this.value);\n\n\tprivate readonly _dir$ = toObservable(this.dir);\n\n\t/**\n\t * The reading direction of the menu when applicable.\n\t * If input is not passed, inherits globally from Directionality or assumes LTR (left-to-right) reading mode.\n\t */\n\tprotected readonly _dir = toSignal(\n\t\tcombineLatest([\n\t\t\tthis._dir$.pipe(startWith(undefined)),\n\t\t\tthis._directionality.change.pipe(startWith(undefined)),\n\t\t\tof('ltr' as const),\n\t\t]).pipe(map(([dir, dirChange, fallback]) => dir ?? dirChange ?? fallback)),\n\t\t{ requireSync: true },\n\t);\n\n\tpublic readonly context = computed(() => ({ orientation: this.orientation(), dir: this._dir() }));\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst isOpen = this.value() !== undefined;\n\t\t\tconst hasSkipDelayDuration = this.skipDelayDuration() > 0;\n\n\t\t\tif (isOpen) {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tif (hasSkipDelayDuration) this._isOpenDelayed.set(false);\n\t\t\t} else {\n\t\t\t\tclearTimeout(this._skipDelayTimerRef);\n\t\t\t\tthis._skipDelayTimerRef = setTimeout(() => {\n\t\t\t\t\tthis._isOpenDelayed.set(true);\n\t\t\t\t}, this.skipDelayDuration());\n\t\t\t}\n\t\t});\n\n\t\tcombineLatest([this._hovered$, this._contentHovered$])\n\t\t\t.pipe(\n\t\t\t\tdebounceTime(0),\n\t\t\t\tfilter(([hovered, contentHovered]) => !(hovered === undefined && contentHovered === undefined)),\n\t\t\t\ttakeUntil(this._destroy$),\n\t\t\t)\n\t\t\t.subscribe(([hovered, contentHovered]) => {\n\t\t\t\tif (!hovered && !contentHovered) {\n\t\t\t\t\tthis.value.set(undefined);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\tpublic isLink(id?: string): boolean {\n\t\treturn !!this._linkMenuItems().find((item) => item.id() === id);\n\t}\n\n\tpublic setActiveItem(item: FocusableOption) {\n\t\tthis._keyManager().setActiveItem(item);\n\t}\n\n\tprotected handleKeydown(event: KeyboardEvent) {\n\t\tthis._keyManager().onKeydown(event);\n\t}\n\n\tngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t\tclearTimeout(this._skipDelayTimerRef);\n\t}\n}\n","import { computed, Directive, effect, inject, Renderer2, TemplateRef, untracked } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\nimport { BrnParentNavMenu, provideBrnParentNavMenu } from './brn-parent-nav-menu.token';\n\n@Directive({\n\tselector: '[brnNavigationMenuContent]',\n\tproviders: [provideBrnParentNavMenu(() => ({ subNavVisible$: new Subject<boolean>() }))],\n})\nexport class BrnNavigationMenuContent {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\tprivate readonly _tpl = inject(TemplateRef);\n\tprivate readonly _renderer = inject(Renderer2);\n\tprivate readonly _subNavContext = inject(BrnParentNavMenu);\n\n\tprivate readonly _navMenuValue = this._navigationMenu.value;\n\tprivate readonly _prevNavMenuValue = this._navigationMenu.previousValue;\n\n\tprivate readonly _id = this._navigationMenuItem.id;\n\tprivate readonly _isActive = this._navigationMenuItem.isActive;\n\tprivate readonly _wasActive = this._navigationMenuItem.wasActive;\n\tprivate readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _contentEl = this._contentService.contentEl;\n\n\tprivate readonly _menuItemsIds = this._navigationMenu.menuItemIds;\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tconstructor() {\n\t\tif (!this._tpl) return;\n\t\tthis._navigationMenuItem.contentTemplate.set(this._tpl);\n\t\tthis._navigationMenuItem.subNavVisible$.next(this._subNavContext.subNavVisible$);\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'tabindex', '0');\n\t\t\t\tthis._renderer.setAttribute(el, 'data-slot', 'navigation-menu-content');\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-state', this._state());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst el = this._contentEl();\n\t\t\tif (el) {\n\t\t\t\tthis._renderer.setAttribute(el, 'data-orientation', this._orientation());\n\t\t\t}\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst isActive = this._isActive();\n\t\t\tconst wasActive = this._wasActive();\n\t\t\tconst dir = this._dir();\n\t\t\tconst orientation = this._orientation();\n\n\t\t\tconst el = untracked(this._contentEl);\n\t\t\tif (!el) return;\n\n\t\t\tconst id = this._id();\n\t\t\tconst menuItemsIds =\n\t\t\t\tdir === 'rtl' && orientation === 'horizontal' ? this._menuItemsIds().slice().reverse() : this._menuItemsIds();\n\n\t\t\tif (isActive) {\n\t\t\t\tconst prevNavMenuValue = this._prevNavMenuValue();\n\t\t\t\tconst isPrevLink = untracked(() => this._navigationMenu.isLink(prevNavMenuValue));\n\n\t\t\t\tif (prevNavMenuValue && !isPrevLink) {\n\t\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(prevNavMenuValue) ? 'from-end' : 'from-start';\n\t\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t\t}\n\t\t\t} else if (wasActive) {\n\t\t\t\tconst navMenuValue = this._navMenuValue();\n\t\t\t\tconst isLink = untracked(() => this._navigationMenu.isLink(navMenuValue));\n\t\t\t\tif (!navMenuValue || isLink) return;\n\n\t\t\t\tconst motion = menuItemsIds.indexOf(id) > menuItemsIds.indexOf(navMenuValue) ? 'to-end' : 'to-start';\n\t\t\t\tthis._renderer.setAttribute(el, 'data-motion', motion);\n\t\t\t}\n\t\t});\n\t}\n}\n","import { computed, Directive } from '@angular/core';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\n@Directive({\n\tselector: 'ul[brnNavigationMenuList]',\n\thost: {\n\t\t'[attr.data-orientation]': '_orientation()',\n\t\t'data-slot': 'navigation-menu-list',\n\t},\n})\nexport class BrnNavigationMenuList {\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\n\tprotected readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n}\n","import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';\nimport { hasModifierKey } from '@angular/cdk/keycodes';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n\tcomputed,\n\tDirective,\n\teffect,\n\tElementRef,\n\tinject,\n\tNgZone,\n\tOnDestroy,\n\tOnInit,\n\tPLATFORM_ID,\n\tuntracked,\n\tViewContainerRef,\n} from '@angular/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { BrnButton } from '@spartan-ng/brain/button';\nimport { createHoverObservable, isElement } from '@spartan-ng/brain/core';\nimport { fromEvent, merge, Observable, of, Subject } from 'rxjs';\nimport {\n\tdebounceTime,\n\tdelay,\n\tdistinctUntilChanged,\n\tfilter,\n\tmap,\n\tshare,\n\tswitchMap,\n\ttakeUntil,\n\ttap,\n} from 'rxjs/operators';\nimport { BrnNavigationMenuContentService } from './brn-navigation-menu-content.service';\nimport { BrnNavigationMenuItem } from './brn-navigation-menu-item';\nimport { provideBrnNavigationMenuFocusable } from './brn-navigation-menu-item-focusable.token';\nimport { injectBrnNavigationMenuItem } from './brn-navigation-menu-item.token';\nimport { injectBrnNavigationMenu } from './brn-navigation-menu.token';\n\ninterface TriggerEvent {\n\ttype: 'click' | 'hover' | 'set';\n\tvisible: boolean;\n\trelatedTarget?: EventTarget | null;\n}\n\n@Directive({\n\tselector: 'button[brnNavigationMenuTrigger]',\n\tproviders: [provideBrnNavigationMenuFocusable(BrnNavigationMenuTrigger)],\n\thostDirectives: [\n\t\t{\n\t\t\tdirective: BrnButton,\n\t\t\tinputs: ['disabled'],\n\t\t},\n\t],\n\thost: {\n\t\t'(keydown.escape)': 'onEscape($event)',\n\t\t'(keydown.tab)': 'onTab($event)',\n\t\t'(focus)': 'handleFocus()',\n\t\t'[id]': '_id',\n\t\t'[attr.data-state]': '_state()',\n\t\t'[attr.aria-expanded]': '_isActive()',\n\t\t'[attr.aria-controls]': '_contentId',\n\t\t'data-slot': 'navigation-menu-trigger',\n\t},\n})\nexport class BrnNavigationMenuTrigger implements OnInit, OnDestroy, FocusableOption {\n\tprivate static _id = 0;\n\n\tprivate readonly _isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n\tprivate readonly _navigationMenu = injectBrnNavigationMenu();\n\tprivate readonly _navigationMenuItem = injectBrnNavigationMenuItem();\n\tprivate readonly _destroy$ = new Subject<void>();\n\tprivate readonly _vcr = inject(ViewContainerRef);\n\tprivate readonly _zone = inject(NgZone);\n\tprivate readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\n\tprivate readonly _contentService = inject(BrnNavigationMenuContentService);\n\n\tprotected readonly _id = `brn-navigation-menu-trigger-${++BrnNavigationMenuTrigger._id}`;\n\n\tprivate readonly _parentNavMenu = this._navigationMenu.parentNavMenu;\n\n\tprotected readonly _isActive = this._navigationMenuItem.isActive;\n\n\tprotected readonly _contentId = this._contentService.id;\n\n\tprotected readonly _state = this._navigationMenuItem.state;\n\n\tprivate readonly _dir = computed(() => this._navigationMenu.context().dir);\n\n\tprivate readonly _orientation = computed(() => this._navigationMenu.context().orientation);\n\n\tprivate readonly _isOpenDelayed = this._navigationMenu.isOpenDelayed;\n\n\tprivate readonly _delayDuration = this._navigationMenu.delayDuration;\n\n\tprivate readonly _contentTemplate = this._navigationMenuItem.contentTemplate;\n\n\tprivate readonly _isSubNavVisible = toSignal(this._navigationMenuItem.subNavVisible$.pipe(switchMap((c) => c)), {\n\t\tinitialValue: false,\n\t});\n\n\tprivate readonly _isActive$: Observable<TriggerEvent> = toObservable(this._navigationMenuItem.isActive).pipe(\n\t\tmap((value) => ({ type: 'set', visible: value })),\n\t);\n\n\tprivate readonly _clicked$: Observable<TriggerEvent> = fromEvent(this._el.nativeElement, 'click').pipe(\n\t\tmap(() => !this._navigationMenuItem.isActive()),\n\t\tmap((value) => ({ type: 'click', visible: value })),\n\t);\n\n\tprivate readonly _hovered$: Observable<TriggerEvent> = merge(\n\t\tcreateHoverObservable(this._el.nativeElement, this._zone, this._destroy$),\n\t\tthis._contentService.hovered$.pipe(map((v) => ({ hover: v, relatedTarget: null }))),\n\t).pipe(\n\t\t// Hover event is NOT allowed when a sub-navigation is currently visible, AND the current hover event is false.\n\t\tfilter((e) => !(this._isSubNavVisible() && !e.hover)),\n\t\tmap((e) => ({ type: 'hover' as const, visible: e.hover, relatedTarget: e.relatedTarget })),\n\t);\n\n\tprivate readonly _showing$ = merge(this._isActive$, this._clicked$, this._hovered$).pipe(\n\t\tdebounceTime(0),\n\t\tdistinctUntilChanged((prev, curr) => prev.visible === curr.visible),\n\t\tswitchMap((ev) => {\n\t\t\tconst shouldDelay = ev.visible && ev.type !== 'click' && this._isOpenDelayed();\n\t\t\treturn of(ev).pipe(delay(shouldDelay ? this._delayDuration() : 0));\n\t\t}),\n\t\t// Deactivate needs to be called if the menu item content is hidden with a user click OR\n\t\t// If nav item is hovered out to a disabled sibling nav item\n\t\ttap((ev) => {\n\t\t\tif (ev.visible) {\n\t\t\t\tthis._activate();\n\t\t\t} else {\n\t\t\t\tconst shouldDeactivate =\n\t\t\t\t\t(ev.type === 'click' || !this._isHoverOnSibling(ev)) && this._navigationMenuItem.isActive();\n\n\t\t\t\tif (shouldDeactivate) {\n\t\t\t\t\tthis._deactivate();\n\t\t\t\t}\n\t\t\t}\n\t\t}),\n\t\tshare(),\n\t\ttakeUntil(this._destroy$),\n\t);\n\n\tpublic get disabled() {\n\t\treturn this._navigationMenuItem.disabled();\n\t}\n\n\tconstructor() {\n\t\teffect(() => {\n\t\t\tconst value = this._contentTemplate();\n\t\t\tuntracked(() => {\n\t\t\t\tif (value) {\n\t\t\t\t\tthis._contentService.setContent(value, this._vcr);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst orientation = this._orientation();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateOrientation(orientation);\n\t\t\t});\n\t\t});\n\n\t\teffect(() => {\n\t\t\tconst dir = this._dir();\n\t\t\tuntracked(() => {\n\t\t\t\tthis._contentService.updateDirection(dir);\n\t\t\t});\n\t\t});\n\t}\n\n\tpublic ngOnInit() {\n\t\tthis._contentService.setConfig({ attachTo: this._el, direction: this._dir(), orientation: this._orientation() });\n\t\tthis._showing$.pipe(takeUntil(this._destroy$)).subscribe((ev) => {\n\t\t\tif (this._parentNavMenu) {\n\t\t\t\tthis._parentNavMenu.subNavVisible$.next(ev.visible);\n\t\t\t}\n\n\t\t\tif (ev.visible) {\n\t\t\t\tif (this._isBrowser) {\n\t\t\t\t\tthis._contentService.show();\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthis._contentService.hide();\n\t\t\t}\n\t\t});\n\n\t\tthis._contentService.escapePressed$.pipe(takeUntil(this._destroy$)).subscribe((e) => {\n\t\t\te.preventDefault();\n\t\t\tthis._el.nativeElement.focus();\n\t\t\tthis._deactivate();\n\t\t});\n\t}\n\n\tpublic ngOnDestroy() {\n\t\tthis._destroy$.next();\n\t\tthis._destroy$.complete();\n\t}\n\n\tpublic focus(_origin?: FocusOrigin) {\n\t\tif (this._navigationMenuItem.disabled()) return;\n\n\t\tthis._el.nativeElement.focus();\n\t}\n\n\tprotected handleFocus() {\n\t\tthis._navigationMenu.setActiveItem(this);\n\t}\n\n\tprotected onTab(e: KeyboardEvent) {\n\t\tconst contentEl = this._contentService.contentEl();\n\n\t\tif (contentEl && !hasModifierKey(e)) {\n\t\t\te.preventDefault();\n\t\t\tcontentEl.focus();\n\t\t}\n\t}\n\n\tprotected onEscape(e: KeyboardEvent) {\n\t\te.preventDefault();\n\t\tthis._deactivate();\n\t}\n\n\tprivate _activate() {\n\t\tthis._navigationMenu.value.set(this._navigationMenuItem.id());\n\t}\n\n\tprivate _deactivate() {\n\t\tthis._navigationMenu.value.set(undefined);\n\t}\n\n\tprivate _isHoverOnSibling(ev: TriggerEvent): boolean {\n\t\tif (ev.type !== 'hover' || !isElement(ev.relatedTarget)) return false;\n\n\t\tconst menuItem = this._isMenuItemOrChild(ev.relatedTarget);\n\n\t\treturn !!menuItem && !menuItem.disabled();\n\t}\n\n\tprivate _isMenuItemOrChild(node: Node): BrnNavigationMenuItem | undefined {\n\t\treturn this._navigationMenu\n\t\t\t.menuItems()\n\t\t\t.find((ref) => ref.el.nativeElement === node || ref.el.nativeElement.contains(node));\n\t}\n}\n","import { BrnNavigationMenu } from './lib/brn-navigation-menu';\nimport { BrnNavigationMenuContent } from './lib/brn-navigation-menu-content';\nimport { BrnNavigationMenuItem } from './lib/brn-navigation-menu-item';\nimport { BrnNavigationMenuLink } from './lib/brn-navigation-menu-link';\nimport { BrnNavigationMenuList } from './lib/brn-navigation-menu-list';\nimport { BrnNavigationMenuTrigger } from './lib/brn-navigation-menu-trigger';\n\nexport * from './lib/brn-navigation-menu';\nexport * from './lib/brn-navigation-menu-content';\nexport * from './lib/brn-navigation-menu-item';\nexport * from './lib/brn-navigation-menu-link';\nexport * from './lib/brn-navigation-menu-list';\nexport * from './lib/brn-navigation-menu-trigger';\n\nexport const BrnNavigationMenuImports = [\n\tBrnNavigationMenu,\n\tBrnNavigationMenuItem,\n\tBrnNavigationMenuList,\n\tBrnNavigationMenuTrigger,\n\tBrnNavigationMenuContent,\n\tBrnNavigationMenuLink,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -94,9 +94,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
94
94
|
type: Component,
|
|
95
95
|
args: [{
|
|
96
96
|
selector: 'brn-popover',
|
|
97
|
-
|
|
98
|
-
<ng-content />
|
|
99
|
-
`,
|
|
97
|
+
exportAs: 'brnPopover',
|
|
100
98
|
providers: [
|
|
101
99
|
{
|
|
102
100
|
provide: BrnDialog,
|
|
@@ -105,7 +103,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
105
103
|
provideBrnDialogDefaultOptions(BRN_POPOVER_DIALOG_DEFAULT_OPTIONS),
|
|
106
104
|
],
|
|
107
105
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
108
|
-
|
|
106
|
+
template: `
|
|
107
|
+
<ng-content />
|
|
108
|
+
`,
|
|
109
109
|
}]
|
|
110
110
|
}], ctorParameters: () => [] });
|
|
111
111
|
|
|
@@ -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 { type FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tforwardRef,\n\tinput,\n\tnumberAttribute,\n\tuntracked,\n} from '@angular/core';\nimport { BrnDialog, type 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\texportAs: 'brnPopover',\n})\nexport class BrnPopover extends BrnDialog {\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\tpublic readonly sideOffset = input(0, { transform: numberAttribute });\n\tpublic readonly offsetX = input(0, { transform: numberAttribute });\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\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\teffect(() => {\n\t\t\tconst offsetX = this.offsetX();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applyOffsetX(offsetX);\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst attachTo = this.mutableAttachTo();\n\t\t\tconst positions = this.mutableAttachPositions();\n\t\t\tif (!attachTo || !positions || positions.length === 0) return;\n\t\t\tuntracked(() => {\n\t\t\t\tif (!this._positionStrategy) {\n\t\t\t\t\tthis._positionStrategy = this.positionBuilder.flexibleConnectedTo(attachTo).withPush(false);\n\t\t\t\t} else {\n\t\t\t\t\tthis._positionStrategy.setOrigin(attachTo);\n\t\t\t\t}\n\t\t\t\tthis._positionStrategy.withPositions(positions);\n\t\t\t\tthis.mutablePositionStrategy.set(this._positionStrategy);\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\tprivate applyOffsetX(offsetX: number) {\n\t\tthis.mutableAttachPositions.update((positions) =>\n\t\t\tpositions.map((position) => ({\n\t\t\t\t...position,\n\t\t\t\toffsetX,\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, effect, ElementRef, 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\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\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t\tthis._brnDialog.mutableCloseOnOutsidePointerEvents.set(true);\n\t}\n}\n","import { 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 * 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 { type FlexibleConnectedPositionStrategy } from '@angular/cdk/overlay';\nimport {\n\tChangeDetectionStrategy,\n\tComponent,\n\teffect,\n\tforwardRef,\n\tinput,\n\tnumberAttribute,\n\tuntracked,\n} from '@angular/core';\nimport { BrnDialog, type 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\texportAs: 'brnPopover',\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\ttemplate: `\n\t\t<ng-content />\n\t`,\n})\nexport class BrnPopover extends BrnDialog {\n\tpublic readonly align = input<BrnPopoverAlign>('center');\n\tpublic readonly sideOffset = input(0, { transform: numberAttribute });\n\tpublic readonly offsetX = input(0, { transform: numberAttribute });\n\tprivate _positionStrategy?: FlexibleConnectedPositionStrategy;\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\teffect(() => {\n\t\t\tconst offsetX = this.offsetX();\n\t\t\tuntracked(() => {\n\t\t\t\tthis.applyOffsetX(offsetX);\n\t\t\t});\n\t\t});\n\t\teffect(() => {\n\t\t\tconst attachTo = this.mutableAttachTo();\n\t\t\tconst positions = this.mutableAttachPositions();\n\t\t\tif (!attachTo || !positions || positions.length === 0) return;\n\t\t\tuntracked(() => {\n\t\t\t\tif (!this._positionStrategy) {\n\t\t\t\t\tthis._positionStrategy = this.positionBuilder.flexibleConnectedTo(attachTo).withPush(false);\n\t\t\t\t} else {\n\t\t\t\t\tthis._positionStrategy.setOrigin(attachTo);\n\t\t\t\t}\n\t\t\t\tthis._positionStrategy.withPositions(positions);\n\t\t\t\tthis.mutablePositionStrategy.set(this._positionStrategy);\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\tprivate applyOffsetX(offsetX: number) {\n\t\tthis.mutableAttachPositions.update((positions) =>\n\t\t\tpositions.map((position) => ({\n\t\t\t\t...position,\n\t\t\t\toffsetX,\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, effect, ElementRef, 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\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\n\t\tif (!this._brnDialog) return;\n\t\tthis._brnDialog.mutableAttachTo.set(this._host.nativeElement);\n\t\tthis._brnDialog.mutableCloseOnOutsidePointerEvents.set(true);\n\t}\n}\n","import { 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 * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -142,6 +142,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
142
142
|
type: Component,
|
|
143
143
|
args: [{
|
|
144
144
|
selector: 'brn-radio',
|
|
145
|
+
exportAs: 'brnRadio',
|
|
146
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
145
147
|
host: {
|
|
146
148
|
class: 'brn-radio',
|
|
147
149
|
'[attr.id]': '_hostId()',
|
|
@@ -160,8 +162,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
160
162
|
// the focus to the native element.
|
|
161
163
|
'(focus)': '_inputElement().nativeElement.focus()',
|
|
162
164
|
},
|
|
163
|
-
exportAs: 'brnRadio',
|
|
164
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
165
165
|
template: `
|
|
166
166
|
<div data-slot="indicator" class="flex h-fit w-fit empty:hidden" (click)="onTouchTargetClick($event)">
|
|
167
167
|
<ng-content select="[target],[indicator]" />
|