@design-factory/angular 21.1.0-next.1 → 22.0.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.
Files changed (331) hide show
  1. package/.ai/docs/components/accordion/accessibility.md +45 -0
  2. package/.ai/docs/components/accordion/api.md +279 -0
  3. package/.ai/docs/components/accordion/developer.md +43 -0
  4. package/.ai/docs/components/accordion/guidelines.md +99 -0
  5. package/.ai/docs/components/accordion/overview.md +17 -0
  6. package/.ai/docs/components/alert/accessibility.md +24 -0
  7. package/.ai/docs/components/alert/api.md +65 -0
  8. package/.ai/docs/components/alert/developer.md +63 -0
  9. package/.ai/docs/components/alert/guidelines.md +62 -0
  10. package/.ai/docs/components/alert/overview.md +12 -0
  11. package/.ai/docs/components/button/accessibility.md +25 -0
  12. package/.ai/docs/components/button/api.md +71 -0
  13. package/.ai/docs/components/button/developer.md +52 -0
  14. package/.ai/docs/components/button/guidelines.md +75 -0
  15. package/.ai/docs/components/button/overview.md +15 -0
  16. package/.ai/docs/components/buttongroup/api.md +16 -0
  17. package/.ai/docs/components/buttongroup/developer.md +32 -0
  18. package/.ai/docs/components/drawer/accessibility.md +15 -0
  19. package/.ai/docs/components/drawer/api.md +56 -0
  20. package/.ai/docs/components/drawer/developer.md +36 -0
  21. package/.ai/docs/components/drawer/examples.md +9 -0
  22. package/.ai/docs/components/drawer/guidelines.md +58 -0
  23. package/.ai/docs/components/drawer/overview.md +19 -0
  24. package/.ai/docs/components/dropdown/accessibility.md +27 -0
  25. package/.ai/docs/components/dropdown/api.md +85 -0
  26. package/.ai/docs/components/dropdown/developer.md +59 -0
  27. package/.ai/docs/components/dropdown/guidelines.md +80 -0
  28. package/.ai/docs/components/dropdown/overview.md +16 -0
  29. package/.ai/docs/components/sidenav/accessibility.md +48 -0
  30. package/.ai/docs/components/sidenav/api.md +110 -0
  31. package/.ai/docs/components/sidenav/developer.md +14 -0
  32. package/.ai/docs/components/sidenav/guidelines.md +83 -0
  33. package/.ai/docs/components/sidenav/overview.md +16 -0
  34. package/.ai/docs/components/tooltip/accessibility.md +11 -0
  35. package/.ai/docs/components/tooltip/api.md +39 -0
  36. package/.ai/docs/components/tooltip/developer.md +16 -0
  37. package/.ai/docs/components/tooltip/guidelines.md +84 -0
  38. package/.ai/docs/components/tooltip/overview.md +23 -0
  39. package/.ai/docs/components/topnav/accessibility.md +51 -0
  40. package/.ai/docs/components/topnav/api.md +190 -0
  41. package/.ai/docs/components/topnav/developer.md +43 -0
  42. package/.ai/docs/components/topnav/guidelines.md +121 -0
  43. package/.ai/docs/components/topnav/overview.md +17 -0
  44. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
  45. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
  46. package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
  47. package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
  48. package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
  49. package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
  50. package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
  51. package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
  52. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
  53. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
  54. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
  55. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
  56. package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
  57. package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
  58. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
  59. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
  60. package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
  61. package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
  62. package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
  63. package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
  64. package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
  65. package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
  66. package/.ai/docs/demos/alert/card/alert-card.html +15 -0
  67. package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
  68. package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
  69. package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
  70. package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
  71. package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
  72. package/.ai/docs/demos/button/basic/button-basic.html +4 -0
  73. package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
  74. package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
  75. package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
  76. package/.ai/docs/demos/button/icons/button-icons.html +17 -0
  77. package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
  78. package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
  79. package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
  80. package/.ai/docs/demos/button/variants/button-variants.html +49 -0
  81. package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
  82. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
  83. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
  84. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
  85. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
  86. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
  87. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
  88. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
  89. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
  90. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
  91. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
  92. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
  93. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
  94. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
  95. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
  96. package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
  97. package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
  98. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
  99. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
  100. package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
  101. package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
  102. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
  103. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
  104. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
  105. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
  106. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
  107. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
  108. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
  109. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
  110. package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
  111. package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
  112. package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
  113. package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
  114. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
  115. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
  116. package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
  117. package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
  118. package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
  119. package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
  120. package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
  121. package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
  122. package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
  123. package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
  124. package/.ai/index.md +26 -0
  125. package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
  126. package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
  127. package/fesm2022/design-factory-angular-alert.mjs +312 -0
  128. package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
  129. package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
  130. package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
  131. package/fesm2022/design-factory-angular-button.mjs +240 -0
  132. package/fesm2022/design-factory-angular-button.mjs.map +1 -0
  133. package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
  134. package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
  135. package/fesm2022/design-factory-angular-drawer.mjs +76 -81
  136. package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
  137. package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
  138. package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
  139. package/fesm2022/design-factory-angular-form-field.mjs +287 -0
  140. package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
  141. package/fesm2022/design-factory-angular-icon.mjs +24 -0
  142. package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
  143. package/fesm2022/design-factory-angular-input.mjs +34 -0
  144. package/fesm2022/design-factory-angular-input.mjs.map +1 -0
  145. package/fesm2022/design-factory-angular-internals.mjs +119 -39
  146. package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
  147. package/fesm2022/design-factory-angular-separator.mjs +43 -0
  148. package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
  149. package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
  150. package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
  151. package/fesm2022/design-factory-angular-slider.mjs +451 -0
  152. package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
  153. package/fesm2022/design-factory-angular-theme.mjs +30 -20
  154. package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
  155. package/fesm2022/design-factory-angular-toggle.mjs +172 -0
  156. package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
  157. package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
  158. package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
  159. package/fesm2022/design-factory-angular-topnav.mjs +635 -558
  160. package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
  161. package/package.json +61 -8
  162. package/schematics/collection.json +35 -0
  163. package/schematics/component-migration/accordion/constants.d.ts +10 -0
  164. package/schematics/component-migration/accordion/constants.js +46 -0
  165. package/schematics/component-migration/accordion/guide.md +257 -0
  166. package/schematics/component-migration/accordion/index.d.ts +2 -0
  167. package/schematics/component-migration/accordion/index.js +5 -0
  168. package/schematics/component-migration/accordion/migration.d.ts +2 -0
  169. package/schematics/component-migration/accordion/migration.js +13 -0
  170. package/schematics/component-migration/accordion/schema.json +25 -0
  171. package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
  172. package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
  173. package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
  174. package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
  175. package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
  176. package/schematics/component-migration/accordion/steps/title-content.js +75 -0
  177. package/schematics/component-migration/ai/prompt.md +83 -0
  178. package/schematics/component-migration/alert/guide.md +246 -0
  179. package/schematics/component-migration/alert/index.d.ts +2 -0
  180. package/schematics/component-migration/alert/index.js +5 -0
  181. package/schematics/component-migration/alert/migration.d.ts +2 -0
  182. package/schematics/component-migration/alert/migration.js +50 -0
  183. package/schematics/component-migration/alert/schema.json +25 -0
  184. package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
  185. package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
  186. package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
  187. package/schematics/component-migration/alert/steps/animation-input.js +17 -0
  188. package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
  189. package/schematics/component-migration/alert/steps/close-output.js +17 -0
  190. package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
  191. package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
  192. package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
  193. package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
  194. package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
  195. package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
  196. package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
  197. package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
  198. package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
  199. package/schematics/component-migration/alert/steps/selector.js +18 -0
  200. package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
  201. package/schematics/component-migration/alert/steps/static-classes.js +97 -0
  202. package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
  203. package/schematics/component-migration/alert/steps/static-type.js +28 -0
  204. package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
  205. package/schematics/component-migration/alert/steps/template-reference.js +15 -0
  206. package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
  207. package/schematics/component-migration/alert/steps/template-todos.js +78 -0
  208. package/schematics/component-migration/button/guide.md +278 -0
  209. package/schematics/component-migration/button/index.d.ts +2 -0
  210. package/schematics/component-migration/button/index.js +5 -0
  211. package/schematics/component-migration/button/migration.d.ts +2 -0
  212. package/schematics/component-migration/button/migration.js +180 -0
  213. package/schematics/component-migration/button/schema.json +25 -0
  214. package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
  215. package/schematics/component-migration/button/steps/static-classes.js +128 -0
  216. package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
  217. package/schematics/component-migration/button/steps/template-todos.js +120 -0
  218. package/schematics/component-migration/button/types.d.ts +7 -0
  219. package/schematics/component-migration/button/types.js +2 -0
  220. package/schematics/component-migration/dropdown/guide.md +252 -0
  221. package/schematics/component-migration/dropdown/index.d.ts +2 -0
  222. package/schematics/component-migration/dropdown/index.js +5 -0
  223. package/schematics/component-migration/dropdown/migration.d.ts +2 -0
  224. package/schematics/component-migration/dropdown/migration.js +41 -0
  225. package/schematics/component-migration/dropdown/schema.json +25 -0
  226. package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
  227. package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
  228. package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
  229. package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
  230. package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
  231. package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
  232. package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
  233. package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
  234. package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
  235. package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
  236. package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
  237. package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
  238. package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
  239. package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
  240. package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
  241. package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
  242. package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
  243. package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
  244. package/schematics/component-migration/index.d.ts +3 -0
  245. package/schematics/component-migration/index.js +26 -0
  246. package/schematics/component-migration/next-steps/index.d.ts +13 -0
  247. package/schematics/component-migration/next-steps/index.js +34 -0
  248. package/schematics/component-migration/registry.d.ts +1 -0
  249. package/schematics/component-migration/registry.js +15 -0
  250. package/schematics/component-migration/schema.json +20 -0
  251. package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
  252. package/schematics/component-migration/shared/ai-handoff.js +28 -0
  253. package/schematics/component-migration/shared/angular-component.d.ts +10 -0
  254. package/schematics/component-migration/shared/angular-component.js +125 -0
  255. package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
  256. package/schematics/component-migration/shared/button-visual-classes.js +111 -0
  257. package/schematics/component-migration/shared/component-context.d.ts +7 -0
  258. package/schematics/component-migration/shared/component-context.js +24 -0
  259. package/schematics/component-migration/shared/component-imports.d.ts +45 -0
  260. package/schematics/component-migration/shared/component-imports.js +380 -0
  261. package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
  262. package/schematics/component-migration/shared/create-component-schematic.js +55 -0
  263. package/schematics/component-migration/shared/import-edits.d.ts +11 -0
  264. package/schematics/component-migration/shared/import-edits.js +157 -0
  265. package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
  266. package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
  267. package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
  268. package/schematics/component-migration/shared/migrate-project.js +151 -0
  269. package/schematics/component-migration/shared/project-templates.d.ts +15 -0
  270. package/schematics/component-migration/shared/project-templates.js +43 -0
  271. package/schematics/component-migration/shared/scan-project.d.ts +3 -0
  272. package/schematics/component-migration/shared/scan-project.js +24 -0
  273. package/schematics/component-migration/shared/static-placement.d.ts +1 -0
  274. package/schematics/component-migration/shared/static-placement.js +45 -0
  275. package/schematics/component-migration/shared/template-edits.d.ts +28 -0
  276. package/schematics/component-migration/shared/template-edits.js +153 -0
  277. package/schematics/component-migration/shared/template-result.d.ts +3 -0
  278. package/schematics/component-migration/shared/template-result.js +11 -0
  279. package/schematics/component-migration/shared/testing.d.ts +13 -0
  280. package/schematics/component-migration/shared/testing.js +59 -0
  281. package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
  282. package/schematics/component-migration/shared/todo-comments.js +81 -0
  283. package/schematics/component-migration/shared/types.d.ts +41 -0
  284. package/schematics/component-migration/shared/types.js +2 -0
  285. package/schematics/component-migration/tooltip/guide.md +196 -0
  286. package/schematics/component-migration/tooltip/index.d.ts +2 -0
  287. package/schematics/component-migration/tooltip/index.js +5 -0
  288. package/schematics/component-migration/tooltip/migration.d.ts +2 -0
  289. package/schematics/component-migration/tooltip/migration.js +50 -0
  290. package/schematics/component-migration/tooltip/schema.json +25 -0
  291. package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
  292. package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
  293. package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
  294. package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
  295. package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
  296. package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
  297. package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
  298. package/schematics/component-migration/utils/component-resource-collector.js +107 -0
  299. package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
  300. package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
  301. package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
  302. package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
  303. package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
  304. package/schematics/component-migration/utils/typescript/decorators.js +41 -0
  305. package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
  306. package/schematics/component-migration/utils/typescript/functions.js +20 -0
  307. package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
  308. package/schematics/component-migration/utils/typescript/imports.js +110 -0
  309. package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
  310. package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
  311. package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
  312. package/schematics/component-migration/utils/typescript/property-name.js +22 -0
  313. package/schematics/package.json +3 -0
  314. package/types/design-factory-angular-accordion.d.ts +553 -0
  315. package/types/design-factory-angular-alert.d.ts +166 -0
  316. package/types/design-factory-angular-breakpoints.d.ts +13 -0
  317. package/types/design-factory-angular-button.d.ts +166 -0
  318. package/types/design-factory-angular-buttongroup.d.ts +45 -0
  319. package/types/design-factory-angular-drawer.d.ts +19 -26
  320. package/types/design-factory-angular-dropdown.d.ts +148 -0
  321. package/types/design-factory-angular-form-field.d.ts +122 -0
  322. package/types/design-factory-angular-icon.d.ts +11 -0
  323. package/types/design-factory-angular-input.d.ts +16 -0
  324. package/types/design-factory-angular-internals.d.ts +78 -19
  325. package/types/design-factory-angular-separator.d.ts +29 -0
  326. package/types/design-factory-angular-sidenav.d.ts +114 -17
  327. package/types/design-factory-angular-slider.d.ts +239 -0
  328. package/types/design-factory-angular-toggle.d.ts +93 -0
  329. package/types/design-factory-angular-tooltip.d.ts +113 -0
  330. package/types/design-factory-angular-topnav.d.ts +47 -52
  331. package/drawer/README.md +0 -54
@@ -1,13 +1,15 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, contentChildren, ViewEncapsulation, ChangeDetectionStrategy, Component, input, signal, inject, ElementRef, forwardRef, Directive, computed, booleanAttribute, output, contentChild, TemplateRef, viewChild, effect, untracked, DOCUMENT, model, isDevMode } from '@angular/core';
3
1
  import { NgTemplateOutlet, TitleCasePipe } from '@angular/common';
4
- import { toAngularSignal, lg$, md$, xl$, sm$ } from '@design-factory/angular/internals';
2
+ import * as i0 from '@angular/core';
3
+ import { InjectionToken, contentChildren, ViewEncapsulation, Component, input, computed, signal, inject, ElementRef, effect, Directive, booleanAttribute, output, contentChild, TemplateRef, viewChild, untracked, DOCUMENT, viewChildren, model, isDevMode } from '@angular/core';
4
+ import { trackWindow } from '@design-factory/angular/breakpoints';
5
+ import { DfButton, DfIconButton } from '@design-factory/angular/button';
5
6
  import { RouterLink, RouterLinkActive } from '@angular/router';
6
- import { NgbDropdown, NgbDropdownAnchor, NgbDropdownMenu, NgbDropdownItem, NgbDropdownToggle } from '@ng-bootstrap/ng-bootstrap/dropdown';
7
7
  import { generateId } from '@design-factory/core/utils/id';
8
+ import { DfIcon } from '@design-factory/angular/icon';
9
+ import { DfDropdown, DfDropdownItemLink, DfDropdownItemButton, DfDropdownToggle } from '@design-factory/angular/dropdown';
8
10
  import { NgbPopover } from '@ng-bootstrap/ng-bootstrap/popover';
9
11
  import { DfDrawer } from '@design-factory/angular/drawer';
10
- import { DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent } from '@design-factory/angular/sidenav';
12
+ import { DfSidenavInput } from '@design-factory/angular/sidenav';
11
13
  import { DfThemeService } from '@design-factory/angular/theme';
12
14
 
13
15
  /**
@@ -29,17 +31,18 @@ class DfTopNavNavigationElement {
29
31
  */
30
32
  class DfTopNavNavigation {
31
33
  constructor() {
32
- this.childrenElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, ...(ngDevMode ? [{ debugName: "childrenElements" }] : []));
34
+ this.childrenElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, /* @ts-ignore */
35
+ ...(ngDevMode ? [{ debugName: "childrenElements" }] : /* istanbul ignore next */ []));
33
36
  }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DfTopNavNavigation, isStandalone: true, selector: "df-topnav-navigation", host: { attributes: { "role": "list" }, classAttribute: "df-topnav-navigation" }, queries: [{ propertyName: "childrenElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-topnav-navigation{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigation, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavNavigation, isStandalone: true, selector: "df-topnav-navigation", host: { attributes: { "role": "list" }, classAttribute: "df-topnav-navigation" }, queries: [{ propertyName: "childrenElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-topnav-navigation{display:flex}\n"], encapsulation: i0.ViewEncapsulation.None }); }
36
39
  }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigation, decorators: [{
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigation, decorators: [{
38
41
  type: Component,
39
42
  args: [{ selector: 'df-topnav-navigation', template: `<ng-content />`, host: {
40
43
  class: 'df-topnav-navigation',
41
44
  role: 'list'
42
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation{display:flex}\n"] }]
45
+ }, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation{display:flex}\n"] }]
43
46
  }], propDecorators: { childrenElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_NAVIGATION_ELEMENT), { isSignal: true }] }] } });
