@odx/angular 12.21.4 → 12.21.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/fesm2022/odx-angular-animations.mjs.map +1 -1
  3. package/fesm2022/odx-angular-breakpoints.mjs +1 -1
  4. package/fesm2022/odx-angular-breakpoints.mjs.map +1 -1
  5. package/fesm2022/odx-angular-cdk-a11y.mjs +1 -1
  6. package/fesm2022/odx-angular-cdk-a11y.mjs.map +1 -1
  7. package/fesm2022/odx-angular-cdk-active-indicator.mjs +1 -1
  8. package/fesm2022/odx-angular-cdk-active-indicator.mjs.map +1 -1
  9. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs +1 -1
  10. package/fesm2022/odx-angular-cdk-autocomplete-control.mjs.map +1 -1
  11. package/fesm2022/odx-angular-cdk-checkbox-control.mjs +1 -1
  12. package/fesm2022/odx-angular-cdk-checkbox-control.mjs.map +1 -1
  13. package/fesm2022/odx-angular-cdk-connected-overlay.mjs +1 -1
  14. package/fesm2022/odx-angular-cdk-connected-overlay.mjs.map +1 -1
  15. package/fesm2022/odx-angular-cdk-custom-form-control.mjs +1 -1
  16. package/fesm2022/odx-angular-cdk-custom-form-control.mjs.map +1 -1
  17. package/fesm2022/odx-angular-cdk-date-input.mjs.map +1 -1
  18. package/fesm2022/odx-angular-cdk-dynamic-view.mjs +1 -1
  19. package/fesm2022/odx-angular-cdk-dynamic-view.mjs.map +1 -1
  20. package/fesm2022/odx-angular-cdk-event-plugins.mjs.map +1 -1
  21. package/fesm2022/odx-angular-cdk-expandable.mjs +1 -1
  22. package/fesm2022/odx-angular-cdk-expandable.mjs.map +1 -1
  23. package/fesm2022/odx-angular-cdk-option-control.mjs +1 -1
  24. package/fesm2022/odx-angular-cdk-option-control.mjs.map +1 -1
  25. package/fesm2022/odx-angular-cdk-radio-group-control.mjs +1 -1
  26. package/fesm2022/odx-angular-cdk-radio-group-control.mjs.map +1 -1
  27. package/fesm2022/odx-angular-cdk-scrollable.mjs.map +1 -1
  28. package/fesm2022/odx-angular-components-accordion.mjs +1 -1
  29. package/fesm2022/odx-angular-components-accordion.mjs.map +1 -1
  30. package/fesm2022/odx-angular-components-action-group.mjs +1 -1
  31. package/fesm2022/odx-angular-components-action-group.mjs.map +1 -1
  32. package/fesm2022/odx-angular-components-anchor-navigation.mjs +1 -1
  33. package/fesm2022/odx-angular-components-anchor-navigation.mjs.map +1 -1
  34. package/fesm2022/odx-angular-components-area-header.mjs +1 -1
  35. package/fesm2022/odx-angular-components-area-header.mjs.map +1 -1
  36. package/fesm2022/odx-angular-components-autocomplete.mjs +1 -1
  37. package/fesm2022/odx-angular-components-autocomplete.mjs.map +1 -1
  38. package/fesm2022/odx-angular-components-avatar.mjs +1 -1
  39. package/fesm2022/odx-angular-components-avatar.mjs.map +1 -1
  40. package/fesm2022/odx-angular-components-badge.mjs +1 -1
  41. package/fesm2022/odx-angular-components-badge.mjs.map +1 -1
  42. package/fesm2022/odx-angular-components-bar.mjs +1 -1
  43. package/fesm2022/odx-angular-components-bar.mjs.map +1 -1
  44. package/fesm2022/odx-angular-components-breadcrumbs.mjs +1 -1
  45. package/fesm2022/odx-angular-components-breadcrumbs.mjs.map +1 -1
  46. package/fesm2022/odx-angular-components-button-group.mjs +1 -1
  47. package/fesm2022/odx-angular-components-button-group.mjs.map +1 -1
  48. package/fesm2022/odx-angular-components-button.mjs +1 -1
  49. package/fesm2022/odx-angular-components-button.mjs.map +1 -1
  50. package/fesm2022/odx-angular-components-calendar.mjs +2 -2
  51. package/fesm2022/odx-angular-components-calendar.mjs.map +1 -1
  52. package/fesm2022/odx-angular-components-card.mjs +2 -2
  53. package/fesm2022/odx-angular-components-card.mjs.map +1 -1
  54. package/fesm2022/odx-angular-components-checkbox.mjs +1 -1
  55. package/fesm2022/odx-angular-components-checkbox.mjs.map +1 -1
  56. package/fesm2022/odx-angular-components-chip.mjs +1 -1
  57. package/fesm2022/odx-angular-components-chip.mjs.map +1 -1
  58. package/fesm2022/odx-angular-components-circular-progress.mjs +1 -1
  59. package/fesm2022/odx-angular-components-circular-progress.mjs.map +1 -1
  60. package/fesm2022/odx-angular-components-content-box.mjs +1 -1
  61. package/fesm2022/odx-angular-components-content-box.mjs.map +1 -1
  62. package/fesm2022/odx-angular-components-data-table.mjs +1 -1
  63. package/fesm2022/odx-angular-components-data-table.mjs.map +1 -1
  64. package/fesm2022/odx-angular-components-datepicker.mjs +2 -2
  65. package/fesm2022/odx-angular-components-datepicker.mjs.map +1 -1
  66. package/fesm2022/odx-angular-components-daterangepicker.mjs +3 -3
  67. package/fesm2022/odx-angular-components-daterangepicker.mjs.map +1 -1
  68. package/fesm2022/odx-angular-components-dropdown.mjs +1 -1
  69. package/fesm2022/odx-angular-components-dropdown.mjs.map +1 -1
  70. package/fesm2022/odx-angular-components-error-page.mjs +1 -1
  71. package/fesm2022/odx-angular-components-error-page.mjs.map +1 -1
  72. package/fesm2022/odx-angular-components-footer.mjs +2 -2
  73. package/fesm2022/odx-angular-components-footer.mjs.map +1 -1
  74. package/fesm2022/odx-angular-components-form-field.mjs +1 -1
  75. package/fesm2022/odx-angular-components-form-field.mjs.map +1 -1
  76. package/fesm2022/odx-angular-components-header-navigation.mjs +1 -1
  77. package/fesm2022/odx-angular-components-header-navigation.mjs.map +1 -1
  78. package/fesm2022/odx-angular-components-header.mjs +1 -1
  79. package/fesm2022/odx-angular-components-header.mjs.map +1 -1
  80. package/fesm2022/odx-angular-components-icon.mjs +1 -1
  81. package/fesm2022/odx-angular-components-icon.mjs.map +1 -1
  82. package/fesm2022/odx-angular-components-inline-message.mjs +1 -1
  83. package/fesm2022/odx-angular-components-inline-message.mjs.map +1 -1
  84. package/fesm2022/odx-angular-components-link.mjs.map +1 -1
  85. package/fesm2022/odx-angular-components-list.mjs +2 -2
  86. package/fesm2022/odx-angular-components-list.mjs.map +1 -1
  87. package/fesm2022/odx-angular-components-loading-spinner.mjs +1 -1
  88. package/fesm2022/odx-angular-components-loading-spinner.mjs.map +1 -1
  89. package/fesm2022/odx-angular-components-logo.mjs +1 -1
  90. package/fesm2022/odx-angular-components-logo.mjs.map +1 -1
  91. package/fesm2022/odx-angular-components-main-menu.mjs +2 -2
  92. package/fesm2022/odx-angular-components-main-menu.mjs.map +1 -1
  93. package/fesm2022/odx-angular-components-mainfilter-group.mjs +1 -1
  94. package/fesm2022/odx-angular-components-mainfilter-group.mjs.map +1 -1
  95. package/fesm2022/odx-angular-components-menu.mjs +1 -1
  96. package/fesm2022/odx-angular-components-menu.mjs.map +1 -1
  97. package/fesm2022/odx-angular-components-modal.mjs +1 -1
  98. package/fesm2022/odx-angular-components-modal.mjs.map +1 -1
  99. package/fesm2022/odx-angular-components-navigation-back.mjs +1 -1
  100. package/fesm2022/odx-angular-components-navigation-back.mjs.map +1 -1
  101. package/fesm2022/odx-angular-components-notification-testing.mjs.map +1 -1
  102. package/fesm2022/odx-angular-components-notification.mjs +3 -3
  103. package/fesm2022/odx-angular-components-notification.mjs.map +1 -1
  104. package/fesm2022/odx-angular-components-paginator.mjs +1 -1
  105. package/fesm2022/odx-angular-components-paginator.mjs.map +1 -1
  106. package/fesm2022/odx-angular-components-progress.mjs +1 -1
  107. package/fesm2022/odx-angular-components-progress.mjs.map +1 -1
  108. package/fesm2022/odx-angular-components-radio-group.mjs +1 -1
  109. package/fesm2022/odx-angular-components-radio-group.mjs.map +1 -1
  110. package/fesm2022/odx-angular-components-rail-navigation.mjs +1 -1
  111. package/fesm2022/odx-angular-components-rail-navigation.mjs.map +1 -1
  112. package/fesm2022/odx-angular-components-rich-list.mjs +1 -1
  113. package/fesm2022/odx-angular-components-rich-list.mjs.map +1 -1
  114. package/fesm2022/odx-angular-components-search-bar.mjs.map +1 -1
  115. package/fesm2022/odx-angular-components-select.mjs +1 -1
  116. package/fesm2022/odx-angular-components-select.mjs.map +1 -1
  117. package/fesm2022/odx-angular-components-slider.mjs +1 -1
  118. package/fesm2022/odx-angular-components-slider.mjs.map +1 -1
  119. package/fesm2022/odx-angular-components-spinbox.mjs +1 -1
  120. package/fesm2022/odx-angular-components-spinbox.mjs.map +1 -1
  121. package/fesm2022/odx-angular-components-switch.mjs +1 -1
  122. package/fesm2022/odx-angular-components-switch.mjs.map +1 -1
  123. package/fesm2022/odx-angular-components-tab-bar.mjs +1 -1
  124. package/fesm2022/odx-angular-components-tab-bar.mjs.map +1 -1
  125. package/fesm2022/odx-angular-components-table.mjs +1 -1
  126. package/fesm2022/odx-angular-components-table.mjs.map +1 -1
  127. package/fesm2022/odx-angular-components-timepicker.mjs +2 -2
  128. package/fesm2022/odx-angular-components-timepicker.mjs.map +1 -1
  129. package/fesm2022/odx-angular-components-toast.mjs +1 -1
  130. package/fesm2022/odx-angular-components-toast.mjs.map +1 -1
  131. package/fesm2022/odx-angular-components-toggle-button-group.mjs +1 -1
  132. package/fesm2022/odx-angular-components-toggle-button-group.mjs.map +1 -1
  133. package/fesm2022/odx-angular-components-tooltip.mjs +1 -1
  134. package/fesm2022/odx-angular-components-tooltip.mjs.map +1 -1
  135. package/fesm2022/odx-angular-components-wizard.mjs +1 -1
  136. package/fesm2022/odx-angular-components-wizard.mjs.map +1 -1
  137. package/fesm2022/odx-angular-internal-translate.mjs.map +1 -1
  138. package/fesm2022/odx-angular-internal.mjs.map +1 -1
  139. package/fesm2022/odx-angular-localization.mjs.map +1 -1
  140. package/fesm2022/odx-angular-rxjs.mjs.map +1 -1
  141. package/fesm2022/odx-angular-sdk.mjs.map +1 -1
  142. package/fesm2022/odx-angular-theming.mjs.map +1 -1
  143. package/fesm2022/odx-angular-utils.mjs.map +1 -1
  144. package/fesm2022/odx-angular.mjs +2 -2
  145. package/fesm2022/odx-angular.mjs.map +1 -1
  146. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-loading-spinner.mjs","sources":["../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.directive.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.html","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.module.ts","../../../../libs/angular/components/loading-spinner/src/odx-angular-components-loading-spinner.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, Injector, Input, numberAttribute, Renderer2 } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { DynamicViewRef, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deferFn, injectElement, px } from '@odx/angular/utils';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\n\nconst LOADING_SPINNER_PARENT_CLASS = 'odx-loading-spinner-parent';\n\n/**\n * A directive that controls the display of a loading spinner overlay on the host element.\n * This directive can dynamically create or remove a loading spinner based on the `isLoading` state.\n * It modifies the host element's styles to ensure the spinner is displayed correctly, and optionally,\n * it can set a minimum height to prevent layout shifts.\n */\n@Directive({\n standalone: true,\n selector: '[odxLoadingSpinner]',\n // providers: [DisabledController.connect()],\n})\nexport class LoadingSpinnerDirective {\n // private readonly disabledController = DisabledController.inject();\n // private readonly hasDisabledControllerOnHost = !!inject(DisabledController, { optional: true });\n private readonly dynamicViewService = inject(DynamicViewService);\n private readonly hostElement = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly windowRef = inject(WindowRef);\n\n private parentMinHeight?: number;\n private viewRef: DynamicViewRef<typeof LoadingSpinnerComponent> | null = null;\n\n /**\n * Whether the spinner should automatically adjust its color based on the background.\n * Allows the user to specify if the spinner should use automatic color adjustment.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxLoadingSpinnerAutoColor', transform: booleanAttribute })\n public autoColor = false;\n\n /**\n * Controls whether the spinner is visible or not.\n * Manages the loading state, showing or hiding the spinner accordingly.\n *\n * @type {boolean}\n */\n @Input({ alias: 'odxLoadingSpinner', transform: booleanAttribute })\n public set isLoading(value: boolean) {\n // TODO: Find out if something breaks by removing those lines\n // if (!this.hasDisabledControllerOnHost) {\n // this.disabledController?.setDisabledState(value);\n // }\n if (value) {\n this.createSpinner();\n } else {\n this.removeSpinner();\n }\n }\n public get isLoading(): boolean {\n return this.viewRef !== null;\n }\n\n /**\n * Sets the minimum height for the host element when the spinner is active, to avoid layout shifts.\n * Specifies the minimum height for the spinner's parent element.\n *\n * @type {number}\n */\n @Input({ alias: 'odxLoadingSpinnerMinHeight', transform: numberAttribute })\n public set minHeight(value: number) {\n this.parentMinHeight = value;\n this.isLoading && this.setParentHeight();\n }\n\n /**\n * Resets styles applied to the parent element when the spinner is removed.\n * Removes the class, minHeight, and position styles.\n */\n public resetParentStyles(): void {\n this.renderer.removeClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.renderer.removeStyle(this.hostElement.nativeElement, 'minHeight');\n this.renderer.removeStyle(this.hostElement.nativeElement, 'position');\n }\n\n private setParentHeight(): void {\n this.renderer.setStyle(this.hostElement.nativeElement, 'minHeight', this.parentMinHeight ? px(this.parentMinHeight) : 'inherit');\n }\n\n private createSpinner(): void {\n this.renderer.addClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.setParentHeight();\n if (this.hasStaticPosition()) {\n this.renderer.setStyle(this.hostElement.nativeElement, 'position', 'relative');\n }\n this.viewRef = this.dynamicViewService.createView(LoadingSpinnerComponent, {\n injector: this.injector,\n context: { autoColor: this.autoColor },\n host: this.hostElement.nativeElement,\n });\n deferFn(() => (this.hostElement.nativeElement.scrollTop = 0));\n }\n\n private removeSpinner(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n private hasStaticPosition(): boolean {\n return this.windowRef.nativeWindow.getComputedStyle(this.hostElement.nativeElement).position === 'static';\n }\n}\n","import { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fadeIn, fadeOut } from '@odx/angular/animations';\nimport { CircularProgressComponent } from '@odx/angular/components/circular-progress';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst BROWSER_TRANSPARENT_COLOR = 'rgba(0, 0, 0, 0)';\n\n/**\n * Represents a loading spinner component.\n */\n@CSSComponent('loading-spinner')\n@Component({\n standalone: true,\n selector: 'odx-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n imports: [CircularProgressComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@hostAnimation]': 'true',\n '(@hostAnimation.done)': 'animationFinished($event)',\n },\n animations: [trigger('hostAnimation', [transition(':enter', useAnimation(fadeIn())), transition(':leave', useAnimation(fadeOut()))])],\n})\nexport class LoadingSpinnerComponent implements OnInit {\n private readonly host = inject(LoadingSpinnerDirective);\n private readonly windowRef = inject(WindowRef);\n\n protected backgroundColor: string | null = null;\n\n public readonly element = injectElement();\n\n /**\n * Indicates whether the color of the loading spinner should be automatically determined.\n * If set to true, the color will be based on the theme of the parent container.\n * If set to false, the color will be the default color specified in the component's styles.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input()\n public autoColor = false;\n\n public ngOnInit(): void {\n this.backgroundColor = this.resolveBackgroundColor(this.element.nativeElement);\n }\n\n protected animationFinished({ toState }: AnimationEvent): void {\n if (toState === 'void') {\n this.host.resetParentStyles();\n }\n }\n\n private resolveBackgroundColor(element: HTMLElement): string | null {\n const { backgroundColor } = this.windowRef.nativeWindow.getComputedStyle(element);\n if (backgroundColor !== BROWSER_TRANSPARENT_COLOR) {\n return backgroundColor;\n }\n if (element.parentElement) {\n return this.resolveBackgroundColor(element.parentElement);\n }\n return null;\n }\n}\n","<odx-circular-progress size=\"auto\" value=\"-1\" />\n<div class=\"odx-loading-spinner__backdrop\" [style.backgroundColor]=\"backgroundColor\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst modules = [LoadingSpinnerComponent, LoadingSpinnerDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class LoadingSpinnerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-loading-spinner.mjs","sources":["../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.directive.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.ts","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.component.html","../../../../libs/angular/components/loading-spinner/src/lib/loading-spinner.module.ts","../../../../libs/angular/components/loading-spinner/src/odx-angular-components-loading-spinner.ts"],"sourcesContent":["import { booleanAttribute, Directive, inject, Injector, Input, numberAttribute, Renderer2 } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { DynamicViewRef, DynamicViewService } from '@odx/angular/cdk/dynamic-view';\nimport { deferFn, injectElement, px } from '@odx/angular/utils';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\n\nconst LOADING_SPINNER_PARENT_CLASS = 'odx-loading-spinner-parent';\n\n/**\n * A directive that controls the display of a loading spinner overlay on the host element.\n * This directive can dynamically create or remove a loading spinner based on the `isLoading` state.\n * It modifies the host element's styles to ensure the spinner is displayed correctly, and optionally,\n * it can set a minimum height to prevent layout shifts.\n */\n@Directive({\n standalone: true,\n selector: '[odxLoadingSpinner]',\n // providers: [DisabledController.connect()],\n})\nexport class LoadingSpinnerDirective {\n // private readonly disabledController = DisabledController.inject();\n // private readonly hasDisabledControllerOnHost = !!inject(DisabledController, { optional: true });\n private readonly dynamicViewService = inject(DynamicViewService);\n private readonly hostElement = injectElement();\n private readonly renderer = inject(Renderer2);\n private readonly injector = inject(Injector);\n private readonly windowRef = inject(WindowRef);\n\n private parentMinHeight?: number;\n private viewRef: DynamicViewRef<typeof LoadingSpinnerComponent> | null = null;\n\n /**\n * Whether the spinner should automatically adjust its color based on the background.\n * Allows the user to specify if the spinner should use automatic color adjustment.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ alias: 'odxLoadingSpinnerAutoColor', transform: booleanAttribute })\n public autoColor = false;\n\n /**\n * Controls whether the spinner is visible or not.\n * Manages the loading state, showing or hiding the spinner accordingly.\n *\n * @type {boolean}\n */\n @Input({ alias: 'odxLoadingSpinner', transform: booleanAttribute })\n public set isLoading(value: boolean) {\n // TODO: Find out if something breaks by removing those lines\n // if (!this.hasDisabledControllerOnHost) {\n // this.disabledController?.setDisabledState(value);\n // }\n if (value) {\n this.createSpinner();\n } else {\n this.removeSpinner();\n }\n }\n public get isLoading(): boolean {\n return this.viewRef !== null;\n }\n\n /**\n * Sets the minimum height for the host element when the spinner is active, to avoid layout shifts.\n * Specifies the minimum height for the spinner's parent element.\n *\n * @type {number}\n */\n @Input({ alias: 'odxLoadingSpinnerMinHeight', transform: numberAttribute })\n public set minHeight(value: number) {\n this.parentMinHeight = value;\n this.isLoading && this.setParentHeight();\n }\n\n /**\n * Resets styles applied to the parent element when the spinner is removed.\n * Removes the class, minHeight, and position styles.\n */\n public resetParentStyles(): void {\n this.renderer.removeClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.renderer.removeStyle(this.hostElement.nativeElement, 'minHeight');\n this.renderer.removeStyle(this.hostElement.nativeElement, 'position');\n }\n\n private setParentHeight(): void {\n this.renderer.setStyle(this.hostElement.nativeElement, 'minHeight', this.parentMinHeight ? px(this.parentMinHeight) : 'inherit');\n }\n\n private createSpinner(): void {\n this.renderer.addClass(this.hostElement.nativeElement, LOADING_SPINNER_PARENT_CLASS);\n this.setParentHeight();\n if (this.hasStaticPosition()) {\n this.renderer.setStyle(this.hostElement.nativeElement, 'position', 'relative');\n }\n this.viewRef = this.dynamicViewService.createView(LoadingSpinnerComponent, {\n injector: this.injector,\n context: { autoColor: this.autoColor },\n host: this.hostElement.nativeElement,\n });\n deferFn(() => (this.hostElement.nativeElement.scrollTop = 0));\n }\n\n private removeSpinner(): void {\n this.viewRef?.destroy();\n this.viewRef = null;\n }\n\n private hasStaticPosition(): boolean {\n return this.windowRef.nativeWindow.getComputedStyle(this.hostElement.nativeElement).position === 'static';\n }\n}\n","import { AnimationEvent, transition, trigger, useAnimation } from '@angular/animations';\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation, inject } from '@angular/core';\nimport { WindowRef } from '@odx/angular';\nimport { fadeIn, fadeOut } from '@odx/angular/animations';\nimport { CircularProgressComponent } from '@odx/angular/components/circular-progress';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst BROWSER_TRANSPARENT_COLOR = 'rgba(0, 0, 0, 0)';\n\n/**\n * Represents a loading spinner component.\n */\n@CSSComponent('loading-spinner')\n@Component({\n standalone: true,\n selector: 'odx-loading-spinner',\n templateUrl: './loading-spinner.component.html',\n imports: [CircularProgressComponent],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[@hostAnimation]': 'true',\n '(@hostAnimation.done)': 'animationFinished($event)',\n },\n animations: [trigger('hostAnimation', [transition(':enter', useAnimation(fadeIn())), transition(':leave', useAnimation(fadeOut()))])],\n})\nexport class LoadingSpinnerComponent implements OnInit {\n private readonly host = inject(LoadingSpinnerDirective);\n private readonly windowRef = inject(WindowRef);\n\n protected backgroundColor: string | null = null;\n\n public readonly element = injectElement();\n\n /**\n * Indicates whether the color of the loading spinner should be automatically determined.\n * If set to true, the color will be based on the theme of the parent container.\n * If set to false, the color will be the default color specified in the component's styles.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input()\n public autoColor = false;\n\n public ngOnInit(): void {\n this.backgroundColor = this.resolveBackgroundColor(this.element.nativeElement);\n }\n\n protected animationFinished({ toState }: AnimationEvent): void {\n if (toState === 'void') {\n this.host.resetParentStyles();\n }\n }\n\n private resolveBackgroundColor(element: HTMLElement): string | null {\n const { backgroundColor } = this.windowRef.nativeWindow.getComputedStyle(element);\n if (backgroundColor !== BROWSER_TRANSPARENT_COLOR) {\n return backgroundColor;\n }\n if (element.parentElement) {\n return this.resolveBackgroundColor(element.parentElement);\n }\n return null;\n }\n}\n","<odx-circular-progress size=\"auto\" value=\"-1\" />\n<div class=\"odx-loading-spinner__backdrop\" [style.backgroundColor]=\"backgroundColor\"></div>\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LoadingSpinnerComponent } from './loading-spinner.component';\nimport { LoadingSpinnerDirective } from './loading-spinner.directive';\n\nconst modules = [LoadingSpinnerComponent, LoadingSpinnerDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class LoadingSpinnerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, Input } from '@angular/core';
3
+ import { Input, Directive } from '@angular/core';
4
4
  import { CSSModifier, CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-logo.mjs","sources":["../../../../libs/angular/components/logo/src/models/logo-size.ts","../../../../libs/angular/components/logo/src/models/logo-variant.ts","../../../../libs/angular/components/logo/src/logo.directive.ts","../../../../libs/angular/components/logo/src/odx-angular-components-logo.ts"],"sourcesContent":["export type LogoSize = typeof LogoSize[keyof typeof LogoSize];\n\nexport const LogoSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","export type LogoVariant = typeof LogoVariant[keyof typeof LogoVariant];\n\nexport const LogoVariant = {\n DEFAULT: 'default',\n INVERSE: 'inverse',\n} as const;\n","import { Directive, Input } from '@angular/core';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LogoSize, LogoVariant } from './models';\n\n/**\n * A directive that handles the presentation of a logo with configurable size and variant.\n */\n@CSSComponent('logo')\n@Directive({\n selector: 'odx-logo',\n standalone: true,\n host: {\n '[class.notranslate]': 'true',\n '[attr.aria-label]': '\"Dräger logo\"',\n '[attr.aria-roledescription]': '\"logo\"',\n translate: 'no',\n role: 'img',\n },\n})\nexport class LogoDirective {\n public readonly element = injectElement();\n\n /**\n * The size of the logo.\n *\n * @type {LogoSize}\n * @default LogoSize.SMALL\n */\n @CSSModifier()\n @Input()\n public size: LogoSize = LogoSize.SMALL;\n\n /**\n * The variant of the logo.\n *\n * @type {LogoVariant}\n * @default LogoVariant.DEFAULT\n */\n @CSSModifier()\n @Input()\n public variant: LogoVariant = LogoVariant.DEFAULT;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEa,MAAA,QAAQ,GAAG;AACtB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;;;ACHH,MAAA,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;;;ACCpB;;AAEG;AAaU,IAAA,aAAa,GAAnB,MAAM,aAAa,CAAA;AAAnB,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAE1C;;;;;AAKG;AAGI,QAAA,IAAA,CAAA,IAAI,GAAa,QAAQ,CAAC,KAAK,CAAC;AAEvC;;;;;AAKG;AAGI,QAAA,IAAA,CAAA,OAAO,GAAgB,WAAW,CAAC,OAAO,CAAC;AACnD,KAAA;+GAtBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;AAWjB,UAAA,CAAA;AAFN,IAAA,WAAW,EAAE;;AAEyB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAUhC,UAAA,CAAA;AAFN,IAAA,WAAW,EAAE;;AAEoC,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AArBvC,aAAa,GAAA,UAAA,CAAA;IAZzB,YAAY,CAAC,MAAM,CAAC;AAYR,CAAA,EAAA,aAAa,CAsBzB,CAAA;4FAtBY,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,6BAA6B,EAAE,QAAQ;AACvC,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA,CAAA;8BAYQ,IAAI,EAAA,CAAA;sBADV,KAAK;gBAWC,OAAO,EAAA,CAAA;sBADb,KAAK;;;ACxCR;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-logo.mjs","sources":["../../../../libs/angular/components/logo/src/models/logo-size.ts","../../../../libs/angular/components/logo/src/models/logo-variant.ts","../../../../libs/angular/components/logo/src/logo.directive.ts","../../../../libs/angular/components/logo/src/odx-angular-components-logo.ts"],"sourcesContent":["export type LogoSize = typeof LogoSize[keyof typeof LogoSize];\n\nexport const LogoSize = {\n SMALL: 'small',\n MEDIUM: 'medium',\n LARGE: 'large',\n} as const;\n","export type LogoVariant = typeof LogoVariant[keyof typeof LogoVariant];\n\nexport const LogoVariant = {\n DEFAULT: 'default',\n INVERSE: 'inverse',\n} as const;\n","import { Directive, Input } from '@angular/core';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { LogoSize, LogoVariant } from './models';\n\n/**\n * A directive that handles the presentation of a logo with configurable size and variant.\n */\n@CSSComponent('logo')\n@Directive({\n selector: 'odx-logo',\n standalone: true,\n host: {\n '[class.notranslate]': 'true',\n '[attr.aria-label]': '\"Dräger logo\"',\n '[attr.aria-roledescription]': '\"logo\"',\n translate: 'no',\n role: 'img',\n },\n})\nexport class LogoDirective {\n public readonly element = injectElement();\n\n /**\n * The size of the logo.\n *\n * @type {LogoSize}\n * @default LogoSize.SMALL\n */\n @CSSModifier()\n @Input()\n public size: LogoSize = LogoSize.SMALL;\n\n /**\n * The variant of the logo.\n *\n * @type {LogoVariant}\n * @default LogoVariant.DEFAULT\n */\n @CSSModifier()\n @Input()\n public variant: LogoVariant = LogoVariant.DEFAULT;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAEO,MAAM,QAAQ,GAAG;AACtB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;;;ACHT,MAAM,WAAW,GAAG;AACzB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;;;ACCpB;;AAEG;AAaI,IAAM,aAAa,GAAnB,MAAM,aAAa,CAAA;AAAnB,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,OAAO,GAAG,aAAa,EAAE;AAEzC;;;;;AAKG;AAGI,QAAA,IAAA,CAAA,IAAI,GAAa,QAAQ,CAAC,KAAK;AAEtC;;;;;AAKG;AAGI,QAAA,IAAA,CAAA,OAAO,GAAgB,WAAW,CAAC,OAAO;AAClD,IAAA;+GAtBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAb,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;AAWjB,UAAA,CAAA;AAFN,IAAA,WAAW,EAAE;;AAEyB,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA;AAUhC,UAAA,CAAA;AAFN,IAAA,WAAW,EAAE;;AAEoC,CAAA,EAAA,aAAA,CAAA,SAAA,EAAA,SAAA,EAAA,KAAA,CAAA,CAAA;AArBvC,aAAa,GAAA,UAAA,CAAA;IAZzB,YAAY,CAAC,MAAM;AAYP,CAAA,EAAA,aAAa,CAsBzB;4FAtBY,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,mBAAmB,EAAE,eAAe;AACpC,wBAAA,6BAA6B,EAAE,QAAQ;AACvC,wBAAA,SAAS,EAAE,IAAI;AACf,wBAAA,IAAI,EAAE,KAAK;AACZ,qBAAA;AACF,iBAAA;8BAYQ,IAAI,EAAA,CAAA;sBADV;gBAWM,OAAO,EAAA,CAAA;sBADb;;;ACxCH;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Injectable, inject, Directive, HostListener, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, ViewChild, NgModule } from '@angular/core';
3
+ import { Injectable, inject, HostListener, Directive, booleanAttribute, ViewChild, Output, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement, createConfigTokens, buildWebsiteUrl, untilDestroyed } from '@odx/angular/utils';
6
6
  import { BehaviorSubject, distinctUntilChanged, shareReplay, of, combineLatest, map, tap, fromEvent } from 'rxjs';
@@ -16,7 +16,7 @@ import * as i6 from '@odx/angular/components/icon';
16
16
  import { IconComponent } from '@odx/angular/components/icon';
17
17
  import { LinkDirective } from '@odx/angular/components/link';
18
18
  import { LogoDirective } from '@odx/angular/components/logo';
19
- import { provideTranslations, TranslatePipe } from '@odx/angular/internal/translate';
19
+ import { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';
20
20
  import * as i1 from '@angular/common';
21
21
  import * as i3 from '@angular/cdk/a11y';
22
22
  import { RouterLinkActive } from '@angular/router';
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n/**\n * Provides control over the state of the main menu, allowing components to open, close, or toggle its visibility.\n * This service uses a BehaviorSubject to manage the open state and exposes an observable that emits the current state.\n */\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n /**\n * An Observable that emits the current state of the menu's visibility.\n * It uses distinctUntilChanged to prevent unnecessary emissions when the state hasn't actually changed.\n * shareReplay is configured to cache the last value for any late subscribers.\n *\n * @emits {boolean} The current visibility state of the main menu.\n */\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Returns the current visibility state of the main menu.\n *\n * @returns {boolean} True if the menu is open, false otherwise.\n */\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n /**\n * Opens the main menu by setting its state to true.\n */\n public open(): void {\n this.toggle(true);\n }\n\n /**\n * Closes the main menu by setting its state to false.\n */\n public close(): void {\n this.toggle(false);\n }\n\n /**\n * Toggles the visibility state of the main menu.\n *\n * @param {boolean | undefined} forceState - If provided, the menu will be set to this specific state. If not provided,\n * the menu will toggle to the opposite of its current state.\n */\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n/**\n * Represents a directive for a main menu button.\n * This directive is used to toggle the main menu.\n */\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n protected onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { MainMenuLink } from './models';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n statusUrl?: string | null;\n dynamicLinks?: Observable<MainMenuLink[]>;\n}\n\n/**\n * Tokens generated to provide and inject `MainMenuLinksConfig`. These tokens are used to configure and access main menu links throughout the application.\n *\n * @exports\n * - `MainMenuLinksConfig` - Token for injecting the config.\n * - `MainMenuLinksDefaultConfig` - Default configuration for main menu links.\n * - `injectMainMenuLinksConfig` - Function to inject the config wherever needed.\n * - `provideMainMenuLinksConfig` - Provider function to configure and provide the config in Angular's DI system.\n *\n * @example\n * ```ts\n * // Providing main menu links in an Angular module\n * @NgModule({\n * providers: [\n * provideMainMenuLinksConfig({\n * legalNoticeUrl: 'https://example.com/legalnotice',\n * providerIdentificationUrl: 'https://example.com/provideridentification',\n * }),\n * ],\n * })\n * export class AppModule { }\n *\n * // Injecting and using the main menu links configuration in a component\n * @Component({ ... })\n * export class MyComponent {\n * constructor(@Inject(MainMenuLinksConfig) private config: MainMenuLinksConfig) {\n * console.log('Legal Notice URL:', config.legalNoticeUrl);\n * }\n * }\n * ```\n */\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\n/** @internal */\nexport function createMainMenuLinks$(): Observable<MainMenuLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectMainMenuLinksConfig();\n const dynamicLinks$ = dynamicLinks ?? of([]);\n const links = [\n { name: 'status', url: statusUrl },\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link): link is MainMenuLink => !!link.url)));\n}\n","import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n status: 'Status',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n status: 'Status',\n },\n} as TranslationObject;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, tap } from 'rxjs';\nimport { createMainMenuLinks$ } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n/**\n * The `MainMenuComponent` provides a comprehensive user interface component for displaying a navigation menu within an application.\n * It supports dynamic content for titles, subtitles, and copyright text, and can dynamically render additional links.\n * The menu includes animations for opening and closing states, and can be controlled programmatically or via user interaction.\n */\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: { '[class.is-open]': 'isOpen' },\n})\nexport class MainMenuComponent implements AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks$ = createMainMenuLinks$();\n protected readonly isOpen$ = this.mainMenuService.isOpen$.pipe(tap((isOpen: boolean) => this.slideMenuInner(isOpen)));\n public readonly element = injectElement();\n\n /**\n * Input property for the title of the menu. The content is dynamic, allowing complex content structures\n * like translations or custom components.\n *\n * @type {DynamicTextContent}\n */\n @Input({ required: true })\n public title!: DynamicTextContent;\n\n /**\n * Optional input property for the subtitle of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public subtitle?: DynamicTextContent | null = null;\n\n /**\n * Optional input property for the copyright text of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public copyright?: DynamicTextContent | null = null;\n\n /**\n * Input property to control the open state of the menu. Uses boolean transformation to handle true/false states.\n * Changing this property will toggle the menu's open state via the MainMenuService.\n *\n * @param {boolean} value - The open state of the menu.\n */\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n /**\n * Returns the current open state of the menu from the MainMenuService.\n *\n * @returns {boolean} `true` if the menu is open, `false` otherwise.\n */\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n /**\n * Outputs the observable that tracks the open state of the menu.\n *\n * @emits {boolean} The open state of the menu.\n */\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @ViewChild('menuInner')\n public menuInner!: ElementRef<HTMLElement>;\n\n public ngAfterViewInit(): void {\n fromEvent<Event>(this.menuInner?.nativeElement, 'toggle')\n .pipe(\n tap((e) => 'newState' in e && this.mainMenuService.toggle(e.newState === 'open')),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n /**\n * Closes the menu.\n */\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n\n private slideMenuInner(isOpen = false): void {\n const nativeElement = this.menuInner?.nativeElement;\n if (!(nativeElement?.isConnected && this.isPopoverElement(nativeElement))) return;\n const method = isOpen ? 'showPopover' : 'hidePopover';\n nativeElement[method]();\n }\n\n private isPopoverElement(element: HTMLElement): element is HTMLElement & { showPopover: () => void; hidePopover: () => void } {\n return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;\n }\n}\n","<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\"><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n @if (subtitle) {\n <odx-area-header-subtitle>\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n }\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content />\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\" />\n @for (link of mainMenuLinks$ | async; track $index) {\n <a odxLink [href]=\"link.url\" target=\"_blank\">\n {{ link.name | odxTranslate | async }}\n </a>\n }\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\" />\n @if (copyright) {\n <p class=\"odx-text odx-text--small\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n }\n </div>\n</aside>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n/**\n * Represents a directive for closing the main menu.\n */\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n/**\n * Represents a directive for a main menu item.\n * This directive is used to define a main menu item.\n * Has host directives for disabled state, tabindex, and closing the main menu.\n *\n * @see {WithDisabledState}\n * @see {WithTabIndex}\n * @see {MainMenuCloseDirective}\n */\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n /**\n * Optionally specifies whether the menu item is selected.\n * If not specified, the menu item will not be selected.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-main-menu.mjs","sources":["../../../../libs/angular/components/main-menu/src/lib/main-menu.service.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-button.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.config.ts","../../../../libs/angular/components/main-menu/src/lib/helpers/create-main-menu-links.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.i18n.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.component.html","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-close.directive.ts","../../../../libs/angular/components/main-menu/src/lib/directives/main-menu-item.directive.ts","../../../../libs/angular/components/main-menu/src/lib/main-menu.module.ts","../../../../libs/angular/components/main-menu/src/odx-angular-components-main-menu.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, shareReplay } from 'rxjs';\n\n/**\n * Provides control over the state of the main menu, allowing components to open, close, or toggle its visibility.\n * This service uses a BehaviorSubject to manage the open state and exposes an observable that emits the current state.\n */\n@Injectable({ providedIn: 'root' })\nexport class MainMenuService {\n private readonly isOpen$$ = new BehaviorSubject(false);\n\n /**\n * An Observable that emits the current state of the menu's visibility.\n * It uses distinctUntilChanged to prevent unnecessary emissions when the state hasn't actually changed.\n * shareReplay is configured to cache the last value for any late subscribers.\n *\n * @emits {boolean} The current visibility state of the main menu.\n */\n public readonly isOpen$ = this.isOpen$$.pipe(distinctUntilChanged(), shareReplay({ bufferSize: 1, refCount: true }));\n\n /**\n * Returns the current visibility state of the main menu.\n *\n * @returns {boolean} True if the menu is open, false otherwise.\n */\n public isOpen(): boolean {\n return this.isOpen$$.getValue();\n }\n\n /**\n * Opens the main menu by setting its state to true.\n */\n public open(): void {\n this.toggle(true);\n }\n\n /**\n * Closes the main menu by setting its state to false.\n */\n public close(): void {\n this.toggle(false);\n }\n\n /**\n * Toggles the visibility state of the main menu.\n *\n * @param {boolean | undefined} forceState - If provided, the menu will be set to this specific state. If not provided,\n * the menu will toggle to the opposite of its current state.\n */\n public toggle(forceState?: boolean): void {\n this.isOpen$$.next(forceState ?? !this.isOpen());\n }\n}\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuService } from '../main-menu.service';\n\n/**\n * Represents a directive for a main menu button.\n * This directive is used to toggle the main menu.\n */\n@CSSComponent('main-menu-button')\n@Directive({\n selector: 'button[odxMainMenuButton]',\n standalone: true,\n})\nexport class MainMenuButtonDirective {\n private readonly mainMenuService = inject(MainMenuService);\n public readonly element = injectElement<HTMLButtonElement>();\n\n @HostListener('click')\n protected onClick() {\n this.mainMenuService.toggle();\n }\n}\n","import { buildWebsiteUrl, createConfigTokens } from '@odx/angular/utils';\nimport { Observable } from 'rxjs';\nimport { MainMenuLink } from './models';\n\nexport interface MainMenuLinksConfig {\n dataProtectionUrl?: string | null;\n legalNoticeUrl: string | null;\n providerIdentificationUrl: string | null;\n termsAndConditionsUrl?: string | null;\n openSourceUrl?: string | null;\n statusUrl?: string | null;\n dynamicLinks?: Observable<MainMenuLink[]>;\n}\n\n/**\n * Tokens generated to provide and inject `MainMenuLinksConfig`. These tokens are used to configure and access main menu links throughout the application.\n *\n * @exports\n * - `MainMenuLinksConfig` - Token for injecting the config.\n * - `MainMenuLinksDefaultConfig` - Default configuration for main menu links.\n * - `injectMainMenuLinksConfig` - Function to inject the config wherever needed.\n * - `provideMainMenuLinksConfig` - Provider function to configure and provide the config in Angular's DI system.\n *\n * @example\n * ```ts\n * // Providing main menu links in an Angular module\n * @NgModule({\n * providers: [\n * provideMainMenuLinksConfig({\n * legalNoticeUrl: 'https://example.com/legalnotice',\n * providerIdentificationUrl: 'https://example.com/provideridentification',\n * }),\n * ],\n * })\n * export class AppModule { }\n *\n * // Injecting and using the main menu links configuration in a component\n * @Component({ ... })\n * export class MyComponent {\n * constructor(@Inject(MainMenuLinksConfig) private config: MainMenuLinksConfig) {\n * console.log('Legal Notice URL:', config.legalNoticeUrl);\n * }\n * }\n * ```\n */\nexport const { MainMenuLinksConfig, MainMenuLinksDefaultConfig, injectMainMenuLinksConfig, provideMainMenuLinksConfig } = createConfigTokens(\n 'MainMenuLinks',\n '@odx/angular/components/main-menu',\n {\n providerIdentificationUrl: buildWebsiteUrl('provideridentification'),\n legalNoticeUrl: buildWebsiteUrl('legalnotice'),\n } as MainMenuLinksConfig,\n);\n","import { Observable, combineLatest, map, of } from 'rxjs';\nimport { injectMainMenuLinksConfig } from '../main-menu.config';\nimport { MainMenuLink } from '../models';\n\n/** @internal */\nexport function createMainMenuLinks$(): Observable<MainMenuLink[]> {\n const { legalNoticeUrl, providerIdentificationUrl, dataProtectionUrl, openSourceUrl, termsAndConditionsUrl, statusUrl, dynamicLinks } =\n injectMainMenuLinksConfig();\n const dynamicLinks$ = dynamicLinks ?? of([]);\n const links = [\n { name: 'status', url: statusUrl },\n { name: 'termsAndConditions', url: termsAndConditionsUrl },\n { name: 'providerIdentification', url: providerIdentificationUrl },\n { name: 'openSource', url: openSourceUrl },\n { name: 'dataProtection', url: dataProtectionUrl },\n { name: 'legalNotice', url: legalNoticeUrl },\n ];\n\n return combineLatest([dynamicLinks$, of(links)].filter(Boolean)).pipe(map((links) => links.flat().filter((link): link is MainMenuLink => !!link.url)));\n}\n","import { TranslationObject } from '@odx/angular/internal/translate';\n\nexport default {\n en: {\n legalNotice: 'Legal notice',\n providerIdentification: 'Provider identification',\n dataProtection: 'Data protection',\n openSource: 'Open-source licenses',\n termsAndConditions: 'Terms and Conditions',\n status: 'Status',\n },\n de: {\n legalNotice: 'Rechtliche Hinweise',\n providerIdentification: 'Impressum',\n dataProtection: 'Datenschutz',\n openSource: 'Open-Source-Lizenzen',\n termsAndConditions: 'Allgemeine Geschäftsbedingungen',\n status: 'Status',\n },\n} as TranslationObject;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostListener,\n Input,\n Output,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { A11yModule } from '@odx/angular/cdk/a11y';\nimport { DynamicTextContent, DynamicViewDirective } from '@odx/angular/cdk/dynamic-view';\nimport { AreaHeaderModule } from '@odx/angular/components/area-header';\nimport { ButtonComponent } from '@odx/angular/components/button';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { LogoDirective } from '@odx/angular/components/logo';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { TranslatePipe, provideTranslations } from '@odx/angular/internal/translate';\nimport { injectElement, untilDestroyed } from '@odx/angular/utils';\nimport { fromEvent, tap } from 'rxjs';\nimport { createMainMenuLinks$ } from './helpers';\nimport mainMenuTranslations from './main-menu.i18n';\nimport { MainMenuService } from './main-menu.service';\n\n/**\n * The `MainMenuComponent` provides a comprehensive user interface component for displaying a navigation menu within an application.\n * It supports dynamic content for titles, subtitles, and copyright text, and can dynamically render additional links.\n * The menu includes animations for opening and closing states, and can be controlled programmatically or via user interaction.\n */\n@CSSComponent('main-menu')\n@Component({\n selector: 'odx-main-menu',\n templateUrl: './main-menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, CoreModule, AreaHeaderModule, ButtonComponent, IconComponent, LogoDirective, TranslatePipe, LinkDirective, DynamicViewDirective],\n providers: [provideTranslations(mainMenuTranslations)],\n standalone: true,\n host: { '[class.is-open]': 'isOpen' },\n})\nexport class MainMenuComponent implements AfterViewInit {\n private readonly takeUntilDestroyed = untilDestroyed();\n protected readonly mainMenuService = inject(MainMenuService);\n protected readonly mainMenuLinks$ = createMainMenuLinks$();\n protected readonly isOpen$ = this.mainMenuService.isOpen$.pipe(tap((isOpen: boolean) => this.slideMenuInner(isOpen)));\n public readonly element = injectElement();\n\n /**\n * Input property for the title of the menu. The content is dynamic, allowing complex content structures\n * like translations or custom components.\n *\n * @type {DynamicTextContent}\n */\n @Input({ required: true })\n public title!: DynamicTextContent;\n\n /**\n * Optional input property for the subtitle of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public subtitle?: DynamicTextContent | null = null;\n\n /**\n * Optional input property for the copyright text of the menu.\n *\n * @type {DynamicTextContent | null}\n * @default null\n */\n @Input()\n public copyright?: DynamicTextContent | null = null;\n\n /**\n * Input property to control the open state of the menu. Uses boolean transformation to handle true/false states.\n * Changing this property will toggle the menu's open state via the MainMenuService.\n *\n * @param {boolean} value - The open state of the menu.\n */\n @Input({ transform: booleanAttribute })\n public set isOpen(value: boolean) {\n this.mainMenuService.toggle(value);\n }\n\n /**\n * Returns the current open state of the menu from the MainMenuService.\n *\n * @returns {boolean} `true` if the menu is open, `false` otherwise.\n */\n public get isOpen(): boolean {\n return this.mainMenuService.isOpen();\n }\n\n /**\n * Outputs the observable that tracks the open state of the menu.\n *\n * @emits {boolean} The open state of the menu.\n */\n @Output()\n public menuOpen = this.mainMenuService.isOpen$;\n\n @ViewChild('menuInner')\n public menuInner!: ElementRef<HTMLElement>;\n\n public ngAfterViewInit(): void {\n fromEvent<Event>(this.menuInner?.nativeElement, 'toggle')\n .pipe(\n tap((e) => 'newState' in e && this.mainMenuService.toggle(e.newState === 'open')),\n this.takeUntilDestroyed(),\n )\n .subscribe();\n }\n\n /**\n * Closes the menu.\n */\n @HostListener('window:keyup.esc')\n public close(): void {\n this.mainMenuService.close();\n }\n\n private slideMenuInner(isOpen = false): void {\n const nativeElement = this.menuInner?.nativeElement;\n if (!(nativeElement?.isConnected && this.isPopoverElement(nativeElement))) return;\n const method = isOpen ? 'showPopover' : 'hidePopover';\n nativeElement[method]();\n }\n\n private isPopoverElement(element: HTMLElement): element is HTMLElement & { showPopover: () => void; hidePopover: () => void } {\n return element.hasAttribute('popover') && 'showPopover' in element && 'hidePopover' in element;\n }\n}\n","<aside class=\"odx-main-menu__inner\" [ngClass]=\"(isOpen$ | async) ? 'opened' : 'closed'\" #menuInner popover=\"auto\" cdkTrapFocus cdkTrapFocusAutoCapture>\n <div class=\"odx-main-menu__actions\">\n <button class=\"odx-main-menu__close\" odxButton disabled=\"false\" (click)=\"close()\"><odx-icon name=\"close\" iconSet=\"core\" /></button>\n </div>\n <odx-area-header class=\"odx-main-menu__header\" size=\"large\">\n <ng-template [odxDynamicView]=\"title\" />\n @if (subtitle) {\n <odx-area-header-subtitle>\n <ng-template [odxDynamicView]=\"subtitle\" />\n </odx-area-header-subtitle>\n }\n </odx-area-header>\n <nav class=\"odx-main-menu__content\">\n <ng-content />\n </nav>\n <div class=\"odx-main-menu__info\">\n <ng-content select=\"[odxLink]\" />\n @for (link of mainMenuLinks$ | async; track $index) {\n <a odxLink [href]=\"link.url\" target=\"_blank\">\n {{ link.name | odxTranslate | async }}\n </a>\n }\n </div>\n <div class=\"odx-main-menu__footer\">\n <odx-logo variant=\"inverse\" />\n @if (copyright) {\n <p class=\"odx-text odx-text--small\">\n <ng-template [odxDynamicView]=\"copyright\" />\n </p>\n }\n </div>\n</aside>\n","import { Directive, HostListener, inject } from '@angular/core';\nimport { MainMenuComponent } from '../main-menu.component';\n\n/**\n * Represents a directive for closing the main menu.\n */\n@Directive({\n standalone: true,\n selector: '[odxMainMenuClose]',\n})\nexport class MainMenuCloseDirective {\n private readonly mainMenu = inject(MainMenuComponent, { optional: true });\n\n @HostListener('click')\n protected onClick(): void {\n this.mainMenu?.close();\n }\n}\n","import { booleanAttribute, Directive, inject, Input } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { WithDisabledState, WithTabIndex } from '@odx/angular';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\nimport { MainMenuCloseDirective } from './main-menu-close.directive';\n\n/**\n * Represents a directive for a main menu item.\n * This directive is used to define a main menu item.\n * Has host directives for disabled state, tabindex, and closing the main menu.\n *\n * @see {WithDisabledState}\n * @see {WithTabIndex}\n * @see {MainMenuCloseDirective}\n */\n@CSSComponent('main-menu-item')\n@Directive({\n selector: '[odxMainMenuItem]',\n standalone: true,\n hostDirectives: [WithDisabledState, WithTabIndex, MainMenuCloseDirective],\n host: {\n '[class.is-selected]': 'isSelected || routerLinkActive?.isActive',\n '[attr.role]': '\"button\"',\n },\n})\nexport class MainMenuItemDirective {\n protected readonly routerLinkActive = inject(RouterLinkActive, { optional: true });\n\n public readonly element = injectElement();\n\n /**\n * Optionally specifies whether the menu item is selected.\n * If not specified, the menu item will not be selected.\n *\n * @type {boolean}\n * @default false\n */\n @Input({ transform: booleanAttribute })\n public isSelected = false;\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { LinkDirective } from '@odx/angular/components/link';\nimport { MainMenuButtonDirective, MainMenuCloseDirective, MainMenuItemDirective } from './directives';\nimport { MainMenuComponent } from './main-menu.component';\n\nconst modules = [LinkDirective, MainMenuComponent, MainMenuItemDirective, MainMenuButtonDirective, MainMenuCloseDirective];\n\n@NgModule({\n imports: modules,\n exports: [CoreModule, ...modules],\n})\nexport class MainMenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2","i1","i2.MainMenuCloseDirective"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Component, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';
3
+ import { ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
4
4
  import { CSSComponent } from '@odx/angular/internal';
5
5
  import { injectElement } from '@odx/angular/utils';
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-mainfilter-group.mjs","sources":["../../../../libs/angular/components/mainfilter-group/src/lib/mainfilter-group.component.ts","../../../../libs/angular/components/mainfilter-group/src/lib/mainfilter-group.component.html","../../../../libs/angular/components/mainfilter-group/src/odx-angular-components-mainfilter-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents the MainfilterGroupComponent class.\n * This component is responsible for styling the main filter group.\n */\n@CSSComponent('mainfilter-group')\n@Component({\n selector: 'odx-mainfilter-group',\n templateUrl: './mainfilter-group.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MainfilterGroupComponent {\n public readonly element = injectElement();\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAIA;;;AAGG;AASU,IAAA,wBAAwB,GAA9B,MAAM,wBAAwB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACW,IAAO,CAAA,OAAA,GAAG,aAAa,EAAE,CAAC;AAC3C,KAAA;+GAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gFChBrC,kBACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;;ADea,wBAAwB,GAAA,UAAA,CAAA;IARpC,YAAY,CAAC,kBAAkB,CAAC;AAQpB,CAAA,EAAA,wBAAwB,CAEpC,CAAA;4FAFY,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAEpB,IAAI,EACC,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA;;;AEdvC;;AAEG;;;;"}
1
+ {"version":3,"file":"odx-angular-components-mainfilter-group.mjs","sources":["../../../../libs/angular/components/mainfilter-group/src/lib/mainfilter-group.component.ts","../../../../libs/angular/components/mainfilter-group/src/lib/mainfilter-group.component.html","../../../../libs/angular/components/mainfilter-group/src/odx-angular-components-mainfilter-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * Represents the MainfilterGroupComponent class.\n * This component is responsible for styling the main filter group.\n */\n@CSSComponent('mainfilter-group')\n@Component({\n selector: 'odx-mainfilter-group',\n templateUrl: './mainfilter-group.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class MainfilterGroupComponent {\n public readonly element = injectElement();\n}\n","<ng-content />\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;AAIA;;;AAGG;AASI,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB,CAAA;AAA9B,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,OAAO,GAAG,aAAa,EAAE;AAC1C,IAAA;+GAFY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,gFChBrC,kBACA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;ADea,wBAAwB,GAAA,UAAA,CAAA;IARpC,YAAY,CAAC,kBAAkB;AAQnB,CAAA,EAAA,wBAAwB,CAEpC;4FAFY,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAPpC,SAAS;+BACE,sBAAsB,EAAA,UAAA,EAEpB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,kBAAA,EAAA;;;AEdvC;;AAEG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { __decorate, __metadata } from 'tslib';
2
2
  import * as i0 from '@angular/core';
3
- import { Directive, HostListener, booleanAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, inject, NgModule } from '@angular/core';
3
+ import { HostListener, Directive, booleanAttribute, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, inject, NgModule } from '@angular/core';
4
4
  import * as i1 from '@odx/angular/cdk/a11y';
5
5
  import { ListFocusManagerOptionDirective, ListFocusManagerDirective } from '@odx/angular/cdk/a11y';
6
6
  import * as i1$1 from '@odx/angular/components/dropdown';
@@ -1 +1 @@
1
- {"version":3,"file":"odx-angular-components-menu.mjs","sources":["../../../../libs/angular/components/menu/src/lib/directives/menu-item.directive.ts","../../../../libs/angular/components/menu/src/lib/menu.component.ts","../../../../libs/angular/components/menu/src/lib/menu.component.html","../../../../libs/angular/components/menu/src/lib/menu.directive.ts","../../../../libs/angular/components/menu/src/lib/menu.module.ts","../../../../libs/angular/components/menu/src/odx-angular-components-menu.ts"],"sourcesContent":["import { Directive, HostListener } from '@angular/core';\nimport { ListFocusManagerOptionDirective } from '@odx/angular/cdk/a11y';\nimport { closeCurrentDropdown } from '@odx/angular/components/dropdown';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn, injectElement } from '@odx/angular/utils';\n\n/**\n * Represents a directive for a menu item.\n * Uses the `ListFocusManagerOptionDirective` to manage focus within the menu items.\n *\n * @see {ListFocusManagerOptionDirective}\n */\n@CSSComponent('menu-item')\n@Directive({\n selector: 'a[odxButton][odxMenuItem], button[odxButton][odxMenuItem]',\n standalone: true,\n hostDirectives: [ListFocusManagerOptionDirective],\n host: {\n role: 'menuitem',\n },\n})\nexport class MenuItemDirective {\n public readonly element = injectElement<HTMLButtonElement | HTMLLinkElement>();\n\n @HostListener('click')\n protected selectItem(): void {\n deferFn(() => closeCurrentDropdown(this.element.nativeElement));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\nimport { ListFocusManagerDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { closeCurrentDropdown } from '@odx/angular/components/dropdown';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * `MenuComponent` provides an Angular component for creating a navigational menu structure in an application.\n * It utilizes the `ListFocusManagerDirective` to manage focus within the menu items and integrates with other custom components like `ActionGroupComponent`.\n * The component is styled using CSS component techniques to ensure a consistent look and feel across different parts of the application.\n * @see {ListFocusManagerDirective}\n */\n@CSSComponent('menu')\n@Component({\n selector: 'odx-menu',\n standalone: true,\n imports: [ActionGroupComponent, CommonModule],\n templateUrl: './menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ListFocusManagerDirective],\n host: {\n role: 'menu',\n },\n})\nexport class MenuComponent {\n public readonly element = injectElement();\n\n /**\n * A CSS modifier that indicates if the menu should use a tile layout. This is controlled through an input property which can be bound to a boolean value.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public tile = false;\n\n @HostListener('keydown.tab', ['$event'])\n protected onTab(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n closeCurrentDropdown(this.element.nativeElement);\n }\n}\n","@if (tile) {\n <div class=\"odx-menu__title\">\n <ng-content />\n </div>\n}\n<odx-action-group class=\"odx-menu__inner\">\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n","import { Directive, inject, Input, OnChanges } from '@angular/core';\nimport { DynamicContent, DynamicTextContent } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective, DropdownOptions } from '@odx/angular/components/dropdown';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { hasChanged, injectElement, NgChanges, Position } from '@odx/angular/utils';\n\nconst DEFAULT_MENU_DROPDOWN_OPTIONS: Partial<DropdownOptions> = {\n containerClass: 'odx-menu-overlay',\n enableFallback: true,\n};\n\n/**\n * `MenuDirective` integrates a menu system into elements using the `DropdownDirective`\n * for dynamic dropdown functionality.\n * It enables flexible positioning and content injection capabilities, making it suitable\n * for creating context menus, dropdown lists, and other interactive menu-driven components.\n *\n * @see {DropdownDirective}\n */\n@CSSComponent('menu-host')\n@Directive({\n selector: '[odxMenu]',\n exportAs: 'odxMenu',\n standalone: true,\n hostDirectives: [\n {\n directive: DropdownDirective,\n inputs: ['odxDropdown:odxMenu'],\n },\n ],\n})\nexport class MenuDirective implements OnChanges {\n protected readonly dropdown = inject(DropdownDirective, { host: true });\n\n public readonly element = injectElement();\n\n /**\n * Accepts dynamic content other than `DynamicTextContent` to be used as the content of the dropdown.\n * This allows for more complex content structures such as templates or components to be defined\n * as dropdown content.\n *\n * @type {Exclude<DynamicContent, DynamicTextContent> | null}\n */\n @Input('odxMenu')\n public content?: Exclude<DynamicContent, DynamicTextContent> | null;\n\n /**\n * Optionally specifies the positioning of the dropdown menu relative to its trigger element.\n * If not specified, a default position may be used.\n *\n * @type {Position | null}\n */\n @Input('odxMenuPosition')\n public position?: Position | null;\n\n public ngOnChanges(changes: NgChanges<MenuDirective>): void {\n if (hasChanged(changes, 'position', false)) {\n this.dropdown.options = {\n ...DEFAULT_MENU_DROPDOWN_OPTIONS,\n position: this.position ?? undefined,\n };\n }\n }\n\n /**\n * Returns whether the dropdown is currently open.\n *\n * @returns {boolean} `true` if the dropdown is open, `false` otherwise.\n */\n public isOpen(): boolean {\n return this.dropdown.isOpen;\n }\n\n /**\n * Closes the dropdown.\n *\n * @param {Event} [event] The event that triggered the dropdown close.\n */\n public close(event?: Event): void {\n this.dropdown.close(event);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuItemDirective } from './directives';\nimport { MenuComponent } from './menu.component';\nimport { MenuDirective } from './menu.directive';\n\nconst modules = [MenuComponent, MenuDirective, MenuItemDirective, IconComponent];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, ...modules],\n})\nexport class MenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"odx-angular-components-menu.mjs","sources":["../../../../libs/angular/components/menu/src/lib/directives/menu-item.directive.ts","../../../../libs/angular/components/menu/src/lib/menu.component.ts","../../../../libs/angular/components/menu/src/lib/menu.component.html","../../../../libs/angular/components/menu/src/lib/menu.directive.ts","../../../../libs/angular/components/menu/src/lib/menu.module.ts","../../../../libs/angular/components/menu/src/odx-angular-components-menu.ts"],"sourcesContent":["import { Directive, HostListener } from '@angular/core';\nimport { ListFocusManagerOptionDirective } from '@odx/angular/cdk/a11y';\nimport { closeCurrentDropdown } from '@odx/angular/components/dropdown';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { deferFn, injectElement } from '@odx/angular/utils';\n\n/**\n * Represents a directive for a menu item.\n * Uses the `ListFocusManagerOptionDirective` to manage focus within the menu items.\n *\n * @see {ListFocusManagerOptionDirective}\n */\n@CSSComponent('menu-item')\n@Directive({\n selector: 'a[odxButton][odxMenuItem], button[odxButton][odxMenuItem]',\n standalone: true,\n hostDirectives: [ListFocusManagerOptionDirective],\n host: {\n role: 'menuitem',\n },\n})\nexport class MenuItemDirective {\n public readonly element = injectElement<HTMLButtonElement | HTMLLinkElement>();\n\n @HostListener('click')\n protected selectItem(): void {\n deferFn(() => closeCurrentDropdown(this.element.nativeElement));\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { booleanAttribute, ChangeDetectionStrategy, Component, HostListener, Input, ViewEncapsulation } from '@angular/core';\nimport { ListFocusManagerDirective } from '@odx/angular/cdk/a11y';\nimport { ActionGroupComponent } from '@odx/angular/components/action-group';\nimport { closeCurrentDropdown } from '@odx/angular/components/dropdown';\nimport { CSSComponent, CSSModifier } from '@odx/angular/internal';\nimport { injectElement } from '@odx/angular/utils';\n\n/**\n * `MenuComponent` provides an Angular component for creating a navigational menu structure in an application.\n * It utilizes the `ListFocusManagerDirective` to manage focus within the menu items and integrates with other custom components like `ActionGroupComponent`.\n * The component is styled using CSS component techniques to ensure a consistent look and feel across different parts of the application.\n * @see {ListFocusManagerDirective}\n */\n@CSSComponent('menu')\n@Component({\n selector: 'odx-menu',\n standalone: true,\n imports: [ActionGroupComponent, CommonModule],\n templateUrl: './menu.component.html',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [ListFocusManagerDirective],\n host: {\n role: 'menu',\n },\n})\nexport class MenuComponent {\n public readonly element = injectElement();\n\n /**\n * A CSS modifier that indicates if the menu should use a tile layout. This is controlled through an input property which can be bound to a boolean value.\n *\n * @type {boolean}\n * @default false\n */\n @CSSModifier()\n @Input({ transform: booleanAttribute })\n public tile = false;\n\n @HostListener('keydown.tab', ['$event'])\n protected onTab(event: KeyboardEvent) {\n event.preventDefault();\n event.stopPropagation();\n closeCurrentDropdown(this.element.nativeElement);\n }\n}\n","@if (tile) {\n <div class=\"odx-menu__title\">\n <ng-content />\n </div>\n}\n<odx-action-group class=\"odx-menu__inner\">\n <ng-content select=\"[odxButton]\" ngProjectAs=\"[odxButton]\" />\n</odx-action-group>\n","import { Directive, inject, Input, OnChanges } from '@angular/core';\nimport { DynamicContent, DynamicTextContent } from '@odx/angular/cdk/dynamic-view';\nimport { DropdownDirective, DropdownOptions } from '@odx/angular/components/dropdown';\nimport { CSSComponent } from '@odx/angular/internal';\nimport { hasChanged, injectElement, NgChanges, Position } from '@odx/angular/utils';\n\nconst DEFAULT_MENU_DROPDOWN_OPTIONS: Partial<DropdownOptions> = {\n containerClass: 'odx-menu-overlay',\n enableFallback: true,\n};\n\n/**\n * `MenuDirective` integrates a menu system into elements using the `DropdownDirective`\n * for dynamic dropdown functionality.\n * It enables flexible positioning and content injection capabilities, making it suitable\n * for creating context menus, dropdown lists, and other interactive menu-driven components.\n *\n * @see {DropdownDirective}\n */\n@CSSComponent('menu-host')\n@Directive({\n selector: '[odxMenu]',\n exportAs: 'odxMenu',\n standalone: true,\n hostDirectives: [\n {\n directive: DropdownDirective,\n inputs: ['odxDropdown:odxMenu'],\n },\n ],\n})\nexport class MenuDirective implements OnChanges {\n protected readonly dropdown = inject(DropdownDirective, { host: true });\n\n public readonly element = injectElement();\n\n /**\n * Accepts dynamic content other than `DynamicTextContent` to be used as the content of the dropdown.\n * This allows for more complex content structures such as templates or components to be defined\n * as dropdown content.\n *\n * @type {Exclude<DynamicContent, DynamicTextContent> | null}\n */\n @Input('odxMenu')\n public content?: Exclude<DynamicContent, DynamicTextContent> | null;\n\n /**\n * Optionally specifies the positioning of the dropdown menu relative to its trigger element.\n * If not specified, a default position may be used.\n *\n * @type {Position | null}\n */\n @Input('odxMenuPosition')\n public position?: Position | null;\n\n public ngOnChanges(changes: NgChanges<MenuDirective>): void {\n if (hasChanged(changes, 'position', false)) {\n this.dropdown.options = {\n ...DEFAULT_MENU_DROPDOWN_OPTIONS,\n position: this.position ?? undefined,\n };\n }\n }\n\n /**\n * Returns whether the dropdown is currently open.\n *\n * @returns {boolean} `true` if the dropdown is open, `false` otherwise.\n */\n public isOpen(): boolean {\n return this.dropdown.isOpen;\n }\n\n /**\n * Closes the dropdown.\n *\n * @param {Event} [event] The event that triggered the dropdown close.\n */\n public close(event?: Event): void {\n this.dropdown.close(event);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { CoreModule } from '@odx/angular';\nimport { IconComponent } from '@odx/angular/components/icon';\nimport { MenuItemDirective } from './directives';\nimport { MenuComponent } from './menu.component';\nimport { MenuDirective } from './menu.directive';\n\nconst modules = [MenuComponent, MenuDirective, MenuItemDirective, IconComponent];\n\n@NgModule({\n imports: [modules],\n exports: [CoreModule, ...modules],\n})\nexport class MenuModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { inject, Directive, Input, HostListener, Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, Injector, Injectable, TemplateRef, EventEmitter, Output, NgModule } from '@angular/core';
2
+ import { inject, HostListener, Input, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component, ContentChild, Injector, Injectable, TemplateRef, EventEmitter, Output, NgModule } from '@angular/core';
3
3
  import * as i1 from '@odx/angular';
4
4
  import { Controller, detectControllerChanges, CoreModule } from '@odx/angular';
5
5
  import { DynamicViewDirective, DynamicViewService } from '@odx/angular/cdk/dynamic-view';