@design-factory/angular 21.0.3 → 21.1.0-next.0
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/drawer/README.md +54 -0
- package/fesm2022/design-factory-angular-drawer.mjs +202 -67
- package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
- package/fesm2022/design-factory-angular-internals.mjs +439 -17
- package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
- package/fesm2022/design-factory-angular-sidenav.mjs +223 -210
- package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
- package/fesm2022/design-factory-angular-theme.mjs +198 -0
- package/fesm2022/design-factory-angular-theme.mjs.map +1 -0
- package/fesm2022/design-factory-angular-topnav.mjs +1538 -0
- package/fesm2022/design-factory-angular-topnav.mjs.map +1 -0
- package/node_modules/@agnos-ui/core/README.md +5 -0
- package/node_modules/@agnos-ui/core/accordion-BC_9xn23.cjs +314 -0
- package/node_modules/@agnos-ui/core/accordion-Ca_0T8Bc.js +315 -0
- package/node_modules/@agnos-ui/core/alert-AhaliJ17.cjs +9 -0
- package/node_modules/@agnos-ui/core/alert-Cb9FhbFQ.js +10 -0
- package/node_modules/@agnos-ui/core/collapse-COriZO7o.cjs +94 -0
- package/node_modules/@agnos-ui/core/collapse-CP79atna.js +95 -0
- package/node_modules/@agnos-ui/core/common-B5jS-Ih_.cjs +73 -0
- package/node_modules/@agnos-ui/core/common-DFyZvkII.js +74 -0
- package/node_modules/@agnos-ui/core/components/accordion/accordion.d.ts +333 -0
- package/node_modules/@agnos-ui/core/components/accordion/index.cjs +7 -0
- package/node_modules/@agnos-ui/core/components/accordion/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/accordion/index.js +7 -0
- package/node_modules/@agnos-ui/core/components/alert/alert.d.ts +37 -0
- package/node_modules/@agnos-ui/core/components/alert/common.d.ts +138 -0
- package/node_modules/@agnos-ui/core/components/alert/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/alert/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/alert/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/carousel/carousel.d.ts +247 -0
- package/node_modules/@agnos-ui/core/components/carousel/index.cjs +292 -0
- package/node_modules/@agnos-ui/core/components/carousel/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/carousel/index.js +292 -0
- package/node_modules/@agnos-ui/core/components/collapse/collapse.d.ts +135 -0
- package/node_modules/@agnos-ui/core/components/collapse/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/collapse/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/collapse/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/commonProps.d.ts +11 -0
- package/node_modules/@agnos-ui/core/components/drawer/drawer.d.ts +279 -0
- package/node_modules/@agnos-ui/core/components/drawer/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/drawer/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/drawer/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/modal/index.cjs +8 -0
- package/node_modules/@agnos-ui/core/components/modal/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/modal/index.js +8 -0
- package/node_modules/@agnos-ui/core/components/modal/modal.d.ts +245 -0
- package/node_modules/@agnos-ui/core/components/pagination/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/pagination/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/pagination/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/pagination/pagination.d.ts +313 -0
- package/node_modules/@agnos-ui/core/components/progressbar/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/progressbar/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/progressbar/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/progressbar/progressbar.d.ts +91 -0
- package/node_modules/@agnos-ui/core/components/rating/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/rating/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/rating/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/rating/rating.d.ts +191 -0
- package/node_modules/@agnos-ui/core/components/slider/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/slider/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/slider/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/slider/slider-utils.d.ts +25 -0
- package/node_modules/@agnos-ui/core/components/slider/slider.d.ts +383 -0
- package/node_modules/@agnos-ui/core/components/toast/index.cjs +7 -0
- package/node_modules/@agnos-ui/core/components/toast/index.d.ts +2 -0
- package/node_modules/@agnos-ui/core/components/toast/index.js +7 -0
- package/node_modules/@agnos-ui/core/components/toast/toast.d.ts +66 -0
- package/node_modules/@agnos-ui/core/components/toast/toaster.d.ts +128 -0
- package/node_modules/@agnos-ui/core/components/tree/index.cjs +5 -0
- package/node_modules/@agnos-ui/core/components/tree/index.d.ts +1 -0
- package/node_modules/@agnos-ui/core/components/tree/index.js +5 -0
- package/node_modules/@agnos-ui/core/components/tree/tree.d.ts +143 -0
- package/node_modules/@agnos-ui/core/config.cjs +36 -0
- package/node_modules/@agnos-ui/core/config.d.ts +117 -0
- package/node_modules/@agnos-ui/core/config.js +36 -0
- package/node_modules/@agnos-ui/core/directive-Bsreu2z1.js +523 -0
- package/node_modules/@agnos-ui/core/directive-DCaXmRe_.cjs +522 -0
- package/node_modules/@agnos-ui/core/drawer-BbFAHV07.cjs +328 -0
- package/node_modules/@agnos-ui/core/drawer-C6Qa0xEu.js +329 -0
- package/node_modules/@agnos-ui/core/index.cjs +134 -0
- package/node_modules/@agnos-ui/core/index.d.ts +29 -0
- package/node_modules/@agnos-ui/core/index.js +134 -0
- package/node_modules/@agnos-ui/core/isFocusable-Ckwus82R.js +32 -0
- package/node_modules/@agnos-ui/core/isFocusable-DfzDLeAN.cjs +31 -0
- package/node_modules/@agnos-ui/core/modal-BsNuHhT7.cjs +252 -0
- package/node_modules/@agnos-ui/core/modal-CgzY8ezz.js +253 -0
- package/node_modules/@agnos-ui/core/package.json +57 -0
- package/node_modules/@agnos-ui/core/pagination-ZxGaNWZz.js +255 -0
- package/node_modules/@agnos-ui/core/pagination-xbcOHnhd.cjs +254 -0
- package/node_modules/@agnos-ui/core/progressbar-CRbMKp4b.cjs +86 -0
- package/node_modules/@agnos-ui/core/progressbar-CSEIFnlD.js +87 -0
- package/node_modules/@agnos-ui/core/promise-CxCD3NYv.cjs +118 -0
- package/node_modules/@agnos-ui/core/promise-D-RZVPuv.js +119 -0
- package/node_modules/@agnos-ui/core/rating-BIdiiPUo.js +184 -0
- package/node_modules/@agnos-ui/core/rating-qx1xaBmz.cjs +183 -0
- package/node_modules/@agnos-ui/core/scrollbars-CT87iv_6.cjs +30 -0
- package/node_modules/@agnos-ui/core/scrollbars-CcxSrnCx.js +31 -0
- package/node_modules/@agnos-ui/core/services/extendWidget.cjs +41 -0
- package/node_modules/@agnos-ui/core/services/extendWidget.d.ts +31 -0
- package/node_modules/@agnos-ui/core/services/extendWidget.js +41 -0
- package/node_modules/@agnos-ui/core/services/floatingUI.cjs +111 -0
- package/node_modules/@agnos-ui/core/services/floatingUI.d.ts +76 -0
- package/node_modules/@agnos-ui/core/services/floatingUI.js +111 -0
- package/node_modules/@agnos-ui/core/services/focusElement.cjs +46 -0
- package/node_modules/@agnos-ui/core/services/focusElement.d.ts +9 -0
- package/node_modules/@agnos-ui/core/services/focusElement.js +46 -0
- package/node_modules/@agnos-ui/core/services/focustrack.cjs +47 -0
- package/node_modules/@agnos-ui/core/services/focustrack.d.ts +40 -0
- package/node_modules/@agnos-ui/core/services/focustrack.js +47 -0
- package/node_modules/@agnos-ui/core/services/hash.cjs +15 -0
- package/node_modules/@agnos-ui/core/services/hash.d.ts +3 -0
- package/node_modules/@agnos-ui/core/services/hash.js +15 -0
- package/node_modules/@agnos-ui/core/services/intersection.cjs +53 -0
- package/node_modules/@agnos-ui/core/services/intersection.d.ts +30 -0
- package/node_modules/@agnos-ui/core/services/intersection.js +53 -0
- package/node_modules/@agnos-ui/core/services/matchMedia.cjs +14 -0
- package/node_modules/@agnos-ui/core/services/matchMedia.d.ts +8 -0
- package/node_modules/@agnos-ui/core/services/matchMedia.js +14 -0
- package/node_modules/@agnos-ui/core/services/navManager.cjs +166 -0
- package/node_modules/@agnos-ui/core/services/navManager.d.ts +144 -0
- package/node_modules/@agnos-ui/core/services/navManager.js +166 -0
- package/node_modules/@agnos-ui/core/services/pointerdownPosition.cjs +60 -0
- package/node_modules/@agnos-ui/core/services/pointerdownPosition.d.ts +42 -0
- package/node_modules/@agnos-ui/core/services/pointerdownPosition.js +60 -0
- package/node_modules/@agnos-ui/core/services/portal.cjs +42 -0
- package/node_modules/@agnos-ui/core/services/portal.d.ts +16 -0
- package/node_modules/@agnos-ui/core/services/portal.js +42 -0
- package/node_modules/@agnos-ui/core/services/resizeObserver.cjs +54 -0
- package/node_modules/@agnos-ui/core/services/resizeObserver.d.ts +18 -0
- package/node_modules/@agnos-ui/core/services/resizeObserver.js +54 -0
- package/node_modules/@agnos-ui/core/services/siblingsInert.cjs +44 -0
- package/node_modules/@agnos-ui/core/services/siblingsInert.d.ts +16 -0
- package/node_modules/@agnos-ui/core/services/siblingsInert.js +44 -0
- package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.cjs +186 -0
- package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.d.ts +166 -0
- package/node_modules/@agnos-ui/core/services/transitions/baseTransitions.js +186 -0
- package/node_modules/@agnos-ui/core/services/transitions/collapse.cjs +40 -0
- package/node_modules/@agnos-ui/core/services/transitions/collapse.d.ts +49 -0
- package/node_modules/@agnos-ui/core/services/transitions/collapse.js +40 -0
- package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.cjs +32 -0
- package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.d.ts +25 -0
- package/node_modules/@agnos-ui/core/services/transitions/cssTransitions.js +32 -0
- package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.cjs +37 -0
- package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.d.ts +47 -0
- package/node_modules/@agnos-ui/core/services/transitions/simpleClassTransition.js +37 -0
- package/node_modules/@agnos-ui/core/slider-B93hE0ag.cjs +807 -0
- package/node_modules/@agnos-ui/core/slider-Cjiq9FgI.js +808 -0
- package/node_modules/@agnos-ui/core/textDirection-cNgt24LJ.js +4 -0
- package/node_modules/@agnos-ui/core/textDirection-zqcZ5-eK.cjs +3 -0
- package/node_modules/@agnos-ui/core/toaster-BQWqxYv-.cjs +190 -0
- package/node_modules/@agnos-ui/core/toaster-BzEkshT2.js +191 -0
- package/node_modules/@agnos-ui/core/tree-DY04XPPg.cjs +228 -0
- package/node_modules/@agnos-ui/core/tree-HwcvZ0_p.js +229 -0
- package/node_modules/@agnos-ui/core/types.cjs +6 -0
- package/node_modules/@agnos-ui/core/types.d.ts +246 -0
- package/node_modules/@agnos-ui/core/types.js +6 -0
- package/node_modules/@agnos-ui/core/utils/directive.cjs +28 -0
- package/node_modules/@agnos-ui/core/utils/directive.d.ts +352 -0
- package/node_modules/@agnos-ui/core/utils/directive.js +28 -0
- package/node_modules/@agnos-ui/core/utils/func.cjs +7 -0
- package/node_modules/@agnos-ui/core/utils/func.d.ts +11 -0
- package/node_modules/@agnos-ui/core/utils/func.js +7 -0
- package/node_modules/@agnos-ui/core/utils/id.cjs +5 -0
- package/node_modules/@agnos-ui/core/utils/id.d.ts +6 -0
- package/node_modules/@agnos-ui/core/utils/id.js +5 -0
- package/node_modules/@agnos-ui/core/utils/internal/assign.d.ts +10 -0
- package/node_modules/@agnos-ui/core/utils/internal/checks.d.ts +57 -0
- package/node_modules/@agnos-ui/core/utils/internal/dom.d.ts +75 -0
- package/node_modules/@agnos-ui/core/utils/internal/isFocusable.d.ts +9 -0
- package/node_modules/@agnos-ui/core/utils/internal/math.d.ts +5 -0
- package/node_modules/@agnos-ui/core/utils/internal/promise.d.ts +98 -0
- package/node_modules/@agnos-ui/core/utils/internal/scrollbars.d.ts +8 -0
- package/node_modules/@agnos-ui/core/utils/internal/sort.d.ts +16 -0
- package/node_modules/@agnos-ui/core/utils/internal/ssrHTMLElement.d.ts +17 -0
- package/node_modules/@agnos-ui/core/utils/internal/textDirection.d.ts +7 -0
- package/node_modules/@agnos-ui/core/utils/internal/traversal.d.ts +54 -0
- package/node_modules/@agnos-ui/core/utils/stores.cjs +172 -0
- package/node_modules/@agnos-ui/core/utils/stores.d.ts +224 -0
- package/node_modules/@agnos-ui/core/utils/stores.js +172 -0
- package/node_modules/@agnos-ui/core/utils/widget.cjs +8 -0
- package/node_modules/@agnos-ui/core/utils/widget.d.ts +11 -0
- package/node_modules/@agnos-ui/core/utils/widget.js +8 -0
- package/node_modules/@agnos-ui/core/utils/writables.cjs +16 -0
- package/node_modules/@agnos-ui/core/utils/writables.d.ts +95 -0
- package/node_modules/@agnos-ui/core/utils/writables.js +16 -0
- package/node_modules/@agnos-ui/core/writables-DYGjj5T3.js +103 -0
- package/node_modules/@agnos-ui/core/writables-Dt68gADJ.cjs +102 -0
- package/package.json +25 -6
- package/schematics/collection.json +1 -1
- package/types/design-factory-angular-drawer.d.ts +71 -13
- package/types/design-factory-angular-internals.d.ts +220 -31
- package/types/design-factory-angular-sidenav.d.ts +15 -7
- package/types/design-factory-angular-theme.d.ts +122 -0
- package/types/design-factory-angular-topnav.d.ts +435 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-factory-angular-topnav.mjs","sources":["../../topnav/navigation/topnav-navigation-element.ts","../../topnav/navigation/topnav-navigation.ts","../../topnav/navigation/topnav-navigation-link.ts","../../topnav/navigation/topnav-navigation-item.ts","../../topnav/topnav-button.ts","../../topnav/quick-actions/topnav-quick-action-element.ts","../../topnav/quick-actions/topnav-quick-action-button.ts","../../topnav/app-container.ts","../../topnav/quick-actions/topnav-quick-action.ts","../../topnav/quick-actions/topnav-quick-action-search.ts","../../topnav/quick-actions/topnav-quick-actions.ts","../../topnav/topnav.ts","../../topnav/brand/topnav-brand.ts","../../topnav/quick-actions/topnav-quick-action-theme-picker.ts","../../topnav/env-banner.ts","../../topnav/design-factory-angular-topnav.ts"],"sourcesContent":["import { InjectionToken, Signal } from '@angular/core';\n\n/**\n * @internal\n * An Injection Token for the DfTopNavNavigationElement interface, which represents a navigation element in the top navigation component.\n */\nexport const DF_TOPNAV_NAVIGATION_ELEMENT = new InjectionToken<DfTopNavNavigationElement>(\n 'DF_TOPNAV_NAVIGATION_ELEMENT'\n);\n\n/**\n * @internal\n * An abstract class that defines the structure of a navigation element in the top navigation component.\n * It includes an abstract property 'active' which is a Signal that indicates whether the navigation element is active or not.\n */\nexport abstract class DfTopNavNavigationElement {\n abstract readonly active: Signal<boolean>;\n}\n","import { ChangeDetectionStrategy, Component, contentChildren, ViewEncapsulation } from '@angular/core';\nimport { DF_TOPNAV_NAVIGATION_ELEMENT } from './topnav-navigation-element';\n\n/**\n * The TopNav navigation component, used to display a list of navigation items in the TopNav.\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-navigation',\n template: `<ng-content />`,\n host: {\n class: 'df-topnav-navigation',\n role: 'list'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: \"@use '@design-factory/components-styles/topnav/navigation';\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavNavigation {\n protected readonly childrenElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT);\n}\n","import { ChangeDetectionStrategy, Component, input, signal, ViewEncapsulation } from '@angular/core';\nimport { IsActiveMatchOptions, RouterLink, RouterLinkActive } from '@angular/router';\nimport { DF_TOPNAV_NAVIGATION_ELEMENT, DfTopNavNavigationElement } from './topnav-navigation-element';\n// type import for jsdoc link resolution\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { DfTopNavNavigation } from './topnav-navigation';\n\n/**\n * The TopNav navigation item component, used to display a navigation link in the TopNav.\n *\n * It should be used inside a {@link DfTopNavNavigation} component.\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-navigation-link',\n template: `\n <a\n class=\"df-topnav-navigation-link\"\n [routerLink]=\"href()\"\n routerLinkActive=\"df-topnav-navigation-link-active\"\n [routerLinkActiveOptions]=\"routerLinkActiveOptions()\"\n ariaCurrentWhenActive=\"page\"\n [attr.data-text]=\"label()\"\n (isActiveChange)=\"_active.set($event)\"\n >\n <span>{{ label() }}</span>\n </a>\n `,\n host: {\n role: 'listitem',\n '[style.display]': '\"contents\"'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [RouterLink, RouterLinkActive],\n styles: \"@use '@design-factory/components-styles/topnav/link';\",\n providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }],\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavNavigationLink extends DfTopNavNavigationElement {\n /**\n * The label of the navigation link, which will be displayed as the link text.\n */\n readonly label = input.required<string>();\n /**\n * The href of the navigation link, which will be used as the link target. It can be either an internal route or an external URL.\n */\n readonly href = input.required<string>();\n /**\n * The options to determine when the link is active based on the Router state. It can be either an object of type IsActiveMatchOptions or an object with an \"exact\" boolean property. When not provided, it defaults to { exact: false }.\n */\n readonly routerLinkActiveOptions = input<IsActiveMatchOptions | { exact: boolean }>({ exact: false });\n\n protected readonly _active = signal(false);\n /**\n * Indicates if the link is currently active based on the Router state.\n */\n readonly active = this._active.asReadonly();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n Directive,\n ElementRef,\n forwardRef,\n inject,\n input,\n ViewEncapsulation\n} from '@angular/core';\nimport { DF_TOPNAV_NAVIGATION_ELEMENT, DfTopNavNavigationElement } from './topnav-navigation-element';\nimport { DfTopNavNavigationLink } from './topnav-navigation-link';\nimport { RouterLink } from '@angular/router';\nimport { DfTopNav } from '../topnav';\nimport { NgbDropdown, NgbDropdownMenu, NgbDropdownItem, NgbDropdownAnchor } from '@ng-bootstrap/ng-bootstrap/dropdown';\n// type import for jsdoc link resolution\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { DfTopNavNavigation } from './topnav-navigation';\nimport { generateId } from '@agnos-ui/core/utils/id';\n\n// TODO - Implement the dropdown mode of the TopNav using the dropdown wrapper and remove the DfTopNavDropdownToggle directive.\n\n/**\n * @internal\n * Temporary toggle directive for the dropdown mode of the TopNav, which will be used to toggle the dropdown menu when the navigation item is clicked.\n *\n * It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.\n */\n@Directive({\n selector: '[dfDropdownToggle]',\n host: {\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',\n '(keydown.Home)': 'dropdown.onKeyDown($any($event))',\n '(keydown.End)': 'dropdown.onKeyDown($any($event))',\n '(keydown.Tab)': 'dropdown.onKeyDown($any($event))',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }]\n})\nexport class DfTopNavDropdownToggle {\n readonly dropdown = inject(NgbDropdown);\n readonly nativeElement = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n}\n\n/**\n * The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links.\n *\n * It should be used inside a {@link DfTopNavNavigation} component.\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-navigation-item',\n template: `\n @if (dropdownMode()) {\n <div ngbDropdown #dropdown=\"ngbDropdown\">\n <button\n type=\"button\"\n class=\"df-topnav-navigation-link\"\n [attr.data-text]=\"label()\"\n [class.df-topnav-navigation-link-active]=\"active()\"\n aria-haspopup=\"true\"\n [attr.aria-controls]=\"dropdownId\"\n dfDropdownToggle\n >\n <span>{{ label() }}</span>\n <span\n class=\"fal\"\n aria-hidden=\"true\"\n [class.fa-chevron-down]=\"!dropdown.isOpen()\"\n [class.fa-chevron-up]=\"dropdown.isOpen()\"\n ></span>\n </button>\n <div ngbDropdownMenu class=\"dropdown-menu-right\" role=\"menu\" [attr.id]=\"dropdownId\">\n @for (childLink of rootChildLinks(); track childLink) {\n <a\n ngbDropdownItem\n [routerLink]=\"childLink.href()\"\n [class.active]=\"childLink.active()\"\n [attr.aria-current]=\"childLink.active() ? 'page' : null\"\n role=\"menuitem\"\n >\n {{ childLink.label() }}\n </a>\n }\n </div>\n </div>\n } @else {\n <a\n class=\"df-topnav-navigation-link\"\n [routerLink]=\"href()\"\n [class.df-topnav-navigation-link-active]=\"active()\"\n [attr.aria-current]=\"active() ? 'page' : null\"\n [attr.data-text]=\"label()\"\n >\n <span>{{ label() }}</span>\n </a>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.display]': '\"contents\"',\n role: 'listitem'\n },\n imports: [RouterLink, NgbDropdown, NgbDropdownMenu, NgbDropdownItem, DfTopNavDropdownToggle],\n providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }],\n styles: \"@use '@design-factory/components-styles/topnav/link';\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavNavigationItem extends DfTopNavNavigationElement {\n /**\n * The label of the navigation item, which will be displayed as the link text.\n */\n readonly label = input.required<string>();\n /**\n * The href of the navigation item, which will be used as the link target. It can be either an internal route or an external URL.\n */\n readonly href = input.required<string>();\n\n protected readonly childElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT);\n protected readonly deepChildLinks = contentChildren(DfTopNavNavigationLink, { descendants: true });\n protected readonly rootChildLinks = computed(() =>\n this.childElements().filter((child): child is DfTopNavNavigationLink => child instanceof DfTopNavNavigationLink)\n );\n\n private readonly topNav = inject(DfTopNav);\n protected readonly dropdownMode = computed(() => this.topNav.mode() === 'dropdown');\n protected dropdownId = `topnav-dropdown-button-${generateId()}`;\n\n /**\n * Indicates if the navigation item is currently active based on the Router state of its child links.\n */\n readonly active = computed(() => this.deepChildLinks().some((link) => link.active()));\n}\n","import { booleanAttribute, ChangeDetectionStrategy, Component, input, ViewEncapsulation } from '@angular/core';\n\n/**\n * @internal\n * Styles the buttons used in the TopNav.\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'button[dfTopNavButton]',\n host: {\n class: 'df-topnav-btn',\n '[class.df-topnav-btn-icon]': 'icon()',\n '[class]': \"'df-topnav-btn-' + appearance()\"\n },\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: \"@use '@design-factory/components-styles/topnav/button';\",\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavButton {\n /**\n * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.\n */\n readonly appearance = input<'primary' | 'neutral'>('neutral');\n /**\n * Whether the button is an icon button or not. If true, the button will have a fixed width and height and no padding, to fit only an icon.\n */\n readonly icon = input(false, { transform: booleanAttribute });\n}\n","import { InjectionToken } from '@angular/core';\n\n/**\n * @internal\n * An Injection Token for the DfTopNavQuickActionElement interface, which represents a navigation quick action in the top navigation component.\n */\nexport const DF_TOPNAV_QUICK_ACTION_ELEMENT = new InjectionToken<DfTopNavQuickActionElement>(\n 'DF_TOPNAV_QUICK_ACTION_ELEMENT'\n);\n\n/**\n * @internal\n * An abstract class that defines the structure of a quick action element in the top navigation component.\n */\nexport abstract class DfTopNavQuickActionElement {}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n effect,\n input,\n output,\n TemplateRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DfTopNavButton } from '../topnav-button';\nimport { NgbPopover } from '@ng-bootstrap/ng-bootstrap/popover';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { lg$, toAngularSignal } from '@design-factory/angular/internals';\nimport { DF_TOPNAV_QUICK_ACTION_ELEMENT, DfTopNavQuickActionElement } from './topnav-quick-action-element';\n// type import for jsdoc link resolution\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { DfTopNavQuickActions } from './topnav-quick-actions';\n\n/**\n * The TopNav action content directive, used to provide the content of the popover or drawer associated to a {@link DfTopNavQuickActionButton}.\n *\n * It is showed in a popover in desktop and in a drawer on tablet and mobile when the associated quick action button is clicked.\n * @since 21.1\n */\n@Directive({ selector: 'ng-template[dfTopNavQuickActionButtonContent]' })\nexport class DfTopNavQuickActionButtonContent {}\n\n/**\n * The TopNav action icon directive, used to provide a custom icon for the {@link DfTopNavQuickActionButton}.\n *\n * If not provided, the quick action button will use the default icon specified by the {@link DfTopNavQuickActionButton.icon} input.\n * @since 21.1\n */\n@Directive({ selector: 'ng-template[dfTopNavQuickActionButtonIcon]' })\nexport class DfTopNavQuickActionButtonIcon {}\n\n/**\n * The TopNav quick action button component, used to display a quick action button in the TopNav.\n *\n * It should be used inside a {@link DfTopNavQuickActions} component.\n *\n * It can be associated with a popover content using the {@link DfTopNavQuickActionButtonContent} directive or be used alone with the {@link DfTopNavQuickActionButton.act} output.\n *\n * The icon can be set through the {@link DfTopNavQuickActionButton.icon} input or by using the {@link DfTopNavQuickActionButtonIcon} directive.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-quick-action-button',\n template: `\n <button\n dfTopNavButton\n icon\n type=\"button\"\n [appearance]=\"appearance()\"\n [attr.aria-label]=\"label()\"\n [ngbPopover]=\"actionContent()\"\n placement=\"bottom-end\"\n autoClose=\"outside\"\n container=\"body\"\n popoverClass=\"df-topnav-quick-action-popover\"\n #popover=\"ngbPopover\"\n [disabled]=\"disabled()\"\n (click)=\"act.emit()\"\n >\n <ng-template #dfTopNavQuickActionDefaultIcon>\n <span class=\"df-topnav-toggle-icon fal\" [class]=\"icon()\"></span>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"actionIcon() || dfTopNavQuickActionDefaultIcon\" />\n </button>\n `,\n imports: [DfTopNavButton, NgbPopover, NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: `\n .df-app-container:has(.df-drawer.df-collapse-show, .df-drawer.df-collapse-collapsing) {\n .df-topnav-quick-action-popover {\n /* TODO this value should be reworked... */\n @media (min-width: 768px) and (max-width: 991px) {\n z-index: 2010;\n }\n }\n }\n `,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }]\n})\nexport class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {\n /**\n * The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'.\n */\n readonly appearance = input<'primary' | 'neutral'>('neutral');\n /**\n * The label of the quick action button, which will be used as the aria-label attribute for accessibility on desktop and label in the drawer.\n */\n readonly label = input.required<string>();\n /**\n * The icon of the quick action button.\n */\n readonly icon = input<string>();\n /**\n * Whether the quick action button is disabled or not.\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * The event emitted when the quick action button is clicked. It can be used to perform an action instead of showing the associated popover or drawer content.\n */\n readonly act = output();\n\n protected readonly actionContent = contentChild(DfTopNavQuickActionButtonContent, { read: TemplateRef });\n protected readonly actionIcon = contentChild(DfTopNavQuickActionButtonIcon, { read: TemplateRef });\n\n protected readonly popover = viewChild.required<NgbPopover>('popover');\n\n private readonly isLg = toAngularSignal(lg$);\n\n constructor() {\n super();\n /**\n * Need to close the popover on smaller screen\n */\n effect(() => {\n if (!this.isLg()) {\n untracked(() => {\n this.popover().close(false);\n });\n }\n });\n }\n}\n","import {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n ElementRef,\n untracked,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DfTopNav, SideNavItem, SideNavLink } from './topnav';\nimport { DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent } from '@design-factory/angular/sidenav';\n\n// Warning: I am deeply sorry for the pyramid of doom that is the nested for loops in the template, but I could not find a better way to render the nested sidenav items and keep sidenav items contentChild queries working.\n\n/**\n * AppContainer is a simple wrapper component that provides a consistent layout for applications using the {@link DfTopNav} component.\n *\n * It ensures that the content of the application is displayed correctly below the {@link DfTopNav} and can be used to apply common styles or layout properties to the entire application.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav|Design Factory documentation} for details and examples.\n * @since 21.1\n */\n@Component({\n selector: 'df-app-container',\n template: `\n <ng-content select=\"df-topnav\" />\n <ng-content select=\"df-env-banner\" />\n <div class=\"df-app-container-content\" #drawerContainerActions>\n @if (sidenavContent().length) {\n <df-sidenav [resizable]=\"false\" [searchable]=\"false\" class=\"df-sidenav-light-sky\">\n @for (element1 of sidenavContent(); track element1.label()) {\n @if (isSideItem(element1)) {\n <df-sidenav-item [label]=\"element1.label()\">\n @for (element2 of element1.children(); track element2.label()) {\n @if (isSideItem(element2)) {\n <df-sidenav-item [label]=\"element2.label()\">\n @for (element3 of element2.children(); track element3.label()) {\n @if (isSideItem(element3)) {\n <df-sidenav-item [label]=\"element3.label()\">\n @for (element4 of element3.children(); track element4.label()) {\n @if (!isSideItem(element4)) {\n <df-sidenav-link\n [label]=\"element4.label()\"\n [linkPath]=\"element4.href()\"\n [routerLinkActiveOptions]=\"element4.routerLinkActiveOptions()\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element3.label()\"\n [linkPath]=\"element3.href()\"\n [routerLinkActiveOptions]=\"element3.routerLinkActiveOptions()\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element2.label()\"\n [linkPath]=\"element2.href()\"\n [routerLinkActiveOptions]=\"element2.routerLinkActiveOptions()\"\n />\n }\n }\n </df-sidenav-item>\n } @else {\n <df-sidenav-link\n [label]=\"element1.label()\"\n [linkPath]=\"element1.href()\"\n [routerLinkActiveOptions]=\"element1.routerLinkActiveOptions()\"\n />\n }\n }\n </df-sidenav>\n }\n <ng-content select=\"main\" />\n </div>\n `,\n host: {\n class: 'df-app-container'\n },\n styles: \"@use '@design-factory/components-styles/topnav/app-container';\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent]\n})\nexport class DfAppContainer implements AfterContentInit {\n protected readonly topnav = contentChild.required(DfTopNav);\n protected readonly sidenav = viewChild(DfSidenavComponent);\n\n protected readonly sidenavContent = computed(() => this.topnav()['sidenavContent']() ?? []);\n protected readonly drawerContainerActions = viewChild.required<ElementRef<HTMLElement>>('drawerContainerActions');\n\n protected isSideItem(item: SideNavItem | SideNavLink): item is SideNavItem {\n return 'children' in item;\n }\n\n constructor() {\n // Sync the state of the sidenav with the topnav on initialization and whenever the state of the sidenav changes\n effect(() => {\n this.topnav().navExpanded.set(!this.sidenav()?.isMinimized());\n });\n effect(() => {\n let sidenavMinimized = false;\n let sidenav = undefined as DfSidenavComponent | undefined;\n const topnavExpanded = this.topnav().navExpanded();\n untracked(() => {\n sidenav = this.sidenav();\n sidenavMinimized = sidenav?.isMinimized() ?? false;\n });\n // we need this condition to make sure to not call toggleMinimize when the drawer has not rendered yet (issue with the drawer toggleMinimze)\n if (topnavExpanded === sidenavMinimized) {\n sidenav?.toggleMinimize(!topnavExpanded);\n }\n });\n }\n\n ngAfterContentInit() {\n this.topnav()['inAppContainer'].set(true);\n }\n}\n","import { ChangeDetectionStrategy, Component, contentChild, Directive, TemplateRef } from '@angular/core';\nimport { DF_TOPNAV_QUICK_ACTION_ELEMENT, DfTopNavQuickActionElement } from './topnav-quick-action-element';\nimport { NgTemplateOutlet } from '@angular/common';\n// type import for jsdoc link resolution\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport type { DfTopNavQuickActions } from './topnav-quick-actions';\nimport type { DfTopNavQuickActionButton } from './topnav-quick-action-button';\n/* eslint-enable @typescript-eslint/no-unused-vars */\n\n/**\n * The TopNav action \"in topnav\" content directive.\n *\n * It drives the display of the {@link DfTopNavQuickAction} on larger screens, where the quick action is displayed in a topnav.\n *\n * @since 21.1\n */\n@Directive({ selector: 'ng-template[dfTopNavQuickActionInTopNav]' })\nexport class DfTopNavQuickActionInTopNav {}\n\n/**\n * The TopNav action \"in drawer\" content directive.\n *\n * It drives the display of the {@link DfTopNavQuickAction} on smaller screens, where the quick action is displayed in a drawer.\n *\n * @since 21.1\n */\n@Directive({ selector: 'ng-template[dfTopNavQuickActionInDrawer]' })\nexport class DfTopNavQuickActionInDrawer {}\n\n/**\n * The TopNav quick action component, used to display a quick action in the TopNav.\n *\n * Consider using the {@link DfTopNavQuickActionButton} component instead, which provides a button with the appropriate styling and behavior for quick actions in the TopNav.\n *\n * It should be used inside a {@link DfTopNavQuickActions} component.\n * It requires a {@link DfTopNavQuickActionInTopNav} template to be provided as content, which will be displayed in desktop. An optional {@link DfTopNavQuickActionInDrawer} template can also be provided, which will be displayed in mobile and tablet instead of the topnav template.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-quick-action',\n template: ` <ng-container *ngTemplateOutlet=\"content()\" /> `,\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }]\n})\nexport class DfTopNavQuickAction extends DfTopNavQuickActionElement {\n protected readonly content = contentChild.required(DfTopNavQuickActionInTopNav, { read: TemplateRef });\n protected readonly drawerContent = contentChild(DfTopNavQuickActionInDrawer, { read: TemplateRef });\n}\n","import { ChangeDetectionStrategy, Component, contentChild, input, TemplateRef } from '@angular/core';\nimport { DF_TOPNAV_QUICK_ACTION_ELEMENT, DfTopNavQuickActionElement } from './topnav-quick-action-element';\nimport { NgTemplateOutlet } from '@angular/common';\n// type import for jsdoc link resolution\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { DfTopNavQuickActions } from './topnav-quick-actions';\n\n// TODO - Use the wrapped input instead of bootstrap classes\n\n/**\n * The TopNav quick action search input directive.\n *\n * It should be used inside a {@link DfTopNavQuickActionSearch} component.\n * @since 21.1\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'input[dfTopNavQuickActionSearchInput]',\n host: {\n type: 'search',\n class: 'df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n})\nexport class DfTopNavQuickActionSearchInput {}\n\n/**\n * The TopNav quick action search component, used to display a search input in the TopNav quick actions.\n *\n * It should be used inside a {@link DfTopNavQuickActions} component and contain a ng-template with an input {@link DfTopNavQuickActionSearchInput}.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-quick-action-search',\n template: `\n <div class=\"df-topnav-quick-action-search-container input-group\">\n <div class=\"input-group-prepend text-bg-neutral-alt\" aria-hidden=\"true\">\n <span class=\"input-group-text fa-light fa-search\"></span>\n </div>\n <ng-container *ngTemplateOutlet=\"templateRef()\" />\n </div>\n `,\n host: {\n role: 'search',\n '[attr.aria-label]': 'ariaLabel()'\n },\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }]\n})\nexport class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {\n protected readonly templateRef = contentChild.required(TemplateRef<unknown>);\n\n /**\n * The aria-label of the search.\n *\n * It is required to set it if you have more than one global search in your page, to allow assistive technologies to differentiate between them.\n * See [ARIA guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/search_role) for more information.\n */\n readonly ariaLabel = input<string>();\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChildren,\n DOCUMENT,\n effect,\n inject,\n input,\n signal,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { DfTopNavQuickActionButton } from './topnav-quick-action-button';\nimport { lg$, md$, toAngularSignal } from '@design-factory/angular/internals';\nimport { DfDrawer } from '@design-factory/angular/drawer';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { DfTopNavButton } from '../topnav-button';\nimport { DfAppContainer } from '../app-container';\nimport { DF_TOPNAV_QUICK_ACTION_ELEMENT } from './topnav-quick-action-element';\nimport { DfTopNavQuickAction } from './topnav-quick-action';\nimport { DfTopNavQuickActionSearch } from './topnav-quick-action-search';\n\n/**\n * The TopNav quick actions component, used to display a list of quick action buttons in the TopNav. On large screens, the buttons are displayed inline, while on smaller screens, they are displayed in a drawer.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-quick-actions',\n styles: `\n @use '@design-factory/components-styles/topnav/quick-actions';\n .df-topnav-drawer-host {\n display: none;\n }\n `,\n host: {\n '[style.display]': \"'contents'\",\n ngSkipHydration: 'true'\n },\n template: ` <ng-template #topnavQuickActions>\n <ng-content />\n </ng-template>\n <div class=\"df-topnav-quick-actions\">\n @if (isLg()) {\n <ng-container *ngTemplateOutlet=\"topnavQuickActions\" />\n } @else {\n <button\n dfTopNavButton\n icon\n aria-label=\"Toggle quick actions menu\"\n i18n-aria-label=\"@@df.topnav.toggle-quick-actions.ariaLabel\"\n (click)=\"menuExpanded.set(!menuExpanded())\"\n >\n <span\n class=\"fal df-topnav-toggle-icon\"\n [class.fa-xmark]=\"menuExpanded()\"\n [class.fa-ellipsis-vertical]=\"!menuExpanded()\"\n ></span>\n </button>\n <df-drawer\n class=\"df-topnav-drawer-host\"\n position=\"inline-end\"\n className=\"df-topnav-quick-actions-drawer {{ !isMd() ? 'df-topnav-quick-actions-drawer-mobile' : '' }}\"\n [(visible)]=\"menuExpanded\"\n [focusOnInit]=\"false\"\n [keepInDom]=\"false\"\n [container]=\"drawerContainer()\"\n [size]=\"null\"\n [backdrop]=\"isMd()\"\n [bodyScroll]=\"true\"\n #drawer\n >\n @let selected = selectedQuickAction();\n @if (selected) {\n <button type=\"button\" class=\"df-topnav-drawer-button\" (click)=\"selectedQuickAction.set(undefined)\">\n <span class=\"fal fa-arrow-left df-topnav-drawer-button-icon\" aria-hidden=\"true\"></span>\n <span>{{ selected.label() }}</span>\n </button>\n <hr class=\"df-topnav-drawer-divider\" />\n <ng-container *ngTemplateOutlet=\"selected['actionContent']()\" />\n } @else {\n <div class=\"df-topnav-drawer-buttons-container\">\n @if (searchElement()) {\n <div\n class=\"input-group position-relative\"\n [style.z-index]=\"1\"\n role=\"search\"\n [attr.aria-label]=\"searchElement()!.ariaLabel()\"\n >\n <div class=\"input-group-prepend text-bg-neutral-alt\" aria-hidden=\"true\">\n <span class=\"input-group-text fa-light fa-search\"></span>\n </div>\n <ng-container *ngTemplateOutlet=\"searchElement()!['templateRef']()\" />\n </div>\n }\n @for (actionElement of actionElements(); track actionElement) {\n @if (isButton(actionElement)) {\n <button\n type=\"button\"\n class=\"df-topnav-drawer-button\"\n (click)=\"clickQuickAction(actionElement)\"\n [disabled]=\"actionElement.disabled()\"\n >\n <ng-template #dfQuickActionDefaultIcon>\n <span class=\"fal\" [class]=\"actionElement.icon()\" aria-hidden=\"true\"></span>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"actionElement['actionIcon']() || dfQuickActionDefaultIcon\" />\n <span>{{ actionElement.label() }}</span>\n @if (actionElement['actionContent']()) {\n <span\n class=\"fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end\"\n aria-hidden=\"true\"\n ></span>\n }\n </button>\n } @else {\n <ng-container *ngTemplateOutlet=\"actionElement['drawerContent']() ?? actionElement['content']()\" />\n }\n }\n </div>\n }\n </df-drawer>\n }\n </div>`,\n imports: [DfDrawer, NgTemplateOutlet, DfTopNavButton],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavQuickActions {\n /**\n * When true, the quick action buttons will be displayed in reversed order in the drawer on smaller screens. This is useful when the quick actions are defined in the template in the same order as the navigation items, so that the first quick action is closest to the navigation on smaller screens. Defaults to true.\n */\n readonly reversedVertical = input(true);\n /**\n * The container element in which the drawer will be rendered on smaller screens. By default, it will try to render in the drawer container provided by the app container, and if not available, it will render in the body element. This input can be used to specify a different container element for the drawer.\n */\n readonly tabletDrawerContainer = input<HTMLElement>();\n\n private readonly appContainer = inject(DfAppContainer, { optional: true });\n private readonly _actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT);\n private readonly drawer = viewChild('drawer', { read: DfDrawer });\n private readonly document = inject(DOCUMENT);\n\n // Responsive signals\n protected readonly isMd = toAngularSignal(md$);\n protected readonly isLg = toAngularSignal(lg$);\n\n // the drawer container is the app container drawer container if available, otherwise it falls back to the body element. On md screens, it can be overridden by the tabletDrawerContainer input\n protected readonly drawerContainer = computed(() =>\n this.isMd()\n ? (this.tabletDrawerContainer() ??\n this.appContainer?.['drawerContainerActions']?.()?.nativeElement ??\n this.document.body)\n : this.document.body\n );\n\n protected readonly actionElements = computed<(DfTopNavQuickActionButton | DfTopNavQuickAction)[]>(\n () =>\n (this.reversedVertical() && !this.isLg() ? [...this._actionElements()].reverse() : this._actionElements()).filter(\n (el) => !(el instanceof DfTopNavQuickActionSearch)\n ) as (DfTopNavQuickActionButton | DfTopNavQuickAction)[]\n );\n protected readonly searchElement = computed(() =>\n this._actionElements().find((el) => el instanceof DfTopNavQuickActionSearch)\n );\n\n protected isButton(action: DfTopNavQuickActionButton | DfTopNavQuickAction): action is DfTopNavQuickActionButton {\n return action instanceof DfTopNavQuickActionButton;\n }\n\n protected isAction(action: DfTopNavQuickActionButton | DfTopNavQuickAction): action is DfTopNavQuickAction {\n return action instanceof DfTopNavQuickAction;\n }\n\n protected readonly menuExpanded = signal(false);\n // the selected quick action in the\n protected readonly selectedQuickAction = signal<DfTopNavQuickActionButton | undefined>(undefined);\n\n protected async clickQuickAction(actionBtn: DfTopNavQuickActionButton) {\n if (actionBtn['actionContent']()) {\n this.selectedQuickAction.set(actionBtn);\n } else {\n await this.drawer()!.close(false);\n actionBtn.act.emit();\n }\n }\n\n constructor() {\n // resets the menu state when resizing to large screens, as the drawer will be closed and the selected button will be hidden\n effect(() => {\n if (this.isLg()) {\n this.menuExpanded.set(false);\n }\n });\n effect(() => {\n if (!this.menuExpanded()) {\n this.selectedQuickAction.set(undefined);\n }\n });\n }\n}\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n contentChild,\n effect,\n input,\n isDevMode,\n model,\n signal,\n Signal,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { lg$, toAngularSignal, xl$ } from '@design-factory/angular/internals';\nimport { DfTopNavNavigation } from './navigation/topnav-navigation';\nimport { DfTopNavNavigationLink } from './navigation/topnav-navigation-link';\nimport { DfTopNavNavigationItem } from './navigation/topnav-navigation-item';\nimport { DfTopNavButton } from './topnav-button';\nimport { DfTopNavQuickActions } from './quick-actions/topnav-quick-actions';\nimport { IsActiveMatchOptions } from '@angular/router';\n// type import for jsdoc link resolution\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport type { DfAppContainer } from './app-container';\n\n/**\n * @internal\n * Defines the structure of the navigation items used to build the sidenav menu when the TopNav is in \"sidenav\" mode. These types are used internally to map the navigation elements defined in the TopNavNavigation component to a structure that can be easily consumed by the sidenav component.\n */\nexport type SideNavItem = {\n label: Signal<string>;\n children: Signal<(SideNavItem | SideNavLink)[]>;\n};\n/**\n * @internal\n * Defines the structure of the navigation links used to build the sidenav menu when the TopNav is in \"sidenav\" mode. These types are used internally to map the navigation elements defined in the TopNavNavigation component to a structure that can be easily consumed by the sidenav component.\n */\nexport type SideNavLink = {\n label: Signal<string>;\n href: Signal<string>;\n routerLinkActiveOptions: Signal<IsActiveMatchOptions | { exact: boolean }>;\n};\n\n/**\n * TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications.\n *\n * It is recommended to be used with a {@link DfAppContainer} to ensure the correct layout and responsiveness, but it can also be used without it if needed.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav|Design Factory documentation} for details and examples.\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav',\n template: `\n <ng-template #navContent>\n <ng-content select=\"df-topnav-navigation\" />\n </ng-template>\n <header class=\"df-topnav-header\">\n <nav\n class=\"df-topnav-nav\"\n [class.df-topnav-nav-basic]=\"mainNavAppliedStyle() === 'basic'\"\n [class.df-topnav-nav-mirror]=\"mainNavAppliedStyle() === 'mirror'\"\n [class.df-topnav-nav-border]=\"mainNavAppliedStyle() === 'basic' && !appliedSuperheader()\"\n aria-label=\"Main\"\n i18n-aria-label=\"@@df.topnav.main-nav.ariaLabel\"\n >\n @if (showToggle() || (sidenavContent().length && !isLg())) {\n <button\n dfTopNavButton\n icon\n aria-label=\"Toggle navigation menu\"\n i18n-aria-label=\"@@df.topnav.toggle-sidenav.ariaLabel\"\n (click)=\"navExpanded.set(!navExpanded())\"\n aria-haspopup=\"dialog\"\n >\n <span\n class=\"fal df-topnav-toggle-icon\"\n [class.fa-xmark]=\"navExpanded()\"\n [class.fa-bars]=\"!navExpanded()\"\n ></span>\n </button>\n }\n <ng-content select=\"df-topnav-brand\" />\n @if (!appliedSuperheader() && (!inAppContainer() || isXl())) {\n <ng-container *ngTemplateOutlet=\"navContent\" />\n }\n <ng-content select=\"df-topnav-quick-actions\" />\n </nav>\n @if (appliedSuperheader() && (!inAppContainer() || isLg())) {\n <nav\n class=\"df-topnav-nav\"\n [class.df-topnav-nav-basic]=\"secondaryNavAppliedStyle() === 'basic'\"\n [class.df-topnav-nav-mirror]=\"secondaryNavAppliedStyle() === 'mirror'\"\n aria-label=\"Secondary\"\n i18n-aria-label=\"@@df.topnav.secondary-nav.ariaLabel\"\n >\n <ng-container *ngTemplateOutlet=\"navContent\" />\n </nav>\n }\n </header>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: \"@use '@design-factory/components-styles/topnav/topnav';\",\n imports: [DfTopNavButton, NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'df-topnav'\n }\n})\nexport class DfTopNav {\n /**\n * The style of the TopNav main nav, which determines the applied styles. Can be either \"basic\" or \"mirror\".\n * When not provided, the applied mode will be determined based on the number of navigation links.\n */\n readonly mainNavStyle = input<'basic' | 'mirror'>();\n /**\n * The style of the TopNav secondary nav, which determines the applied styles. Can be either \"basic\" or \"mirror\".\n * When not provided, the applied mode will be opposite to the main nav style.\n */\n readonly secondaryNavStyle = input<'basic' | 'mirror'>();\n /**\n * The mode of the TopNav, which determines the behavior of the navigation. Can be either \"sidenav\" or \"dropdown\".\n */\n readonly mode = input<'sidenav' | 'dropdown'>('sidenav');\n /**\n * Indicates whether the navigation menu is expanded or collapsed. This is used to control the visibility of the sidenav menu when the TopNav is in \"sidenav\" mode on smaller screens. When set to true, the sidenav menu will be visible, and when set to false, it will be hidden.\n */\n readonly navExpanded = model(false);\n /**\n * When set to true, the superheader layout will be applied, which moves the navigation to a second line and applies the \"mirror\" style to it. When not provided, the superheader layout will be applied automatically when there are more than 5 navigation links and the screen size is large or bigger.\n */\n readonly superheader = input<boolean>();\n /**\n * When set to true, the toggle button will be always shown. Useful when the TopNav is used without any navigation links but the toggle button is still needed to access other content.\n * When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large.\n */\n readonly showToggle = input(false, { transform: booleanAttribute });\n\n private readonly navigationContainer = contentChild(DfTopNavNavigation);\n private readonly navElements = computed(() => this.navigationContainer()?.['childrenElements']?.() ?? []);\n private readonly navActions = contentChild(DfTopNavQuickActions);\n protected readonly inAppContainer = signal(false);\n\n /**\n * Signal that indicates when the links need to be displayed in the topnav instead of the navbar.\n */\n private readonly displayLinksInNav = computed(() => this.isXl() || (this.appliedSuperheader() && this.isLg()));\n\n /**\n * The content of the sidenav, which is derived from the TopNav navigation elements.\n */\n protected readonly sidenavContent = computed(() => {\n if (!this.inAppContainer()) {\n return [];\n }\n const topNavElements = this.navElements();\n if (!topNavElements.length) {\n return [];\n }\n if (this.mode() === 'dropdown' && this.displayLinksInNav()) {\n return [];\n }\n const activeNavElement = topNavElements.find((el) => el.active());\n\n // In desktop mode, we don't show the sidenav when there are only links (so everything can be shown in the topnav) or the current root active item is a link\n if (\n this.displayLinksInNav() &&\n (!topNavElements.some((el) => el instanceof DfTopNavNavigationItem) ||\n activeNavElement instanceof DfTopNavNavigationLink)\n ) {\n return [];\n }\n\n let navElements: readonly (DfTopNavNavigationItem | DfTopNavNavigationLink)[];\n\n if (activeNavElement instanceof DfTopNavNavigationItem && this.displayLinksInNav()) {\n navElements = (activeNavElement['childElements']() ?? []) as (DfTopNavNavigationItem | DfTopNavNavigationLink)[];\n } else {\n navElements = topNavElements as (DfTopNavNavigationItem | DfTopNavNavigationLink)[];\n }\n const mapNavElementToSideNavItem = (\n el: DfTopNavNavigationItem | DfTopNavNavigationLink\n ): SideNavItem | SideNavLink => {\n if (el instanceof DfTopNavNavigationLink) {\n return {\n label: el.label,\n href: el.href,\n routerLinkActiveOptions: el.routerLinkActiveOptions\n };\n }\n {\n return {\n label: el.label,\n children: computed(() =>\n ((el['childElements']() ?? []) as (DfTopNavNavigationItem | DfTopNavNavigationLink)[]).map(\n mapNavElementToSideNavItem\n )\n )\n };\n }\n };\n return navElements.map(mapNavElementToSideNavItem);\n });\n\n // Responsive signals\n protected readonly isLg = toAngularSignal(lg$);\n protected readonly isXl = toAngularSignal(xl$);\n\n protected readonly appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5);\n\n protected readonly mainNavAppliedStyle = computed(\n () => this.mainNavStyle() ?? (this.navElements().length > 0 && !this.appliedSuperheader() ? 'mirror' : 'basic')\n );\n protected readonly secondaryNavAppliedStyle = computed(\n () => this.secondaryNavStyle() ?? (this.mainNavAppliedStyle() === 'mirror' ? 'basic' : 'mirror')\n );\n\n constructor() {\n // The drawer and sidenav should never be opened together. Those two effects ensure that.\n effect(() => {\n if (this.navExpanded()) {\n const navActions = this.navActions();\n if (navActions) {\n navActions['menuExpanded'].set(false);\n }\n }\n });\n effect(() => {\n const navActions = this.navActions();\n if (navActions && navActions['menuExpanded']()) {\n this.navExpanded.set(false);\n }\n });\n // Warn in development mode if the level of nesting of the navigation items is more than 2, as this is not supported in the dropdown mode and will lead to unexpected behaviors.\n if (isDevMode()) {\n effect(() => {\n if (this.mode() !== 'dropdown') {\n return;\n }\n const isNestingLevelTooDeep = this.navElements().some(\n (el) =>\n el instanceof DfTopNavNavigationItem &&\n (el['childElements']() ?? []).some((child) => child instanceof DfTopNavNavigationItem)\n );\n if (isNestingLevelTooDeep) {\n console.warn(\n 'DfTopNav: Navigation with a nesting level greater than 2 is not supported in dropdown mode and may lead to unexpected behaviors.'\n );\n }\n });\n }\n }\n}\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n contentChild,\n Directive,\n input,\n TemplateRef,\n ViewEncapsulation\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { sm$, toAngularSignal } from '@design-factory/angular/internals';\n\n/**\n * A directive to mark the company template in the {@link DfTopNavBrand} brand component.\n *\n * This is used to customize the display of the company logo and name in the {@link DfTopNavBrand} brand component.\n * @since 21.1\n */\n@Directive({\n selector: 'ng-template[dfTopNavBrandLinkContent]'\n})\nexport class DfTopNavBrandLinkContent {}\n\n/**\n * The TopNav brand component, used to display the company and product information.\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#brand|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-brand',\n template: `\n <div class=\"df-topnav-brand\">\n <a class=\"df-topnav-brand-link\" [routerLink]=\"href()\">\n <ng-template #defaultLink>\n @if (!isSm()) {\n <svg\n class=\"df-topnav-brand-company-amadeus-logo-mobile\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"20\"\n viewBox=\"0 0 16 20\"\n fill=\"none\"\n aria-label=\"Amadeus\"\n >\n <path\n d=\"M9.4004 0H2.32686V3.82542C5.69729 3.68039 6.64699 3.63205 8.11894 3.63205C10.4449 3.63205 11.822 4.50311 11.822 6.82811V8.32946H8.11894C1.8994 8.32946 0 10.8962 0 14.2372C0 18.547 3.13347 20 6.26693 20C9.4004 20 11.2998 18.4987 11.9168 18.0627V19.7574H16V6.24617C16 1.69471 13.5784 0 9.4004 0ZM11.822 15.5443C10.7776 15.932 8.87815 16.6096 7.07445 16.6096C5.36554 16.6096 3.98838 15.8353 3.98838 13.9463C3.98838 12.2506 5.03287 11.3796 7.31142 11.2829L11.822 11.0886V15.5443Z\"\n fill=\"currentColor\"\n />\n </svg>\n } @else {\n @if (amaudeusLogoVector()) {\n <svg\n class=\"df-topnav-brand-company-amaudeus-logo-desktop\"\n viewBox=\"0 0 112 16\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-label=\"Amadeus\"\n >\n <path\n d=\"M107.272 6.62415C105.258 5.92656 104.367 5.46175 104.367 4.4161C104.367 3.75718 104.793 2.75021 106.807 2.75021C108.705 2.75021 110.72 3.60249 110.72 3.60249V0.696849C109.868 0.348052 108.357 0 106.652 0C103.746 0 100.958 1.54913 100.958 4.61021C100.958 7.67128 103.747 8.52282 105.646 9.14307C107.428 9.7239 108.629 10.3055 108.629 11.4671C108.629 12.4749 107.931 13.249 105.646 13.249C103.708 13.249 101.384 12.4749 101.384 12.4749V15.3798C101.384 15.3798 103.63 16 105.801 16C108.667 16 112.038 14.9923 112.038 11.2344C112.038 8.67751 109.946 7.55378 107.273 6.62415H107.272Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M34.2475 15.8059V0H29.8701L25.57 11.7773L21.2692 0H16.8917V15.8059H19.8747V3.87394L24.2135 15.8052H26.7316L31.2645 3.87394V15.8052H34.2475V15.8059Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M44.7062 0H38.9343V3.06033C41.6853 2.94432 42.4595 2.90564 43.6605 2.90564C45.5585 2.90564 46.6822 3.60249 46.6822 5.46249V6.66357H43.6605C38.5855 6.66357 37.0364 8.71693 37.0364 11.3898C37.0364 14.8376 39.5932 16 42.1501 16C44.7069 16 46.2568 14.7989 46.7603 14.4501V15.8059H50.0921V4.99693C50.0921 1.35502 48.1168 0 44.7069 0H44.7062ZM46.6822 12.4354C45.8299 12.7456 44.28 13.2877 42.8082 13.2877C41.4138 13.2877 40.2901 12.6682 40.2901 11.157C40.2901 9.8005 41.1424 9.10365 43.0016 9.02631L46.6822 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M73.8005 2.71154H81.7804V0H70.3906V15.8059H81.7804V13.0944H73.8005V9.25834H80.5793V6.58548H73.8005V2.71154Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M98.2073 15.8059V0H94.7209V12.048C93.8686 12.4354 92.6675 13.0557 90.9243 13.0557C88.7549 13.0557 88.0967 11.8546 88.0967 9.29776V0H84.6095V9.7239C84.6095 13.7919 85.9266 16 90.072 16C92.3968 16 93.5592 15.1477 94.7982 14.4501V15.8059H98.2073Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M59.8152 0H53.5398V15.8059H59.8152C65.123 15.8059 67.7958 13.3651 67.7958 7.74863C67.7958 2.8283 64.8902 0.000743702 59.8152 0.000743702V0ZM59.6597 13.0549H57.0255V2.75021H59.6597C62.2947 2.75021 64.2313 4.02863 64.2313 7.74789C64.2313 11.4671 62.9528 13.0549 59.6597 13.0549Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M7.67054 0H1.89867V3.06033C4.64888 2.94432 5.42382 2.90564 6.6249 2.90564C8.52282 2.90564 9.64656 3.60249 9.64656 5.46249V6.66357H6.6249C1.54987 6.66357 0 8.71693 0 11.3898C0 14.8376 2.55685 16 5.11369 16C7.67054 16 9.22041 14.7989 9.7239 14.4501V15.8059H13.0557V4.99693C13.0557 1.35577 11.0797 0 7.67054 0ZM9.64656 12.4354C8.79427 12.7456 7.2444 13.2877 5.77261 13.2877C4.37817 13.2877 3.25444 12.6682 3.25444 11.157C3.25444 9.8005 4.10672 9.10365 5.96598 9.02631L9.64656 8.87087V12.4354Z\"\n fill=\"currentColor\"\n />\n </svg>\n } @else {\n <span class=\"df-topnav-brand-company-amadeus-text df-topnav-brand-company-desktop\">Amadeus</span>\n }\n }\n @if (product()) {\n <span>{{ product() }}</span>\n }\n </ng-template>\n <ng-container *ngTemplateOutlet=\"brandLinkContent() ?? defaultLink\" />\n </a>\n @if (module()) {\n <span class=\"df-topnav-brand-module-separator\" aria-hidden=\"true\"></span>\n <span class=\"df-topnav-brand-module\">{{ module() }}</span>\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: \"@use '@design-factory/components-styles/topnav/brand';\",\n imports: [RouterLink, NgTemplateOutlet],\n encapsulation: ViewEncapsulation.None\n})\nexport class DfTopNavBrand {\n /**\n * The URL to navigate to when the brand is clicked. Defaults to \"/\".\n */\n readonly href = input('/');\n /**\n * The product.\n */\n readonly product = input<string>();\n /**\n * The module.\n */\n readonly module = input<string>();\n /**\n * Whether to display the Amadeus logo as a vector graphic instead of text.\n */\n readonly amaudeusLogoVector = input(false, { transform: booleanAttribute });\n\n protected readonly brandLinkContent = contentChild(DfTopNavBrandLinkContent, { read: TemplateRef });\n protected readonly isSm = toAngularSignal(sm$);\n}\n","import { NgTemplateOutlet, TitleCasePipe } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n TemplateRef,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { NgbDropdown, NgbDropdownItem, NgbDropdownMenu, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap/dropdown';\nimport { DfThemeService } from '@design-factory/angular/theme';\nimport { DF_TOPNAV_QUICK_ACTION_ELEMENT } from './topnav-quick-action-element';\nimport { DfTopNavQuickAction } from './topnav-quick-action';\nimport { DfTopNavButton } from '../topnav-button';\nimport { generateId } from '@agnos-ui/core/utils/id';\n\n/**\n * DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application.\n *\n * It uses the {@link DfThemeService} to manage theme state and apply the selected theme. The component displays an icon and label corresponding to the current theme selection and provides options for users to change the theme.\n * @since 21.1\n */\n@Component({\n selector: 'df-topnav-quick-action-theme-picker',\n template: `\n <ng-template #themePickerContent>\n <div ngbDropdown class=\"d-flex\" #dropdown=\"ngbDropdown\">\n <button\n type=\"button\"\n aria-label=\"Choose theme\"\n i18n-aria-label=\"@@df.themePicker.dropdownToggle.ariaLabel\"\n class=\"w-100 w-lg-auto\"\n dfTopNavButton\n [attr.id]=\"toggleId\"\n ngbDropdownToggle\n >\n <span aria-hidden=\"true\" class=\"fas {{ mapThemeToIcon().get(themeService.selected()) }}\"></span>\n <span class=\"me-auto d-lg-none\">\n {{ themeService.selected() | titlecase }}\n </span>\n </button>\n <div\n ngbDropdownMenu\n [attr.aria-labelledby]=\"toggleId\"\n class=\"dropdown-menu-end df-topnav-quick-action-theme-picker-dropdown\"\n >\n @for (themeOption of themeOptions(); track themeOption; let id = $index) {\n <button\n type=\"button\"\n ngbDropdownItem\n class=\"dropdown-item gap-3 d-flex\"\n [class.active]=\"themeOption.themeMode === themeService.selected()\"\n (click)=\"dropdown.close(); themeService.setTheme(themeOption.themeMode)\"\n >\n <span class=\"fas {{ mapThemeToIcon().get(themeOption.themeMode) }}\" aria-hidden=\"true\"></span>\n {{ themeOption.themeMode | titlecase }}\n </button>\n }\n </div>\n </div>\n </ng-template>\n <ng-container *ngTemplateOutlet=\"themePickerContent\" />\n `,\n imports: [\n NgbDropdown,\n NgbDropdownToggle,\n NgbDropdownMenu,\n NgbDropdownItem,\n TitleCasePipe,\n NgTemplateOutlet,\n DfTopNavButton\n ],\n styles: `\n .df-drawer .df-topnav-quick-action-theme-picker-dropdown {\n min-width: 100%;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }]\n})\nexport class DfTopNavQuickActionThemePicker extends DfTopNavQuickAction {\n protected readonly themeService = inject(DfThemeService);\n\n /**\n * An array of theme options to display in the dropdown\n *\n * Each option includes a `themeMode` which corresponds to a theme mode in the DfThemeService, and an `icon` which is a FontAwesome class name for the icon to display next to the option.\n */\n readonly themeOptions = input.required<{ themeMode: string; icon: string }[]>();\n /**\n * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.\n */\n readonly appearance = input<'primary' | 'neutral'>('neutral');\n\n protected readonly mapThemeToIcon = computed(() => {\n const map = new Map<string, string>();\n for (const option of this.themeOptions()) {\n map.set(option.themeMode, option.icon);\n }\n return map;\n });\n\n protected readonly toggleId = `df-topnav-dropdown-toggle-${generateId()}`;\n\n protected override readonly content = viewChild.required<TemplateRef<unknown>>('themePickerContent');\n}\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n/**\n * The environment banner component, used to display a banner at the top of the page indicating the current environment (e.g., development, staging, production).\n *\n * See {@link https://design-factory.amadeus.net/components/topnav/examples#environment-banner|Design Factory example}\n * @since 21.1\n */\n@Component({\n selector: 'df-env-banner',\n template: `<ng-content />`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: \"@use '@design-factory/components-styles/topnav/env-banner';\",\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'df-env-banner'\n }\n})\nexport class DfEnvBanner {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# @agnos-ui/core
|
|
2
|
+
|
|
3
|
+
This is an internal package maintained within the Design Factory monorepo. It is **not** published to npm independently and is bundled into `@design-factory/angular` during build via `bundledDependencies`.
|
|
4
|
+
|
|
5
|
+
AgnosUI is a framework-agnostic component library. This `@agnos-ui/core` package contains the framework-agnostic headless component logic. It is used by [`@design-factory/angular`](../../angular/components/).
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const utils_stores = require("./utils/stores.cjs");
|
|
3
|
+
const services_transitions_baseTransitions = require("./services/transitions/baseTransitions.cjs");
|
|
4
|
+
const tansu = require("@amadeus-it-group/tansu");
|
|
5
|
+
const utils_func = require("./utils/func.cjs");
|
|
6
|
+
const utils_writables = require("./writables-Dt68gADJ.cjs");
|
|
7
|
+
const utils_directive = require("./directive-DCaXmRe_.cjs");
|
|
8
|
+
const utils_widget = require("./utils/widget.cjs");
|
|
9
|
+
function adjustItemsCloseOthers(items, openItems, oldOpen) {
|
|
10
|
+
let keepOpen;
|
|
11
|
+
if (openItems.length == 2) {
|
|
12
|
+
oldOpen = oldOpen ?? openItems[0];
|
|
13
|
+
keepOpen = openItems.find((id) => id !== oldOpen);
|
|
14
|
+
} else if (openItems.length > 2) {
|
|
15
|
+
keepOpen = openItems[0];
|
|
16
|
+
}
|
|
17
|
+
if (keepOpen) {
|
|
18
|
+
items.forEach((item) => {
|
|
19
|
+
if (item.stores.id$() !== keepOpen && item.stores.visible$()) {
|
|
20
|
+
item.patch({ visible: false });
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
return items;
|
|
25
|
+
}
|
|
26
|
+
function getItem(items, id) {
|
|
27
|
+
return items.find((item) => item.stores.id$() === id);
|
|
28
|
+
}
|
|
29
|
+
const defaultAccordionConfig = {
|
|
30
|
+
closeOthers: false,
|
|
31
|
+
onItemShown: utils_func.noop,
|
|
32
|
+
onItemHidden: utils_func.noop,
|
|
33
|
+
className: "",
|
|
34
|
+
itemDestroyOnHide: true,
|
|
35
|
+
itemAnimated: true,
|
|
36
|
+
itemTransition: utils_func.noop,
|
|
37
|
+
itemHeadingLevel: 2,
|
|
38
|
+
itemClassName: "",
|
|
39
|
+
itemHeaderClassName: "",
|
|
40
|
+
itemButtonClassName: "",
|
|
41
|
+
itemBodyContainerClassName: "",
|
|
42
|
+
itemBodyClassName: ""
|
|
43
|
+
};
|
|
44
|
+
const defaultItemConfig = {
|
|
45
|
+
id: "",
|
|
46
|
+
destroyOnHide: defaultAccordionConfig.itemDestroyOnHide,
|
|
47
|
+
disabled: false,
|
|
48
|
+
visible: false,
|
|
49
|
+
animated: defaultAccordionConfig.itemAnimated,
|
|
50
|
+
transition: defaultAccordionConfig.itemTransition,
|
|
51
|
+
onShown: utils_func.noop,
|
|
52
|
+
onHidden: utils_func.noop,
|
|
53
|
+
onVisibleChange: utils_func.noop,
|
|
54
|
+
className: defaultAccordionConfig.itemClassName,
|
|
55
|
+
headerClassName: defaultAccordionConfig.itemHeaderClassName,
|
|
56
|
+
buttonClassName: defaultAccordionConfig.itemButtonClassName,
|
|
57
|
+
bodyContainerClassName: defaultAccordionConfig.itemBodyContainerClassName,
|
|
58
|
+
bodyClassName: defaultAccordionConfig.itemBodyClassName,
|
|
59
|
+
headingLevel: defaultAccordionConfig.itemHeadingLevel
|
|
60
|
+
};
|
|
61
|
+
const coreAccordionItemProps = Object.keys(defaultItemConfig);
|
|
62
|
+
function getAccordionDefaultConfig() {
|
|
63
|
+
return { ...defaultAccordionConfig };
|
|
64
|
+
}
|
|
65
|
+
const configAccordionValidator = {
|
|
66
|
+
closeOthers: utils_writables.typeBoolean,
|
|
67
|
+
onItemShown: utils_writables.typeFunction,
|
|
68
|
+
onItemHidden: utils_writables.typeFunction,
|
|
69
|
+
className: utils_writables.typeString,
|
|
70
|
+
itemDestroyOnHide: utils_writables.typeBoolean,
|
|
71
|
+
itemAnimated: utils_writables.typeBoolean,
|
|
72
|
+
itemTransition: utils_writables.typeFunction,
|
|
73
|
+
itemClassName: utils_writables.typeString,
|
|
74
|
+
itemHeaderClassName: utils_writables.typeString,
|
|
75
|
+
itemButtonClassName: utils_writables.typeString,
|
|
76
|
+
itemBodyContainerClassName: utils_writables.typeString,
|
|
77
|
+
itemBodyClassName: utils_writables.typeString,
|
|
78
|
+
itemHeadingLevel: utils_writables.createTypeEnum([1, 2, 3, 4, 5, 6])
|
|
79
|
+
};
|
|
80
|
+
const configItemValidator = {
|
|
81
|
+
id: utils_writables.typeString,
|
|
82
|
+
destroyOnHide: utils_writables.typeBoolean,
|
|
83
|
+
disabled: utils_writables.typeBoolean,
|
|
84
|
+
visible: utils_writables.typeBoolean,
|
|
85
|
+
animated: utils_writables.typeBoolean,
|
|
86
|
+
transition: utils_writables.typeFunction,
|
|
87
|
+
onShown: utils_writables.typeFunction,
|
|
88
|
+
onHidden: utils_writables.typeFunction,
|
|
89
|
+
onVisibleChange: utils_writables.typeFunction,
|
|
90
|
+
className: utils_writables.typeString,
|
|
91
|
+
headerClassName: utils_writables.typeString,
|
|
92
|
+
buttonClassName: utils_writables.typeString,
|
|
93
|
+
bodyContainerClassName: utils_writables.typeString,
|
|
94
|
+
bodyClassName: utils_writables.typeString,
|
|
95
|
+
headingLevel: utils_writables.createTypeEnum([1, 2, 3, 4, 5, 6])
|
|
96
|
+
};
|
|
97
|
+
function createAccordionItem(config) {
|
|
98
|
+
const [
|
|
99
|
+
{
|
|
100
|
+
bodyClassName$,
|
|
101
|
+
buttonClassName$,
|
|
102
|
+
bodyContainerClassName$,
|
|
103
|
+
headerClassName$,
|
|
104
|
+
animated$,
|
|
105
|
+
transition$,
|
|
106
|
+
destroyOnHide$,
|
|
107
|
+
onShown$,
|
|
108
|
+
onHidden$,
|
|
109
|
+
onVisibleChange$,
|
|
110
|
+
visible$,
|
|
111
|
+
id$: _dirtyId$,
|
|
112
|
+
disabled$,
|
|
113
|
+
...stateProps
|
|
114
|
+
},
|
|
115
|
+
patch
|
|
116
|
+
] = utils_stores.writablesForProps(defaultItemConfig, config, configItemValidator);
|
|
117
|
+
const initDone$ = tansu.writable(false);
|
|
118
|
+
const id$ = utils_stores.idWithDefault(_dirtyId$);
|
|
119
|
+
const transition = services_transitions_baseTransitions.createTransition({
|
|
120
|
+
props: {
|
|
121
|
+
transition: transition$,
|
|
122
|
+
visible: visible$,
|
|
123
|
+
onVisibleChange: onVisibleChange$,
|
|
124
|
+
animated: animated$,
|
|
125
|
+
animatedOnInit: false,
|
|
126
|
+
initDone: initDone$,
|
|
127
|
+
onHidden: () => {
|
|
128
|
+
onHidden$()();
|
|
129
|
+
},
|
|
130
|
+
onShown: () => {
|
|
131
|
+
onShown$()();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
const shouldBeInDOM$ = tansu.computed(() => !destroyOnHide$() || !transition.stores.hidden$());
|
|
136
|
+
const toggleDirective = utils_directive.createAttributesDirective(() => ({
|
|
137
|
+
attributes: {
|
|
138
|
+
id: tansu.computed(() => `${id$()}-toggle`),
|
|
139
|
+
"aria-expanded": tansu.computed(() => `${visible$()}`),
|
|
140
|
+
"aria-disabled": tansu.computed(() => `${disabled$()}`),
|
|
141
|
+
"aria-controls": tansu.computed(() => `${id$()}-body-container`),
|
|
142
|
+
disabled: disabled$
|
|
143
|
+
},
|
|
144
|
+
classNames: { collapsed: tansu.computed(() => !visible$()) },
|
|
145
|
+
events: {
|
|
146
|
+
click: () => {
|
|
147
|
+
if (!disabled$()) {
|
|
148
|
+
void transition.api.toggle();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}));
|
|
153
|
+
const transitionDirective = transition.directives.directive;
|
|
154
|
+
const bodyContainerAttrsDirective = utils_directive.createAttributesDirective(() => ({
|
|
155
|
+
attributes: {
|
|
156
|
+
id: tansu.computed(() => `${id$()}-body-container`),
|
|
157
|
+
class: bodyContainerClassName$,
|
|
158
|
+
"aria-labelledby": tansu.computed(() => `${id$()}-toggle`),
|
|
159
|
+
role: tansu.readable("region")
|
|
160
|
+
}
|
|
161
|
+
}));
|
|
162
|
+
return {
|
|
163
|
+
...utils_stores.stateStores({
|
|
164
|
+
visible$,
|
|
165
|
+
id$,
|
|
166
|
+
shouldBeInDOM$,
|
|
167
|
+
disabled$,
|
|
168
|
+
bodyClassName$,
|
|
169
|
+
buttonClassName$,
|
|
170
|
+
bodyContainerClassName$,
|
|
171
|
+
headerClassName$,
|
|
172
|
+
...stateProps
|
|
173
|
+
}),
|
|
174
|
+
patch,
|
|
175
|
+
api: {
|
|
176
|
+
initDone: () => {
|
|
177
|
+
initDone$.set(true);
|
|
178
|
+
},
|
|
179
|
+
collapse: transition.api.hide,
|
|
180
|
+
expand: transition.api.show,
|
|
181
|
+
toggle: (animated) => transition.api.toggle(void 0, animated)
|
|
182
|
+
},
|
|
183
|
+
directives: {
|
|
184
|
+
toggleDirective,
|
|
185
|
+
buttonDirective: utils_directive.mergeDirectives(
|
|
186
|
+
toggleDirective,
|
|
187
|
+
utils_directive.createAttributesDirective(() => ({
|
|
188
|
+
attributes: {
|
|
189
|
+
type: tansu.readable("button"),
|
|
190
|
+
class: buttonClassName$
|
|
191
|
+
}
|
|
192
|
+
}))
|
|
193
|
+
),
|
|
194
|
+
headerDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: headerClassName$ } })),
|
|
195
|
+
bodyDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: bodyClassName$ } })),
|
|
196
|
+
transitionDirective,
|
|
197
|
+
bodyContainerAttrsDirective,
|
|
198
|
+
bodyContainerDirective: utils_directive.mergeDirectives(transitionDirective, bodyContainerAttrsDirective),
|
|
199
|
+
itemDirective: utils_func.noop
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
|
|
204
|
+
return utils_widget.createWidgetFactory("accordion", (config) => {
|
|
205
|
+
const [writables, patch] = utils_stores.writablesForProps(accordionConfig, config, accordionValidator);
|
|
206
|
+
const { closeOthers$, onItemShown$, onItemHidden$, className$ } = writables;
|
|
207
|
+
const accordionItemConfig = Object.fromEntries(
|
|
208
|
+
Object.entries(writables).filter((entry) => entry[0].startsWith("item")).map((entry) => [entry[0].charAt(4).toLowerCase() + entry[0].slice(5, -1), entry[1]])
|
|
209
|
+
);
|
|
210
|
+
const itemWidgets$ = utils_directive.registrationArray();
|
|
211
|
+
const openItems$ = tansu.computed(() => {
|
|
212
|
+
const openItems = [];
|
|
213
|
+
itemWidgets$().forEach((item) => {
|
|
214
|
+
if (item.stores.visible$()) {
|
|
215
|
+
openItems.push(item.stores.id$());
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
return openItems;
|
|
219
|
+
});
|
|
220
|
+
const oldOpenItem$ = tansu.writable(openItems$()[0]);
|
|
221
|
+
const checkCloseOthersAction$ = tansu.computed(() => {
|
|
222
|
+
if (closeOthers$()) {
|
|
223
|
+
adjustItemsCloseOthers(itemWidgets$(), openItems$(), oldOpenItem$());
|
|
224
|
+
oldOpenItem$.set(openItems$()[0]);
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
const action$ = tansu.computed(() => {
|
|
228
|
+
checkCloseOthersAction$();
|
|
229
|
+
});
|
|
230
|
+
return {
|
|
231
|
+
...utils_stores.stateStores({ itemWidgets$, className$ }),
|
|
232
|
+
patch,
|
|
233
|
+
api: {
|
|
234
|
+
expand: async (id, animated) => {
|
|
235
|
+
await getItem(itemWidgets$(), id)?.api.expand(animated);
|
|
236
|
+
},
|
|
237
|
+
collapse: async (id, animated) => {
|
|
238
|
+
await getItem(itemWidgets$(), id)?.api.collapse(animated);
|
|
239
|
+
},
|
|
240
|
+
toggle: async (id, animated) => {
|
|
241
|
+
await getItem(itemWidgets$(), id)?.api.toggle(animated);
|
|
242
|
+
},
|
|
243
|
+
expandAll: async (animated) => {
|
|
244
|
+
await Promise.all(itemWidgets$().map((i) => i.api.expand(animated)));
|
|
245
|
+
},
|
|
246
|
+
collapseAll: async (animated) => {
|
|
247
|
+
await Promise.all(itemWidgets$().map((i) => i.api.collapse(animated)));
|
|
248
|
+
},
|
|
249
|
+
registerItem: (propsConfig) => {
|
|
250
|
+
const itemProps = accordionItemProps;
|
|
251
|
+
const config2 = utils_stores.mergeConfigStores(
|
|
252
|
+
itemProps,
|
|
253
|
+
utils_stores.normalizeConfigStores(itemProps, propsConfig?.config),
|
|
254
|
+
accordionItemConfig
|
|
255
|
+
);
|
|
256
|
+
const [{ onHidden$, onShown$ }] = utils_stores.writablesForProps(
|
|
257
|
+
{
|
|
258
|
+
onHidden: defaultItemConfig.onHidden,
|
|
259
|
+
onShown: defaultItemConfig.onShown
|
|
260
|
+
},
|
|
261
|
+
{ config: config2, props: propsConfig?.props }
|
|
262
|
+
);
|
|
263
|
+
const item = itemFactory({
|
|
264
|
+
config: config2,
|
|
265
|
+
props: {
|
|
266
|
+
...propsConfig?.props,
|
|
267
|
+
onHidden: tansu.asWritable(
|
|
268
|
+
tansu.readable(() => {
|
|
269
|
+
onItemHidden$()(item.stores.id$());
|
|
270
|
+
onHidden$()?.();
|
|
271
|
+
}),
|
|
272
|
+
(val) => {
|
|
273
|
+
onItemHidden$.set(val);
|
|
274
|
+
}
|
|
275
|
+
),
|
|
276
|
+
onShown: tansu.asWritable(
|
|
277
|
+
tansu.readable(() => {
|
|
278
|
+
onItemShown$()(item.stores.id$());
|
|
279
|
+
onShown$()?.();
|
|
280
|
+
}),
|
|
281
|
+
(val) => {
|
|
282
|
+
onItemShown$.set(val);
|
|
283
|
+
}
|
|
284
|
+
)
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
item.directives.itemDirective = utils_directive.mergeDirectives(
|
|
288
|
+
() => ({
|
|
289
|
+
destroy: itemWidgets$.register(item)
|
|
290
|
+
}),
|
|
291
|
+
utils_directive.createAttributesDirective(() => ({
|
|
292
|
+
attributes: { class: item.stores.className$, id: item.stores.id$ }
|
|
293
|
+
}))
|
|
294
|
+
);
|
|
295
|
+
return item;
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
directives: {
|
|
299
|
+
accordionDirective: utils_directive.mergeDirectives(
|
|
300
|
+
utils_directive.directiveSubscribe(action$),
|
|
301
|
+
utils_directive.createAttributesDirective(() => ({
|
|
302
|
+
attributes: { class: className$ },
|
|
303
|
+
classNames: { "au-accordion": utils_stores.true$ }
|
|
304
|
+
}))
|
|
305
|
+
)
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
const createAccordion = factoryCreateAccordion();
|
|
311
|
+
exports.createAccordion = createAccordion;
|
|
312
|
+
exports.createAccordionItem = createAccordionItem;
|
|
313
|
+
exports.factoryCreateAccordion = factoryCreateAccordion;
|
|
314
|
+
exports.getAccordionDefaultConfig = getAccordionDefaultConfig;
|