44
47
 
45
48
  /**
@@ -54,88 +57,117 @@ class DfTopNavNavigationLink extends DfTopNavNavigationElement {
54
57
  /**
55
58
  * The label of the navigation link, which will be displayed as the link text.
56
59
  */
57
- this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
60
+ this.label = input.required(/* @ts-ignore */
61
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
62
+ /**
63
+ * The external href of the navigation link, which will be used as the link target. Use {@link routerLink} for internal links.
64
+ */
65
+ this.href = input(/* @ts-ignore */
66
+ ...(ngDevMode ? [undefined, { debugName: "href" }] : /* istanbul ignore next */ []));
58
67
  /**
59
- * 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.
68
+ * The internal router link of the navigation link, which will be used as the link target. Use {@link href} for external links.
60
69
  */
61
- this.href = input.required(...(ngDevMode ? [{ debugName: "href" }] : []));
70
+ this.routerLink = input(/* @ts-ignore */
71
+ ...(ngDevMode ? [undefined, { debugName: "routerLink" }] : /* istanbul ignore next */ []));
72
+ this.resolvedLink = computed(() => this.routerLink() ?? this.href(), /* @ts-ignore */
73
+ ...(ngDevMode ? [{ debugName: "resolvedLink" }] : /* istanbul ignore next */ []));
74
+ this.externalLink = computed(() => !!this.href(), /* @ts-ignore */
75
+ ...(ngDevMode ? [{ debugName: "externalLink" }] : /* istanbul ignore next */ []));
62
76
  /**
63
77
  * 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 }.
64
78
  */
65
- this.routerLinkActiveOptions = input({ exact: false }, ...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : []));
66
- this._active = signal(false, ...(ngDevMode ? [{ debugName: "_active" }] : []));
79
+ this.routerLinkActiveOptions = input({ exact: false }, /* @ts-ignore */
80
+ ...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : /* istanbul ignore next */ []));
81
+ this._active = signal(false, /* @ts-ignore */
82
+ ...(ngDevMode ? [{ debugName: "_active" }] : /* istanbul ignore next */ []));
67
83
  /**
68
84
  * Indicates if the link is currently active based on the Router state.
69
85
  */
70
86
  this.active = this._active.asReadonly();
71
87
  }
72
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationLink, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
73
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DfTopNavNavigationLink, isStandalone: true, selector: "df-topnav-navigation-link", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: true, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], usesInheritance: true, ngImport: i0, template: `
74
- <a
75
- class="df-topnav-navigation-link"
76
- [routerLink]="href()"
77
- routerLinkActive="df-topnav-navigation-link-active"
78
- [routerLinkActiveOptions]="routerLinkActiveOptions()"
79
- ariaCurrentWhenActive="page"
80
- [attr.data-text]="label()"
81
- (isActiveChange)="_active.set($event)"
82
- >
83
- <span>{{ label() }}</span>
84
- </a>
85
- `, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-navigation-link-bg-color),inset 0 0 0 4px var(--df-topnav-navigation-link-border-color)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important;background-color:var(--df-topnav-navigation-link-bg-color)!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link.df-topnav-navigation-link-active{font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-navigation-link-border-color)}.df-topnav-nav-basic .df-topnav-navigation-link{color:var(--df-topnav-color-inert-basic-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav-basic .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-hovered-border);color:var(--df-topnav-color-basic-primary-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-pressed-border);color:var(--df-topnav-color-basic-primary-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-basic-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-active-border)}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activeHovered-border);color:var(--df-topnav-color-basic-primary-activeHovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activePressed-border);color:var(--df-topnav-color-basic-primary-activePressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link{color:var(--df-topnav-color-inert-mirror-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-nav-mirror .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-hovered-border);color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-pressed-border);color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activeHovered-border);color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activePressed-border);color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
88
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationLink, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
89
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavNavigationLink, isStandalone: true, selector: "df-topnav-navigation-link", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, routerLinkActiveOptions: { classPropertyName: "routerLinkActiveOptions", publicName: "routerLinkActiveOptions", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], usesInheritance: true, ngImport: i0, template: `
90
+ @if (externalLink()) {
91
+ <a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
92
+ <span [attr.data-text]="label()">{{ label() }}</span>
93
+ </a>
94
+ } @else {
95
+ <a
96
+ class="df-topnav-navigation-link"
97
+ [routerLink]="routerLink()"
98
+ routerLinkActive="df-topnav-navigation-link-active"
99
+ [routerLinkActiveOptions]="routerLinkActiveOptions()"
100
+ ariaCurrentWhenActive="page"
101
+ [attr.data-text]="label()"
102
+ (isActiveChange)="_active.set($event)"
103
+ >
104
+ <span [attr.data-text]="label()">{{ label() }}</span>
105
+ </a>
106
+ }
107
+ `, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], encapsulation: i0.ViewEncapsulation.None }); }
86
108
  }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationLink, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationLink, decorators: [{
88
110
  type: Component,
89
111
  args: [{ selector: 'df-topnav-navigation-link', template: `
90
- <a
91
- class="df-topnav-navigation-link"
92
- [routerLink]="href()"
93
- routerLinkActive="df-topnav-navigation-link-active"
94
- [routerLinkActiveOptions]="routerLinkActiveOptions()"
95
- ariaCurrentWhenActive="page"
96
- [attr.data-text]="label()"
97
- (isActiveChange)="_active.set($event)"
98
- >
99
- <span>{{ label() }}</span>
100
- </a>
112
+ @if (externalLink()) {
113
+ <a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
114
+ <span [attr.data-text]="label()">{{ label() }}</span>
115
+ </a>
116
+ } @else {
117
+ <a
118
+ class="df-topnav-navigation-link"
119
+ [routerLink]="routerLink()"
120
+ routerLinkActive="df-topnav-navigation-link-active"
121
+ [routerLinkActiveOptions]="routerLinkActiveOptions()"
122
+ ariaCurrentWhenActive="page"
123
+ [attr.data-text]="label()"
124
+ (isActiveChange)="_active.set($event)"
125
+ >
126
+ <span [attr.data-text]="label()">{{ label() }}</span>
127
+ </a>
128
+ }
101
129
  `, host: {
102
130
  role: 'listitem',
103
131
  '[style.display]': '"contents"'
104
- }, changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterLink, RouterLinkActive], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-navigation-link-bg-color),inset 0 0 0 4px var(--df-topnav-navigation-link-border-color)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important;background-color:var(--df-topnav-navigation-link-bg-color)!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link.df-topnav-navigation-link-active{font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-navigation-link-border-color)}.df-topnav-nav-basic .df-topnav-navigation-link{color:var(--df-topnav-color-inert-basic-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav-basic .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-hovered-border);color:var(--df-topnav-color-basic-primary-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-pressed-border);color:var(--df-topnav-color-basic-primary-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-basic-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-active-border)}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activeHovered-border);color:var(--df-topnav-color-basic-primary-activeHovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activePressed-border);color:var(--df-topnav-color-basic-primary-activePressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link{color:var(--df-topnav-color-inert-mirror-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-nav-mirror .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-hovered-border);color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-pressed-border);color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activeHovered-border);color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activePressed-border);color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important}\n"] }]
105
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: true }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }] } });
132
+ }, imports: [RouterLink, RouterLinkActive], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationLink }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"] }]
133
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: false }] }], routerLinkActiveOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLinkActiveOptions", required: false }] }] } });
106
134
 
107
- // TODO - Implement the dropdown mode of the TopNav using the dropdown wrapper and remove the DfTopNavDropdownToggle directive.
108
135
  /**
109
- * @internal
110
- * 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.
136
+ * The dropdown toggle does not use dfButton styles and requires to be recoded...
111
137
  *
112
- * It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.
138
+ * @internal
113
139
  */
114
- class DfTopNavDropdownToggle {
140
+ class DfTopNavNavigationItemDropdownToggle {
115
141
  constructor() {
116
- this.dropdown = inject(NgbDropdown);
117
- this.nativeElement = inject(ElementRef).nativeElement;
142
+ /**
143
+ * The dropdown instance controlled by this toggle element.
144
+ *
145
+ * Pass the referenced {@link DfDropdown} instance to connect the host button to its menu.
146
+ */
147
+ this.dropdown = input.required({ ...(ngDevMode ? { debugName: "dropdown" } : /* istanbul ignore next */ {}), alias: 'dfTopNavNavigationItemDropdownToggle' });
148
+ const element = inject(ElementRef).nativeElement;
149
+ effect(() => {
150
+ this.dropdown()['toggleElement'].set(element);
151
+ });
118
152
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
120
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavDropdownToggle, isStandalone: true, selector: "[dfDropdownToggle]", host: { listeners: { "click": "dropdown.toggle()", "keydown.ArrowUp": "dropdown.onKeyDown($any($event))", "keydown.ArrowDown": "dropdown.onKeyDown($any($event))", "keydown.Home": "dropdown.onKeyDown($any($event))", "keydown.End": "dropdown.onKeyDown($any($event))", "keydown.Tab": "dropdown.onKeyDown($any($event))", "keydown.Shift.Tab": "dropdown.onKeyDown($any($event))" }, properties: { "attr.aria-expanded": "dropdown.isOpen()" } }, providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }], ngImport: i0 }); }
153
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
154
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfTopNavNavigationItemDropdownToggle, isStandalone: true, selector: "button[dfTopNavNavigationItemDropdownToggle]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "dfTopNavNavigationItemDropdownToggle", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
155
+ <ng-content />
156
+ <df-icon class="fal" [class.fa-chevron-down]="!dropdown().isOpen()" [class.fa-chevron-up]="dropdown().isOpen()" />
157
+ `, isInline: true, dependencies: [{ kind: "component", type: DfIcon, selector: "df-icon" }] }); }
121
158
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, decorators: [{
123
- type: Directive,
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, decorators: [{
160
+ type: Component,
124
161
  args: [{
125
- selector: '[dfDropdownToggle]',
126
- host: {
127
- '[attr.aria-expanded]': 'dropdown.isOpen()',
128
- '(click)': 'dropdown.toggle()',
129
- '(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',
130
- '(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',
131
- '(keydown.Home)': 'dropdown.onKeyDown($any($event))',
132
- '(keydown.End)': 'dropdown.onKeyDown($any($event))',
133
- '(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
134
- '(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
135
- },
136
- providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }]
162
+ // eslint-disable-next-line @angular-eslint/component-selector
163
+ selector: 'button[dfTopNavNavigationItemDropdownToggle]',
164
+ imports: [DfIcon],
165
+ template: `
166
+ <ng-content />
167
+ <df-icon class="fal" [class.fa-chevron-down]="!dropdown().isOpen()" [class.fa-chevron-up]="dropdown().isOpen()" />
168
+ `
137
169
  }]
138
- }] });
170
+ }], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavNavigationItemDropdownToggle", required: true }] }] } });
139
171
  /**
140
172
  * The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links.
141
173
  *
@@ -148,158 +180,131 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
148
180
  /**
149
181
  * The label of the navigation item, which will be displayed as the link text.
150
182
  */
151
- this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
183
+ this.label = input.required(/* @ts-ignore */
184
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
152
185
  /**
153
- * 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.
186
+ * The routerLink of the navigation item, which will be used as the link target. It should be an internal route.
154
187
  */
155
- this.href = input.required(...(ngDevMode ? [{ debugName: "href" }] : []));
156
- this.childElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, ...(ngDevMode ? [{ debugName: "childElements" }] : []));
157
- this.deepChildLinks = contentChildren(DfTopNavNavigationLink, { ...(ngDevMode ? { debugName: "deepChildLinks" } : {}), descendants: true });
158
- this.rootChildLinks = computed(() => this.childElements().filter((child) => child instanceof DfTopNavNavigationLink), ...(ngDevMode ? [{ debugName: "rootChildLinks" }] : []));
188
+ this.routerLink = input.required(/* @ts-ignore */
189
+ ...(ngDevMode ? [{ debugName: "routerLink" }] : /* istanbul ignore next */ []));
190
+ this.childElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, /* @ts-ignore */
191
+ ...(ngDevMode ? [{ debugName: "childElements" }] : /* istanbul ignore next */ []));
192
+ this.deepChildLinks = contentChildren(DfTopNavNavigationLink, { ...(ngDevMode ? { debugName: "deepChildLinks" } : /* istanbul ignore next */ {}), descendants: true });
193
+ this.rootChildLinks = computed(() => this.childElements().filter((child) => child instanceof DfTopNavNavigationLink), /* @ts-ignore */
194
+ ...(ngDevMode ? [{ debugName: "rootChildLinks" }] : /* istanbul ignore next */ []));
159
195
  this.topNav = inject(DfTopNav);
160
- this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown', ...(ngDevMode ? [{ debugName: "dropdownMode" }] : []));
196
+ this.dropdownMode = computed(() => this.topNav.mode() === 'dropdown', /* @ts-ignore */
197
+ ...(ngDevMode ? [{ debugName: "dropdownMode" }] : /* istanbul ignore next */ []));
161
198
  this.dropdownId = `topnav-dropdown-button-${generateId()}`;
162
199
  /**
163
200
  * Indicates if the navigation item is currently active based on the Router state of its child links.
164
201
  */
165
- this.active = computed(() => this.deepChildLinks().some((link) => link.active()), ...(ngDevMode ? [{ debugName: "active" }] : []));
202
+ this.active = computed(() => this.deepChildLinks().some((link) => link.active()), /* @ts-ignore */
203
+ ...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
166
204
  }
167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfTopNavNavigationItem, isStandalone: true, selector: "df-topnav-navigation-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], queries: [{ propertyName: "childElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }, { propertyName: "deepChildLinks", predicate: DfTopNavNavigationLink, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
205
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
206
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavNavigationItem, isStandalone: true, selector: "df-topnav-navigation-item", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "listitem" }, properties: { "style.display": "\"contents\"" } }, providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], queries: [{ propertyName: "childElements", predicate: DF_TOPNAV_NAVIGATION_ELEMENT, isSignal: true }, { propertyName: "deepChildLinks", predicate: DfTopNavNavigationLink, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
169
207
  @if (dropdownMode()) {
170
- <div ngbDropdown #dropdown="ngbDropdown">
171
- <button
172
- type="button"
173
- class="df-topnav-navigation-link"
174
- [attr.data-text]="label()"
175
- [class.df-topnav-navigation-link-active]="active()"
176
- aria-haspopup="true"
177
- [attr.aria-controls]="dropdownId"
178
- dfDropdownToggle
179
- >
180
- <span>{{ label() }}</span>
181
- <span
182
- class="fal"
183
- aria-hidden="true"
184
- [class.fa-chevron-down]="!dropdown.isOpen()"
185
- [class.fa-chevron-up]="dropdown.isOpen()"
186
- ></span>
187
- </button>
188
- <div ngbDropdownMenu class="dropdown-menu-right" role="menu" [attr.id]="dropdownId">
189
- @for (childLink of rootChildLinks(); track childLink) {
190
- <a
191
- ngbDropdownItem
192
- [routerLink]="childLink.href()"
193
- [class.active]="childLink.active()"
194
- [attr.aria-current]="childLink.active() ? 'page' : null"
195
- role="menuitem"
196
- >
197
- {{ childLink.label() }}
198
- </a>
199
- }
200
- </div>
201
- </div>
208
+ <button
209
+ [dfTopNavNavigationItemDropdownToggle]="dropdown"
210
+ type="button"
211
+ class="df-topnav-navigation-link"
212
+ [class.df-topnav-navigation-link-active]="active()"
213
+ aria-haspopup="true"
214
+ >
215
+ <span [attr.data-text]="label()">{{ label() }}</span>
216
+ </button>
217
+ <df-dropdown #dropdown placement="bottom-start" role="list">
218
+ @for (childLink of rootChildLinks(); track childLink) {
219
+ <div role="listitem">
220
+ @if (childLink.href()) {
221
+ <a dfDropdownItem [attr.href]="childLink.href()" target="_blank">
222
+ <span>{{ childLink.label() }}</span>
223
+ </a>
224
+ } @else {
225
+ <a
226
+ dfDropdownItem
227
+ [routerLink]="childLink.routerLink()!"
228
+ [active]="childLink.active()"
229
+ [attr.aria-current]="childLink.active() ? 'page' : null"
230
+ >
231
+ {{ childLink.label() }}
232
+ </a>
233
+ }
234
+ </div>
235
+ }
236
+ </df-dropdown>
202
237
  } @else {
203
238
  <a
204
239
  class="df-topnav-navigation-link"
205
- [routerLink]="href()"
240
+ [routerLink]="routerLink()"
206
241
  [class.df-topnav-navigation-link-active]="active()"
207
242
  [attr.aria-current]="active() ? 'page' : null"
208
- [attr.data-text]="label()"
209
243
  >
210
- <span>{{ label() }}</span>
244
+ <span [attr.data-text]="label()">{{ label() }}</span>
211
245
  </a>
212
246
  }
213
- `, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-navigation-link-bg-color),inset 0 0 0 4px var(--df-topnav-navigation-link-border-color)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important;background-color:var(--df-topnav-navigation-link-bg-color)!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link.df-topnav-navigation-link-active{font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-navigation-link-border-color)}.df-topnav-nav-basic .df-topnav-navigation-link{color:var(--df-topnav-color-inert-basic-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav-basic .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-hovered-border);color:var(--df-topnav-color-basic-primary-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-pressed-border);color:var(--df-topnav-color-basic-primary-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-basic-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-active-border)}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activeHovered-border);color:var(--df-topnav-color-basic-primary-activeHovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activePressed-border);color:var(--df-topnav-color-basic-primary-activePressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link{color:var(--df-topnav-color-inert-mirror-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-nav-mirror .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-hovered-border);color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-pressed-border);color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activeHovered-border);color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activePressed-border);color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: DfTopNavDropdownToggle, selector: "[dfDropdownToggle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
247
+ `, isInline: true, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "component", type: DfDropdown, selector: "df-dropdown", inputs: ["opened", "placement", "size", "container"], outputs: ["openedChange"] }, { kind: "directive", type: DfDropdownItemLink, selector: "a[dfDropdownItem]", inputs: ["active", "disabled"] }, { kind: "component", type: DfTopNavNavigationItemDropdownToggle, selector: "button[dfTopNavNavigationItemDropdownToggle]", inputs: ["dfTopNavNavigationItemDropdownToggle"] }], encapsulation: i0.ViewEncapsulation.None }); }
214
248
  }
215
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationItem, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItem, decorators: [{
216
250
  type: Component,
217
251
  args: [{ selector: 'df-topnav-navigation-item', template: `
