@design-factory/angular 21.1.0 → 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 +64 -62
  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 +652 -401
  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 +29 -19
  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 +589 -589
  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 +10 -16
  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 +98 -14
  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 +35 -47
  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, computed, signal, inject, ElementRef, forwardRef, Directive, ContentChildren, 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, NgbDropdownItem, NgbDropdownMenu, 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,29 +57,36 @@ 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 */ []));
58
62
  /**
59
63
  * The external href of the navigation link, which will be used as the link target. Use {@link routerLink} for internal links.
60
64
  */
61
- this.href = input(...(ngDevMode ? [undefined, { debugName: "href" }] : []));
65
+ this.href = input(/* @ts-ignore */
66
+ ...(ngDevMode ? [undefined, { debugName: "href" }] : /* istanbul ignore next */ []));
62
67
  /**
63
68
  * The internal router link of the navigation link, which will be used as the link target. Use {@link href} for external links.
64
69
  */
65
- this.routerLink = input(...(ngDevMode ? [undefined, { debugName: "routerLink" }] : []));
66
- this.resolvedLink = computed(() => this.routerLink() ?? this.href(), ...(ngDevMode ? [{ debugName: "resolvedLink" }] : []));
67
- this.externalLink = computed(() => !!this.href(), ...(ngDevMode ? [{ debugName: "externalLink" }] : []));
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 */ []));
68
76
  /**
69
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 }.
70
78
  */
71
- this.routerLinkActiveOptions = input({ exact: false }, ...(ngDevMode ? [{ debugName: "routerLinkActiveOptions" }] : []));
72
- 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 */ []));
73
83
  /**
74
84
  * Indicates if the link is currently active based on the Router state.
75
85
  */
76
86
  this.active = this._active.asReadonly();
77
87
  }
78
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationLink, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.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: 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: `
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: `
80
90
  @if (externalLink()) {
81
91
  <a class="df-topnav-navigation-link" [attr.href]="href()" target="_blank">
82
92
  <span [attr.data-text]="label()">{{ label() }}</span>
@@ -94,9 +104,9 @@ class DfTopNavNavigationLink extends DfTopNavNavigationElement {
94
104
  <span [attr.data-text]="label()">{{ label() }}</span>
95
105
  </a>
96
106
  }
97
- `, 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 }); }
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 }); }
98
108
  }
99
- 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: [{
100
110
  type: Component,
101
111
  args: [{ selector: 'df-topnav-navigation-link', template: `
102
112
  @if (externalLink()) {
@@ -119,81 +129,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
119
129
  `, host: {
120
130
  role: 'listitem',
121
131
  '[style.display]': '"contents"'
122
- }, 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"] }]
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"] }]
123
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 }] }] } });
124
134
 
125
- // TODO - Implement the dropdown mode of the TopNav using the dropdown wrapper and remove the DfTopNavDropdownToggle directive.
126
135
  /**
127
- * @internal
128
- * 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...
129
137
  *
130
- * This override of ng-bootstrap allowed to avoid setting the `dropdown-toggle` class on the toggle button.
131
- *
132
- * It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.
133
- */
134
- class DfTopNavDropdownToggle {
135
- constructor() {
136
- this.dropdown = inject(NgbDropdown);
137
- this.nativeElement = inject(ElementRef).nativeElement;
138
- }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
140
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavDropdownToggle, isStandalone: true, selector: "[dfTopNavDropdownToggle]", 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 }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownToggle, decorators: [{
143
- type: Directive,
144
- args: [{
145
- selector: '[dfTopNavDropdownToggle]',
146
- host: {
147
- '[attr.aria-expanded]': 'dropdown.isOpen()',
148
- '(click)': 'dropdown.toggle()',
149
- '(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',
150
- '(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',
151
- '(keydown.Home)': 'dropdown.onKeyDown($any($event))',
152
- '(keydown.End)': 'dropdown.onKeyDown($any($event))',
153
- '(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
154
- '(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
155
- },
156
- providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => DfTopNavDropdownToggle) }]
157
- }]
158
- }] });
159
- /**
160
138
  * @internal
161
- * Temporary menu directive for the dropdown mode of the TopNav.
162
- *
163
- * This override allowed to wrap the links into a list structure and keep the keyboard navigation working.
164
- *
165
- * It will be removed once the dropdown mode is implemented using a more generic approach that can be used in other components as well.
166
139
  */
167
- class DfTopNavDropdownMenu {
140
+ class DfTopNavNavigationItemDropdownToggle {
168
141
  constructor() {
169
- this.dropdown = inject(NgbDropdown);
170
- 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
+ });
171
152
  }
172
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownMenu, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
173
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfTopNavDropdownMenu, isStandalone: true, selector: "[dfTopNavDropdownMenu]", host: { listeners: { "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.Enter": "dropdown.onKeyDown($any($event))", "keydown.Space": "dropdown.onKeyDown($any($event))", "keydown.Tab": "dropdown.onKeyDown($any($event))", "keydown.Shift.Tab": "dropdown.onKeyDown($any($event))" }, properties: { "class.show": "dropdown.isOpen()" }, classAttribute: "dropdown-menu" }, providers: [{ provide: NgbDropdownMenu, useExisting: forwardRef(() => DfTopNavDropdownMenu) }], queries: [{ propertyName: "menuItems", predicate: NgbDropdownItem, descendants: true }], 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" }] }); }
174
158
  }
175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavDropdownMenu, decorators: [{
176
- type: Directive,
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfTopNavNavigationItemDropdownToggle, decorators: [{
160
+ type: Component,
177
161
  args: [{
178
- selector: '[dfTopNavDropdownMenu]',
179
- host: {
180
- class: 'dropdown-menu',
181
- '[class.show]': 'dropdown.isOpen()',
182
- '(keydown.ArrowUp)': 'dropdown.onKeyDown($any($event))',
183
- '(keydown.ArrowDown)': 'dropdown.onKeyDown($any($event))',
184
- '(keydown.Home)': 'dropdown.onKeyDown($any($event))',
185
- '(keydown.End)': 'dropdown.onKeyDown($any($event))',
186
- '(keydown.Enter)': 'dropdown.onKeyDown($any($event))',
187
- '(keydown.Space)': 'dropdown.onKeyDown($any($event))',
188
- '(keydown.Tab)': 'dropdown.onKeyDown($any($event))',
189
- '(keydown.Shift.Tab)': 'dropdown.onKeyDown($any($event))'
190
- },
191
- providers: [{ provide: NgbDropdownMenu, useExisting: forwardRef(() => DfTopNavDropdownMenu) }]
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
+ `
192
169
  }]
193
- }], propDecorators: { menuItems: [{
194
- type: ContentChildren,
195
- args: [NgbDropdownItem, { descendants: true }]
196
- }] } });
170
+ }], ctorParameters: () => [], propDecorators: { dropdown: [{ type: i0.Input, args: [{ isSignal: true, alias: "dfTopNavNavigationItemDropdownToggle", required: true }] }] } });
197
171
  /**
198
172
  * The TopNav navigation item component, used to display a navigation link in the TopNav which can have child navigation links.
199
173
  *
@@ -206,63 +180,60 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
206
180
  /**
207
181
  * The label of the navigation item, which will be displayed as the link text.
208
182
  */