218
252
  @if (dropdownMode()) {
219
- <div ngbDropdown #dropdown="ngbDropdown">
220
- <button
221
- type="button"
222
- class="df-topnav-navigation-link"
223
- [attr.data-text]="label()"
224
- [class.df-topnav-navigation-link-active]="active()"
225
- aria-haspopup="true"
226
- [attr.aria-controls]="dropdownId"
227
- dfDropdownToggle
228
- >
229
- <span>{{ label() }}</span>
230
- <span
231
- class="fal"
232
- aria-hidden="true"
233
- [class.fa-chevron-down]="!dropdown.isOpen()"
234
- [class.fa-chevron-up]="dropdown.isOpen()"
235
- ></span>
236
- </button>
237
- <div ngbDropdownMenu class="dropdown-menu-right" role="menu" [attr.id]="dropdownId">
238
- @for (childLink of rootChildLinks(); track childLink) {
239
- <a
240
- ngbDropdownItem
241
- [routerLink]="childLink.href()"
242
- [class.active]="childLink.active()"
243
- [attr.aria-current]="childLink.active() ? 'page' : null"
244
- role="menuitem"
245
- >
246
- {{ childLink.label() }}
247
- </a>
248
- }
249
- </div>
250
- </div>
253
+ <button
254
+ [dfTopNavNavigationItemDropdownToggle]="dropdown"
255
+ type="button"
256
+ class="df-topnav-navigation-link"
257
+ [class.df-topnav-navigation-link-active]="active()"
258
+ aria-haspopup="true"
259
+ >
260
+ <span [attr.data-text]="label()">{{ label() }}</span>
261
+ </button>
262
+ <df-dropdown #dropdown placement="bottom-start" role="list">
263
+ @for (childLink of rootChildLinks(); track childLink) {
264
+ <div role="listitem">
265
+ @if (childLink.href()) {
266
+ <a dfDropdownItem [attr.href]="childLink.href()" target="_blank">
267
+ <span>{{ childLink.label() }}</span>
268
+ </a>
269
+ } @else {
270
+ <a
271
+ dfDropdownItem
272
+ [routerLink]="childLink.routerLink()!"
273
+ [active]="childLink.active()"
274
+ [attr.aria-current]="childLink.active() ? 'page' : null"
275
+ >
276
+ {{ childLink.label() }}
277
+ </a>
278
+ }
279
+ </div>
280
+ }
281
+ </df-dropdown>
251
282
  } @else {
252
283
  <a
253
284
  class="df-topnav-navigation-link"
254
- [routerLink]="href()"
285
+ [routerLink]="routerLink()"
255
286
  [class.df-topnav-navigation-link-active]="active()"
256
287
  [attr.aria-current]="active() ? 'page' : null"
257
- [attr.data-text]="label()"
258
288
  >
259
- <span>{{ label() }}</span>
289
+ <span [attr.data-text]="label()">{{ label() }}</span>
260
290
  </a>
261
291
  }
262
- `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
292
+ `, host: {
263
293
  '[style.display]': '"contents"',
264
294
  role: 'listitem'
265
- }, imports: [RouterLink, NgbDropdown, NgbDropdownMenu, NgbDropdownItem, DfTopNavDropdownToggle], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-navigation-link-bg-color),inset 0 0 0 4px var(--df-topnav-navigation-link-border-color)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important;background-color:var(--df-topnav-navigation-link-bg-color)!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link.df-topnav-navigation-link-active{font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-navigation-link-border-color)}.df-topnav-nav-basic .df-topnav-navigation-link{color:var(--df-topnav-color-inert-basic-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav-basic .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-hovered-border);color:var(--df-topnav-color-basic-primary-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-pressed-border);color:var(--df-topnav-color-basic-primary-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-basic-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-active-border)}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activeHovered-border);color:var(--df-topnav-color-basic-primary-activeHovered-foreground)!important}.df-topnav-nav-basic .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-basic-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-basic-primary-activePressed-border);color:var(--df-topnav-color-basic-primary-activePressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link{color:var(--df-topnav-color-inert-mirror-foreground)!important;--df-topnav-navigation-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-nav-mirror .df-topnav-navigation-link:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-hovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-hovered-border);color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-pressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-pressed-border);color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:hover{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activeHovered-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activeHovered-border);color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-navigation-link.df-topnav-navigation-link-active:active{--df-topnav-navigation-link-bg-color: var(--df-topnav-color-mirror-primary-activePressed-background);--df-topnav-navigation-link-border-color: var(--df-topnav-color-mirror-primary-activePressed-border);color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important}\n"] }]
266
- }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: true }] }], childElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_NAVIGATION_ELEMENT), { isSignal: true }] }], deepChildLinks: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfTopNavNavigationLink), { ...{ descendants: true }, isSignal: true }] }] } });
295
+ }, imports: [RouterLink, DfDropdown, DfDropdownItemLink, DfTopNavNavigationItemDropdownToggle], providers: [{ provide: DF_TOPNAV_NAVIGATION_ELEMENT, useExisting: DfTopNavNavigationItem }], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-navigation-link{height:100%;display:flex;align-items:center;padding:var(--df-spacing-5);outline:none;position:relative;gap:var(--df-spacing-3);text-decoration:none;background-color:var(--df-topnav-color-inert-mirror-background)!important;color:var(--df-topnav-color-mirror-neutral-default-foreground)!important;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-navigation-link{transition:none}}.df-topnav-navigation-link:focus-visible:before{content:\"\";position:absolute;inset:0;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-neutral-default-border)}.df-topnav-navigation-link{box-shadow:none!important;border:0;border-bottom:0!important}.df-topnav-navigation-link span[data-text]{text-align:center}.df-topnav-navigation-link span[data-text]:before{content:attr(data-text);font-weight:var(--df-typo-weight-bold);visibility:hidden;height:0;overflow:hidden;display:block}.df-topnav-navigation-link:hover{color:var(--df-topnav-color-mirror-primary-hovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-hovered-background)!important}.df-topnav-navigation-link:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-hovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-hovered-border)}.df-topnav-navigation-link:active{color:var(--df-topnav-color-mirror-primary-pressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-pressed-background)!important}.df-topnav-navigation-link:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-pressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-pressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active{color:var(--df-topnav-color-mirror-primary-active-foreground)!important;font-weight:var(--df-typo-weight-bold)}.df-topnav-navigation-link.df-topnav-navigation-link-active:focus-visible:before{bottom:.1875rem;box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:after{content:\"\";position:absolute;inset:0;border-bottom:.1875rem solid var(--df-topnav-color-mirror-primary-active-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover{color:var(--df-topnav-color-mirror-primary-activeHovered-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activeHovered-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activeHovered-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:hover.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activeHovered-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active{color:var(--df-topnav-color-mirror-primary-activePressed-foreground)!important;background-color:var(--df-topnav-color-mirror-primary-activePressed-background)!important}.df-topnav-navigation-link.df-topnav-navigation-link-active:active:focus-visible:before{box-shadow:inset 0 0 0 2px var(--df-topnav-color-mirror-primary-activePressed-background),inset 0 0 0 4px var(--df-topnav-color-mirror-primary-activePressed-border)}.df-topnav-navigation-link.df-topnav-navigation-link-active:active.df-topnav-navigation-link-active:after{border-bottom-color:var(--df-topnav-color-mirror-primary-activePressed-border)}\n"] }]
296
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], routerLink: [{ type: i0.Input, args: [{ isSignal: true, alias: "routerLink", required: true }] }], childElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_NAVIGATION_ELEMENT), { isSignal: true }] }], deepChildLinks: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DfTopNavNavigationLink), { ...{ descendants: true }, isSignal: true }] }] } });
267
297
 