209
- this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
183
+ this.label = input.required(/* @ts-ignore */
184
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
210
185
  /**
211
186
  * The routerLink of the navigation item, which will be used as the link target. It should be an internal route.
212
187
  */
213
- this.routerLink = input.required(...(ngDevMode ? [{ debugName: "routerLink" }] : []));
214
- this.childElements = contentChildren(DF_TOPNAV_NAVIGATION_ELEMENT, ...(ngDevMode ? [{ debugName: "childElements" }] : []));
215
- this.deepChildLinks = contentChildren(DfTopNavNavigationLink, { ...(ngDevMode ? { debugName: "deepChildLinks" } : {}), descendants: true });
216
- 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 */ []));
217
195
  this.topNav = inject(DfTopNav);
218
- 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 */ []));
219
198
  this.dropdownId = `topnav-dropdown-button-${generateId()}`;
220
199
  /**
221
200
  * Indicates if the navigation item is currently active based on the Router state of its child links.
222
201
  */
223
- 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 */ []));
224
204
  }
225
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavNavigationItem, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
226
- 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 }, 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: `
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: `
227
207
  @if (dropdownMode()) {
228
- <div ngbDropdown #dropdown="ngbDropdown">
229
- <button
230
- type="button"
231
- class="df-topnav-navigation-link"
232
- [class.df-topnav-navigation-link-active]="active()"
233
- aria-haspopup="true"
234
- [attr.aria-controls]="dropdownId"
235
- dfTopNavDropdownToggle
236
- >
237
- <span [attr.data-text]="label()">{{ label() }}</span>
238
- <span
239
- class="fal"
240
- aria-hidden="true"
241
- [class.fa-chevron-down]="!dropdown.isOpen()"
242
- [class.fa-chevron-up]="dropdown.isOpen()"
243
- ></span>
244
- </button>
245
- <div dfTopNavDropdownMenu class="dropdown-menu-right" [attr.id]="dropdownId" role="list">
246
- @for (childLink of rootChildLinks(); track childLink) {
247
- <div role="listitem">
248
- @if (childLink.href()) {
249
- <a ngbDropdownItem [attr.href]="childLink.href()" target="_blank">
250
- <span>{{ childLink.label() }}</span>
251
- </a>
252
- } @else {
253
- <a
254
- ngbDropdownItem
255
- [routerLink]="childLink.routerLink()"
256
- [class.active]="childLink.active()"
257
- [attr.aria-current]="childLink.active() ? 'page' : null"
258
- >
259
- {{ childLink.label() }}
260
- </a>
261
- }
262
- </div>
263
- }
264
- </div>
265
- </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>
266
237
  } @else {
267
238
  <a
268
239
  class="df-topnav-navigation-link"
@@ -273,50 +244,41 @@ class DfTopNavNavigationItem extends DfTopNavNavigationElement {
273
244
  <span [attr.data-text]="label()">{{ label() }}</span>
274
245
  </a>
275
246
  }
276
- `, 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: DfTopNavDropdownMenu, selector: "[dfTopNavDropdownMenu]" }, { kind: "directive", type: NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: DfTopNavDropdownToggle, selector: "[dfTopNavDropdownToggle]" }], 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 }); }
277
248
  }
278
- 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: [{
279
250
  type: Component,
280
251
  args: [{ selector: 'df-topnav-navigation-item', template: `
281
252
  @if (dropdownMode()) {
282
- <div ngbDropdown #dropdown="ngbDropdown">
283
- <button
284
- type="button"
285
- class="df-topnav-navigation-link"
286
- [class.df-topnav-navigation-link-active]="active()"
287
- aria-haspopup="true"
288
- [attr.aria-controls]="dropdownId"
289
- dfTopNavDropdownToggle
290
- >
291
- <span [attr.data-text]="label()">{{ label() }}</span>
292
- <span
293
- class="fal"
294
- aria-hidden="true"
295
- [class.fa-chevron-down]="!dropdown.isOpen()"
296
- [class.fa-chevron-up]="dropdown.isOpen()"
297
- ></span>
298
- </button>
299
- <div dfTopNavDropdownMenu class="dropdown-menu-right" [attr.id]="dropdownId" role="list">
300
- @for (childLink of rootChildLinks(); track childLink) {
301
- <div role="listitem">
302
- @if (childLink.href()) {
303
- <a ngbDropdownItem [attr.href]="childLink.href()" target="_blank">
304
- <span>{{ childLink.label() }}</span>
305
- </a>
306
- } @else {
307
- <a
308
- ngbDropdownItem
309
- [routerLink]="childLink.routerLink()"
310
- [class.active]="childLink.active()"
311
- [attr.aria-current]="childLink.active() ? 'page' : null"
312
- >
313
- {{ childLink.label() }}
314
- </a>
315
- }
316
- </div>
317
- }
318
- </div>
319
- </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>
320
282
  } @else {
321
283
  <a
322
284
  class="df-topnav-navigation-link"
@@ -327,47 +289,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
327
289
  <span [attr.data-text]="label()">{{ label() }}</span>
328
290
  </a>
329
291
  }
330
- `, changeDetection: ChangeDetectionStrategy.OnPush, host: {
292
+ `, host: {
331
293
  '[style.display]': '"contents"',
332
294
  role: 'listitem'
333
- }, imports: [RouterLink, NgbDropdown, DfTopNavDropdownMenu, 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"] }]
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"] }]
334
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 }] }] } });
335
297
 
336
298
  /**
337
- * @internal
338
- * Styles the buttons used in the TopNav.
339
- */
340
- class DfTopNavButton {
341
- constructor() {
342
- /**
343
- * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
344
- */
345
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
346
- /**
347
- * 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.
348
- */
349
- this.icon = input(false, { ...(ngDevMode ? { debugName: "icon" } : {}), transform: booleanAttribute });
350
- }
351
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
352
- 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 }); }
353
- }
354
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavButton, decorators: [{
355
- type: Component,
356
- args: [{ selector: 'button[dfTopNavButton]', host: {
357
- class: 'df-topnav-btn',
358
- '[class.df-topnav-btn-icon]': 'icon()',
359
- '[class]': "'df-topnav-btn-' + appearance()"
360
- }, 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"] }]
361
- }], propDecorators: { appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }] } });
362
-
363
- /**
364
- * @internal
365
299
  * An Injection Token for the DfTopNavQuickActionElement interface, which represents a navigation quick action in the top navigation component.
300
+ *
301
+ * @since 22.0
366
302
  */
367
303
  const DF_TOPNAV_QUICK_ACTION_ELEMENT = new InjectionToken('DF_TOPNAV_QUICK_ACTION_ELEMENT');
368
304
  /**
369
- * @internal
370
305
  * An abstract class that defines the structure of a quick action element in the top navigation component.
306
+ *
307
+ * @since 22.0
371
308
  */
372
309
  class DfTopNavQuickActionElement {
373
310
  }
@@ -379,10 +316,10 @@ class DfTopNavQuickActionElement {
379
316
  * @since 21.1
380
317
  */
381
318
  class DfTopNavQuickActionButtonContent {
382
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
383
- 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 }); }
384
321
  }
385
- 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: [{
386
323
  type: Directive,
387
324
  args: [{ selector: 'ng-template[dfTopNavQuickActionButtonContent]' }]
388
325
  }] });
@@ -393,10 +330,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
393
330
  * @since 21.1
394
331
  */
395
332
  class DfTopNavQuickActionButtonIcon {
396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButtonIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
397
- 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 }); }
398
335
  }
399
- 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: [{
400
337
  type: Directive,
401
338
  args: [{ selector: 'ng-template[dfTopNavQuickActionButtonIcon]' }]
402
339
  }] });
@@ -409,7 +346,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
409
346
  *
410
347
  * The icon can be set through the {@link DfTopNavQuickActionButton.icon} input or by using the {@link DfTopNavQuickActionButtonIcon} directive.
411
348
  *