268
298
  /**
269
- * @internal
270
- * Styles the buttons used in the TopNav.
271
- */
272
- class DfTopNavButton {
273
- constructor() {
274
- /**
275
- * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
276
- */
277
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
278
- /**
279
- * 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.
280
- */
281
- this.icon = input(false, { ...(ngDevMode ? { debugName: "icon" } : {}), transform: booleanAttribute });
282
- }
283
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
284
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.0", type: DfTopNavButton, isStandalone: true, selector: "button[dfTopNavButton]", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.df-topnav-btn-icon": "icon()", "class": "'df-topnav-btn-' + appearance()" }, classAttribute: "df-topnav-btn" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-topnav-btn{display:flex;align-items:center;justify-content:center;border-radius:var(--df-borderRadius-main-medium);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;gap:var(--df-spacing-3);padding:.3125rem var(--df-spacing-4);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-btn{transition:none}}.df-topnav-btn{background-color:var(--df-topnav-btn-bg-color)}.df-topnav-btn:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-topnav-btn-bg-color),0 0 0 4px var(--df-topnav-btn-border-color)}.df-topnav-btn:disabled{cursor:not-allowed}.df-topnav-btn.df-topnav-btn-icon{width:2.25rem;height:2.25rem;padding:0}.df-topnav-nav-basic .df-topnav-btn-primary{color:var(--df-button-text-basic-color-primary-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-basic-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-basic-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-primary:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral{color:var(--df-button-text-basic-color-neutral-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-basic-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-basic-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary{color:var(--df-button-text-mirror-color-primary-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-mirror-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-mirror-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral{color:var(--df-button-text-mirror-color-neutral-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-mirror-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-mirror-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
285
- }
286
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, decorators: [{
287
- type: Component,
288
- args: [{ selector: 'button[dfTopNavButton]', host: {
289
- class: 'df-topnav-btn',
290
- '[class.df-topnav-btn-icon]': 'icon()',
291
- '[class]': "'df-topnav-btn-' + appearance()"
292
- }, template: `<ng-content />`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-btn{display:flex;align-items:center;justify-content:center;border-radius:var(--df-borderRadius-main-medium);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;gap:var(--df-spacing-3);padding:.3125rem var(--df-spacing-4);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-btn{transition:none}}.df-topnav-btn{background-color:var(--df-topnav-btn-bg-color)}.df-topnav-btn:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-topnav-btn-bg-color),0 0 0 4px var(--df-topnav-btn-border-color)}.df-topnav-btn:disabled{cursor:not-allowed}.df-topnav-btn.df-topnav-btn-icon{width:2.25rem;height:2.25rem;padding:0}.df-topnav-nav-basic .df-topnav-btn-primary{color:var(--df-button-text-basic-color-primary-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-basic-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-basic-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-primary-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-primary:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral{color:var(--df-button-text-basic-color-neutral-default-foreground)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-basic-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-hovered-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-basic-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-basic-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-basic-color-neutral-pressed-border)}.df-topnav-nav-basic .df-topnav-btn-neutral:disabled{color:var(--df-button-text-basic-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary{color:var(--df-button-text-mirror-color-primary-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):hover{color:var(--df-button-text-mirror-color-primary-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:not(:disabled):active{color:var(--df-button-text-mirror-color-primary-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-primary-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-primary-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-primary:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral{color:var(--df-button-text-mirror-color-neutral-default-foreground)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):hover{color:var(--df-button-text-mirror-color-neutral-hovered-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-hovered-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-hovered-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:not(:disabled):active{color:var(--df-button-text-mirror-color-neutral-pressed-foreground);--df-topnav-btn-bg-color: var(--df-button-text-mirror-color-neutral-pressed-background);--df-topnav-btn-border-color: var(--df-button-text-mirror-color-neutral-pressed-border)}.df-topnav-nav-mirror .df-topnav-btn-neutral:disabled{color:var(--df-button-text-mirror-color-disabled-foreground)}\n"] }]
293
- }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
294
-
295
- /**
296
- * @internal
297
299
  * An Injection Token for the DfTopNavQuickActionElement interface, which represents a navigation quick action in the top navigation component.
300
+ *
301
+ * @since 22.0
298
302
  */
299
303
  const DF_TOPNAV_QUICK_ACTION_ELEMENT = new InjectionToken('DF_TOPNAV_QUICK_ACTION_ELEMENT');
300
304
  /**
301
- * @internal
302
305
  * An abstract class that defines the structure of a quick action element in the top navigation component.
306
+ *
307
+ * @since 22.0
303
308
  */
304
309
  class DfTopNavQuickActionElement {
305
310
  }
@@ -311,10 +316,10 @@ class DfTopNavQuickActionElement {
311
316
  * @since 21.1
312
317
  */
313
318
  class DfTopNavQuickActionButtonContent {
314
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
315
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavQuickActionButtonContent, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonContent]", ngImport: i0 }); }
319
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
320
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionButtonContent, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonContent]", ngImport: i0 }); }
316
321
  }
317
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonContent, decorators: [{
322
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonContent, decorators: [{
318
323
  type: Directive,
319
324
  args: [{ selector: 'ng-template[dfTopNavQuickActionButtonContent]' }]
320
325
  }] });
@@ -325,10 +330,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
325
330
  * @since 21.1
326
331
  */
327
332
  class DfTopNavQuickActionButtonIcon {
328
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
329
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavQuickActionButtonIcon, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonIcon]", ngImport: i0 }); }
333
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
334
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionButtonIcon, isStandalone: true, selector: "ng-template[dfTopNavQuickActionButtonIcon]", ngImport: i0 }); }
330
335
  }
331
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonIcon, decorators: [{
336
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButtonIcon, decorators: [{
332
337
  type: Directive,
333
338
  args: [{ selector: 'ng-template[dfTopNavQuickActionButtonIcon]' }]
334
339
  }] });
@@ -341,7 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
341
346
  *
342
347
  * The icon can be set through the {@link DfTopNavQuickActionButton.icon} input or by using the {@link DfTopNavQuickActionButtonIcon} directive.
343
348
  *
344
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}
349
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
345
350
  * @since 21.1
346
351
  */
347
352
  class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
@@ -350,27 +355,31 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
350
355
  /**
351
356
  * The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'.
352
357
  */
353
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
358
+ this.appearance = input('neutral', /* @ts-ignore */
359
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
354
360
  /**
355
361
  * 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.
356
362
  */
357
- this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
363
+ this.label = input.required(/* @ts-ignore */
364
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
358
365
  /**
359
366
  * The icon of the quick action button.
360
367
  */
361
- this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
368
+ this.icon = input(/* @ts-ignore */
369
+ ...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
362
370
  /**
363
371
  * Whether the quick action button is disabled or not.
364
372
  */
365
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
373
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
366
374
  /**
367
375
  * 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.
368
376
  */
369
377
  this.act = output();
370
- this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : {}), read: TemplateRef });
371
- this.actionIcon = contentChild(DfTopNavQuickActionButtonIcon, { ...(ngDevMode ? { debugName: "actionIcon" } : {}), read: TemplateRef });
378
+ this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
379
+ this.actionIcon = contentChild(DfTopNavQuickActionButtonIcon, { ...(ngDevMode ? { debugName: "actionIcon" } : /* istanbul ignore next */ {}), read: TemplateRef });
372
380
  this.popover = viewChild.required('popover');
373
- this.isLg = toAngularSignal(lg$);
381
+ this.isLg = trackWindow('lg');
382
+ this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
374
383
  /**
375
384
  * Need to close the popover on smaller screen
376
385
  */
@@ -382,13 +391,14 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
382
391
  }
383
392
  });
384
393
  }
385
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
386
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DfTopNavQuickActionButton, isStandalone: true, selector: "df-topnav-quick-action-button", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { act: "act" }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], queries: [{ propertyName: "actionContent", first: true, predicate: DfTopNavQuickActionButtonContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "actionIcon", first: true, predicate: DfTopNavQuickActionButtonIcon, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
394
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
395
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickActionButton, isStandalone: true, selector: "df-topnav-quick-action-button", inputs: { appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { act: "act" }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], queries: [{ propertyName: "actionContent", first: true, predicate: DfTopNavQuickActionButtonContent, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "actionIcon", first: true, predicate: DfTopNavQuickActionButtonIcon, descendants: true, read: TemplateRef, isSignal: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
387
396
  <button
388
- dfTopNavButton
389
- icon
390
- type="button"
391
- [appearance]="appearance()"
397
+ dfButton
398
+ transparent
399
+ appearance="text"
400
+ [variant]="appearance()"
401
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
392
402
  [attr.aria-label]="label()"
393
403
  [ngbPopover]="actionContent()"
394
404
  placement="bottom-end"
@@ -398,22 +408,24 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
398
408
  #popover="ngbPopover"
399
409
  [disabled]="disabled()"
400
410
  (click)="act.emit()"
411
+ class="df-btn-icononly df-topnav-quick-action-btn"
401
412
  >
402
413
  <ng-template #dfTopNavQuickActionDefaultIcon>
403
- <span class="df-topnav-toggle-icon fal" [class]="icon()"></span>
414
+ <df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
404
415
  </ng-template>
405
416
  <ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
406
417
  </button>
407
- `, isInline: true, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"], dependencies: [{ kind: "component", type: DfTopNavButton, selector: "button[dfTopNavButton]", inputs: ["appearance", "icon"] }, { kind: "directive", type: NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
418
+ `, isInline: true, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"], dependencies: [{ kind: "component", type: DfButton, selector: "button[dfButton], a[dfButton]" }, { kind: "directive", type: NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "popperOptions", "triggers", "positionTarget", "container", "disablePopover", "popoverClass", "popoverContext", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }], encapsulation: i0.ViewEncapsulation.None }); }
408
419
  }
409
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButton, decorators: [{
420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionButton, decorators: [{
410
421
  type: Component,
411
422
  args: [{ selector: 'df-topnav-quick-action-button', template: `
412
423
  <button
413
- dfTopNavButton
414
- icon
415
- type="button"
416
- [appearance]="appearance()"
424
+ dfButton
425
+ transparent
426
+ appearance="text"
427
+ [variant]="appearance()"
428
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
417
429
  [attr.aria-label]="label()"
418
430
  [ngbPopover]="actionContent()"
419
431
  placement="bottom-end"
@@ -423,16 +435,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
423
435
  #popover="ngbPopover"
424
436
  [disabled]="disabled()"
425
437
  (click)="act.emit()"
438
+ class="df-btn-icononly df-topnav-quick-action-btn"
426
439
  >
427
440
  <ng-template #dfTopNavQuickActionDefaultIcon>
428
- <span class="df-topnav-toggle-icon fal" [class]="icon()"></span>
441
+ <df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
429
442
  </ng-template>
430
443
  <ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
431
444
  </button>
432
- `, imports: [DfTopNavButton, NgbPopover, NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"] }]
445
+ `, imports: [DfButton, NgbPopover, NgTemplateOutlet, DfIcon], encapsulation: ViewEncapsulation.None, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionButton }], styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-quick-action-popover{z-index:2010}}\n"] }]
433
446
  }], ctorParameters: () => [], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], act: [{ type: i0.Output, args: ["act"] }], actionContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionButtonContent), { ...{ read: TemplateRef }, isSignal: true }] }], actionIcon: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionButtonIcon), { ...{ read: TemplateRef }, isSignal: true }] }], popover: [{ type: i0.ViewChild, args: ['popover', { isSignal: true }] }] } });
434
447
 
435
- // 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.
436
448
  /**
437
449
  * AppContainer is a simple wrapper component that provides a consistent layout for applications using the {@link DfTopNav} component.
438
450
  *
@@ -442,24 +454,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
442
454
  * @since 21.1
443
455
  */
444
456
  class DfAppContainer {
445
- isSideItem(item) {
446
- return 'children' in item;
447
- }
448
457
  constructor() {
449
458
  this.topnav = contentChild.required(DfTopNav);
450
- this.sidenav = viewChild(DfSidenavComponent, ...(ngDevMode ? [{ debugName: "sidenav" }] : []));
451
- this.sidenavContent = computed(() => this.topnav()['sidenavContent']() ?? [], ...(ngDevMode ? [{ debugName: "sidenavContent" }] : []));
459
+ this.sidenav = viewChild(DfSidenavInput, /* @ts-ignore */
460
+ ...(ngDevMode ? [{ debugName: "sidenav" }] : /* istanbul ignore next */ []));
461
+ this.sidenavContent = computed(() => this.topnav()['sidenavContent']() ?? [], /* @ts-ignore */
462
+ ...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
452
463
  this.drawerContainerActions = viewChild.required('drawerContainerActions');
453
464
  // Sync the state of the sidenav with the topnav on initialization and whenever the state of the sidenav changes
454
465
  effect(() => {
455
466
  this.topnav().navExpanded.set(!this.sidenav()?.isMinimized());
456
467
  });
457
468
  effect(() => {
458
- let sidenavMinimized = false;
459
- let sidenav = undefined;
460
469
  const topnavExpanded = this.topnav().navExpanded();
470
+ const sidenav = this.sidenav();
471
+ let sidenavMinimized = false;
461
472
  untracked(() => {
462
- sidenav = this.sidenav();
463
473
  sidenavMinimized = sidenav?.isMinimized() ?? false;
464
474
  });
465
475
  // we need this condition to make sure to not call toggleMinimize when the drawer has not rendered yet (issue with the drawer toggleMinimze)
@@ -471,125 +481,43 @@ class DfAppContainer {
471
481
  ngAfterContentInit() {
472
482
  this.topnav()['inAppContainer'].set(true);
473
483
  }
474
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfAppContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
475
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfAppContainer, isStandalone: true, selector: "df-app-container", host: { classAttribute: "df-app-container" }, queries: [{ propertyName: "topnav", first: true, predicate: DfTopNav, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sidenav", first: true, predicate: DfSidenavComponent, descendants: true, isSignal: true }, { propertyName: "drawerContainerActions", first: true, predicate: ["drawerContainerActions"], descendants: true, isSignal: true }], ngImport: i0, template: `
484
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAppContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
485
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfAppContainer, isStandalone: true, selector: "df-app-container", host: { classAttribute: "df-app-container" }, queries: [{ propertyName: "topnav", first: true, predicate: DfTopNav, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "sidenav", first: true, predicate: DfSidenavInput, descendants: true, isSignal: true }, { propertyName: "drawerContainerActions", first: true, predicate: ["drawerContainerActions"], descendants: true, isSignal: true }], ngImport: i0, template: `
476
486
  <ng-content select="df-topnav" />
477
487
  <ng-content select="df-env-banner" />
478
488
  <div class="df-app-container-content" #drawerContainerActions>
479
489
  @if (sidenavContent().length) {
480
- <df-sidenav [resizable]="false" [searchable]="false" class="df-sidenav-light-sky">
481
- @for (element1 of sidenavContent(); track element1.label()) {
482
- @if (isSideItem(element1)) {
483
- <df-sidenav-item [label]="element1.label()">
484
- @for (element2 of element1.children(); track element2.label()) {
485
- @if (isSideItem(element2)) {
486
- <df-sidenav-item [label]="element2.label()">
487
- @for (element3 of element2.children(); track element3.label()) {
488
- @if (isSideItem(element3)) {
489
- <df-sidenav-item [label]="element3.label()">
490
- @for (element4 of element3.children(); track element4.label()) {
491
- @if (!isSideItem(element4)) {
492
- <df-sidenav-link
493
- [label]="element4.label()"
494
- [linkPath]="element4.href()"
495
- [routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
496
- />
497
- }
498
- }
499
- </df-sidenav-item>
500
- } @else {
501
- <df-sidenav-link
502
- [label]="element3.label()"
503
- [linkPath]="element3.href()"
504
- [routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
505
- />
506
- }
507
- }
508
- </df-sidenav-item>
509
- } @else {
510
- <df-sidenav-link
511
- [label]="element2.label()"
512
- [linkPath]="element2.href()"
513
- [routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
514
- />
515
- }
516
- }
517
- </df-sidenav-item>
518
- } @else {
519
- <df-sidenav-link
520
- [label]="element1.label()"
521
- [linkPath]="element1.href()"
522
- [routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
523
- />
524
- }
525
- }
526
- </df-sidenav>
490
+ <df-sidenav-input
491
+ [className]="'df-sidenav-light-sky'"
492
+ [items]="sidenavContent()"
493
+ [searchable]="false"
494
+ [resizable]="false"
495
+ />
527
496
  }
528
497
  <ng-content select="main" />
529
498
  </div>
530
- `, isInline: true, styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"], dependencies: [{ kind: "component", type: DfSidenavComponent, selector: "df-sidenav", inputs: ["searchable", "resizable", "collapsible", "enableMobile", "disableInitialDesktopAutoScroll"] }, { kind: "component", type: DfSidenavItemComponent, selector: "df-sidenav-item", inputs: ["label", "collapsed", "icon"], outputs: ["collapsedChange"] }, { kind: "component", type: DfSidenavLinkComponent, selector: "df-sidenav-link", inputs: ["linkPath", "label", "icon", "routerLinkActiveOptions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
499
+ `, isInline: true, styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"], dependencies: [{ kind: "component", type: DfSidenavInput, selector: "df-sidenav-input", inputs: ["items", "className", "searchable", "resizable", "collapsible", "enableMobile", "disableInitialDesktopAutoScroll"] }], encapsulation: i0.ViewEncapsulation.None }); }
531
500
  }
532
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfAppContainer, decorators: [{
501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAppContainer, decorators: [{
533
502
  type: Component,
534
503
  args: [{ selector: 'df-app-container', template: `
535
504
  <ng-content select="df-topnav" />
536
505
  <ng-content select="df-env-banner" />
537
506
  <div class="df-app-container-content" #drawerContainerActions>
538
507
  @if (sidenavContent().length) {
539
- <df-sidenav [resizable]="false" [searchable]="false" class="df-sidenav-light-sky">
540
- @for (element1 of sidenavContent(); track element1.label()) {
541
- @if (isSideItem(element1)) {
542
- <df-sidenav-item [label]="element1.label()">
543
- @for (element2 of element1.children(); track element2.label()) {
544
- @if (isSideItem(element2)) {
545
- <df-sidenav-item [label]="element2.label()">
546
- @for (element3 of element2.children(); track element3.label()) {
547
- @if (isSideItem(element3)) {
548
- <df-sidenav-item [label]="element3.label()">
549
- @for (element4 of element3.children(); track element4.label()) {
550
- @if (!isSideItem(element4)) {
551
- <df-sidenav-link
552
- [label]="element4.label()"
553
- [linkPath]="element4.href()"
554
- [routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
555
- />
556
- }
557
- }
558
- </df-sidenav-item>
559
- } @else {
560
- <df-sidenav-link
561
- [label]="element3.label()"
562
- [linkPath]="element3.href()"
563
- [routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
564
- />
565
- }
566
- }
567
- </df-sidenav-item>
568
- } @else {
569
- <df-sidenav-link
570
- [label]="element2.label()"
571
- [linkPath]="element2.href()"
572
- [routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
573
- />
574
- }
575
- }
576
- </df-sidenav-item>
577
- } @else {
578
- <df-sidenav-link
579
- [label]="element1.label()"
580
- [linkPath]="element1.href()"
581
- [routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
582
- />
583
- }
584
- }
585
- </df-sidenav>
508
+ <df-sidenav-input
509
+ [className]="'df-sidenav-light-sky'"
510
+ [items]="sidenavContent()"
511
+ [searchable]="false"
512
+ [resizable]="false"
513
+ />
586
514
  }
587
515
  <ng-content select="main" />
588
516
  </div>
589
517
  `, host: {
590
518
  class: 'df-app-container'
591
- }, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [DfSidenavComponent, DfSidenavItemComponent, DfSidenavLinkComponent], styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"] }]
592
- }], ctorParameters: () => [], propDecorators: { topnav: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNav), { isSignal: true }] }], sidenav: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavComponent), { isSignal: true }] }], drawerContainerActions: [{ type: i0.ViewChild, args: ['drawerContainerActions', { isSignal: true }] }] } });
519
+ }, encapsulation: ViewEncapsulation.None, imports: [DfSidenavInput], styles: [".df-app-container{height:100dvh;width:100%;display:flex;flex-direction:column}.df-app-container-content{flex-grow:1;display:flex;width:100%;position:relative;overflow:hidden}main{flex-grow:1;overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background);scroll-padding-top:var(--df-spacing-5)}\n"] }]
520
+ }], ctorParameters: () => [], propDecorators: { topnav: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNav), { isSignal: true }] }], sidenav: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DfSidenavInput), { isSignal: true }] }], drawerContainerActions: [{ type: i0.ViewChild, args: ['drawerContainerActions', { isSignal: true }] }] } });
593
521
 
594
522
  /* eslint-enable @typescript-eslint/no-unused-vars */
595
523
  /**
@@ -600,10 +528,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
600
528
  * @since 21.1
601
529
  */
602
530
  class DfTopNavQuickActionInTopNav {
603
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInTopNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
604
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavQuickActionInTopNav, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInTopNav]", ngImport: i0 }); }
531
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInTopNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
532
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionInTopNav, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInTopNav]", ngImport: i0 }); }
605
533
  }
606
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInTopNav, decorators: [{
534
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInTopNav, decorators: [{
607
535
  type: Directive,
608
536
  args: [{ selector: 'ng-template[dfTopNavQuickActionInTopNav]' }]
609
537
  }] });
@@ -615,10 +543,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
615
543
  * @since 21.1
616
544
  */
617
545
  class DfTopNavQuickActionInDrawer {
618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInDrawer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
619
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavQuickActionInDrawer, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInDrawer]", ngImport: i0 }); }
546
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInDrawer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
547
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionInDrawer, isStandalone: true, selector: "ng-template[dfTopNavQuickActionInDrawer]", ngImport: i0 }); }
620
548
  }
621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInDrawer, decorators: [{
549
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionInDrawer, decorators: [{
622
550
  type: Directive,
623
551
  args: [{ selector: 'ng-template[dfTopNavQuickActionInDrawer]' }]
624
552
  }] });
@@ -630,25 +558,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
630
558
  * It should be used inside a {@link DfTopNavQuickActions} component.
631
559
  * 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.
632
560
  *
633
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}
561
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
634
562
  * @since 21.1
635
563
  */
636
564
  class DfTopNavQuickAction extends DfTopNavQuickActionElement {
637
565
  constructor() {
638
566
  super(...arguments);
639
567
  this.content = contentChild.required(DfTopNavQuickActionInTopNav, { read: TemplateRef });
640
- this.drawerContent = contentChild(DfTopNavQuickActionInDrawer, { ...(ngDevMode ? { debugName: "drawerContent" } : {}), read: TemplateRef });
568
+ this.drawerContent = contentChild(DfTopNavQuickActionInDrawer, { ...(ngDevMode ? { debugName: "drawerContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
569
+ this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
641
570
  }
642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickAction, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DfTopNavQuickAction, isStandalone: true, selector: "df-topnav-quick-action", providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }], queries: [{ propertyName: "content", first: true, predicate: DfTopNavQuickActionInTopNav, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "drawerContent", first: true, predicate: DfTopNavQuickActionInDrawer, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: ` <ng-container *ngTemplateOutlet="content()" /> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
571
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickAction, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
572
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickAction, isStandalone: true, selector: "df-topnav-quick-action", providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }], queries: [{ propertyName: "content", first: true, predicate: DfTopNavQuickActionInTopNav, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "drawerContent", first: true, predicate: DfTopNavQuickActionInDrawer, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: ` <ng-container *ngTemplateOutlet="content()" /> `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
644
573
  }
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickAction, decorators: [{
574
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickAction, decorators: [{
646
575
  type: Component,
647
576
  args: [{
648
577
  selector: 'df-topnav-quick-action',
649
578
  template: ` <ng-container *ngTemplateOutlet="content()" /> `,
650
579
  imports: [NgTemplateOutlet],
651
- changeDetection: ChangeDetectionStrategy.OnPush,
652
580
  providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }]
653
581
  }]
654
582
  }], propDecorators: { content: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionInTopNav), { ...{ read: TemplateRef }, isSignal: true }] }], drawerContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActionInDrawer), { ...{ read: TemplateRef }, isSignal: true }] }] } });
@@ -661,10 +589,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
661
589
  * @since 21.1
662
590
  */
663
591
  class DfTopNavQuickActionSearchInput {
664
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
665
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavQuickActionSearchInput, isStandalone: true, selector: "input[dfTopNavQuickActionSearchInput]", host: { attributes: { "type": "search" }, classAttribute: "df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon" }, ngImport: i0, template: ``, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
592
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
593
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavQuickActionSearchInput, isStandalone: true, selector: "input[dfTopNavQuickActionSearchInput]", host: { attributes: { "type": "search" }, classAttribute: "df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon" }, ngImport: i0, template: ``, isInline: true }); }
666
594
  }
667
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearchInput, decorators: [{
595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearchInput, decorators: [{
668
596
  type: Component,
669
597
  args: [{
670
598
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -673,7 +601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
673
601
  type: 'search',
674
602
  class: 'df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon'
675
603
  },
676
- changeDetection: ChangeDetectionStrategy.OnPush,
677
604
  template: ``
678
605
  }]
679
606
  }] });
@@ -682,7 +609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
682
609
  *
683
610
  * It should be used inside a {@link DfTopNavQuickActions} component and contain a ng-template with an input {@link DfTopNavQuickActionSearchInput}.
684
611
  *
685
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}
612
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
686
613
  * @since 21.1
687
614
  */
688
615
  class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
@@ -695,26 +622,27 @@ class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
695
622
  * 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.
696
623
  * See [ARIA guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/search_role) for more information.
697
624
  */
698
- this.ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : []));
625
+ this.ariaLabel = input(/* @ts-ignore */
626
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
699
627
  }
700
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearch, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
701
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.0", type: DfTopNavQuickActionSearch, isStandalone: true, selector: "df-topnav-quick-action-search", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "search" }, properties: { "attr.aria-label": "ariaLabel()" } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }], queries: [{ propertyName: "templateRef", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
628
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearch, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
629
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.4", type: DfTopNavQuickActionSearch, isStandalone: true, selector: "df-topnav-quick-action-search", inputs: { ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "search" }, properties: { "attr.aria-label": "ariaLabel()" } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }], queries: [{ propertyName: "templateRef", first: true, predicate: (TemplateRef), descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
702
630
  <div class="df-topnav-quick-action-search-container input-group">
703
631
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
704
- <span class="input-group-text fa-light fa-search"></span>
632
+ <df-icon class="input-group-text fa-light fa-search" />
705
633
  </div>
706
634
  <ng-container *ngTemplateOutlet="templateRef()" />
707
635
  </div>
708
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
636
+ `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }] }); }
709
637
  }
710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearch, decorators: [{
638
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionSearch, decorators: [{
711
639
  type: Component,
712
640
  args: [{
713
641
  selector: 'df-topnav-quick-action-search',
714
642
  template: `
715
643
  <div class="df-topnav-quick-action-search-container input-group">
716
644
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
717
- <span class="input-group-text fa-light fa-search"></span>
645
+ <df-icon class="input-group-text fa-light fa-search" />
718
646
  </div>
719
647
  <ng-container *ngTemplateOutlet="templateRef()" />
720
648
  </div>
@@ -723,8 +651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
723
651
  role: 'search',
724
652
  '[attr.aria-label]': 'ariaLabel()'
725
653
  },
726
- imports: [NgTemplateOutlet],
727
- changeDetection: ChangeDetectionStrategy.OnPush,
654
+ imports: [NgTemplateOutlet, DfIcon],
728
655
  providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }]