412
- * 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}
413
350
  * @since 21.1
414
351
  */
415
352
  class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
@@ -418,27 +355,31 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
418
355
  /**
419
356
  * The appearance of the quick action button, which will determine its color. It can be either 'primary' or 'neutral'.
420
357
  */
421
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
358
+ this.appearance = input('neutral', /* @ts-ignore */
359
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
422
360
  /**
423
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.
424
362
  */
425
- this.label = input.required(...(ngDevMode ? [{ debugName: "label" }] : []));
363
+ this.label = input.required(/* @ts-ignore */
364
+ ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
426
365
  /**
427
366
  * The icon of the quick action button.
428
367
  */
429
- this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : []));
368
+ this.icon = input(/* @ts-ignore */
369
+ ...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
430
370
  /**
431
371
  * Whether the quick action button is disabled or not.
432
372
  */
433
- this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: booleanAttribute });
373
+ this.disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
434
374
  /**
435
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.
436
376
  */
437
377
  this.act = output();
438
- this.actionContent = contentChild(DfTopNavQuickActionButtonContent, { ...(ngDevMode ? { debugName: "actionContent" } : {}), read: TemplateRef });
439
- 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 });
440
380
  this.popover = viewChild.required('popover');
441
- this.isLg = toAngularSignal(lg$);
381
+ this.isLg = trackWindow('lg');
382
+ this.mainNavAppliedStyle = inject(DfTopNav)['mainNavAppliedStyle'];
442
383
  /**
443
384
  * Need to close the popover on smaller screen
444
385
  */
@@ -450,13 +391,14 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
450
391
  }
451
392
  });
452
393
  }
453
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
454
- 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: `
455
396
  <button
456
- dfTopNavButton
457
- icon
458
- type="button"
459
- [appearance]="appearance()"
397
+ dfButton
398
+ transparent
399
+ appearance="text"
400
+ [variant]="appearance()"
401
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
460
402
  [attr.aria-label]="label()"
461
403
  [ngbPopover]="actionContent()"
462
404
  placement="bottom-end"
@@ -466,22 +408,24 @@ class DfTopNavQuickActionButton extends DfTopNavQuickActionElement {
466
408
  #popover="ngbPopover"
467
409
  [disabled]="disabled()"
468
410
  (click)="act.emit()"
411
+ class="df-btn-icononly df-topnav-quick-action-btn"
469
412
  >
470
413
  <ng-template #dfTopNavQuickActionDefaultIcon>
471
- <span class="df-topnav-toggle-icon fal" [class]="icon()"></span>
414
+ <df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
472
415
  </ng-template>
473
416
  <ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
474
417
  </button>
475
- `, 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 }); }
476
419
  }
477
- 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: [{
478
421
  type: Component,
479
422
  args: [{ selector: 'df-topnav-quick-action-button', template: `
480
423
  <button
481
- dfTopNavButton
482
- icon
483
- type="button"
484
- [appearance]="appearance()"
424
+ dfButton
425
+ transparent
426
+ appearance="text"
427
+ [variant]="appearance()"
428
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
485
429
  [attr.aria-label]="label()"
486
430
  [ngbPopover]="actionContent()"
487
431
  placement="bottom-end"
@@ -491,16 +435,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
491
435
  #popover="ngbPopover"
492
436
  [disabled]="disabled()"
493
437
  (click)="act.emit()"
438
+ class="df-btn-icononly df-topnav-quick-action-btn"
494
439
  >
495
440
  <ng-template #dfTopNavQuickActionDefaultIcon>
496
- <span class="df-topnav-toggle-icon fal" [class]="icon()"></span>
441
+ <df-icon class="df-topnav-toggle-icon fal" [class]="icon()" />
497
442
  </ng-template>
498
443
  <ng-container *ngTemplateOutlet="actionIcon() || dfTopNavQuickActionDefaultIcon" />
499
444
  </button>
500
- `, 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"] }]
501
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 }] }] } });
502
447
 
503
- // 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.
504
448
  /**
505
449
  * AppContainer is a simple wrapper component that provides a consistent layout for applications using the {@link DfTopNav} component.
506
450
  *
@@ -510,24 +454,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
510
454
  * @since 21.1
511
455
  */
512
456
  class DfAppContainer {
513
- isSideItem(item) {
514
- return 'children' in item;
515
- }
516
457
  constructor() {
517
458
  this.topnav = contentChild.required(DfTopNav);
518
- this.sidenav = viewChild(DfSidenavComponent, ...(ngDevMode ? [{ debugName: "sidenav" }] : []));
519
- 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 */ []));
520
463
  this.drawerContainerActions = viewChild.required('drawerContainerActions');
521
464
  // Sync the state of the sidenav with the topnav on initialization and whenever the state of the sidenav changes
522
465
  effect(() => {
523
466
  this.topnav().navExpanded.set(!this.sidenav()?.isMinimized());
524
467
  });
525
468
  effect(() => {
526
- let sidenavMinimized = false;
527
- let sidenav = undefined;
528
469
  const topnavExpanded = this.topnav().navExpanded();
470
+ const sidenav = this.sidenav();
471
+ let sidenavMinimized = false;
529
472
  untracked(() => {
530
- sidenav = this.sidenav();
531
473
  sidenavMinimized = sidenav?.isMinimized() ?? false;
532
474
  });
533
475
  // we need this condition to make sure to not call toggleMinimize when the drawer has not rendered yet (issue with the drawer toggleMinimze)
@@ -539,133 +481,43 @@ class DfAppContainer {
539
481
  ngAfterContentInit() {
540
482
  this.topnav()['inAppContainer'].set(true);
541
483
  }
542
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfAppContainer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
543
- 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: `
544
486
  <ng-content select="df-topnav" />
545
487
  <ng-content select="df-env-banner" />
546
488
  <div class="df-app-container-content" #drawerContainerActions>
547
489
  @if (sidenavContent().length) {
548
- <df-sidenav [resizable]="false" [searchable]="false" class="df-sidenav-light-sky">
549
- @for (element1 of sidenavContent(); track element1.label()) {
550
- @if (isSideItem(element1)) {
551
- <df-sidenav-item [label]="element1.label()">
552
- @for (element2 of element1.children(); track element2.label()) {
553
- @if (isSideItem(element2)) {
554
- <df-sidenav-item [label]="element2.label()">
555
- @for (element3 of element2.children(); track element3.label()) {
556
- @if (isSideItem(element3)) {
557
- <df-sidenav-item [label]="element3.label()">
558
- @for (element4 of element3.children(); track element4.label()) {
559
- @if (!isSideItem(element4)) {
560
- <df-sidenav-link
561
- [label]="element4.label()"
562
- [linkPath]="element4.href()"
563
- [active]="element4.external() ? false : undefined"
564
- [routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
565
- />
566
- }
567
- }
568
- </df-sidenav-item>
569
- } @else {
570
- <df-sidenav-link
571
- [label]="element3.label()"
572
- [linkPath]="element3.href()"
573
- [active]="element3.external() ? false : undefined"
574
- [routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
575
- />
576
- }
577
- }
578
- </df-sidenav-item>
579
- } @else {
580
- <df-sidenav-link
581
- [label]="element2.label()"
582
- [linkPath]="element2.href()"
583
- [active]="element2.external() ? false : undefined"
584
- [routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
585
- />
586
- }
587
- }
588
- </df-sidenav-item>
589
- } @else {
590
- <df-sidenav-link
591
- [label]="element1.label()"
592
- [linkPath]="element1.href()"
593
- [active]="element1.external() ? false : undefined"
594
- [routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
595
- />
596
- }
597
- }
598
- </df-sidenav>
490
+ <df-sidenav-input
491
+ [className]="'df-sidenav-light-sky'"
492
+ [items]="sidenavContent()"
493
+ [searchable]="false"
494
+ [resizable]="false"
495
+ />
599
496
  }
600
497
  <ng-content select="main" />
601
498
  </div>
602
- `, 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", "active"] }], 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 }); }
603
500
  }
604
- 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: [{
605
502
  type: Component,
606
503
  args: [{ selector: 'df-app-container', template: `
607
504
  <ng-content select="df-topnav" />
608
505
  <ng-content select="df-env-banner" />
609
506
  <div class="df-app-container-content" #drawerContainerActions>
610
507
  @if (sidenavContent().length) {
611
- <df-sidenav [resizable]="false" [searchable]="false" class="df-sidenav-light-sky">
612
- @for (element1 of sidenavContent(); track element1.label()) {
613
- @if (isSideItem(element1)) {
614
- <df-sidenav-item [label]="element1.label()">
615
- @for (element2 of element1.children(); track element2.label()) {
616
- @if (isSideItem(element2)) {
617
- <df-sidenav-item [label]="element2.label()">
618
- @for (element3 of element2.children(); track element3.label()) {
619
- @if (isSideItem(element3)) {
620
- <df-sidenav-item [label]="element3.label()">
621
- @for (element4 of element3.children(); track element4.label()) {
622
- @if (!isSideItem(element4)) {
623
- <df-sidenav-link
624
- [label]="element4.label()"
625
- [linkPath]="element4.href()"
626
- [active]="element4.external() ? false : undefined"
627
- [routerLinkActiveOptions]="element4.routerLinkActiveOptions()"
628
- />
629
- }
630
- }
631
- </df-sidenav-item>
632
- } @else {
633
- <df-sidenav-link
634
- [label]="element3.label()"
635
- [linkPath]="element3.href()"
636
- [active]="element3.external() ? false : undefined"
637
- [routerLinkActiveOptions]="element3.routerLinkActiveOptions()"
638
- />
639
- }
640
- }
641
- </df-sidenav-item>
642
- } @else {
643
- <df-sidenav-link
644
- [label]="element2.label()"
645
- [linkPath]="element2.href()"
646
- [active]="element2.external() ? false : undefined"
647
- [routerLinkActiveOptions]="element2.routerLinkActiveOptions()"
648
- />
649
- }
650
- }
651
- </df-sidenav-item>
652
- } @else {
653
- <df-sidenav-link
654
- [label]="element1.label()"
655
- [linkPath]="element1.href()"
656
- [active]="element1.external() ? false : undefined"
657
- [routerLinkActiveOptions]="element1.routerLinkActiveOptions()"
658
- />
659
- }
660
- }
661
- </df-sidenav>
508
+ <df-sidenav-input
509
+ [className]="'df-sidenav-light-sky'"
510
+ [items]="sidenavContent()"
511
+ [searchable]="false"
512
+ [resizable]="false"
513
+ />
662
514
  }
663
515
  <ng-content select="main" />
664
516
  </div>
665
517
  `, host: {
666
518
  class: 'df-app-container'
667
- }, 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"] }]
668
- }], 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 }] }] } });
669
521
 
670
522
  /* eslint-enable @typescript-eslint/no-unused-vars */
671
523
  /**
@@ -676,10 +528,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
676
528
  * @since 21.1
677
529
  */
678
530
  class DfTopNavQuickActionInTopNav {
679
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInTopNav, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
680
- 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 }); }
681
533
  }
682
- 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: [{
683
535
  type: Directive,
684
536
  args: [{ selector: 'ng-template[dfTopNavQuickActionInTopNav]' }]
685
537
  }] });
@@ -691,10 +543,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
691
543
  * @since 21.1
692
544
  */
693
545
  class DfTopNavQuickActionInDrawer {
694
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionInDrawer, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
695
- 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 }); }
696
548
  }
697
- 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: [{
698
550
  type: Directive,
699
551
  args: [{ selector: 'ng-template[dfTopNavQuickActionInDrawer]' }]
700
552
  }] });
@@ -706,25 +558,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
706
558
  * It should be used inside a {@link DfTopNavQuickActions} component.
707
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.
708
560
  *
709
- * 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}
710
562
  * @since 21.1
711
563
  */
712
564
  class DfTopNavQuickAction extends DfTopNavQuickActionElement {
713
565
  constructor() {
714
566
  super(...arguments);
715
567
  this.content = contentChild.required(DfTopNavQuickActionInTopNav, { read: TemplateRef });
716
- 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'];
717
570
  }
718
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickAction, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
719
- 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"] }] }); }
720
573
  }
721
- 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: [{
722
575
  type: Component,
723
576
  args: [{
724
577
  selector: 'df-topnav-quick-action',
725
578
  template: ` <ng-container *ngTemplateOutlet="content()" /> `,
726
579
  imports: [NgTemplateOutlet],
727
- changeDetection: ChangeDetectionStrategy.OnPush,
728
580
  providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickAction }]
729
581
  }]
730
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 }] }] } });
@@ -737,10 +589,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
737
589
  * @since 21.1
738
590
  */
739
591
  class DfTopNavQuickActionSearchInput {
740
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearchInput, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
741
- 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 }); }
742
594
  }
743
- 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: [{
744
596
  type: Component,
745
597
  args: [{
746
598
  // eslint-disable-next-line @angular-eslint/component-selector
@@ -749,7 +601,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
749
601
  type: 'search',
750
602
  class: 'df-topnav-quick-action-search-input form-control text-bg-neutral-alt df-input-withicon'
751
603
  },
752
- changeDetection: ChangeDetectionStrategy.OnPush,
753
604
  template: ``
754
605
  }]
755
606
  }] });
@@ -758,7 +609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
758
609
  *
759
610
  * It should be used inside a {@link DfTopNavQuickActions} component and contain a ng-template with an input {@link DfTopNavQuickActionSearchInput}.
760
611
  *
761
- * 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}
762
613
  * @since 21.1
763
614
  */
764
615
  class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
@@ -771,26 +622,27 @@ class DfTopNavQuickActionSearch extends DfTopNavQuickActionElement {
771
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.
772
623
  * See [ARIA guidelines](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/search_role) for more information.
773
624
  */
774
- this.ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : []));
625
+ this.ariaLabel = input(/* @ts-ignore */
626
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
775
627
  }
776
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionSearch, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
777
- 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: `
778
630
  <div class="df-topnav-quick-action-search-container input-group">
779
631
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
780
- <span class="input-group-text fa-light fa-search"></span>
632
+ <df-icon class="input-group-text fa-light fa-search" />
781
633
  </div>
782
634
  <ng-container *ngTemplateOutlet="templateRef()" />
783
635
  </div>
784
- `, 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" }] }); }
785
637
  }