729
656
  }]
730
657
  }], propDecorators: { templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
@@ -732,7 +659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
732
659
  /**
733
660
  * 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.
734
661
  *
735
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#quick-actions|Design Factory example}
662
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#quick-actions|Design Factory example}
736
663
  * @since 21.1
737
664
  */
738
665
  class DfTopNavQuickActions {
@@ -751,33 +678,51 @@ class DfTopNavQuickActions {
751
678
  actionBtn.act.emit();
752
679
  }
753
680
  }
681
+ actionLabelToId(actionBtn) {
682
+ return 'df-drawer-button-' + actionBtn.label().toLocaleLowerCase().replace(/ /g, '-');
683
+ }
754
684
  constructor() {
755
685
  /**
756
686
  * 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.
757
687
  */
758
- this.reversedVertical = input(true, ...(ngDevMode ? [{ debugName: "reversedVertical" }] : []));
688
+ this.reversedVertical = input(true, /* @ts-ignore */
689
+ ...(ngDevMode ? [{ debugName: "reversedVertical" }] : /* istanbul ignore next */ []));
759
690
  /**
760
691
  * 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.
761
692
  */
762
- this.tabletDrawerContainer = input(...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : []));
693
+ this.tabletDrawerContainer = input(/* @ts-ignore */
694
+ ...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : /* istanbul ignore next */ []));
763
695
  this.appContainer = inject(DfAppContainer, { optional: true });
764
- this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT, ...(ngDevMode ? [{ debugName: "_actionElements" }] : []));
765
- this.drawer = viewChild('drawer', { ...(ngDevMode ? { debugName: "drawer" } : {}), read: DfDrawer });
696
+ this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT, /* @ts-ignore */
697
+ ...(ngDevMode ? [{ debugName: "_actionElements" }] : /* istanbul ignore next */ []));
698
+ this.drawer = viewChild('drawer', { ...(ngDevMode ? { debugName: "drawer" } : /* istanbul ignore next */ {}), read: DfDrawer });
766
699
  this.document = inject(DOCUMENT);
700
+ this.selectedBtn = viewChild('selectedBtn', /* @ts-ignore */
701
+ ...(ngDevMode ? [{ debugName: "selectedBtn" }] : /* istanbul ignore next */ []));
702
+ this.drawerButtons = viewChildren('drawerButton', /* @ts-ignore */
703
+ ...(ngDevMode ? [{ debugName: "drawerButtons" }] : /* istanbul ignore next */ []));
767
704
  // Responsive signals
768
- this.isMd = toAngularSignal(md$);
769
- this.isLg = toAngularSignal(lg$);
705
+ this.isMd = trackWindow('md');
706
+ this.isLg = trackWindow('lg');
770
707
  // 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
771
708
  this.drawerContainer = computed(() => this.isMd()
772
709
  ? (this.tabletDrawerContainer() ??
773
710
  this.appContainer?.['drawerContainerActions']?.()?.nativeElement ??
774
711
  this.document.body)
775
- : this.document.body, ...(ngDevMode ? [{ debugName: "drawerContainer" }] : []));
776
- this.actionElements = computed(() => (this.reversedVertical() && !this.isLg() ? [...this._actionElements()].reverse() : this._actionElements()).filter((el) => !(el instanceof DfTopNavQuickActionSearch)), ...(ngDevMode ? [{ debugName: "actionElements" }] : []));
777
- this.searchElement = computed(() => this._actionElements().find((el) => el instanceof DfTopNavQuickActionSearch), ...(ngDevMode ? [{ debugName: "searchElement" }] : []));
778
- this.menuExpanded = signal(false, ...(ngDevMode ? [{ debugName: "menuExpanded" }] : []));
712
+ : this.document.body, /* @ts-ignore */
713
+ ...(ngDevMode ? [{ debugName: "drawerContainer" }] : /* istanbul ignore next */ []));
714
+ this.actionElements = computed(() => (this.reversedVertical() && !this.isLg() ? [...this._actionElements()].reverse() : this._actionElements()).filter((el) => !(el instanceof DfTopNavQuickActionSearch)), /* @ts-ignore */
715
+ ...(ngDevMode ? [{ debugName: "actionElements" }] : /* istanbul ignore next */ []));
716
+ this.searchElement = computed(() => this._actionElements().find((el) => el instanceof DfTopNavQuickActionSearch), /* @ts-ignore */
717
+ ...(ngDevMode ? [{ debugName: "searchElement" }] : /* istanbul ignore next */ []));
718
+ this.menuExpanded = signal(false, /* @ts-ignore */
719
+ ...(ngDevMode ? [{ debugName: "menuExpanded" }] : /* istanbul ignore next */ []));
779
720
  // the selected quick action in the
780
- this.selectedQuickAction = signal(undefined, ...(ngDevMode ? [{ debugName: "selectedQuickAction" }] : []));
721
+ this.selectedQuickAction = signal(undefined, /* @ts-ignore */
722
+ ...(ngDevMode ? [{ debugName: "selectedQuickAction" }] : /* istanbul ignore next */ []));
723
+ this.prevSelectedQuickAction = signal(undefined, /* @ts-ignore */
724
+ ...(ngDevMode ? [{ debugName: "prevSelectedQuickAction" }] : /* istanbul ignore next */ []));
725
+ this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
781
726
  // resets the menu state when resizing to large screens, as the drawer will be closed and the selected button will be hidden
782
727
  effect(() => {
783
728
  if (this.isLg()) {
@@ -789,9 +734,19 @@ class DfTopNavQuickActions {
789
734
  this.selectedQuickAction.set(undefined);
790
735
  }
791
736
  });
737
+ effect(() => {
738
+ this.selectedBtn()?.nativeElement?.focus?.();
739
+ });
740
+ effect(() => {
741
+ if (this.prevSelectedQuickAction() && this.drawerButtons().length > 0) {
742
+ const prevSelectedBtn = this.drawerButtons().find((btn) => btn.nativeElement.id === this.actionLabelToId(this.prevSelectedQuickAction()));
743
+ prevSelectedBtn?.nativeElement?.focus?.();
744
+ this.prevSelectedQuickAction.set(undefined);
745
+ }
746
+ });
792
747
  }
793
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
794
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfTopNavQuickActions, isStandalone: true, selector: "df-topnav-quick-actions", inputs: { reversedVertical: { classPropertyName: "reversedVertical", publicName: "reversedVertical", isSignal: true, isRequired: false, transformFunction: null }, tabletDrawerContainer: { classPropertyName: "tabletDrawerContainer", publicName: "tabletDrawerContainer", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "style.display": "'contents'" } }, queries: [{ propertyName: "_actionElements", predicate: DF_TOPNAV_QUICK_ACTION_ELEMENT, isSignal: true }], viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true, read: DfDrawer, isSignal: true }], ngImport: i0, template: ` <ng-template #topnavQuickActions>
748
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
749
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavQuickActions, isStandalone: true, selector: "df-topnav-quick-actions", inputs: { reversedVertical: { classPropertyName: "reversedVertical", publicName: "reversedVertical", isSignal: true, isRequired: false, transformFunction: null }, tabletDrawerContainer: { classPropertyName: "tabletDrawerContainer", publicName: "tabletDrawerContainer", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "ngSkipHydration": "true" }, properties: { "style.display": "'contents'" } }, queries: [{ propertyName: "_actionElements", predicate: DF_TOPNAV_QUICK_ACTION_ELEMENT, isSignal: true }], viewQueries: [{ propertyName: "drawer", first: true, predicate: ["drawer"], descendants: true, read: DfDrawer, isSignal: true }, { propertyName: "selectedBtn", first: true, predicate: ["selectedBtn"], descendants: true, isSignal: true }, { propertyName: "drawerButtons", predicate: ["drawerButton"], descendants: true, isSignal: true }], ngImport: i0, template: ` <ng-template #topnavQuickActions>
795
750
  <ng-content />
796
751
  </ng-template>
797
752
  <div class="df-topnav-quick-actions">