786
- 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: [{
787
639
  type: Component,
788
640
  args: [{
789
641
  selector: 'df-topnav-quick-action-search',
790
642
  template: `
791
643
  <div class="df-topnav-quick-action-search-container input-group">
792
644
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
793
- <span class="input-group-text fa-light fa-search"></span>
645
+ <df-icon class="input-group-text fa-light fa-search" />
794
646
  </div>
795
647
  <ng-container *ngTemplateOutlet="templateRef()" />
796
648
  </div>
@@ -799,8 +651,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
799
651
  role: 'search',
800
652
  '[attr.aria-label]': 'ariaLabel()'
801
653
  },
802
- imports: [NgTemplateOutlet],
803
- changeDetection: ChangeDetectionStrategy.OnPush,
654
+ imports: [NgTemplateOutlet, DfIcon],
804
655
  providers: [{ provide: DF_TOPNAV_QUICK_ACTION_ELEMENT, useExisting: DfTopNavQuickActionSearch }]
805
656
  }]
806
657
  }], propDecorators: { templateRef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => TemplateRef), { isSignal: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
@@ -808,7 +659,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
808
659
  /**
809
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.
810
661
  *
811
- * 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}
812
663
  * @since 21.1
813
664
  */
814
665
  class DfTopNavQuickActions {
@@ -827,33 +678,51 @@ class DfTopNavQuickActions {
827
678
  actionBtn.act.emit();
828
679
  }
829
680
  }
681
+ actionLabelToId(actionBtn) {
682
+ return 'df-drawer-button-' + actionBtn.label().toLocaleLowerCase().replace(/ /g, '-');
683
+ }
830
684
  constructor() {
831
685
  /**
832
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.
833
687
  */
834
- this.reversedVertical = input(true, ...(ngDevMode ? [{ debugName: "reversedVertical" }] : []));
688
+ this.reversedVertical = input(true, /* @ts-ignore */
689
+ ...(ngDevMode ? [{ debugName: "reversedVertical" }] : /* istanbul ignore next */ []));
835
690
  /**
836
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.
837
692
  */
838
- this.tabletDrawerContainer = input(...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : []));
693
+ this.tabletDrawerContainer = input(/* @ts-ignore */
694
+ ...(ngDevMode ? [undefined, { debugName: "tabletDrawerContainer" }] : /* istanbul ignore next */ []));
839
695
  this.appContainer = inject(DfAppContainer, { optional: true });
840
- this._actionElements = contentChildren(DF_TOPNAV_QUICK_ACTION_ELEMENT, ...(ngDevMode ? [{ debugName: "_actionElements" }] : []));
841
- 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 });
842
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 */ []));
843
704
  // Responsive signals
844
- this.isMd = toAngularSignal(md$);
845
- this.isLg = toAngularSignal(lg$);
705
+ this.isMd = trackWindow('md');
706
+ this.isLg = trackWindow('lg');
846
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
847
708
  this.drawerContainer = computed(() => this.isMd()
848
709
  ? (this.tabletDrawerContainer() ??
849
710
  this.appContainer?.['drawerContainerActions']?.()?.nativeElement ??
850
711
  this.document.body)
851
- : this.document.body, ...(ngDevMode ? [{ debugName: "drawerContainer" }] : []));
852
- this.actionElements = computed(() => (this.reversedVertical() && !this.isLg() ? [...this._actionElements()].reverse() : this._actionElements()).filter((el) => !(el instanceof DfTopNavQuickActionSearch)), ...(ngDevMode ? [{ debugName: "actionElements" }] : []));
853
- this.searchElement = computed(() => this._actionElements().find((el) => el instanceof DfTopNavQuickActionSearch), ...(ngDevMode ? [{ debugName: "searchElement" }] : []));
854
- 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 */ []));
855
720
  // the selected quick action in the
856
- 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'];
857
726
  // resets the menu state when resizing to large screens, as the drawer will be closed and the selected button will be hidden
858
727
  effect(() => {
859
728
  if (this.isLg()) {
@@ -865,9 +734,19 @@ class DfTopNavQuickActions {
865
734
  this.selectedQuickAction.set(undefined);
866
735
  }
867
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
+ });
868
747
  }
869
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActions, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
870
- 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>
871
750
  <ng-content />
872
751
  </ng-template>
873
752
  <div class="df-topnav-quick-actions">
@@ -875,18 +754,18 @@ class DfTopNavQuickActions {
875
754
  <ng-container *ngTemplateOutlet="topnavQuickActions" />
876
755
  } @else {
877
756
  <button
878
- dfTopNavButton
879
- icon
757
+ dfIconButton
758
+ appearance="text"
759
+ variant="neutral"
760
+ transparent
761
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
880
762
  aria-label="Toggle quick actions menu"
881
763
  i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
882
764
  (click)="menuExpanded.set(!menuExpanded())"
883
- >
884
- <span
885
- class="fal df-topnav-toggle-icon"
886
- [class.fa-xmark]="menuExpanded()"
887
- [class.fa-ellipsis-vertical]="!menuExpanded()"
888
- ></span>
889
- </button>
765
+ class="fal"
766
+ [class.fa-xmark]="menuExpanded()"
767
+ [class.fa-ellipsis-vertical]="!menuExpanded()"
768
+ ></button>
890
769
  <df-drawer
891
770
  class="df-topnav-drawer-host"
892
771
  position="inline-end"
@@ -902,8 +781,13 @@ class DfTopNavQuickActions {
902
781
  >
903
782
  @let selected = selectedQuickAction();
904
783
  @if (selected) {
905
- <button type="button" class="df-topnav-drawer-button" (click)="selectedQuickAction.set(undefined)">
906
- <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" />
907
791
  <span>{{ selected.label() }}</span>
908
792
  </button>
909
793
  <hr class="df-topnav-drawer-divider" />
@@ -918,7 +802,7 @@ class DfTopNavQuickActions {
918
802
  [attr.aria-label]="searchElement()!.ariaLabel()"
919
803
  >
920
804
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
921
- <span class="input-group-text fa-light fa-search"></span>
805
+ <df-icon class="input-group-text fa-light fa-search" />
922
806
  </div>
923
807
  <ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
924
808
  </div>
@@ -930,17 +814,18 @@ class DfTopNavQuickActions {
930
814
  class="df-topnav-drawer-button"
931
815
  (click)="clickQuickAction(actionElement)"
932
816
  [disabled]="actionElement.disabled()"
817
+ #drawerButton
818
+ [id]="actionLabelToId(actionElement)"
933
819
  >
934
820
  <ng-template #dfQuickActionDefaultIcon>
935
- <span class="fal" [class]="actionElement.icon()" aria-hidden="true"></span>
821
+ <df-icon class="fal" [class]="actionElement.icon()" />
936
822
  </ng-template>
937
823
  <ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
938
824
  <span>{{ actionElement.label() }}</span>
939
825
  @if (actionElement['actionContent']()) {
940
- <span
826
+ <df-icon
941
827
  class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
942
- aria-hidden="true"
943
- ></span>
828
+ />
944
829
  }
945
830
  </button>
946
831
  } @else {
@@ -951,9 +836,9 @@ class DfTopNavQuickActions {
951
836
  }
952
837
  </df-drawer>
953
838
  }
954
- </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 }); }
955
840
  }
956
- 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: [{
957
842
  type: Component,
958
843
  args: [{ selector: 'df-topnav-quick-actions', host: {
959
844
  '[style.display]': "'contents'",
@@ -966,18 +851,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
966
851
  <ng-container *ngTemplateOutlet="topnavQuickActions" />
967
852
  } @else {
968
853
  <button
969
- dfTopNavButton
970
- icon
854
+ dfIconButton
855
+ appearance="text"
856
+ variant="neutral"
857
+ transparent
858
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
971
859
  aria-label="Toggle quick actions menu"
972
860
  i18n-aria-label="@@df.topnav.toggle-quick-actions.ariaLabel"
973
861
  (click)="menuExpanded.set(!menuExpanded())"
974
- >
975
- <span
976
- class="fal df-topnav-toggle-icon"
977
- [class.fa-xmark]="menuExpanded()"
978
- [class.fa-ellipsis-vertical]="!menuExpanded()"
979
- ></span>
980
- </button>
862
+ class="fal"
863
+ [class.fa-xmark]="menuExpanded()"
864
+ [class.fa-ellipsis-vertical]="!menuExpanded()"
865
+ ></button>
981
866
  <df-drawer
982
867
  class="df-topnav-drawer-host"
983
868
  position="inline-end"
@@ -993,8 +878,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
993
878
  >
994
879
  @let selected = selectedQuickAction();
995
880
  @if (selected) {
996
- <button type="button" class="df-topnav-drawer-button" (click)="selectedQuickAction.set(undefined)">
997
- <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" />
998
888
  <span>{{ selected.label() }}</span>
999
889
  </button>
1000
890
  <hr class="df-topnav-drawer-divider" />
@@ -1009,7 +899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1009
899
  [attr.aria-label]="searchElement()!.ariaLabel()"
1010
900
  >
1011
901
  <div class="input-group-prepend text-bg-neutral-alt" aria-hidden="true">
1012
- <span class="input-group-text fa-light fa-search"></span>
902
+ <df-icon class="input-group-text fa-light fa-search" />
1013
903
  </div>
1014
904
  <ng-container *ngTemplateOutlet="searchElement()!['templateRef']()" />
1015
905
  </div>
@@ -1021,17 +911,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1021
911
  class="df-topnav-drawer-button"
1022
912
  (click)="clickQuickAction(actionElement)"
1023
913
  [disabled]="actionElement.disabled()"
914
+ #drawerButton
915
+ [id]="actionLabelToId(actionElement)"
1024
916
  >
1025
917
  <ng-template #dfQuickActionDefaultIcon>
1026
- <span class="fal" [class]="actionElement.icon()" aria-hidden="true"></span>
918
+ <df-icon class="fal" [class]="actionElement.icon()" />
1027
919
  </ng-template>
1028
920
  <ng-container *ngTemplateOutlet="actionElement['actionIcon']() || dfQuickActionDefaultIcon" />
1029
921
  <span>{{ actionElement.label() }}</span>
1030
922
  @if (actionElement['actionContent']()) {
1031
- <span
923
+ <df-icon
1032
924
  class="fal fa-chevron-right df-topnav-drawer-button-icon df-topnav-drawer-button-icon-end"
1033
- aria-hidden="true"
1034
- ></span>
925
+ />
1035
926
  }
1036
927
  </button>
1037
928
  } @else {
@@ -1042,8 +933,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1042
933
  }
1043
934
  </df-drawer>
1044
935
  }
1045
- </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"] }]
1046
- }], 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 }] }] } });
1047
938
 
1048
939
  /**
1049
940
  * TopNav (Top Navigation Bar) provides consistent access to product-level navigation and global actions across Amadeus applications.
@@ -1057,39 +948,43 @@ class DfTopNav {
1057
948
  constructor() {
1058
949
  /**
1059
950
  * The style of the TopNav main nav, which determines the applied styles. Can be either "basic" or "mirror".
1060
- * When not provided, the applied mode will be determined based on the number of navigation links.
1061
- */
1062
- this.mainNavStyle = input(...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : []));
1063
- /**
1064
- * The style of the TopNav secondary nav, which determines the applied styles. Can be either "basic" or "mirror".
1065
- * When not provided, the applied mode will be opposite to the main nav style.
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.
1066
952
  */
1067
- this.secondaryNavStyle = input(...(ngDevMode ? [undefined, { debugName: "secondaryNavStyle" }] : []));
953
+ this.mainNavStyle = input(/* @ts-ignore */
954
+ ...(ngDevMode ? [undefined, { debugName: "mainNavStyle" }] : /* istanbul ignore next */ []));
1068
955
  /**
1069
956
  * The mode of the TopNav, which determines the behavior of the navigation. Can be either "sidenav" or "dropdown".
1070
957
  */
1071
- this.mode = input('sidenav', ...(ngDevMode ? [{ debugName: "mode" }] : []));
958
+ this.mode = input('sidenav', /* @ts-ignore */
959
+ ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
1072
960
  /**
1073
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.
1074
962
  */
1075
- this.navExpanded = model(false, ...(ngDevMode ? [{ debugName: "navExpanded" }] : []));
963
+ this.navExpanded = model(false, /* @ts-ignore */
964
+ ...(ngDevMode ? [{ debugName: "navExpanded" }] : /* istanbul ignore next */ []));
1076
965
  /**
1077
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.
1078
967
  */
1079
- this.superheader = input(...(ngDevMode ? [undefined, { debugName: "superheader" }] : []));
968
+ this.superheader = input(/* @ts-ignore */
969
+ ...(ngDevMode ? [undefined, { debugName: "superheader" }] : /* istanbul ignore next */ []));
1080
970
  /**
1081
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.
1082
972
  * When not provided, the toggle button will be shown automatically when there are navigation links and the screen size is smaller than large.
1083
973
  */
1084
- this.showToggle = input(false, { ...(ngDevMode ? { debugName: "showToggle" } : {}), transform: booleanAttribute });
1085
- this.navigationContainer = contentChild(DfTopNavNavigation, ...(ngDevMode ? [{ debugName: "navigationContainer" }] : []));
1086
- this.navElements = computed(() => this.navigationContainer()?.['childrenElements']?.() ?? [], ...(ngDevMode ? [{ debugName: "navElements" }] : []));
1087
- this.navActions = contentChild(DfTopNavQuickActions, ...(ngDevMode ? [{ debugName: "navActions" }] : []));
1088
- 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 */ []));
1089
983
  /**
1090
984
  * Signal that indicates when the links need to be displayed in the topnav instead of the navbar.
1091
985
  */
1092
- 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 */ []));
1093
988
  /**
1094
989
  * The content of the sidenav, which is derived from the TopNav navigation elements.
1095
990
  */
@@ -1121,27 +1016,36 @@ class DfTopNav {
1121
1016
  const mapNavElementToSideNavItem = (el) => {
1122
1017
  if (el instanceof DfTopNavNavigationLink) {
1123
1018
  return {
1124
- label: el.label,
1125
- href: el['resolvedLink'],
1126
- external: el['externalLink'],
1127
- routerLinkActiveOptions: el.routerLinkActiveOptions
1019
+ label: el.label(),
1020
+ linkPath: el['resolvedLink'](),
1021
+ active: el['externalLink']() ? false : undefined,
1022
+ routerLinkActiveOptions: el.routerLinkActiveOptions()
1128
1023
  };
1129
1024
  }
1130
1025
  {
1131
1026
  return {
1132
- label: el.label,
1133
- children: computed(() => (el['childElements']() ?? []).map(mapNavElementToSideNavItem))
1027
+ label: el.label(),
1028
+ children: (el['childElements']() ?? []).map(mapNavElementToSideNavItem)
1134
1029
  };
1135
1030
  }
1136
1031
  };
1137
1032
  return navElements.map(mapNavElementToSideNavItem);
1138
- }, ...(ngDevMode ? [{ debugName: "sidenavContent" }] : []));
1033
+ }, /* @ts-ignore */
1034
+ ...(ngDevMode ? [{ debugName: "sidenavContent" }] : /* istanbul ignore next */ []));
1139
1035
  // Responsive signals
1140
- this.isLg = toAngularSignal(lg$);
1141
- this.isXl = toAngularSignal(xl$);
1142
- this.appliedSuperheader = computed(() => this.superheader() ?? this.navElements().length > 5, ...(ngDevMode ? [{ debugName: "appliedSuperheader" }] : []));
1143
- this.mainNavAppliedStyle = computed(() => this.mainNavStyle() ?? (this.navElements().length > 0 && !this.appliedSuperheader() ? 'mirror' : 'basic'), ...(ngDevMode ? [{ debugName: "mainNavAppliedStyle" }] : []));
1144
- 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 */ []));
1145
1049
  // The drawer and sidenav should never be opened together. Those two effects ensure that.
1146
1050
  effect(() => {
1147
1051
  if (this.navExpanded()) {
@@ -1171,8 +1075,8 @@ class DfTopNav {
1171
1075
  });
1172
1076
  }
1173
1077
  }
1174
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNav, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1175
- 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: `
1176
1080
  <ng-template #navContent>
1177
1081
  <ng-content select="df-topnav-navigation" />
1178
1082
  </ng-template>
@@ -1187,19 +1091,19 @@ class DfTopNav {
1187
1091
  >
1188
1092
  @if (showToggle() || (sidenavContent().length && !isLg())) {
1189
1093
  <button
1190
- dfTopNavButton
1191
- icon
1094
+ dfIconButton
1095
+ appearance="text"
1096
+ variant="neutral"
1097
+ transparent
1098
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1192
1099
  aria-label="Toggle navigation menu"
1193
1100
  i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
1194
1101
  (click)="navExpanded.set(!navExpanded())"
1195
1102
  aria-haspopup="dialog"
1196
- >
1197
- <span
1198
- class="fal df-topnav-toggle-icon"
1199
- [class.fa-xmark]="navExpanded()"
1200
- [class.fa-bars]="!navExpanded()"
1201
- ></span>
1202
- </button>
1103
+ class="fal df-topnav-toggle-button"
1104
+ [class.fa-xmark]="navExpanded()"
1105
+ [class.fa-bars]="!navExpanded()"
1106
+ ></button>
1203
1107
  }
1204
1108
  <ng-content select="df-topnav-brand" />
1205
1109
  @if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
@@ -1210,8 +1114,8 @@ class DfTopNav {
1210
1114
  @if (appliedSuperheader() && (!inAppContainer() || isLg())) {
1211
1115
  <nav
1212
1116
  class="df-topnav-nav"
1213
- [class.df-topnav-nav-basic]="secondaryNavAppliedStyle() === 'basic'"
1214
- [class.df-topnav-nav-mirror]="secondaryNavAppliedStyle() === 'mirror'"
1117
+ [class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
1118
+ [class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
1215
1119
  aria-label="Secondary"
1216
1120
  i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
1217
1121
  >
@@ -1219,9 +1123,9 @@ class DfTopNav {
1219
1123
  </nav>
1220
1124
  }
1221
1125
  </header>
1222
- `, 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;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(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 }); }
1223
1127
  }
1224
- 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: [{
1225
1129
  type: Component,
1226
1130
  args: [{ selector: 'df-topnav', template: `
1227
1131
  <ng-template #navContent>
@@ -1238,19 +1142,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1238
1142
  >
1239
1143
  @if (showToggle() || (sidenavContent().length && !isLg())) {
1240
1144
  <button
1241
- dfTopNavButton
1242
- icon
1145
+ dfIconButton
1146
+ appearance="text"
1147
+ variant="neutral"
1148
+ transparent
1149
+ [mirror]="mainNavAppliedStyle() === 'mirror'"
1243
1150
  aria-label="Toggle navigation menu"
1244
1151
  i18n-aria-label="@@df.topnav.toggle-sidenav.ariaLabel"
1245
1152
  (click)="navExpanded.set(!navExpanded())"
1246
1153
  aria-haspopup="dialog"
1247
- >
1248
- <span
1249
- class="fal df-topnav-toggle-icon"
1250
- [class.fa-xmark]="navExpanded()"
1251
- [class.fa-bars]="!navExpanded()"
1252
- ></span>
1253
- </button>
1154
+ class="fal df-topnav-toggle-button"
1155
+ [class.fa-xmark]="navExpanded()"
1156
+ [class.fa-bars]="!navExpanded()"
1157
+ ></button>
1254
1158
  }
1255
1159
  <ng-content select="df-topnav-brand" />
1256
1160
  @if (!appliedSuperheader() && (!inAppContainer() || isXl())) {
@@ -1261,8 +1165,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1261
1165
  @if (appliedSuperheader() && (!inAppContainer() || isLg())) {
1262
1166
  <nav
1263
1167
  class="df-topnav-nav"
1264
- [class.df-topnav-nav-basic]="secondaryNavAppliedStyle() === 'basic'"
1265
- [class.df-topnav-nav-mirror]="secondaryNavAppliedStyle() === 'mirror'"
1168
+ [class.df-topnav-nav-basic]="mainNavAppliedStyle() === 'mirror'"
1169
+ [class.df-topnav-nav-mirror]="mainNavAppliedStyle() === 'basic'"
1266
1170
  aria-label="Secondary"
1267
1171
  i18n-aria-label="@@df.topnav.secondary-nav.ariaLabel"
1268
1172
  >
@@ -1270,10 +1174,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1270
1174
  </nav>
1271
1175
  }
1272
1176
  </header>
1273
- `, changeDetection: ChangeDetectionStrategy.OnPush, imports: [DfTopNavButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
1177
+ `, imports: [DfIconButton, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, host: {
1274
1178
  class: 'df-topnav'
1275
- }, 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;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(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"] }]
1276
- }], 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 }] }] } });
1277
1181
 
1278
1182
  /**
1279
1183
  * A directive to mark the company template in the {@link DfTopNavBrand} brand component.
@@ -1282,10 +1186,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1282
1186
  * @since 21.1
1283
1187
  */
1284
1188
  class DfTopNavBrandLinkContent {
1285
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrandLinkContent, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1286
- 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 }); }
1287
1191
  }