@@ -799,18 +754,18 @@ class DfTopNavQuickActions {
799
754
  <ng-container *ngTemplateOutlet="topnavQuickActions" />
800
755
  } @else {
801
756
  <button
802
- dfTopNavButton
803
- icon
757
+ dfIconButton
758
+ appearance="text"
759
+ variant="neutral"
760
+ transparent
761
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
804
762
  aria-label="Toggle quick actions menu"
805
763
  i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
806
764
  (click)="menuExpanded.set(!menuExpanded())"
807
- >
808
- <span
809
- class="fal df-topnav-toggle-icon"
810
- [class.fa-xmark]="menuExpanded()"
811
- [class.fa-ellipsis-vertical]="!menuExpanded()"
812
- ></span>
813
- </button>
765
+ class="fal"
766
+ [class.fa-xmark]="menuExpanded()"
767
+ [class.fa-ellipsis-vertical]="!menuExpanded()"
768
+ ></button>
814
769
  <df-drawer
815
770
  class="df-topnav-drawer-host"
816
771
  position="inline-end"
@@ -826,8 +781,13 @@ class DfTopNavQuickActions {
826
781
  >
827
782
  @let selected = selectedQuickAction();
828
783
  @if (selected) {
829
- <button type="button" class="df-topnav-drawer-button" (click)="selectedQuickAction.set(undefined)">
830
- <span class="fal fa-arrow-left df-topnav-drawer-button-icon" aria-hidden="true"></span>
784
+ <button
785
+ type="button"
786
+ class="df-topnav-drawer-button"
787
+ (click)="prevSelectedQuickAction.set(selectedQuickAction()); selectedQuickAction.set(undefined)"
788
+ #selectedBtn
789
+ >
790
+ <df-icon class="fal fa-arrow-left df-topnav-drawer-button-icon" />
831
791
  <span>{{ selected.label() }}</span>
832
792
  </button>
833
793
  <hr class="df-topnav-drawer-divider" />
@@ -842,7 +802,7 @@ class DfTopNavQuickActions {
842
802
  [attr.aria-label]="searchElement()!.ariaLabel()"
843
803
  >
844
804
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
845
- <span class="input-group-text fa-light fa-search"></span>
805
+ <df-icon class="input-group-text fa-light fa-search" />
846
806
  </div>
847
807
  <ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
848
808
  </div>
@@ -854,17 +814,18 @@ class DfTopNavQuickActions {
854
814
  class="df-topnav-drawer-button"
855
815
  (click)="clickQuickAction(actionElement)"
856
816
  [disabled]="actionElement.disabled()"
817
+ #drawerButton
818
+ [id]="actionLabelToId(actionElement)"
857
819
  >
858
820
  <ng-template #dfQuickActionDefaultIcon>
859
- <span class="fal" [class]="actionElement.icon()" aria-hidden="true"></span>
821
+ <df-icon class="fal" [class]="actionElement.icon()" />
860
822
  </ng-template>
861
823
  <ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
862
824
  <span>{{ actionElement.label() }}</span>
863
825
  @if (actionElement['actionContent']()) {
864
- <span
826
+ <df-icon
865
827
  class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
866
- aria-hidden="true"
867
- ></span>
828
+ />
868
829
  }
869
830
  </button>
870
831
  } @else {
@@ -875,9 +836,9 @@ class DfTopNavQuickActions {
875
836
  }
876
837
  </df-drawer>
877
838
  }
878
- </div>`, isInline: true, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);--df-topnav-drawer-bg-color: var(--df-color-primary-subtle-background);background-color:var(--df-topnav-drawer-bg-color);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){transition:none}}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){background-color:var(--df-topnav-drawer-bg-color);color:var(--df-color-neutral-alt-default-foreground);--df-topnav-drawer-btn-border-color: var(--df-color-neutral-alt-default-border)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-topnav-drawer-bg-color),0 0 0 4px var(--df-topnav-drawer-btn-border-color)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):hover{--df-topnav-drawer-bg-color: var(--df-color-primary-alt-hovered-background)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):active{--df-topnav-drawer-bg-color: var(--df-color-primary-alt-pressed-background)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-topnav-drawer-host{display:none}\n"], dependencies: [{ kind: "component", type: DfDrawer, selector: "df-drawer", inputs: ["className", "bodyScroll", "backdrop", "container", "size", "resizable", "visible", "keepInDom", "configuration", "position", "focusOnInit"], outputs: ["sizeChange", "visibleChange", "minimizedChange", "maximizedChange", "resizingChange", "minSize", "maxSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfTopNavButton, selector: "button[dfTopNavButton]", inputs: ["appearance", "icon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
839
+ </div>`, isInline: true, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-dropdown .df-dropdown-item.df-topnav-quick-action-dropdown-item{display:flex;gap:var(--df-spacing-3)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);background-color:var(--df-color-primary-subtle-background);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer .df-topnav-drawer-button{height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;background-color:var(--df-color-primary-subtle-background);color:var(--df-color-neutral-alt-default-foreground);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer .df-topnav-drawer-button{transition:none}}.df-drawer .df-topnav-drawer-button:not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-color-primary-subtle-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover{color:var(--df-color-neutral-alt-hovered-foreground);background-color:var(--df-color-primary-alt-hovered-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-hovered-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):active{color:var(--df-color-neutral-alt-pressed-foreground);background-color:var(--df-color-primary-alt-pressed-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):active:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-pressed-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-drawer .df-topnav-quick-action-dropdown-drawer{position:relative}.df-drawer .df-topnav-quick-action-dropdown-drawer .df-dropdown{min-width:100%}.df-topnav-drawer-host{display:none}\n"], dependencies: [{ kind: "component", type: DfDrawer, selector: "df-drawer", inputs: ["className", "bodyScroll", "backdrop", "closeOnBackdropClick", "container", "size", "resizable", "visible", "keepInDom", "configuration", "position", "focusOnInit"], outputs: ["sizeChange", "visibleChange", "minimizedChange", "maximizedChange", "resizingChange", "minSize", "maxSize"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }, { kind: "component", type: DfIcon, selector: "df-icon" }], encapsulation: i0.ViewEncapsulation.None }); }
879
840
  }
880
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActions, decorators: [{
841
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActions, decorators: [{
881
842
  type: Component,
882
843
  args: [{ selector: 'df-topnav-quick-actions', host: {
883
844
  '[style.display]': "'contents'",
@@ -890,18 +851,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
890
851
  <ng-container *ngTemplateOutlet="topnavQuickActions" />
891
852
  } @else {
892
853
  <button
893
- dfTopNavButton
894
- icon
854
+ dfIconButton
855
+ appearance="text"
856
+ variant="neutral"
857
+ transparent
858
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
895
859
  aria-label="Toggle quick actions menu"
896
860
  i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
897
861
  (click)="menuExpanded.set(!menuExpanded())"
898
- >
899
- <span
900
- class="fal df-topnav-toggle-icon"
901
- [class.fa-xmark]="menuExpanded()"
902
- [class.fa-ellipsis-vertical]="!menuExpanded()"
903
- ></span>
904
- </button>
862
+ class="fal"
863
+ [class.fa-xmark]="menuExpanded()"
864
+ [class.fa-ellipsis-vertical]="!menuExpanded()"
865
+ ></button>
905
866
  <df-drawer
906
867
  class="df-topnav-drawer-host"
907
868
  position="inline-end"
@@ -917,8 +878,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
917
878
  >
918
879
  @let selected = selectedQuickAction();
919
880
  @if (selected) {
920
- <button type="button" class="df-topnav-drawer-button" (click)="selectedQuickAction.set(undefined)">
921
- <span class="fal fa-arrow-left df-topnav-drawer-button-icon" aria-hidden="true"></span>
881
+ <button
882
+ type="button"
883
+ class="df-topnav-drawer-button"
884
+ (click)="prevSelectedQuickAction.set(selectedQuickAction()); selectedQuickAction.set(undefined)"
885
+ #selectedBtn
886
+ >
887
+ <df-icon class="fal fa-arrow-left df-topnav-drawer-button-icon" />
922
888
  <span>{{ selected.label() }}</span>
923
889
  </button>
924
890
  <hr class="df-topnav-drawer-divider" />
@@ -933,7 +899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
933
899
  [attr.aria-label]="searchElement()!.ariaLabel()"
934
900
  >
935
901
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
936
- <span class="input-group-text fa-light fa-search"></span>
902
+ <df-icon class="input-group-text fa-light fa-search" />
937
903
  </div>
938
904
  <ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
939
905
  </div>
@@ -945,17 +911,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
945
911
  class="df-topnav-drawer-button"
946
912
  (click)="clickQuickAction(actionElement)"
947
913
  [disabled]="actionElement.disabled()"
914
+ #drawerButton
915
+ [id]="actionLabelToId(actionElement)"
948
916
  >
949
917
  <ng-template #dfQuickActionDefaultIcon>
950
- <span class="fal" [class]="actionElement.icon()" aria-hidden="true"></span>
918
+ <df-icon class="fal" [class]="actionElement.icon()" />
951
919
  </ng-template>
952
920
  <ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
953
921
  <span>{{ actionElement.label() }}</span>
954
922
  @if (actionElement['actionContent']()) {
955
- <span
923
+ <df-icon
956
924
  class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
957
- aria-hidden="true"
958
- ></span>
925
+ />
959
926
  }
960
927
  </button>
961
928
  } @else {
@@ -966,8 +933,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
966
933
  }
967
934
  </df-drawer>
968
935
  }
969
- </div>`, imports: [DfDrawer, NgTemplateOutlet, DfTopNavButton], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);--df-topnav-drawer-bg-color: var(--df-color-primary-subtle-background);background-color:var(--df-topnav-drawer-bg-color);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){transition:none}}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn){background-color:var(--df-topnav-drawer-bg-color);color:var(--df-color-neutral-alt-default-foreground);--df-topnav-drawer-btn-border-color: var(--df-color-neutral-alt-default-border)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-topnav-drawer-bg-color),0 0 0 4px var(--df-topnav-drawer-btn-border-color)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):hover{--df-topnav-drawer-bg-color: var(--df-color-primary-alt-hovered-background)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):active{--df-topnav-drawer-bg-color: var(--df-color-primary-alt-pressed-background)}.df-drawer :is(.df-topnav-drawer-button,.df-topnav-btn):not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-topnav-drawer-host{display:none}\n"] }]
970
- }], ctorParameters: () => [], propDecorators: { reversedVertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "reversedVertical", required: false }] }], tabletDrawerContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabletDrawerContainer", required: false }] }], _actionElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_QUICK_ACTION_ELEMENT), { isSignal: true }] }], drawer: [{ type: i0.ViewChild, args: ['drawer', { ...{ read: DfDrawer }, isSignal: true }] }] } });
936
+ </div>`, imports: [DfDrawer, NgTemplateOutlet, DfIconButton, DfIcon], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-quick-actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--df-spacing-5)}.df-dropdown .df-dropdown-item.df-topnav-quick-action-dropdown-item{display:flex;gap:var(--df-spacing-3)}.df-drawer.df-topnav-quick-actions-drawer{position:absolute!important;transition:none}.df-drawer.df-topnav-quick-actions-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}.df-drawer.df-topnav-quick-actions-drawer-mobile{--df-drawer-size: 100vw;--df-drawer-max-size: 100vw;top:var(--df-navbar-height, 3.5rem)!important;height:calc(100dvh - var(--df-navbar-height, 3.5rem))!important}.df-drawer.df-topnav-quick-actions-drawer{transition:none;display:flex;flex-direction:column;padding:var(--df-spacing-5);background-color:var(--df-color-primary-subtle-background);overflow-y:auto;scrollbar-color:var(--df-color-primary-soft-default-foreground) var(--df-color-inert-neutral-main-background)}.df-drawer .df-topnav-drawer-buttons-container{display:flex;flex-direction:column;gap:1px}.df-drawer .df-topnav-drawer-button{height:2.5rem;display:flex;align-items:center;padding-inline:var(--df-spacing-5);border-radius:var(--df-borderRadius-main-medium);gap:var(--df-spacing-3);border:none;outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;position:relative;cursor:pointer;background-color:var(--df-color-primary-subtle-background);color:var(--df-color-neutral-alt-default-foreground);transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-drawer .df-topnav-drawer-button{transition:none}}.df-drawer .df-topnav-drawer-button:not(:disabled) .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-default-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):focus-visible{z-index:1;box-shadow:0 0 0 2px var(--df-color-primary-subtle-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:disabled{cursor:not-allowed;color:var(--df-button-text-basic-color-disabled-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover{color:var(--df-color-neutral-alt-hovered-foreground);background-color:var(--df-color-primary-alt-hovered-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-hovered-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):hover .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-hovered-foreground)}.df-drawer .df-topnav-drawer-button:not(:disabled):active{color:var(--df-color-neutral-alt-pressed-foreground);background-color:var(--df-color-primary-alt-pressed-background)}.df-drawer .df-topnav-drawer-button:not(:disabled):active:not(:disabled):focus-visible{box-shadow:0 0 0 2px var(--df-color-primary-alt-pressed-background),0 0 0 4px var(--df-color-focus-main-border)}.df-drawer .df-topnav-drawer-button:not(:disabled):active .df-topnav-drawer-button-icon{color:var(--df-color-primary-alt-pressed-foreground)}.df-drawer .df-topnav-drawer-button-icon-end{margin-inline-start:auto}.df-drawer .df-topnav-drawer-divider{margin-top:var(--df-spacing-2);margin-bottom:var(--df-spacing-5);border-color:var(--df-color-neutral-alt-default-border)}.df-drawer .df-topnav-quick-action-dropdown-drawer{position:relative}.df-drawer .df-topnav-quick-action-dropdown-drawer .df-dropdown{min-width:100%}.df-topnav-drawer-host{display:none}\n"] }]
937
+ }], ctorParameters: () => [], propDecorators: { reversedVertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "reversedVertical", required: false }] }], tabletDrawerContainer: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabletDrawerContainer", required: false }] }], _actionElements: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => DF_TOPNAV_QUICK_ACTION_ELEMENT), { isSignal: true }] }], drawer: [{ type: i0.ViewChild, args: ['drawer', { ...{ read: DfDrawer }, isSignal: true }] }], selectedBtn: [{ type: i0.ViewChild, args: ['selectedBtn', { isSignal: true }] }], drawerButtons: [{ type: i0.ViewChildren, args: ['drawerButton', { isSignal: true }] }] } });
971
938
 
972
939
  /**
973
940
  * TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications.
@@ -981,39 +948,43 @@ class DfTopNav {
981
948
  constructor() {
982
949
  /**
983
950
  * The style of the TopNav main nav, which determines the applied styles. Can be either "basic" or "mirror".
984
- * When not provided, the applied mode will be determined based on the number of navigation links.
951
+ * If navigation links are present this input is ignored and the applied style will be determined based on the number of navigation links and the superheader input.
985
952
  */
986
- this.mainNavStyle = input(...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : []));
987
- /**
988
- * The style of the TopNav secondary nav, which determines the applied styles. Can be either "basic" or "mirror".
989
- * When not provided, the applied mode will be opposite to the main nav style.
990
- */
991
- this.secondaryNavStyle = input(...(ngDevMode ? [undefined, { debugName: "secondaryNavStyle" }] : []));
953
+ this.mainNavStyle = input(/* @ts-ignore */
954
+ ...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : /* istanbul ignore next */ []));
992
955
  /**
993
956
  * The mode of the TopNav, which determines the behavior of the navigation. Can be either "sidenav" or "dropdown".
994
957
  */
995
- this.mode = input('sidenav', ...(ngDevMode ? [{ debugName: "mode" }] : []));
958
+ this.mode = input('sidenav', /* @ts-ignore */
959
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
996
960
  /**
997
961
  * 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.
998
962
  */
999
- this.navExpanded = model(false, ...(ngDevMode ? [{ debugName: "navExpanded" }] : []));
963
+ this.navExpanded = model(false, /* @ts-ignore */
964
+ ...(ngDevMode ? [{ debugName: "navExpanded" }] : /* istanbul ignore next */ []));
1000
965
  /**
1001
966
  * 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.
1002
967
  */
1003
- this.superheader = input(...(ngDevMode ? [undefined, { debugName: "superheader" }] : []));
968
+ this.superheader = input(/* @ts-ignore */
969
+ ...(ngDevMode ? [undefined, { debugName: "superheader" }] : /* istanbul ignore next */ []));
1004
970
  /**
1005
971
  * 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.
1006
972
  * When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large.
1007
973
  */
1008
- this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: booleanAttribute });
1009
- this.navigationContainer = contentChild(DfTopNavNavigation, ...(ngDevMode ? [{ debugName: "navigationContainer" }] : []));
1010
- this.navElements = computed(() => this.navigationContainer()?.['childrenElements']?.() ?? [], ...(ngDevMode ? [{ debugName: "navElements" }] : []));
1011
- this.navActions = contentChild(DfTopNavQuickActions, ...(ngDevMode ? [{ debugName: "navActions" }] : []));
1012
- this.inAppContainer = signal(false, ...(ngDevMode ? [{ debugName: "inAppContainer" }] : []));
974
+ this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
975
+ this.navigationContainer = contentChild(DfTopNavNavigation, /* @ts-ignore */
976
+ ...(ngDevMode ? [{ debugName: "navigationContainer" }] : /* istanbul ignore next */ []));
977
+ this.navElements = computed(() => this.navigationContainer()?.['childrenElements']?.() ?? [], /* @ts-ignore */
978
+ ...(ngDevMode ? [{ debugName: "navElements" }] : /* istanbul ignore next */ []));
979
+ this.navActions = contentChild(DfTopNavQuickActions, /* @ts-ignore */
980
+ ...(ngDevMode ? [{ debugName: "navActions" }] : /* istanbul ignore next */ []));
981
+ this.inAppContainer = signal(false, /* @ts-ignore */
982
+ ...(ngDevMode ? [{ debugName: "inAppContainer" }] : /* istanbul ignore next */ []));
1013
983
  /**
1014
984
  * Signal that indicates when the links need to be displayed in the topnav instead of the navbar.
1015
985
  */
1016
- this.displayLinksInNav = computed(() => this.isXl() || (this.appliedSuperheader() && this.isLg()), ...(ngDevMode ? [{ debugName: "displayLinksInNav" }] : []));
986
+ this.displayLinksInNav = computed(() => this.isXl() || (this.appliedSuperheader() && this.isLg()), /* @ts-ignore */
987
+ ...(ngDevMode ? [{ debugName: "displayLinksInNav" }] : /* istanbul ignore next */ []));
1017
988
  /**
1018
989
  * The content of the sidenav, which is derived from the TopNav navigation elements.
1019
990
  */
@@ -1045,26 +1016,36 @@ class DfTopNav {
1045
1016
  const mapNavElementToSideNavItem = (el) => {
1046
1017
  if (el instanceof DfTopNavNavigationLink) {
1047
1018
  return {
1048
- label: el.label,
1049
- href: el.href,
1050
- routerLinkActiveOptions: el.routerLinkActiveOptions
1019
+ label: el.label(),
1020
+ linkPath: el['resolvedLink'](),
1021
+ active: el['externalLink']() ? false : undefined,
1022
+ routerLinkActiveOptions: el.routerLinkActiveOptions()
1051
1023
  };
1052
1024
  }
1053
1025
  {
1054
1026
  return {
1055
- label: el.label,
1056
- children: computed(() => (el['childElements']() ?? []).map(mapNavElementToSideNavItem))
1027
+ label: el.label(),
1028
+ children: (el['childElements']() ?? []).map(mapNavElementToSideNavItem)
1057
1029
  };
1058
1030
  }
1059
1031
  };
1060
1032
  return navElements.map(mapNavElementToSideNavItem);
1061
- }, ...(ngDevMode ? [{ debugName: "sidenavContent" }] : []));
1033
+ }, /* @ts-ignore */
1034
+ ...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
1062
1035
  // Responsive signals
1063
- this.isLg = toAngularSignal(lg$);
1064
- this.isXl = toAngularSignal(xl$);
1065
- this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5, ...(ngDevMode ? [{ debugName: "appliedSuperheader" }] : []));
1066
- this.mainNavAppliedStyle = computed(() => this.mainNavStyle() ?? (this.navElements().length > 0 && !this.appliedSuperheader() ? 'mirror' : 'basic'), ...(ngDevMode ? [{ debugName: "mainNavAppliedStyle" }] : []));
1067
- this.secondaryNavAppliedStyle = computed(() => this.secondaryNavStyle() ?? (this.mainNavAppliedStyle() === 'mirror' ? 'basic' : 'mirror'), ...(ngDevMode ? [{ debugName: "secondaryNavAppliedStyle" }] : []));
1036
+ this.isLg = trackWindow('lg');
1037
+ this.isXl = trackWindow('xl');
1038
+ this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5, /* @ts-ignore */
1039
+ ...(ngDevMode ? [{ debugName: "appliedSuperheader" }] : /* istanbul ignore next */ []));
1040
+ this.mainNavAppliedStyle = computed(() => {
1041
+ if (this.navElements().length > 0) {
1042
+ return this.appliedSuperheader() ? 'basic' : 'mirror';
1043
+ }
1044
+ else {
1045
+ return this.mainNavStyle() ?? 'basic';
1046
+ }
1047
+ }, /* @ts-ignore */
1048
+ ...(ngDevMode ? [{ debugName: "mainNavAppliedStyle" }] : /* istanbul ignore next */ []));
1068
1049
  // The drawer and sidenav should never be opened together. Those two effects ensure that.
1069
1050
  effect(() => {
1070
1051
  if (this.navExpanded()) {
@@ -1094,8 +1075,8 @@ class DfTopNav {
1094
1075
  });
1095
1076
  }
1096
1077
  }
1097
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1098
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfTopNav, isStandalone: true, selector: "df-topnav", inputs: { mainNavStyle: { classPropertyName: "mainNavStyle", publicName: "mainNavStyle", isSignal: true, isRequired: false, transformFunction: null }, secondaryNavStyle: { classPropertyName: "secondaryNavStyle", publicName: "secondaryNavStyle", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, navExpanded: { classPropertyName: "navExpanded", publicName: "navExpanded", isSignal: true, isRequired: false, transformFunction: null }, superheader: { classPropertyName: "superheader", publicName: "superheader", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navExpanded: "navExpandedChange" }, host: { classAttribute: "df-topnav" }, queries: [{ propertyName: "navigationContainer", first: true, predicate: DfTopNavNavigation, descendants: true, isSignal: true }, { propertyName: "navActions", first: true, predicate: DfTopNavQuickActions, descendants: true, isSignal: true }], ngImport: i0, template: `
1078
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1079
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNav, isStandalone: true, selector: "df-topnav", inputs: { mainNavStyle: { classPropertyName: "mainNavStyle", publicName: "mainNavStyle", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, navExpanded: { classPropertyName: "navExpanded", publicName: "navExpanded", isSignal: true, isRequired: false, transformFunction: null }, superheader: { classPropertyName: "superheader", publicName: "superheader", isSignal: true, isRequired: false, transformFunction: null }, showToggle: { classPropertyName: "showToggle", publicName: "showToggle", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { navExpanded: "navExpandedChange" }, host: { classAttribute: "df-topnav" }, queries: [{ propertyName: "navigationContainer", first: true, predicate: DfTopNavNavigation, descendants: true, isSignal: true }, { propertyName: "navActions", first: true, predicate: DfTopNavQuickActions, descendants: true, isSignal: true }], ngImport: i0, template: `
1099
1080
  <ng-template #navContent>
1100
1081
  <ng-content select="df-topnav-navigation" />
1101
1082
  </ng-template>
@@ -1110,19 +1091,19 @@ class DfTopNav {
1110
1091
  >
1111
1092
  @if (showToggle() || (sidenavContent().length && !isLg())) {
1112
1093
  <button
1113
- dfTopNavButton
1114
- icon
1094
+ dfIconButton
1095
+ appearance="text"
1096
+ variant="neutral"
1097
+ transparent
1098
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1115
1099
  aria-label="Toggle navigation menu"
1116
1100
  i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
1117
1101
  (click)="navExpanded.set(!navExpanded())"
1118
1102
  aria-haspopup="dialog"
1119
- >
1120
- <span
1121
- class="fal df-topnav-toggle-icon"
1122
- [class.fa-xmark]="navExpanded()"
1123
- [class.fa-bars]="!navExpanded()"
1124
- ></span>
1125
- </button>
1103
+ class="fal df-topnav-toggle-button"
1104
+ [class.fa-xmark]="navExpanded()"
1105
+ [class.fa-bars]="!navExpanded()"
1106
+ ></button>
1126
1107
  }
1127
1108
  <ng-content select="df-topnav-brand" />
1128
1109
  @if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
@@ -1133,8 +1114,8 @@ class DfTopNav {
1133
1114
  @if (appliedSuperheader() && (!inAppContainer() || isLg())) {
1134
1115
  <nav
1135
1116
  class="df-topnav-nav"
1136
- [class.df-topnav-nav-basic]="secondaryNavAppliedStyle() === 'basic'"
1137
- [class.df-topnav-nav-mirror]="secondaryNavAppliedStyle() === 'mirror'"
1117
+ [class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
1118
+ [class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
1138
1119
  aria-label="Secondary"
1139
1120
  i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
1140
1121
  >
@@ -1142,9 +1123,9 @@ class DfTopNav {
1142
1123
  </nav>
1143
1124
  }
1144
1125
  </header>
1145
- `, isInline: true, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-header{position:relative;z-index:11}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(min-width:1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);--df-topnav-btn-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-btn-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);--df-topnav-btn-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-btn-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"], dependencies: [{ kind: "component", type: DfTopNavButton, selector: "button[dfTopNavButton]", inputs: ["appearance", "icon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1126
+ `, isInline: true, styles: ["@media(width>=576px)and (width<=991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-toggle-button{position:relative}.df-topnav-header{position:relative;z-index:11;view-transition-name:df-topnav-header}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(width>=1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);color:var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);color:var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"], dependencies: [{ kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
1146
1127
  }
1147
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNav, decorators: [{
1128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNav, decorators: [{
1148
1129
  type: Component,
1149
1130
  args: [{ selector: 'df-topnav', template: `
1150
1131
  <ng-template #navContent>
@@ -1161,19 +1142,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1161
1142
  >
1162
1143
  @if (showToggle() || (sidenavContent().length && !isLg())) {
1163
1144
  <button
1164
- dfTopNavButton
1165
- icon
1145
+ dfIconButton
1146
+ appearance="text"
1147
+ variant="neutral"
1148
+ transparent
1149
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1166
1150
  aria-label="Toggle navigation menu"
1167
1151
  i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
1168
1152
  (click)="navExpanded.set(!navExpanded())"
1169
1153
  aria-haspopup="dialog"
1170
- >
1171
- <span
1172
- class="fal df-topnav-toggle-icon"
1173
- [class.fa-xmark]="navExpanded()"
1174
- [class.fa-bars]="!navExpanded()"
1175
- ></span>
1176
- </button>
1154
+ class="fal df-topnav-toggle-button"
1155
+ [class.fa-xmark]="navExpanded()"
1156
+ [class.fa-bars]="!navExpanded()"
1157
+ ></button>
1177
1158
  }
1178
1159
  <ng-content select="df-topnav-brand" />
1179
1160
  @if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
@@ -1184,8 +1165,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1184
1165
  @if (appliedSuperheader() && (!inAppContainer() || isLg())) {
1185
1166
  <nav
1186
1167
  class="df-topnav-nav"
1187
- [class.df-topnav-nav-basic]="secondaryNavAppliedStyle() === 'basic'"
1188
- [class.df-topnav-nav-mirror]="secondaryNavAppliedStyle() === 'mirror'"
1168
+ [class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
1169
+ [class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
1189
1170
  aria-label="Secondary"
1190
1171
  i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
1191
1172
  >
@@ -1193,10 +1174,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1193
1174
  </nav>
1194
1175
  }
1195
1176
  </header>
1196
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [DfTopNavButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
1177
+ `, imports: [DfIconButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
1197
1178
  class: 'df-topnav'
1198
- }, styles: ["@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-header{position:relative;z-index:11}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(min-width:1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);--df-topnav-btn-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-btn-border-color: var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);--df-topnav-btn-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-btn-border-color: var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"] }]
1199
- }], ctorParameters: () => [], propDecorators: { mainNavStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainNavStyle", required: false }] }], secondaryNavStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "secondaryNavStyle", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], navExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "navExpanded", required: false }] }, { type: i0.Output, args: ["navExpandedChange"] }], superheader: [{ type: i0.Input, args: [{ isSignal: true, alias: "superheader", required: false }] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], navigationContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavNavigation), { isSignal: true }] }], navActions: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActions), { isSignal: true }] }] } });
1179
+ }, styles: ["@media(width>=576px)and (width<=991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-topnav-header{z-index:2010}}.df-topnav-toggle-button{position:relative}.df-topnav-header{position:relative;z-index:11;view-transition-name:df-topnav-header}body:not(:has(.df-env-banner)) .df-topnav-header{box-shadow:0 0 8px var(--df-color-shadow-1)}.df-topnav-nav{display:flex;align-items:center;height:3.5rem}.df-topnav-nav:first-of-type{padding-inline:var(--df-spacing-3)}@media(width>=1200px){.df-topnav-nav{gap:var(--df-spacing-5)}}.df-topnav-nav.df-topnav-nav-basic{background:var(--df-topnav-color-inert-basic-background);color:var(--df-topnav-color-inert-basic-foreground)}.df-topnav-nav.df-topnav-nav-mirror{background:var(--df-topnav-color-inert-mirror-background);color:var(--df-topnav-color-inert-mirror-foreground)}.df-topnav-toggle-icon{width:2.25rem;height:1.5rem}.df-topnav-nav-border{border-bottom:1px solid var(--df-color-inert-neutral-main-border)}\n"] }]
1180
+ }], ctorParameters: () => [], propDecorators: { mainNavStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "mainNavStyle", required: false }] }], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], navExpanded: [{ type: i0.Input, args: [{ isSignal: true, alias: "navExpanded", required: false }] }, { type: i0.Output, args: ["navExpandedChange"] }], superheader: [{ type: i0.Input, args: [{ isSignal: true, alias: "superheader", required: false }] }], showToggle: [{ type: i0.Input, args: [{ isSignal: true, alias: "showToggle", required: false }] }], navigationContainer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavNavigation), { isSignal: true }] }], navActions: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavQuickActions), { isSignal: true }] }] } });
1200
1181
 
1201
1182
  /**
1202
1183
  * A directive to mark the company template in the {@link DfTopNavBrand} brand component.
@@ -1205,10 +1186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1205
1186
  * @since 21.1
1206
1187
  */
1207
1188
  class DfTopNavBrandLinkContent {
1208
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrandLinkContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1209
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavBrandLinkContent, isStandalone: true, selector: "ng-template[dfTopNavBrandLinkContent]", ngImport: i0 }); }
1189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrandLinkContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1190
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfTopNavBrandLinkContent, isStandalone: true, selector: "ng-template[dfTopNavBrandLinkContent]", ngImport: i0 }); }
1210
1191
  }
1211
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrandLinkContent, decorators: [{
1192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrandLinkContent, decorators: [{
1212
1193
  type: Directive,
1213
1194
  args: [{
1214
1195
  selector: 'ng-template[dfTopNavBrandLinkContent]'
@@ -1217,7 +1198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1217
1198
  /**
1218
1199
  * The TopNav brand component, used to display the company and product information.
1219
1200
  *
1220
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#brand|Design Factory example}
1201
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#brand|Design Factory example}
1221
1202
  * @since 21.1
1222
1203
  */
1223
1204
  class DfTopNavBrand {
@@ -1225,24 +1206,27 @@ class DfTopNavBrand {
1225
1206
  /**
1226
1207
  * The URL to navigate to when the brand is clicked. Defaults to "/".
1227
1208
  */
1228
- this.href = input('/', ...(ngDevMode ? [{ debugName: "href" }] : []));
1209
+ this.href = input('/', /* @ts-ignore */
1210
+ ...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
1229
1211
  /**
1230
1212
  * The product.
1231
1213
  */
1232
- this.product = input(...(ngDevMode ? [undefined, { debugName: "product" }] : []));
1214
+ this.product = input(/* @ts-ignore */
1215
+ ...(ngDevMode ? [undefined, { debugName: "product" }] : /* istanbul ignore next */ []));
1233
1216
  /**
1234
1217
  * The module.
1235
1218
  */
1236
- this.module = input(...(ngDevMode ? [undefined, { debugName: "module" }] : []));
1219
+ this.module = input(/* @ts-ignore */
1220
+ ...(ngDevMode ? [undefined, { debugName: "module" }] : /* istanbul ignore next */ []));
1237
1221
  /**
1238
1222
  * Whether to display the Amadeus logo as a vector graphic instead of text.
1239
1223
  */
1240
- this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : {}), transform: booleanAttribute });
1241
- this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : {}), read: TemplateRef });
1242
- this.isSm = toAngularSignal(sm$);
1224
+ this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
1225
+ this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : /* istanbul ignore next */ {}), read: TemplateRef });
1226
+ this.isSm = trackWindow('sm');
1243
1227
  }
1244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrand, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfTopNavBrand, isStandalone: true, selector: "df-topnav-brand", inputs: { href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, module: { classPropertyName: "module", publicName: "module", isSignal: true, isRequired: false, transformFunction: null }, amaudeusLogoVector: { classPropertyName: "amaudeusLogoVector", publicName: "amaudeusLogoVector", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "brandLinkContent", first: true, predicate: DfTopNavBrandLinkContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
1228
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrand, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1229
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavBrand, isStandalone: true, selector: "df-topnav-brand", inputs: { href: { classPropertyName: "href", publicName: "href", isSignal: true, isRequired: false, transformFunction: null }, product: { classPropertyName: "product", publicName: "product", isSignal: true, isRequired: false, transformFunction: null }, module: { classPropertyName: "module", publicName: "module", isSignal: true, isRequired: false, transformFunction: null }, amaudeusLogoVector: { classPropertyName: "amaudeusLogoVector", publicName: "amaudeusLogoVector", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "brandLinkContent", first: true, predicate: DfTopNavBrandLinkContent, descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: `
1246
1230
  <div class="df-topnav-brand">
1247
1231
  <a class="df-topnav-brand-link" [routerLink]="href()">
1248
1232
  <ng-template #defaultLink>
@@ -1313,9 +1297,9 @@ class DfTopNavBrand {
1313
1297
  <span class="df-topnav-brand-module">{{ module() }}</span>
1314
1298
  }
1315
1299
  </div>
1316
- `, isInline: true, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important;background-color:var(--df-topnav-brand-link-bg-color)!important}.df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-brand-link-bg-color),inset 0 0 0 4px var(--df-topnav-brand-link-border-color)!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;--df-topnav-brand-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-default-border)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-basic-hovered-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-hovered-border);color:var(--df-topnav-color-productName-basic-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-basic-pressed-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-pressed-border);color:var(--df-topnav-color-productName-basic-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;--df-topnav-brand-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-default-border)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-mirror-hovered-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-hovered-border);color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-mirror-pressed-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-pressed-border);color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1300
+ `, isInline: true, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;background-color:var(--df-topnav-color-inert-basic-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-basic-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-default-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-basic-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-basic-hovered-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-hovered-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-basic-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-basic-pressed-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-pressed-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;background-color:var(--df-topnav-color-inert-mirror-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-default-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-hovered-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-hovered-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-pressed-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-pressed-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "browserUrl", "routerLink"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
1317
1301
  }
1318
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrand, decorators: [{
1302
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavBrand, decorators: [{
1319
1303
  type: Component,
1320
1304
  args: [{ selector: 'df-topnav-brand', template: `
1321
1305
  <div class="df-topnav-brand">
@@ -1388,9 +1372,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1388
1372
  <span class="df-topnav-brand-module">{{ module() }}</span>
1389
1373
  }
1390
1374
  </div>