1288
- 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: [{
1289
1193
  type: Directive,
1290
1194
  args: [{
1291
1195
  selector: 'ng-template[dfTopNavBrandLinkContent]'
@@ -1294,7 +1198,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1294
1198
  /**
1295
1199
  * The TopNav brand component, used to display the company and product information.
1296
1200
  *
1297
- * 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}
1298
1202
  * @since 21.1
1299
1203
  */
1300
1204
  class DfTopNavBrand {
@@ -1302,24 +1206,27 @@ class DfTopNavBrand {
1302
1206
  /**
1303
1207
  * The URL to navigate to when the brand is clicked. Defaults to "/".
1304
1208
  */
1305
- this.href = input('/', ...(ngDevMode ? [{ debugName: "href" }] : []));
1209
+ this.href = input('/', /* @ts-ignore */
1210
+ ...(ngDevMode ? [{ debugName: "href" }] : /* istanbul ignore next */ []));
1306
1211
  /**
1307
1212
  * The product.
1308
1213
  */
1309
- this.product = input(...(ngDevMode ? [undefined, { debugName: "product" }] : []));
1214
+ this.product = input(/* @ts-ignore */
1215
+ ...(ngDevMode ? [undefined, { debugName: "product" }] : /* istanbul ignore next */ []));
1310
1216
  /**
1311
1217
  * The module.
1312
1218
  */
1313
- this.module = input(...(ngDevMode ? [undefined, { debugName: "module" }] : []));
1219
+ this.module = input(/* @ts-ignore */
1220
+ ...(ngDevMode ? [undefined, { debugName: "module" }] : /* istanbul ignore next */ []));
1314
1221
  /**
1315
1222
  * Whether to display the Amadeus logo as a vector graphic instead of text.
1316
1223
  */
1317
- this.amaudeusLogoVector = input(false, { ...(ngDevMode ? { debugName: "amaudeusLogoVector" } : {}), transform: booleanAttribute });
1318
- this.brandLinkContent = contentChild(DfTopNavBrandLinkContent, { ...(ngDevMode ? { debugName: "brandLinkContent" } : {}), read: TemplateRef });
1319
- 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');
1320
1227
  }
1321
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavBrand, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1322
- 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: `
1323
1230
  <div class="df-topnav-brand">
1324
1231
  <a class="df-topnav-brand-link" [routerLink]="href()">
1325
1232
  <ng-template #defaultLink>
@@ -1390,9 +1297,9 @@ class DfTopNavBrand {
1390
1297
  <span class="df-topnav-brand-module">{{ module() }}</span>
1391
1298
  }
1392
1299
  </div>
1393
- `, 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 }); }
1394
1301
  }
1395
- 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: [{
1396
1303
  type: Component,
1397
1304
  args: [{ selector: 'df-topnav-brand', template: `
1398
1305
  <div class="df-topnav-brand">
@@ -1465,9 +1372,56 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
1465
1372
  <span class="df-topnav-brand-module">{{ module() }}</span>
1466
1373
  }
1467
1374
  </div>
1468
- `, 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"] }]
1469
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 }] }] } });
1470
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 }] }] } });
1471
1425
  /**
1472
1426
  * DfTopNavQuickActionThemePicker is a topnav quick action dropdown component that allows users to select a theme mode for the application.
1473
1427
  *
@@ -1483,133 +1437,179 @@ class DfTopNavQuickActionThemePicker extends DfTopNavQuickAction {
1483
1437
  *
1484
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.
1485
1439
  */
1486
- this.themeOptions = input.required(...(ngDevMode ? [{ debugName: "themeOptions" }] : []));
1440
+ this.themeOptions = input.required(/* @ts-ignore */
1441
+ ...(ngDevMode ? [{ debugName: "themeOptions" }] : /* istanbul ignore next */ []));
1487
1442
  /**
1488
1443
  * The appearance of the TopNav button, which will determine its color. It can be either 'primary' or 'neutral'.
1489
1444
  */
1490
- this.appearance = input('neutral', ...(ngDevMode ? [{ debugName: "appearance" }] : []));
1445
+ this.appearance = input('neutral', /* @ts-ignore */
1446
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
1491
1447
  this.mapThemeToIcon = computed(() => {
1492
1448
  const map = new Map();
1493
1449
  for (const option of this.themeOptions()) {
1494
1450
  map.set(option.themeMode, option.icon);
1495
1451
  }
1496
1452
  return map;
1497
- }, ...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : []));
1498
- this.toggleId = `df-topnav-dropdown-toggle-${generateId()}`;
1453
+ }, /* @ts-ignore */
1454
+ ...(ngDevMode ? [{ debugName: "mapThemeToIcon" }] : /* istanbul ignore next */ []));
1499
1455
  this.content = viewChild.required('themePickerContent');