1391
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [RouterLink, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important;background-color:var(--df-topnav-brand-link-bg-color)!important}.df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-brand-link-bg-color),inset 0 0 0 4px var(--df-topnav-brand-link-border-color)!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;--df-topnav-brand-link-bg-color: var(--df-topnav-color-inert-basic-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-default-border)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-basic-hovered-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-hovered-border);color:var(--df-topnav-color-productName-basic-hovered-foreground)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-basic-pressed-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-basic-pressed-border);color:var(--df-topnav-color-productName-basic-pressed-foreground)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;--df-topnav-brand-link-bg-color: var(--df-topnav-color-inert-mirror-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-default-border)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-mirror-hovered-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-hovered-border);color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{--df-topnav-brand-link-bg-color: var(--df-topnav-color-productName-mirror-pressed-background);--df-topnav-brand-link-border-color: var(--df-topnav-color-productName-mirror-pressed-border);color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"] }]
1375
+ `, imports: [RouterLink, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, styles: [".df-topnav-brand{display:flex;align-items:center}.df-topnav-brand-link{display:flex;align-items:center;padding:var(--df-spacing-3);gap:var(--df-spacing-3);font-size:var(--df-typo-sizing-large);outline:none;box-shadow:none;-webkit-user-select:none;user-select:none;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.df-topnav-brand-link{transition:none}}.df-topnav-brand-link{border-bottom:0!important}.df-topnav-brand-company-amadeus-logo-mobile{width:1rem;height:1.25rem}.df-topnav-brand-company-amaudeus-logo-desktop{width:7rem;height:1rem}.df-topnav-brand-module-separator{height:1rem;width:1px;background-color:var(--df-color-inert-neutral-main-border);margin-inline-end:var(--df-spacing-3)}.df-topnav-brand-module{margin-top:calc(.75 * (var(--df-typo-sizing-large) - var(--df-typo-sizing-default)))}.df-topnav-brand-company-amadeus-text{font-weight:var(--df-typo-weight-medium)}.df-topnav-nav-basic .df-topnav-brand{color:var(--df-topnav-color-productName-basic-default-foreground)}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-basic-default-foreground)!important;background-color:var(--df-topnav-color-inert-basic-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-basic-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-default-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-basic-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-basic-hovered-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-hovered-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-basic-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-basic-pressed-background)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-basic-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-basic-pressed-border)!important}.df-topnav-nav-basic .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-main-foreground)}.df-topnav-nav-mirror .df-topnav-brand{color:var(--df-topnav-color-productName-mirror-default-foreground)}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link{color:var(--df-topnav-color-productName-mirror-default-foreground)!important;background-color:var(--df-topnav-color-inert-mirror-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-inert-mirror-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-default-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover{color:var(--df-topnav-color-productName-mirror-hovered-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-hovered-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:hover:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-hovered-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-hovered-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active{color:var(--df-topnav-color-productName-mirror-pressed-foreground)!important;background-color:var(--df-topnav-color-productName-mirror-pressed-background)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-link:active:focus-visible{box-shadow:inset 0 0 0 2px var(--df-topnav-color-productName-mirror-pressed-background),inset 0 0 0 4px var(--df-topnav-color-productName-mirror-pressed-border)!important}.df-topnav-nav-mirror .df-topnav-brand .df-topnav-brand-company-amaudeus-logo-desktop{color:var(--df-color-logo-alt-foreground)}\n"] }]
1392
1376
  }], propDecorators: { href: [{ type: i0.Input, args: [{ isSignal: true, alias: "href", required: false }] }], product: [{ type: i0.Input, args: [{ isSignal: true, alias: "product", required: false }] }], module: [{ type: i0.Input, args: [{ isSignal: true, alias: "module", required: false }] }], amaudeusLogoVector: [{ type: i0.Input, args: [{ isSignal: true, alias: "amaudeusLogoVector", required: false }] }], brandLinkContent: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfTopNavBrandLinkContent), { ...{ read: TemplateRef }, isSignal: true }] }] } });
1393
1377
 
1378
+ /**
1379
+ * The dropdown toggle does not use dfButton styles and requires to be recoded...
1380
+ *
1381
+ * @internal
1382
+ */
1383
+ class DfTopNavQuickActionThemePickerDrawerToggle {
1384
+ constructor() {
1385
+ /**
1386
+ * The dropdown instance controlled by this toggle element.
1387
+ *
1388
+ * Pass the referenced {@link DfDropdown} instance to connect the host button to its menu.
1389
+ */
1390
+ this.dropdown = input.required({ ...(ngDevMode ? { debugName: "dropdown" } : /* istanbul ignore next */ {}), alias: 'dfTopNavQuickActionThemePickerDrawerToggle' });
1391
+ const element = inject(ElementRef).nativeElement;
1392
+ effect(() => {
1393
+ this.dropdown()['toggleElement'].set(element);
1394
+ });
1395
+ }
1396
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePickerDrawerToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1397
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfTopNavQuickActionThemePickerDrawerToggle, isStandalone: true, selector: "button[dfTopNavQuickActionThemePickerDrawerToggle]", inputs: { dropdown: { classPropertyName: "dropdown", publicName: "dfTopNavQuickActionThemePickerDrawerToggle", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.df-show": "dropdown().isOpen()" } }, ngImport: i0, template: `
1398
+ <ng-content />
1399
+ <df-icon
1400
+ class="df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end fal"
1401
+ [class.fa-chevron-down]="!dropdown().isOpen()"
1402
+ [class.fa-chevron-up]="dropdown().isOpen()"
1403
+ />
1404
+ `, isInline: true, dependencies: [{ kind: "component", type: DfIcon, selector: "df-icon" }] }); }
1405
+ }
1406
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePickerDrawerToggle, decorators: [{
1407
+ type: Component,
1408
+ args: [{
1409
+ // eslint-disable-next-line @angular-eslint/component-selector
1410
+ selector: 'button[dfTopNavQuickActionThemePickerDrawerToggle]',
1411
+ imports: [DfIcon],
1412
+ template: `
1413
+ <ng-content />
1414
+ <df-icon
1415
+ class="df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end fal"
1416
+ [class.fa-chevron-down]="!dropdown().isOpen()"
1417
+ [class.fa-chevron-up]="dropdown().isOpen()"
1418
+ />
1419
+ `,
1420
+ host: {
1421
+ '[class.df-show]': 'dropdown().isOpen()'
1422
+ }
1423
+ }]
1424
+ }], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavQuickActionThemePickerDrawerToggle", required: true }] }] } });
1394
1425
  /**
1395
1426
  * DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application.
1396
1427
  *
@@ -1406,133 +1437,179 @@ class DfTopNavQuickActionThemePicker extends DfTopNavQuickAction {
1406
1437
  *
1407
1438
  * 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.
1408
1439
  */
1409
- this.themeOptions = input.required(...(ngDevMode ? [{ debugName: "themeOptions" }] : []));
1440
+ this.themeOptions = input.required(/* @ts-ignore */
1441
+ ...(ngDevMode ? [{ debugName: "themeOptions" }] : /* istanbul ignore next */ []));
1410
1442
  /**
1411
1443
  * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
1412
1444
  */
1413
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
1445
+ this.appearance = input('neutral', /* @ts-ignore */
1446
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
1414
1447
  this.mapThemeToIcon = computed(() => {
1415
1448
  const map = new Map();
1416
1449
  for (const option of this.themeOptions()) {
1417
1450
  map.set(option.themeMode, option.icon);
1418
1451
  }
1419
1452
  return map;
1420
- }, ...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : []));
1421
- this.toggleId = `df-topnav-dropdown-toggle-${generateId()}`;
1453
+ }, /* @ts-ignore */
1454
+ ...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : /* istanbul ignore next */ []));
1422
1455
  this.content = viewChild.required('themePickerContent');
1456
+ this.drawerContent = viewChild('themePickerDrawerContent', /* @ts-ignore */
1457
+ ...(ngDevMode ? [{ debugName: "drawerContent" }] : /* istanbul ignore next */ []));
1423
1458
  }
1424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionThemePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1425
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfTopNavQuickActionThemePicker, isStandalone: true, selector: "df-topnav-quick-action-theme-picker", inputs: { themeOptions: { classPropertyName: "themeOptions", publicName: "themeOptions", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }], viewQueries: [{ propertyName: "content", first: true, predicate: ["themePickerContent"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1459
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1460
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfTopNavQuickActionThemePicker, isStandalone: true, selector: "df-topnav-quick-action-theme-picker", inputs: { themeOptions: { classPropertyName: "themeOptions", publicName: "themeOptions", isSignal: true, isRequired: true, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null } }, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }], viewQueries: [{ propertyName: "content", first: true, predicate: ["themePickerContent"], descendants: true, isSignal: true }, { propertyName: "drawerContent", first: true, predicate: ["themePickerDrawerContent"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
1426
1461
  <ng-template #themePickerContent>
1427
- <div ngbDropdown class="d-flex" #dropdown="ngbDropdown">
1428
- <button
1429
- type="button"
1430
- aria-label="Choose theme"
1431
- i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1432
- class="w-100 w-lg-auto"
1433
- dfTopNavButton
1434
- [attr.id]="toggleId"
1435
- ngbDropdownToggle
1436
- >
1437
- <span aria-hidden="true" class="fas {{ mapThemeToIcon().get(themeService.selected()) }}"></span>
1438
- <span class="me-auto d-lg-none">
1439
- {{ themeService.selected() | titlecase }}
1440
- </span>
1441
- </button>
1442
- <div
1443
- ngbDropdownMenu
1444
- [attr.aria-labelledby]="toggleId"
1445
- class="dropdown-menu-end df-topnav-quick-action-theme-picker-dropdown"
1446
- >
1447
- @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1448
- <button
1449
- type="button"
1450
- ngbDropdownItem
1451
- class="dropdown-item gap-3 d-flex"
1452
- [class.active]="themeOption.themeMode === themeService.selected()"
1453
- (click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
1454
- >
1455
- <span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
1456
- {{ themeOption.themeMode | titlecase }}
1457
- </button>
1458
- }
1459
- </div>
1460
- </div>
1462
+ <button
1463
+ [dfDropdownToggle]="menu"
1464
+ appearance="text"
1465
+ [variant]="appearance()"
1466
+ transparent
1467
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1468
+ aria-label="Choose theme"
1469
+ i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1470
+ >
1471
+ <df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
1472
+ </button>
1473
+ <df-dropdown #menu placement="bottom-end" role="listbox">
1474
+ @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1475
+ <button
1476
+ dfDropdownItem
1477
+ class="df-topnav-quick-action-dropdown-item"
1478
+ [active]="themeOption.themeMode === themeService.selected()"
1479
+ [attr.aria-selected]="themeOption.themeMode === themeService.selected()"
1480
+ (click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
1481
+ >
1482
+ <df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
1483
+ {{ themeOption.themeMode | titlecase }}
1484
+ </button>
1485
+ }
1486
+ </df-dropdown>
1461
1487
  </ng-template>
1462
1488
  <ng-container *ngTemplateOutlet="themePickerContent" />
1463
- `, isInline: true, styles: [".df-drawer .df-topnav-quick-action-theme-picker-dropdown{min-width:100%}\n"], dependencies: [{ kind: "directive", type: NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfTopNavButton, selector: "button[dfTopNavButton]", inputs: ["appearance", "icon"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1489
+ <ng-template #themePickerDrawerContent>
1490
+ <button
1491
+ [dfTopNavQuickActionThemePickerDrawerToggle]="menu"
1492
+ class="df-topnav-drawer-button"
1493
+ aria-label="Choose theme"
1494
+ i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1495
+ >
1496
+ <df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
1497
+ <span class="me-auto">
1498
+ {{ themeService.selected() | titlecase }}
1499
+ </span>
1500
+ </button>
1501
+ <df-dropdown #menu placement="bottom-end" role="listbox" class="df-topnav-quick-action-dropdown-drawer">
1502
+ @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1503
+ <button
1504
+ dfDropdownItem
1505
+ class="df-topnav-quick-action-dropdown-item"
1506
+ [active]="themeOption.themeMode === themeService.selected()"
1507
+ [attr.aria-selected]="themeOption.themeMode === themeService.selected()"
1508
+ (click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
1509
+ >
1510
+ <df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
1511
+ {{ themeOption.themeMode | titlecase }}
1512
+ </button>
1513
+ }
1514
+ </df-dropdown>
1515
+ </ng-template>
1516
+ `, isInline: true, dependencies: [{ kind: "component", type: DfDropdown, selector: "df-dropdown", inputs: ["opened", "placement", "size", "container"], outputs: ["openedChange"] }, { kind: "directive", type: DfDropdownItemButton, selector: "button[dfDropdownItem]", inputs: ["active", "disabled"] }, { kind: "component", type: DfDropdownToggle, selector: "button[dfDropdownToggle]", inputs: ["dfDropdownToggle", "iconOnly"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIcon, selector: "df-icon" }, { kind: "component", type: DfTopNavQuickActionThemePickerDrawerToggle, selector: "button[dfTopNavQuickActionThemePickerDrawerToggle]", inputs: ["dfTopNavQuickActionThemePickerDrawerToggle"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }], encapsulation: i0.ViewEncapsulation.None }); }
1464
1517
  }
1465
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionThemePicker, decorators: [{
1518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavQuickActionThemePicker, decorators: [{
1466
1519
  type: Component,
1467
- args: [{ selector: 'df-topnav-quick-action-theme-picker', template: `
1520
+ args: [{
1521
+ selector: 'df-topnav-quick-action-theme-picker',
1522
+ template: `
1468
1523
  <ng-template #themePickerContent>
1469
- <div ngbDropdown class="d-flex" #dropdown="ngbDropdown">
1470
- <button
1471
- type="button"
1472
- aria-label="Choose theme"
1473
- i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1474
- class="w-100 w-lg-auto"
1475
- dfTopNavButton
1476
- [attr.id]="toggleId"
1477
- ngbDropdownToggle
1478
- >
1479
- <span aria-hidden="true" class="fas {{ mapThemeToIcon().get(themeService.selected()) }}"></span>
1480
- <span class="me-auto d-lg-none">
1481
- {{ themeService.selected() | titlecase }}
1482
- </span>
1483
- </button>
1484
- <div
1485
- ngbDropdownMenu
1486
- [attr.aria-labelledby]="toggleId"
1487
- class="dropdown-menu-end df-topnav-quick-action-theme-picker-dropdown"
1488
- >
1489
- @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1490
- <button
1491
- type="button"
1492
- ngbDropdownItem
1493
- class="dropdown-item gap-3 d-flex"
1494
- [class.active]="themeOption.themeMode === themeService.selected()"
1495
- (click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
1496
- >
1497
- <span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
1498
- {{ themeOption.themeMode | titlecase }}
1499
- </button>
1500
- }
1501
- </div>
1502
- </div>
1524
+ <button
1525
+ [dfDropdownToggle]="menu"
1526
+ appearance="text"
1527
+ [variant]="appearance()"
1528
+ transparent
1529
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1530
+ aria-label="Choose theme"
1531
+ i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1532
+ >
1533
+ <df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
1534
+ </button>
1535
+ <df-dropdown #menu placement="bottom-end" role="listbox">
1536
+ @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1537
+ <button
1538
+ dfDropdownItem
1539
+ class="df-topnav-quick-action-dropdown-item"
1540
+ [active]="themeOption.themeMode === themeService.selected()"
1541
+ [attr.aria-selected]="themeOption.themeMode === themeService.selected()"
1542
+ (click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
1543
+ >
1544
+ <df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
1545
+ {{ themeOption.themeMode | titlecase }}
1546
+ </button>
1547
+ }
1548
+ </df-dropdown>
1503
1549
  </ng-template>
1504
1550
  <ng-container *ngTemplateOutlet="themePickerContent" />
1505
- `, imports: [
1506
- NgbDropdown,
1507
- NgbDropdownToggle,
1508
- NgbDropdownMenu,
1509
- NgbDropdownItem,
1551
+ <ng-template #themePickerDrawerContent>
1552
+ <button
1553
+ [dfTopNavQuickActionThemePickerDrawerToggle]="menu"
1554
+ class="df-topnav-drawer-button"
1555
+ aria-label="Choose theme"
1556
+ i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1557
+ >
1558
+ <df-icon class="fas {{ mapThemeToIcon().get(themeService.selected()) }}" />
1559
+ <span class="me-auto">
1560
+ {{ themeService.selected() | titlecase }}
1561
+ </span>
1562
+ </button>
1563
+ <df-dropdown #menu placement="bottom-end" role="listbox" class="df-topnav-quick-action-dropdown-drawer">
1564
+ @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1565
+ <button
1566
+ dfDropdownItem
1567
+ class="df-topnav-quick-action-dropdown-item"
1568
+ [active]="themeOption.themeMode === themeService.selected()"
1569
+ [attr.aria-selected]="themeOption.themeMode === themeService.selected()"
1570
+ (click)="menu.close(); themeService.setTheme(themeOption.themeMode)"
1571
+ >
1572
+ <df-icon class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" />
1573
+ {{ themeOption.themeMode | titlecase }}
1574
+ </button>
1575
+ }
1576
+ </df-dropdown>
1577
+ </ng-template>
1578
+ `,
1579
+ imports: [
1580
+ DfDropdown,
1581
+ DfDropdownItemButton,
1582
+ DfDropdownToggle,
1510
1583
  TitleCasePipe,
1511
1584
  NgTemplateOutlet,
1512
- DfTopNavButton
1513
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }], styles: [".df-drawer .df-topnav-quick-action-theme-picker-dropdown{min-width:100%}\n"] }]
1514
- }], propDecorators: { themeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "themeOptions", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], content: [{ type: i0.ViewChild, args: ['themePickerContent', { isSignal: true }] }] } });
1585
+ DfIcon,
1586
+ DfTopNavQuickActionThemePickerDrawerToggle
1587
+ ],
1588
+ encapsulation: ViewEncapsulation.None,
1589
+ providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionThemePicker }]
1590
+ }]
1591
+ }], propDecorators: { themeOptions: [{ type: i0.Input, args: [{ isSignal: true, alias: "themeOptions", required: true }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], content: [{ type: i0.ViewChild, args: ['themePickerContent', { isSignal: true }] }], drawerContent: [{ type: i0.ViewChild, args: ['themePickerDrawerContent', { isSignal: true }] }] } });
1515
1592
 
1516
1593
  /**
1517
1594
  * The environment banner component, used to display a banner at the top of the page indicating the current environment (e.g., development, staging, production).
1518
1595
  *
1519
- * See {@link https://design-factory.amadeus.net/components/topnav/examples#environment-banner|Design Factory example}
1596
+ * See {@link https://design-factory.amadeus.net/components/topnav/developer#environment-banner|Design Factory example}
1520
1597
  * @since 21.1
1521
1598
  */
1522
1599
  class DfEnvBanner {
1523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfEnvBanner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.0", type: DfEnvBanner, isStandalone: true, selector: "df-env-banner", host: { classAttribute: "df-env-banner" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1600
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfEnvBanner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1601
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.4", type: DfEnvBanner, isStandalone: true, selector: "df-env-banner", host: { classAttribute: "df-env-banner" }, ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(width>=576px)and (width<=992px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"], encapsulation: i0.ViewEncapsulation.None }); }
1525
1602
  }
1526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfEnvBanner, decorators: [{
1603
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfEnvBanner, decorators: [{
1527
1604
  type: Component,
1528
- args: [{ selector: 'df-env-banner', template: `<ng-content />`, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1605
+ args: [{ selector: 'df-env-banner', template: `<ng-content />`, encapsulation: ViewEncapsulation.None, host: {
1529
1606
  class: 'df-env-banner'
1530
- }, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(min-width:768px)and (max-width:991px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"] }]
1607
+ }, styles: [".df-env-banner{display:flex;width:100%;justify-content:center;background-color:var(--df-color-warning-soft-default-background);color:var(--df-color-warning-soft-default-foreground);font-size:var(--df-typo-sizing-xsmall);z-index:10;box-shadow:0 0 8px var(--df-color-shadow-1)}@media(width>=576px)and (width<=992px){.df-app-container:has(.df-drawer.df-collapse-show,.df-drawer.df-collapse-collapsing) .df-env-banner{z-index:2010}}\n"] }]
1531
1608
  }] });
1532
1609
 
1533
1610
  /**
1534
1611
  * Generated bundle index. Do not edit.
1535
1612
  */
1536
1613
 
1537
- export { DfAppContainer, DfEnvBanner, DfTopNav, DfTopNavBrand, DfTopNavBrandLinkContent, DfTopNavNavigation, DfTopNavNavigationItem, DfTopNavNavigationLink, DfTopNavQuickAction, DfTopNavQuickActionButton, DfTopNavQuickActionButtonContent, DfTopNavQuickActionButtonIcon, DfTopNavQuickActionInDrawer, DfTopNavQuickActionInTopNav, DfTopNavQuickActionSearch, DfTopNavQuickActionSearchInput, DfTopNavQuickActionThemePicker, DfTopNavQuickActions };
1614
+ export { DF_TOPNAV_QUICK_ACTION_ELEMENT, DfAppContainer, DfEnvBanner, DfTopNav, DfTopNavBrand, DfTopNavBrandLinkContent, DfTopNavNavigation, DfTopNavNavigationItem, DfTopNavNavigationLink, DfTopNavQuickAction, DfTopNavQuickActionButton, DfTopNavQuickActionButtonContent, DfTopNavQuickActionButtonIcon, DfTopNavQuickActionElement, DfTopNavQuickActionInDrawer, DfTopNavQuickActionInTopNav, DfTopNavQuickActionSearch, DfTopNavQuickActionSearchInput, DfTopNavQuickActionThemePicker, DfTopNavQuickActions };
1538
1615
  //# sourceMappingURL=design-factory-angular-topnav.mjs.map