1456
+ this.drawerContent = viewChild('themePickerDrawerContent', /* @ts-ignore */
1457
+ ...(ngDevMode ? [{ debugName: "drawerContent" }] : /* istanbul ignore next */ []));
1500
1458
  }
1501
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfTopNavQuickActionThemePicker, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
1502
- 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: `
1503
1461
  <ng-template #themePickerContent>
1504
- <div ngbDropdown class="d-flex" #dropdown="ngbDropdown">
1505
- <button
1506
- type="button"
1507
- aria-label="Choose theme"
1508
- i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1509
- class="w-100 w-lg-auto"
1510
- dfTopNavButton
1511
- [attr.id]="toggleId"
1512
- ngbDropdownToggle
1513
- >
1514
- <span aria-hidden="true" class="fas {{ mapThemeToIcon().get(themeService.selected()) }}"></span>
1515
- <span class="me-auto d-lg-none">
1516
- {{ themeService.selected() | titlecase }}
1517
- </span>
1518
- </button>
1519
- <div
1520
- ngbDropdownMenu
1521
- [attr.aria-labelledby]="toggleId"
1522
- class="dropdown-menu-end df-topnav-quick-action-theme-picker-dropdown"
1523
- >
1524
- @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1525
- <button
1526
- type="button"
1527
- ngbDropdownItem
1528
- class="dropdown-item gap-3 d-flex"
1529
- [class.active]="themeOption.themeMode === themeService.selected()"
1530
- (click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
1531
- >
1532
- <span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
1533
- {{ themeOption.themeMode | titlecase }}
1534
- </button>
1535
- }
1536
- </div>
1537
- </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>
1538
1487
  </ng-template>
1539
1488
  <ng-container *ngTemplateOutlet="themePickerContent" />
1540
- `, 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 }); }
1541
1517
  }
1542
- 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: [{
1543
1519
  type: Component,
1544
- args: [{ selector: 'df-topnav-quick-action-theme-picker', template: `
1520
+ args: [{
1521
+ selector: 'df-topnav-quick-action-theme-picker',
1522
+ template: `
1545
1523
  <ng-template #themePickerContent>
1546
- <div ngbDropdown class="d-flex" #dropdown="ngbDropdown">
1547
- <button
1548
- type="button"
1549
- aria-label="Choose theme"
1550
- i18n-aria-label="@@df.themePicker.dropdownToggle.ariaLabel"
1551
- class="w-100 w-lg-auto"
1552
- dfTopNavButton
1553
- [attr.id]="toggleId"
1554
- ngbDropdownToggle
1555
- >
1556
- <span aria-hidden="true" class="fas {{ mapThemeToIcon().get(themeService.selected()) }}"></span>
1557
- <span class="me-auto d-lg-none">
1558
- {{ themeService.selected() | titlecase }}
1559
- </span>
1560
- </button>
1561
- <div
1562
- ngbDropdownMenu
1563
- [attr.aria-labelledby]="toggleId"
1564
- class="dropdown-menu-end df-topnav-quick-action-theme-picker-dropdown"
1565
- >
1566
- @for (themeOption of themeOptions(); track themeOption; let id = $index) {
1567
- <button
1568
- type="button"
1569
- ngbDropdownItem
1570
- class="dropdown-item gap-3 d-flex"
1571
- [class.active]="themeOption.themeMode === themeService.selected()"
1572
- (click)="dropdown.close(); themeService.setTheme(themeOption.themeMode)"
1573
- >
1574
- <span class="fas {{ mapThemeToIcon().get(themeOption.themeMode) }}" aria-hidden="true"></span>
1575
- {{ themeOption.themeMode | titlecase }}
1576
- </button>
1577
- }
1578
- </div>
1579
- </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>
1580
1549
  </ng-template>
1581
1550
  <ng-container *ngTemplateOutlet="themePickerContent" />
1582
- `, imports: [
1583
- NgbDropdown,
1584
- NgbDropdownToggle,
1585
- NgbDropdownMenu,
1586
- 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,
1587
1583
  TitleCasePipe,
1588
1584
  NgTemplateOutlet,
1589
- DfTopNavButton
1590
- ], 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"] }]
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 }] }] } });
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 }] }] } });
1592
1592
 
1593
1593
  /**
1594
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).
1595
1595
  *
1596
- * 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}
1597
1597
  * @since 21.1
1598
1598
  */
1599
1599
  class DfEnvBanner {
1600
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfEnvBanner, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1601
- 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 }); }
1602
1602
  }
1603
- 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: [{
1604
1604
  type: Component,
1605
- 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: {
1606
1606
  class: 'df-env-banner'
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(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"] }]
1608
1608
  }] });
1609
1609
 
1610
1610
  /**
1611
1611
  * Generated bundle index. Do not edit.
1612
1612
  */
1613
1613
 
1614
- 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 };
1615
1615
  //# sourceMappingURL=design-factory-angular-topnav.mjs.map