@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
@@ -0,0 +1,1153 @@
1
+ import { AgnosWidgetDirective, callWidgetFactory, auBooleanAttribute, UseDirective, useDirectiveForHost, provideDfComponentConfig, injectDfComponentConfig } from '@design-factory/angular/internals';
2
+ import * as i0 from '@angular/core';
3
+ import { output, input, Directive, ViewEncapsulation, Component, contentChild, TemplateRef, inject, afterNextRender, computed, forwardRef } from '@angular/core';
4
+ import { createAccordion } from '@design-factory/core/components/accordion';
5
+ import { NgTemplateOutlet } from '@angular/common';
6
+ import { DfIconButton } from '@design-factory/angular/button';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+
9
+ const DF_ACCORDION_I18N_DEFAULTS = {
10
+ ariaToggleButtonLabel: $localize `:@@df.accordion.toggle:Toggle item`
11
+ };
12
+ /**
13
+ * Input transform that coerces a string or number value into a valid HTML heading level (1–6).
14
+ *
15
+ * Accepts both static template attributes (`itemHeadingLevel="3"`) and bound values (`[itemHeadingLevel]="3"`).
16
+ *
17
+ * Noninteger or out-of-range values fall back to `2`.
18
+ */
19
+ function dfHeadingLevelAttribute(value) {
20
+ const num = +value;
21
+ return num >= 1 && num <= 6 && Number.isInteger(num) ? num : 2;
22
+ }
23
+ /**
24
+ * Abstract base class for accordion variants.
25
+ *
26
+ * Provides the shared inputs, outputs and methods common to all accordion types.
27
+ *
28
+ * @internal
29
+ */
30
+ class DfAccordionBase extends AgnosWidgetDirective {
31
+ constructor() {
32
+ super(callWidgetFactory(createAccordion, {
33
+ defaultConfig: {
34
+ ...DF_ACCORDION_I18N_DEFAULTS
35
+ },
36
+ events: {
37
+ onItemShown: (id) => this.itemShown.emit(id),
38
+ onItemHidden: (id) => this.itemHidden.emit(id)
39
+ }
40
+ }));
41
+ /**
42
+ * An event fired when an item is shown.
43
+ *
44
+ * Event payload is the id of the item.
45
+ */
46
+ this.itemShown = output();
47
+ /**
48
+ * An event fired when an item is hidden.
49
+ *
50
+ * Event payload is the id of the item.
51
+ */
52
+ this.itemHidden = output();
53
+ /**
54
+ * If `true`, the accordion-item body container will be removed from the DOM when the accordion-item is collapsed. It will be just hidden otherwise.
55
+ *
56
+ * @defaultValue `true`
57
+ */
58
+ this.itemDestroyOnHide = input(undefined, { ...(ngDevMode ? { debugName: "itemDestroyOnHide" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
59
+ /**
60
+ * If `true`, accordion-item will be animated.
61
+ *
62
+ * @defaultValue `true`
63
+ */
64
+ this.animated = input(undefined, { ...(ngDevMode ? { debugName: "animated" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
65
+ /**
66
+ * The HTML heading level to use for the accordion-item-header.
67
+ *
68
+ * Should be an integer between 1 and 6, if an invalid value is provided, it will default to 2.
69
+ * @defaultValue 2
70
+ */
71
+ this.itemHeadingLevel = input.required({ ...(ngDevMode ? { debugName: "itemHeadingLevel" } : /* istanbul ignore next */ {}), transform: dfHeadingLevelAttribute });
72
+ /**
73
+ * The size of the accordion.
74
+ *
75
+ * @defaultValue `'md'`
76
+ */
77
+ this.size = input(/* @ts-ignore */
78
+ ...(ngDevMode ? [undefined, { debugName: "size" }] : /* istanbul ignore next */ []));
79
+ /**
80
+ * Position of the expandable icon on the accordion header.
81
+ *
82
+ * @defaultValue `'end'`
83
+ */
84
+ this.arrowPosition = input(/* @ts-ignore */
85
+ ...(ngDevMode ? [undefined, { debugName: "arrowPosition" }] : /* istanbul ignore next */ []));
86
+ /**
87
+ * Addon type to show on the left side of the accordion header.
88
+ *
89
+ * Only valid for 'default' and 'interactive' variant.
90
+ *
91
+ * @defaultValue `'none'`
92
+ */
93
+ this.addon = input(/* @ts-ignore */
94
+ ...(ngDevMode ? [undefined, { debugName: "addon" }] : /* istanbul ignore next */ []));
95
+ /**
96
+ * In case of subtitle, defines how the subtitle is displayed.
97
+ *
98
+ * Only valid for 'default' and 'interactive'.
99
+ *
100
+ * On an interactive variant, subtitle is always displayed as inline.
101
+ *
102
+ * @defaultValue `'none'`
103
+ */
104
+ this.subtitleType = input(/* @ts-ignore */
105
+ ...(ngDevMode ? [undefined, { debugName: "subtitleType" }] : /* istanbul ignore next */ []));
106
+ /**
107
+ * When an item is visible (a.k.a. expanded), a separator line is shown below the item header.
108
+ *
109
+ * @defaultValue `false`
110
+ */
111
+ this.separator = input(undefined, { ...(ngDevMode ? { debugName: "separator" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
112
+ }
113
+ /**
114
+ * Toggles an item with the given id.
115
+ *
116
+ * It will toggle an item, even if it is disabled.
117
+ */
118
+ async toggle(itemId) {
119
+ await this.api.toggle(itemId);
120
+ }
121
+ /**
122
+ * Expands an item with the given id.
123
+ *
124
+ * If closeOthers is true, it will collapse other panels.
125
+ */
126
+ async expand(itemId) {
127
+ await this.api.expand(itemId);
128
+ }
129
+ /**
130
+ * Expands all items.
131
+ *
132
+ * If closeOthers is true and all items are closed, it will open the first one. Otherwise, it will keep the opened one.
133
+ */
134
+ async expandAll() {
135
+ await this.api.expandAll();
136
+ }
137
+ /**
138
+ * Checks if an item with the given id is expanded.
139
+ *
140
+ * If the itemId does not correspond to any item, it returns false.
141
+ */
142
+ isExpanded(itemId) {
143
+ return (this.state
144
+ .itemWidgets()
145
+ .find((item) => item.state$.get().id === itemId)
146
+ ?.state$.get().visible || false);
147
+ }
148
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
149
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.4", type: DfAccordionBase, isStandalone: true, inputs: { itemDestroyOnHide: { classPropertyName: "itemDestroyOnHide", publicName: "itemDestroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, animated: { classPropertyName: "animated", publicName: "animated", isSignal: true, isRequired: false, transformFunction: null }, itemHeadingLevel: { classPropertyName: "itemHeadingLevel", publicName: "itemHeadingLevel", isSignal: true, isRequired: true, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, arrowPosition: { classPropertyName: "arrowPosition", publicName: "arrowPosition", isSignal: true, isRequired: false, transformFunction: null }, addon: { classPropertyName: "addon", publicName: "addon", isSignal: true, isRequired: false, transformFunction: null }, subtitleType: { classPropertyName: "subtitleType", publicName: "subtitleType", isSignal: true, isRequired: false, transformFunction: null }, separator: { classPropertyName: "separator", publicName: "separator", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemShown: "itemShown", itemHidden: "itemHidden" }, usesInheritance: true, ngImport: i0 }); }
150
+ }
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionBase, decorators: [{
152
+ type: Directive
153
+ }], ctorParameters: () => [], propDecorators: { itemShown: [{ type: i0.Output, args: ["itemShown"] }], itemHidden: [{ type: i0.Output, args: ["itemHidden"] }], itemDestroyOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemDestroyOnHide", required: false }] }], animated: [{ type: i0.Input, args: [{ isSignal: true, alias: "animated", required: false }] }], itemHeadingLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "itemHeadingLevel", required: true }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], arrowPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "arrowPosition", required: false }] }], addon: [{ type: i0.Input, args: [{ isSignal: true, alias: "addon", required: false }] }], subtitleType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitleType", required: false }] }], separator: [{ type: i0.Input, args: [{ isSignal: true, alias: "separator", required: false }] }] } });
154
+
155
+ /**
156
+ * An accordion is a vertically stacked list of headers that reveal or hide associated sections of content
157
+ *
158
+ * Each header and content section is called an accordion-item.
159
+ *
160
+ * This component is a container for these items and provides an API to handle them.
161
+ *
162
+ * @since 22.0.0
163
+ */
164
+ class DfAccordion extends DfAccordionBase {
165
+ constructor() {
166
+ super(...arguments);
167
+ /**
168
+ * If `true`, only one accordion-item at the time can stay open.
169
+ *
170
+ * @defaultValue `false`
171
+ */
172
+ this.closeOthers = input(undefined, { ...(ngDevMode ? { debugName: "closeOthers" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
173
+ }
174
+ /**
175
+ * Collapses an item with the given id.
176
+ *
177
+ * Has no effect if the itemId does not correspond to any item.
178
+ */
179
+ async collapse(itemId) {
180
+ await this.api.collapse(itemId);
181
+ }
182
+ /**
183
+ * Collapses all items.
184
+ */
185
+ async collapseAll() {
186
+ await this.api.collapseAll();
187
+ }
188
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordion, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
189
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfAccordion, isStandalone: true, selector: "df-accordion", inputs: { closeOthers: { classPropertyName: "closeOthers", publicName: "closeOthers", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
190
+ <div [dfUse]="directives.accordionDirective" class="df-accordion {{ state.accordionClassName() }}" role="region">
191
+ <ng-content />
192
+ </div>
193
+ `, isInline: true, styles: [".df-accordion .df-collapse-hide{display:none}.df-accordion .df-collapse-show{display:block}.df-accordion .df-collapse-collapsing{display:block;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-accordion .df-collapse-collapsing{transition:none}}.df-accordion .df-accordion-item{display:block;color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:1px solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item:first-of-type>.df-accordion-header .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:not(:first-of-type){border-top:0}.df-accordion .df-accordion-item:last-of-type{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.df-collapsed{border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item .df-accordion-header{margin-bottom:0}.df-accordion .df-accordion-item .df-accordion-icon{margin-inline-end:var(--df-spacing-3)}.df-accordion .df-accordion-item .df-accordion-number{margin-inline-end:var(--df-spacing-1);color:var(--df-color-neutral-alt-default-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item :is(.df-accordion-title-block,.df-accordion-title-inline){text-align:start}.df-accordion .df-accordion-item .df-accordion-title-block{margin-bottom:var(--df-spacing-2)}.df-accordion .df-accordion-item .df-accordion-title-inline{flex-grow:1}.df-accordion .df-accordion-item .df-accordion-subtitle-block{text-align:start}.df-accordion .df-accordion-item :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-subtext-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item .df-accordion-subtitle-inline{margin-inline-end:var(--df-spacing-5)}.df-accordion .df-accordion-item .df-accordion-button:has(>.df-accordion-toggle-left) .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion .df-accordion-item .df-accordion-body{padding:var(--df-spacing-5)}.df-accordion .df-accordion-toggle-left{margin-inline-end:var(--df-spacing-3)}.df-accordion.df-accordion-separator .df-accordion-button:not(.df-collapsed){border-bottom-width:1px}.df-accordion .df-accordion-button{padding-block:.75rem;font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-default)}.df-accordion .df-accordion-body{font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-medium);border-top-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion.df-accordion-sm .df-accordion-button{padding-block:.65625rem;font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-body{font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-small);border-top-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-lg .df-accordion-button{padding-block:.84375rem;font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-body{font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-large);border-top-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}\n"], dependencies: [{ kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }], encapsulation: i0.ViewEncapsulation.None }); }
194
+ }
195
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordion, decorators: [{
196
+ type: Component,
197
+ args: [{ selector: 'df-accordion', imports: [UseDirective], encapsulation: ViewEncapsulation.None, template: `
198
+ <div [dfUse]="directives.accordionDirective" class="df-accordion {{ state.accordionClassName() }}" role="region">
199
+ <ng-content />
200
+ </div>
201
+ `, styles: [".df-accordion .df-collapse-hide{display:none}.df-accordion .df-collapse-show{display:block}.df-accordion .df-collapse-collapsing{display:block;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-accordion .df-collapse-collapsing{transition:none}}.df-accordion .df-accordion-item{display:block;color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:1px solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item:first-of-type>.df-accordion-header .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:not(:first-of-type){border-top:0}.df-accordion .df-accordion-item:last-of-type{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.df-collapsed{border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item .df-accordion-header{margin-bottom:0}.df-accordion .df-accordion-item .df-accordion-icon{margin-inline-end:var(--df-spacing-3)}.df-accordion .df-accordion-item .df-accordion-number{margin-inline-end:var(--df-spacing-1);color:var(--df-color-neutral-alt-default-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item :is(.df-accordion-title-block,.df-accordion-title-inline){text-align:start}.df-accordion .df-accordion-item .df-accordion-title-block{margin-bottom:var(--df-spacing-2)}.df-accordion .df-accordion-item .df-accordion-title-inline{flex-grow:1}.df-accordion .df-accordion-item .df-accordion-subtitle-block{text-align:start}.df-accordion .df-accordion-item :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-subtext-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item .df-accordion-subtitle-inline{margin-inline-end:var(--df-spacing-5)}.df-accordion .df-accordion-item .df-accordion-button:has(>.df-accordion-toggle-left) .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion .df-accordion-item .df-accordion-body{padding:var(--df-spacing-5)}.df-accordion .df-accordion-toggle-left{margin-inline-end:var(--df-spacing-3)}.df-accordion.df-accordion-separator .df-accordion-button:not(.df-collapsed){border-bottom-width:1px}.df-accordion .df-accordion-button{padding-block:.75rem;font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-default)}.df-accordion .df-accordion-body{font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-medium);border-top-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion.df-accordion-sm .df-accordion-button{padding-block:.65625rem;font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-body{font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-small);border-top-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-lg .df-accordion-button{padding-block:.84375rem;font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-body{font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-large);border-top-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}\n"] }]
202
+ }], propDecorators: { closeOthers: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOthers", required: false }] }] } });
203
+
204
+ /**
205
+ * A directive to define a template containing the body content of the accordion item.
206
+ * @since 22.0.0
207
+ * */
208
+ class DfAccordionItemBody {
209
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemBody, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
210
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfAccordionItemBody, isStandalone: true, selector: "ng-template[dfAccordionItemBody]", ngImport: i0 }); }
211
+ }
212
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemBody, decorators: [{
213
+ type: Directive,
214
+ args: [{
215
+ selector: 'ng-template[dfAccordionItemBody]'
216
+ }]
217
+ }] });
218
+ /**
219
+ * A directive to define a template containing the title of the accordion item.
220
+ * @since 22.0.0
221
+ * */
222
+ class DfAccordionItemTitle {
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemTitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
224
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfAccordionItemTitle, isStandalone: true, selector: "ng-template[dfAccordionItemTitle]", ngImport: i0 }); }
225
+ }
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemTitle, decorators: [{
227
+ type: Directive,
228
+ args: [{
229
+ selector: 'ng-template[dfAccordionItemTitle]'
230
+ }]
231
+ }] });
232
+ /**
233
+ *
234
+ * An accordion item is a group of a header and a collapsible content section.
235
+ *
236
+ * It is used within an accordion component to display and hide content.
237
+ *
238
+ * This is the basic template for an accordion item. See {@link DfAccordionItemInteractive} for a template with interactive elements in the header.
239
+ *
240
+ * As its content, it accepts two directives:
241
+ * - `dfAccordionItemTitle`: to define the title of the accordion item.
242
+ * - `dfAccordionItemBody`: to define the body content of the accordion item.
243
+ * @since 22.0.0
244
+ */
245
+ class DfAccordionItem extends AgnosWidgetDirective {
246
+ constructor() {
247
+ super(callWidgetFactory((arg) => this.accordion['api'].registerItem(arg), {
248
+ events: {
249
+ onVisibleChange: (visible) => this.visibleChange.emit(visible),
250
+ onHidden: () => this.hidden.emit(),
251
+ onShown: () => this.shown.emit()
252
+ },
253
+ afterInit: (widget) => {
254
+ useDirectiveForHost(widget.directives.itemDirective);
255
+ }
256
+ }));
257
+ /**
258
+ * The id of the accordion-item. It can be used for controlling the accordion-item via the accordion api.
259
+ *
260
+ * @defaultValue `'dfId-[number]'`
261
+ */
262
+ this.id = input(/* @ts-ignore */
263
+ ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
264
+ /**
265
+ * If `true`, the accordion-item body container will be removed from the DOM when the accordion-item is collapsed. It will be just hidden otherwise.
266
+ *
267
+ * @defaultValue `true`
268
+ */
269
+ this.destroyOnHide = input(undefined, { ...(ngDevMode ? { debugName: "destroyOnHide" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
270
+ /**
271
+ * If `true`, the accordion-item will be disabled.
272
+ *
273
+ * It will not react to user's clicks, but still will be possible to toggle programmatically.
274
+ *
275
+ * @defaultValue `false`
276
+ */
277
+ this.disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
278
+ /**
279
+ * If `true`, the accordion-item will be visible (expanded). Otherwise, it will be hidden (collapsed).
280
+ *
281
+ * @defaultValue `false`
282
+ */
283
+ this.visible = input(undefined, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
284
+ /**
285
+ * An event fired when an item is shown.
286
+ */
287
+ this.shown = output();
288
+ /**
289
+ * An event fired when an item is hidden.
290
+ */
291
+ this.hidden = output();
292
+ /**
293
+ * An event fired when the `visible` value changes.
294
+ *
295
+ * Event payload is the new value of visible.
296
+ */
297
+ this.visibleChange = output();
298
+ /**
299
+ * Optional input only valid if the accordion's subtitleType is 'inline' or 'block' to set custom subtitle
300
+ *
301
+ * @defaultValue `undefined`
302
+ * */
303
+ this.subtitle = input(/* @ts-ignore */
304
+ ...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
305
+ /**
306
+ * Optional input only valid for Icon variant to set custom icon class
307
+ *
308
+ * @defaultValue `undefined`
309
+ * */
310
+ this.iconClass = input(/* @ts-ignore */
311
+ ...(ngDevMode ? [undefined, { debugName: "iconClass" }] : /* istanbul ignore next */ []));
312
+ /**
313
+ * Optional input only valid for addon number variant to set the custom number
314
+ *
315
+ * @defaultValue `undefined`
316
+ * */
317
+ this.number = input(/* @ts-ignore */
318
+ ...(ngDevMode ? [undefined, { debugName: "number" }] : /* istanbul ignore next */ []));
319
+ this.title = contentChild(DfAccordionItemTitle, { ...(ngDevMode ? { debugName: "title" } : /* istanbul ignore next */ {}), read: TemplateRef });
320
+ this.body = contentChild(DfAccordionItemBody, { ...(ngDevMode ? { debugName: "body" } : /* istanbul ignore next */ {}), read: TemplateRef });
321
+ this.accordion = inject(DfAccordion);
322
+ afterNextRender(() => this.api.initDone());
323
+ }
324
+ /**
325
+ * Toggles the item.
326
+ *
327
+ * It will toggle the item, even if it is disabled.
328
+ */
329
+ async toggle() {
330
+ await this.api.toggle();
331
+ }
332
+ /**
333
+ * Expands the item.
334
+ *
335
+ * If closeOthers is true, it will collapse other panels.
336
+ */
337
+ async expand() {
338
+ await this.api.expand();
339
+ }
340
+ /**
341
+ * Collapses the item.
342
+ * */
343
+ async collapse() {
344
+ await this.api.collapse();
345
+ }
346
+ /**
347
+ * Checks if the item is expanded.
348
+ *
349
+ * */
350
+ isExpanded() {
351
+ return this.state.visible();
352
+ }
353
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItem, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
354
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfAccordionItem, isStandalone: true, selector: "df-accordion-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, destroyOnHide: { classPropertyName: "destroyOnHide", publicName: "destroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, number: { classPropertyName: "number", publicName: "number", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shown: "shown", hidden: "hidden", visibleChange: "visibleChange" }, host: { properties: { "id": "[state.id()]" }, classAttribute: "df-accordion-item" }, queries: [{ propertyName: "title", first: true, predicate: DfAccordionItemTitle, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "body", first: true, predicate: DfAccordionItemBody, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
355
+ <div
356
+ [attr.aria-level]="accordion['state'].itemHeadingLevel()"
357
+ [dfUse]="directives.headerDirective"
358
+ class="df-accordion-header"
359
+ role="heading"
360
+ >
361
+ <button [dfUse]="directives.buttonDirective" class="df-accordion-button" type="button">
362
+ @if (accordion['state'].arrowPosition() === 'start') {
363
+ <span
364
+ class="df-accordion-chevron df-accordion-toggle-left fal fa-icon fa-chevron-down"
365
+ aria-hidden="true"
366
+ ></span>
367
+ }
368
+ <div class="df-accordion-button-content">
369
+ @let subtitleType = accordion['state'].subtitleType();
370
+ @if (subtitleType === 'block' && subtitle()) {
371
+ <ng-template [ngTemplateOutlet]="addon" />
372
+ <div class="df-accordion-title-block">
373
+ <ng-template [ngTemplateOutlet]="title()" />
374
+ </div>
375
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
376
+ } @else if (subtitleType === 'inline' && subtitle()) {
377
+ <ng-template [ngTemplateOutlet]="addon" />
378
+ <div class="df-accordion-title-inline">
379
+ <ng-template [ngTemplateOutlet]="title()" />
380
+ </div>
381
+ <div class="df-accordion-subtitle-inline">{{ subtitle() }}</div>
382
+ } @else {
383
+ <ng-template [ngTemplateOutlet]="addon" />
384
+ <ng-template [ngTemplateOutlet]="title()" />
385
+ }
386
+ </div>
387
+ @if (accordion['state'].arrowPosition() !== 'start') {
388
+ <span class="df-accordion-chevron fa-icon fal fa-chevron-down" aria-hidden="true"></span>
389
+ }
390
+ </button>
391
+ </div>
392
+ @if (state.shouldBeInDOM()) {
393
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
394
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
395
+ <ng-template [ngTemplateOutlet]="body()" />
396
+ </div>
397
+ </div>
398
+ }
399
+
400
+ <ng-template #addon>
401
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
402
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
403
+ } @else if (accordion['state'].addon() === 'number' && number()) {
404
+ <span class="df-accordion-number">{{ number() }}.</span>
405
+ }
406
+ </ng-template>
407
+ `, isInline: true, styles: [".df-accordion .df-accordion-item .df-accordion-button{--df-inner-box-shadow-color: var(--df-color-inert-neutral-main-pageBackground);display:flex;align-items:center;width:100%;margin:0;padding:var(--df-spacing-4) var(--df-spacing-5);font-weight:var(--df-typo-weight-bold);color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:0 solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item .df-accordion-button>.df-accordion-chevron{color:var(--df-color-primary-alt-default-foreground);transition:transform .2s ease-in-out}@media(prefers-reduced-motion:reduce){.df-accordion .df-accordion-item .df-accordion-button>.df-accordion-chevron{transition:none}}.df-accordion .df-accordion-item .df-accordion-button:not(.df-collapsed)>.df-accordion-chevron{transform:rotate(-180deg)}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content{display:flex;align-items:center;flex-grow:1;min-width:0}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block){display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block)>.df-accordion-title-block{grid-column:2}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block)>.df-accordion-subtitle-block{grid-column:2}.df-accordion .df-accordion-item .df-accordion-button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--df-inner-box-shadow-color),inset 0 0 0 4px var(--df-color-neutral-alt-default-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover>.df-accordion-chevron{color:var(--df-color-primary-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:active>.df-accordion-chevron{color:var(--df-color-primary-alt-pressed-foreground)}.df-accordion .df-accordion-item .df-accordion-button:active :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-pressed-foreground)}.df-accordion .df-accordion-item .df-accordion-button:disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion .df-accordion-item .df-accordion-button:disabled :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline,.df-accordion-number){color:var(--df-color-disabled-main-foreground)}.df-accordion .df-accordion-item .df-accordion-button:disabled>.df-accordion-chevron{color:var(--df-color-disabled-main-foreground)}\n"], dependencies: [{ kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
408
+ }
409
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItem, decorators: [{
410
+ type: Component,
411
+ args: [{ selector: 'df-accordion-item', host: {
412
+ class: 'df-accordion-item',
413
+ '[id]': '[state.id()]'
414
+ }, imports: [UseDirective, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, template: `
415
+ <div
416
+ [attr.aria-level]="accordion['state'].itemHeadingLevel()"
417
+ [dfUse]="directives.headerDirective"
418
+ class="df-accordion-header"
419
+ role="heading"
420
+ >
421
+ <button [dfUse]="directives.buttonDirective" class="df-accordion-button" type="button">
422
+ @if (accordion['state'].arrowPosition() === 'start') {
423
+ <span
424
+ class="df-accordion-chevron df-accordion-toggle-left fal fa-icon fa-chevron-down"
425
+ aria-hidden="true"
426
+ ></span>
427
+ }
428
+ <div class="df-accordion-button-content">
429
+ @let subtitleType = accordion['state'].subtitleType();
430
+ @if (subtitleType === 'block' && subtitle()) {
431
+ <ng-template [ngTemplateOutlet]="addon" />
432
+ <div class="df-accordion-title-block">
433
+ <ng-template [ngTemplateOutlet]="title()" />
434
+ </div>
435
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
436
+ } @else if (subtitleType === 'inline' && subtitle()) {
437
+ <ng-template [ngTemplateOutlet]="addon" />
438
+ <div class="df-accordion-title-inline">
439
+ <ng-template [ngTemplateOutlet]="title()" />
440
+ </div>
441
+ <div class="df-accordion-subtitle-inline">{{ subtitle() }}</div>
442
+ } @else {
443
+ <ng-template [ngTemplateOutlet]="addon" />
444
+ <ng-template [ngTemplateOutlet]="title()" />
445
+ }
446
+ </div>
447
+ @if (accordion['state'].arrowPosition() !== 'start') {
448
+ <span class="df-accordion-chevron fa-icon fal fa-chevron-down" aria-hidden="true"></span>
449
+ }
450
+ </button>
451
+ </div>
452
+ @if (state.shouldBeInDOM()) {
453
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
454
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
455
+ <ng-template [ngTemplateOutlet]="body()" />
456
+ </div>
457
+ </div>
458
+ }
459
+
460
+ <ng-template #addon>
461
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
462
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
463
+ } @else if (accordion['state'].addon() === 'number' && number()) {
464
+ <span class="df-accordion-number">{{ number() }}.</span>
465
+ }
466
+ </ng-template>
467
+ `, styles: [".df-accordion .df-accordion-item .df-accordion-button{--df-inner-box-shadow-color: var(--df-color-inert-neutral-main-pageBackground);display:flex;align-items:center;width:100%;margin:0;padding:var(--df-spacing-4) var(--df-spacing-5);font-weight:var(--df-typo-weight-bold);color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:0 solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item .df-accordion-button>.df-accordion-chevron{color:var(--df-color-primary-alt-default-foreground);transition:transform .2s ease-in-out}@media(prefers-reduced-motion:reduce){.df-accordion .df-accordion-item .df-accordion-button>.df-accordion-chevron{transition:none}}.df-accordion .df-accordion-item .df-accordion-button:not(.df-collapsed)>.df-accordion-chevron{transform:rotate(-180deg)}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content{display:flex;align-items:center;flex-grow:1;min-width:0}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block){display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block)>.df-accordion-title-block{grid-column:2}.df-accordion .df-accordion-item .df-accordion-button .df-accordion-button-content:has(>.df-accordion-subtitle-block)>.df-accordion-subtitle-block{grid-column:2}.df-accordion .df-accordion-item .df-accordion-button:focus-visible{outline:none;box-shadow:inset 0 0 0 2px var(--df-inner-box-shadow-color),inset 0 0 0 4px var(--df-color-neutral-alt-default-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:hover>.df-accordion-chevron{color:var(--df-color-primary-alt-hovered-foreground)}.df-accordion .df-accordion-item .df-accordion-button:active>.df-accordion-chevron{color:var(--df-color-primary-alt-pressed-foreground)}.df-accordion .df-accordion-item .df-accordion-button:active :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-pressed-foreground)}.df-accordion .df-accordion-item .df-accordion-button:disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion .df-accordion-item .df-accordion-button:disabled :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline,.df-accordion-number){color:var(--df-color-disabled-main-foreground)}.df-accordion .df-accordion-item .df-accordion-button:disabled>.df-accordion-chevron{color:var(--df-color-disabled-main-foreground)}\n"] }]
468
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], destroyOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "destroyOnHide", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], shown: [{ type: i0.Output, args: ["shown"] }], hidden: [{ type: i0.Output, args: ["hidden"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], number: [{ type: i0.Input, args: [{ isSignal: true, alias: "number", required: false }] }], title: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemTitle), { ...{ read: TemplateRef }, isSignal: true }] }], body: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemBody), { ...{ read: TemplateRef }, isSignal: true }] }] } });
469
+
470
+ /**
471
+ * A directive to define a template containing an interactive element inside the accordion item header.
472
+ * @since 22.0.0
473
+ * */
474
+ class DfAccordionItemInteractiveSection {
475
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemInteractiveSection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
476
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfAccordionItemInteractiveSection, isStandalone: true, selector: "ng-template[dfAccordionItemInteractiveSection]", ngImport: i0 }); }
477
+ }
478
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemInteractiveSection, decorators: [{
479
+ type: Directive,
480
+ args: [{
481
+ selector: 'ng-template[dfAccordionItemInteractiveSection]'
482
+ }]
483
+ }] });
484
+ /**
485
+ *
486
+ * An accordion item is a group of a header and a collapsible content section.
487
+ *
488
+ * It is used within an accordion component to display and hide content.
489
+ *
490
+ * This template is for the case when it is needed an interactive section inside the header.
491
+ *
492
+ * As its content, it accepts three directives:
493
+ * - `dfAccordionItemTitle`: to define the title of the accordion item.
494
+ * - `DfAccordionItemInteractiveSection`: to define a template containing an interactive element.
495
+ * - `dfAccordionItemBody`: to define the body content of the accordion item.
496
+ * @since 22.0.0
497
+ */
498
+ class DfAccordionItemInteractive extends AgnosWidgetDirective {
499
+ constructor() {
500
+ super(callWidgetFactory((arg) => this.accordion['api'].registerItem(arg), {
501
+ events: {
502
+ onVisibleChange: (visible) => this.visibleChange.emit(visible),
503
+ onHidden: () => this.hidden.emit(),
504
+ onShown: () => this.shown.emit()
505
+ },
506
+ afterInit: (widget) => {
507
+ useDirectiveForHost(widget.directives.itemDirective);
508
+ }
509
+ }));
510
+ /**
511
+ * The id of the accordion-item. It can be used for controlling the accordion-item via the accordion api.
512
+ *
513
+ * @defaultValue `'dfId-[number]'`
514
+ */
515
+ this.id = input(/* @ts-ignore */
516
+ ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
517
+ /**
518
+ * If `true`, the accordion-item body container will be removed from the DOM when the accordion-item is collapsed. It will be just hidden otherwise.
519
+ *
520
+ * @defaultValue `true`
521
+ */
522
+ this.destroyOnHide = input(undefined, { ...(ngDevMode ? { debugName: "destroyOnHide" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
523
+ /**
524
+ * If `true`, the accordion-item will be disabled.
525
+ *
526
+ * It will not react to user's clicks, but still will be possible to toggle programmatically.
527
+ *
528
+ * @defaultValue `false`
529
+ */
530
+ this.disabled = input(undefined, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
531
+ /**
532
+ * If `true`, the accordion-item will be visible (expanded). Otherwise, it will be hidden (collapsed).
533
+ *
534
+ * @defaultValue `false`
535
+ */
536
+ this.visible = input(undefined, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
537
+ /**
538
+ * An event fired when an item is shown.
539
+ */
540
+ this.shown = output();
541
+ /**
542
+ * An event fired when an item is hidden.
543
+ */
544
+ this.hidden = output();
545
+ /**
546
+ * An event fired when the `visible` value changes.
547
+ *
548
+ * Event payload is the new value of visible.
549
+ */
550
+ this.visibleChange = output();
551
+ /**
552
+ * Optional input only valid if the accordion's subtitleType is 'inline' or 'block' to set custom subtitle
553
+ * */
554
+ this.subtitle = input(/* @ts-ignore */
555
+ ...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
556
+ /**
557
+ * Optional input only valid for Icon variant to set custom icon class
558
+ * */
559
+ this.iconClass = input(/* @ts-ignore */
560
+ ...(ngDevMode ? [undefined, { debugName: "iconClass" }] : /* istanbul ignore next */ []));
561
+ /**
562
+ * Optional input only valid for addon number variant to set custom the number
563
+ * */
564
+ this.number = input('', /* @ts-ignore */
565
+ ...(ngDevMode ? [{ debugName: "number" }] : /* istanbul ignore next */ []));
566
+ this.title = contentChild(DfAccordionItemTitle, { ...(ngDevMode ? { debugName: "title" } : /* istanbul ignore next */ {}), read: TemplateRef });
567
+ this.interactiveSection = contentChild(DfAccordionItemInteractiveSection, { ...(ngDevMode ? { debugName: "interactiveSection" } : /* istanbul ignore next */ {}), read: TemplateRef });
568
+ this.body = contentChild(DfAccordionItemBody, { ...(ngDevMode ? { debugName: "body" } : /* istanbul ignore next */ {}), read: TemplateRef });
569
+ this.accordion = inject(DfAccordion);
570
+ afterNextRender(() => {
571
+ this.api.initDone();
572
+ });
573
+ }
574
+ /**
575
+ * Toggles the item
576
+ *
577
+ * It will toggle the item, even if it is disabled.
578
+ */
579
+ async toggle() {
580
+ await this.api.toggle();
581
+ }
582
+ /**
583
+ * Expands an item.
584
+ *
585
+ * If closeOthers is true, it will collapse other panels.
586
+ */
587
+ async expand() {
588
+ await this.api.expand();
589
+ }
590
+ /**
591
+ * Collapses the item.
592
+ * */
593
+ async collapse() {
594
+ await this.api.collapse();
595
+ }
596
+ /**
597
+ * Checks if the item is expanded.
598
+ *
599
+ * */
600
+ isExpanded() {
601
+ return this.state.visible();
602
+ }
603
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemInteractive, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
604
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfAccordionItemInteractive, isStandalone: true, selector: "df-accordion-item-interactive", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, destroyOnHide: { classPropertyName: "destroyOnHide", publicName: "destroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, number: { classPropertyName: "number", publicName: "number", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shown: "shown", hidden: "hidden", visibleChange: "visibleChange" }, host: { properties: { "id": "[state.id()]" }, classAttribute: "df-accordion-item" }, queries: [{ propertyName: "title", first: true, predicate: DfAccordionItemTitle, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "interactiveSection", first: true, predicate: DfAccordionItemInteractiveSection, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "body", first: true, predicate: DfAccordionItemBody, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
605
+ <div
606
+ class="df-accordion-header df-accordion-interactive-header"
607
+ [class.df-disabled]="state.disabled()"
608
+ [attr.aria-disabled]="state.disabled() ? 'true' : null"
609
+ >
610
+ @if (accordion['state'].arrowPosition() === 'start') {
611
+ <ng-template [ngTemplateOutlet]="toggleBtn" />
612
+ }
613
+ <div class="df-accordion-interactive-content">
614
+ <div class="df-accordion-interactive-inner">
615
+ <ng-template [ngTemplateOutlet]="addon" />
616
+ <div role="heading" [attr.aria-level]="accordion['state'].itemHeadingLevel()">
617
+ <ng-template [ngTemplateOutlet]="title()" />
618
+ </div>
619
+ @if (accordion['state'].subtitleType() === 'block' && subtitle()) {
620
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
621
+ }
622
+ </div>
623
+ <ng-template [ngTemplateOutlet]="interactiveSection()" />
624
+ </div>
625
+ @if (accordion['state'].arrowPosition() === 'end') {
626
+ <ng-template [ngTemplateOutlet]="toggleBtn" />
627
+ }
628
+ </div>
629
+
630
+ @if (state.shouldBeInDOM()) {
631
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
632
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
633
+ <ng-template [ngTemplateOutlet]="body()" />
634
+ </div>
635
+ </div>
636
+ }
637
+
638
+ <ng-template #addon>
639
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
640
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
641
+ } @else if (accordion['state'].addon() === 'number' && number()) {
642
+ <span class="df-accordion-number">{{ number() }}.</span>
643
+ }
644
+ </ng-template>
645
+
646
+ <ng-template #toggleBtn>
647
+ <button
648
+ [disabled]="state.disabled()"
649
+ [dfUse]="directives.toggleDirective"
650
+ dfIconButton
651
+ appearance="text"
652
+ transparent
653
+ [attr.aria-label]="accordion['state'].ariaToggleButtonLabel()"
654
+ class="df-accordion-toggle fal fa-chevron-down {{
655
+ accordion['state'].arrowPosition() === 'start' ? ' df-accordion-toggle-left' : ' df-accordion-toggle-right'
656
+ }}"
657
+ ></button>
658
+ </ng-template>
659
+ `, isInline: true, styles: [".df-accordion .df-accordion-interactive-header{display:flex;align-items:center;padding:var(--df-spacing-3) var(--df-spacing-5)}.df-accordion .df-accordion-interactive-header.df-disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion .df-accordion-interactive-content{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.df-accordion .df-accordion-interactive-inner{font-weight:var(--df-typo-weight-bold);display:flex;align-items:center}.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block){display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block)>.df-accordion-title-block,.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block)>.df-accordion-subtitle-block{grid-column:2}.df-accordion .df-accordion-toggle-right{margin-inline-start:var(--df-spacing-3)}.df-accordion .df-accordion-toggle:before{transition:transform .35s ease-in-out}@media(prefers-reduced-motion:reduce){.df-accordion .df-accordion-toggle:before{transition:none}}.df-accordion .df-accordion-toggle:not(.df-collapsed):before{transform:rotate(-180deg)}.df-accordion .form-check.form-switch{display:flex;align-items:center;min-height:calc(var(--df-typo-sizing-default) * 1.5);margin-bottom:0;padding-inline-start:0}.df-accordion .form-switch .form-check-input[type=checkbox]{flex-shrink:0;width:3em;height:1.5em;margin:0;vertical-align:top;appearance:none;background-color:var(--df-color-neutral-alt-default-background);background-image:none;border:.09375rem solid var(--df-color-toggle-border);border-radius:.75em;-webkit-print-color-adjust:exact;print-color-adjust:exact;cursor:pointer;position:relative;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.df-accordion .form-switch .form-check-input[type=checkbox]:after{content:\"\";position:absolute;inset:0;background-color:var(--df-color-toggle-background);-webkit-mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='black'/></svg>\");mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='black'/></svg>\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:left center;mask-position:left center;transition:mask-position .15s ease-in-out}.df-accordion .form-switch .form-check-input[type=checkbox]:checked{background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:checked:focus-visible{box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-primary-main-default-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:checked:after{-webkit-mask-position:right center;mask-position:right center;background-color:var(--df-color-primary-main-default-foreground)}.df-accordion .form-switch .form-check-input[type=checkbox]:focus{border-color:var(--df-color-input-border);outline:0;box-shadow:none}.df-accordion .form-switch .form-check-input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-toggle-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:focus-visible:not(:checked,:disabled,.is-invalid,.ng-invalid.ng-touched){--df-box-shadow-color: var(--df-color-toggle-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:active{filter:none}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled{pointer-events:none;cursor:not-allowed;border-color:var(--df-color-disabled-main-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:checked{background-color:var(--df-color-disabled-alt-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:checked:after{background-color:var(--df-color-disabled-main-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:not(:checked){background-color:var(--df-color-disabled-main-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:not(:checked):after{background-color:var(--df-color-disabled-alt-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled~.form-check-label{color:var(--df-color-inert-neutral-main-foreground);cursor:default}.df-accordion .form-switch .df-switch-success:checked:not(:disabled){background-color:var(--df-color-success-main-default-background);border-color:var(--df-color-success-main-default-border)}.df-accordion .form-switch .df-switch-success.form-check-input:focus-visible{box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-success-main-default-border)}.df-accordion .form-switch .df-switch-primary:checked:not(:disabled){background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border)}.df-accordion .form-switch .df-switch-primary.form-check-input:focus-visible{box-shadow:0 0 0 2px red,0 0 0 4px green}.df-accordion .form-switch .form-check-label{color:var(--df-color-neutral-alt-default-foreground);cursor:pointer;padding-inline-start:var(--df-spacing-3);font-weight:var(--df-typo-weight-medium)}.df-accordion .form-switch .df-form-switch-name{font-weight:var(--df-typo-weight-medium);padding-inline-start:0}.df-accordion .form-switch .df-form-switch-name.df-form-switch-name-disabled{color:var(--df-color-inert-neutral-main-foreground);cursor:not-allowed}.df-accordion .form-switch .df-form-switch-name .df-form-switch-container{display:flex;align-items:center;margin-top:var(--df-spacing-3)}\n"], dependencies: [{ kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }], encapsulation: i0.ViewEncapsulation.None }); }
660
+ }
661
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemInteractive, decorators: [{
662
+ type: Component,
663
+ args: [{ selector: 'df-accordion-item-interactive', host: {
664
+ class: 'df-accordion-item',
665
+ '[id]': '[state.id()]'
666
+ }, imports: [UseDirective, NgTemplateOutlet, DfIconButton], encapsulation: ViewEncapsulation.None, template: `
667
+ <div
668
+ class="df-accordion-header df-accordion-interactive-header"
669
+ [class.df-disabled]="state.disabled()"
670
+ [attr.aria-disabled]="state.disabled() ? 'true' : null"
671
+ >
672
+ @if (accordion['state'].arrowPosition() === 'start') {
673
+ <ng-template [ngTemplateOutlet]="toggleBtn" />
674
+ }
675
+ <div class="df-accordion-interactive-content">
676
+ <div class="df-accordion-interactive-inner">
677
+ <ng-template [ngTemplateOutlet]="addon" />
678
+ <div role="heading" [attr.aria-level]="accordion['state'].itemHeadingLevel()">
679
+ <ng-template [ngTemplateOutlet]="title()" />
680
+ </div>
681
+ @if (accordion['state'].subtitleType() === 'block' && subtitle()) {
682
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
683
+ }
684
+ </div>
685
+ <ng-template [ngTemplateOutlet]="interactiveSection()" />
686
+ </div>
687
+ @if (accordion['state'].arrowPosition() === 'end') {
688
+ <ng-template [ngTemplateOutlet]="toggleBtn" />
689
+ }
690
+ </div>
691
+
692
+ @if (state.shouldBeInDOM()) {
693
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
694
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
695
+ <ng-template [ngTemplateOutlet]="body()" />
696
+ </div>
697
+ </div>
698
+ }
699
+
700
+ <ng-template #addon>
701
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
702
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
703
+ } @else if (accordion['state'].addon() === 'number' && number()) {
704
+ <span class="df-accordion-number">{{ number() }}.</span>
705
+ }
706
+ </ng-template>
707
+
708
+ <ng-template #toggleBtn>
709
+ <button
710
+ [disabled]="state.disabled()"
711
+ [dfUse]="directives.toggleDirective"
712
+ dfIconButton
713
+ appearance="text"
714
+ transparent
715
+ [attr.aria-label]="accordion['state'].ariaToggleButtonLabel()"
716
+ class="df-accordion-toggle fal fa-chevron-down {{
717
+ accordion['state'].arrowPosition() === 'start' ? ' df-accordion-toggle-left' : ' df-accordion-toggle-right'
718
+ }}"
719
+ ></button>
720
+ </ng-template>
721
+ `, styles: [".df-accordion .df-accordion-interactive-header{display:flex;align-items:center;padding:var(--df-spacing-3) var(--df-spacing-5)}.df-accordion .df-accordion-interactive-header.df-disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion .df-accordion-interactive-content{display:flex;flex-grow:1;align-items:center;justify-content:space-between}.df-accordion .df-accordion-interactive-inner{font-weight:var(--df-typo-weight-bold);display:flex;align-items:center}.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block){display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block)>.df-accordion-title-block,.df-accordion .df-accordion-interactive-inner:has(>.df-accordion-subtitle-block)>.df-accordion-subtitle-block{grid-column:2}.df-accordion .df-accordion-toggle-right{margin-inline-start:var(--df-spacing-3)}.df-accordion .df-accordion-toggle:before{transition:transform .35s ease-in-out}@media(prefers-reduced-motion:reduce){.df-accordion .df-accordion-toggle:before{transition:none}}.df-accordion .df-accordion-toggle:not(.df-collapsed):before{transform:rotate(-180deg)}.df-accordion .form-check.form-switch{display:flex;align-items:center;min-height:calc(var(--df-typo-sizing-default) * 1.5);margin-bottom:0;padding-inline-start:0}.df-accordion .form-switch .form-check-input[type=checkbox]{flex-shrink:0;width:3em;height:1.5em;margin:0;vertical-align:top;appearance:none;background-color:var(--df-color-neutral-alt-default-background);background-image:none;border:.09375rem solid var(--df-color-toggle-border);border-radius:.75em;-webkit-print-color-adjust:exact;print-color-adjust:exact;cursor:pointer;position:relative;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.df-accordion .form-switch .form-check-input[type=checkbox]:after{content:\"\";position:absolute;inset:0;background-color:var(--df-color-toggle-background);-webkit-mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='black'/></svg>\");mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='black'/></svg>\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:left center;mask-position:left center;transition:mask-position .15s ease-in-out}.df-accordion .form-switch .form-check-input[type=checkbox]:checked{background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:checked:focus-visible{box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-primary-main-default-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:checked:after{-webkit-mask-position:right center;mask-position:right center;background-color:var(--df-color-primary-main-default-foreground)}.df-accordion .form-switch .form-check-input[type=checkbox]:focus{border-color:var(--df-color-input-border);outline:0;box-shadow:none}.df-accordion .form-switch .form-check-input[type=checkbox]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-toggle-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:focus-visible:not(:checked,:disabled,.is-invalid,.ng-invalid.ng-touched){--df-box-shadow-color: var(--df-color-toggle-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:active{filter:none}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled{pointer-events:none;cursor:not-allowed;border-color:var(--df-color-disabled-main-border)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:checked{background-color:var(--df-color-disabled-alt-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:checked:after{background-color:var(--df-color-disabled-main-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:not(:checked){background-color:var(--df-color-disabled-main-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled:not(:checked):after{background-color:var(--df-color-disabled-alt-background)}.df-accordion .form-switch .form-check-input[type=checkbox]:disabled~.form-check-label{color:var(--df-color-inert-neutral-main-foreground);cursor:default}.df-accordion .form-switch .df-switch-success:checked:not(:disabled){background-color:var(--df-color-success-main-default-background);border-color:var(--df-color-success-main-default-border)}.df-accordion .form-switch .df-switch-success.form-check-input:focus-visible{box-shadow:0 0 0 2px var(--df-body-bg),0 0 0 4px var(--df-color-success-main-default-border)}.df-accordion .form-switch .df-switch-primary:checked:not(:disabled){background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border)}.df-accordion .form-switch .df-switch-primary.form-check-input:focus-visible{box-shadow:0 0 0 2px red,0 0 0 4px green}.df-accordion .form-switch .form-check-label{color:var(--df-color-neutral-alt-default-foreground);cursor:pointer;padding-inline-start:var(--df-spacing-3);font-weight:var(--df-typo-weight-medium)}.df-accordion .form-switch .df-form-switch-name{font-weight:var(--df-typo-weight-medium);padding-inline-start:0}.df-accordion .form-switch .df-form-switch-name.df-form-switch-name-disabled{color:var(--df-color-inert-neutral-main-foreground);cursor:not-allowed}.df-accordion .form-switch .df-form-switch-name .df-form-switch-container{display:flex;align-items:center;margin-top:var(--df-spacing-3)}\n"] }]
722
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], destroyOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "destroyOnHide", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], shown: [{ type: i0.Output, args: ["shown"] }], hidden: [{ type: i0.Output, args: ["hidden"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], number: [{ type: i0.Input, args: [{ isSignal: true, alias: "number", required: false }] }], title: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemTitle), { ...{ read: TemplateRef }, isSignal: true }] }], interactiveSection: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemInteractiveSection), { ...{
723
+ read: TemplateRef
724
+ }, isSignal: true }] }], body: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemBody), { ...{ read: TemplateRef }, isSignal: true }] }] } });
725
+
726
+ /**
727
+ * A selectable accordion is a vertically stacked list of headers with built-in radio inputs,
728
+ * following the radio-group pattern. Expanding an item selects it.
729
+ *
730
+ * Each header and content section is a selectable accordion-item.
731
+ *
732
+ * This component is a container for these items and provides an API to handle them.
733
+ * It always enforces `closeOthers` behavior (only one item open at a time)
734
+ * and uses `role="radiogroup"` for accessibility.
735
+ *
736
+ * @since 22.0.0
737
+ */
738
+ class DfAccordionSelectable extends DfAccordionBase {
739
+ constructor() {
740
+ super();
741
+ /**
742
+ * The id of the accordion. Used to derive the radio group name for selectable items.
743
+ */
744
+ this.id = input(/* @ts-ignore */
745
+ ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
746
+ /**
747
+ * Accessible label for the radiogroup.
748
+ * Use when there is no visible heading that can be referenced by `ariaLabelledBy`.
749
+ */
750
+ this.ariaLabel = input(/* @ts-ignore */
751
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
752
+ /**
753
+ * ID of an element that labels this radiogroup.
754
+ * Preferred over `ariaLabel` when a visible heading exists.
755
+ */
756
+ this.ariaLabelledBy = input(/* @ts-ignore */
757
+ ...(ngDevMode ? [undefined, { debugName: "ariaLabelledBy" }] : /* istanbul ignore next */ []));
758
+ this._agnosWidget.patch({ selectable: true });
759
+ }
760
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionSelectable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
761
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfAccordionSelectable, isStandalone: true, selector: "df-accordion-selectable", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledBy: { classPropertyName: "ariaLabelledBy", publicName: "ariaLabelledBy", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: `
762
+ <div
763
+ [dfUse]="directives.accordionDirective"
764
+ class="df-accordion df-accordion-selectable {{ state.accordionClassName() }}"
765
+ role="radiogroup"
766
+ [attr.aria-label]="ariaLabel() || null"
767
+ [attr.aria-labelledby]="ariaLabelledBy() || null"
768
+ >
769
+ <ng-content />
770
+ </div>
771
+ `, isInline: true, styles: [".df-accordion .df-collapse-hide{display:none}.df-accordion .df-collapse-show{display:block}.df-accordion .df-collapse-collapsing{display:block;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-accordion .df-collapse-collapsing{transition:none}}.df-accordion .df-accordion-item{display:block;color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:1px solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item:first-of-type>.df-accordion-header .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:not(:first-of-type){border-top:0}.df-accordion .df-accordion-item:last-of-type{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.df-collapsed{border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item .df-accordion-header{margin-bottom:0}.df-accordion .df-accordion-item .df-accordion-icon{margin-inline-end:var(--df-spacing-3)}.df-accordion .df-accordion-item .df-accordion-number{margin-inline-end:var(--df-spacing-1);color:var(--df-color-neutral-alt-default-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item :is(.df-accordion-title-block,.df-accordion-title-inline){text-align:start}.df-accordion .df-accordion-item .df-accordion-title-block{margin-bottom:var(--df-spacing-2)}.df-accordion .df-accordion-item .df-accordion-title-inline{flex-grow:1}.df-accordion .df-accordion-item .df-accordion-subtitle-block{text-align:start}.df-accordion .df-accordion-item :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-subtext-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item .df-accordion-subtitle-inline{margin-inline-end:var(--df-spacing-5)}.df-accordion .df-accordion-item .df-accordion-button:has(>.df-accordion-toggle-left) .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion .df-accordion-item .df-accordion-body{padding:var(--df-spacing-5)}.df-accordion .df-accordion-toggle-left{margin-inline-end:var(--df-spacing-3)}.df-accordion.df-accordion-separator .df-accordion-button:not(.df-collapsed){border-bottom-width:1px}.df-accordion .df-accordion-button{padding-block:.75rem;font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-default)}.df-accordion .df-accordion-body{font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-medium);border-top-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion.df-accordion-sm .df-accordion-button{padding-block:.65625rem;font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-body{font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-small);border-top-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-lg .df-accordion-button{padding-block:.84375rem;font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-body{font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-large);border-top-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}\n"], dependencies: [{ kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }], encapsulation: i0.ViewEncapsulation.None }); }
772
+ }
773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionSelectable, decorators: [{
774
+ type: Component,
775
+ args: [{ selector: 'df-accordion-selectable', imports: [UseDirective], encapsulation: ViewEncapsulation.None, template: `
776
+ <div
777
+ [dfUse]="directives.accordionDirective"
778
+ class="df-accordion df-accordion-selectable {{ state.accordionClassName() }}"
779
+ role="radiogroup"
780
+ [attr.aria-label]="ariaLabel() || null"
781
+ [attr.aria-labelledby]="ariaLabelledBy() || null"
782
+ >
783
+ <ng-content />
784
+ </div>
785
+ `, styles: [".df-accordion .df-collapse-hide{display:none}.df-accordion .df-collapse-show{display:block}.df-accordion .df-collapse-collapsing{display:block;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-accordion .df-collapse-collapsing{transition:none}}.df-accordion .df-accordion-item{display:block;color:var(--df-color-neutral-alt-default-foreground);background-color:var(--df-color-neutral-alt-default-background);border:1px solid var(--df-color-inert-neutral-main-border)}.df-accordion .df-accordion-item:first-of-type>.df-accordion-header .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:not(:first-of-type){border-top:0}.df-accordion .df-accordion-item:last-of-type{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.df-collapsed{border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-right-radius:var(--df-borderRadius-main-medium);border-bottom-left-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item .df-accordion-header{margin-bottom:0}.df-accordion .df-accordion-item .df-accordion-icon{margin-inline-end:var(--df-spacing-3)}.df-accordion .df-accordion-item .df-accordion-number{margin-inline-end:var(--df-spacing-1);color:var(--df-color-neutral-alt-default-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item :is(.df-accordion-title-block,.df-accordion-title-inline){text-align:start}.df-accordion .df-accordion-item .df-accordion-title-block{margin-bottom:var(--df-spacing-2)}.df-accordion .df-accordion-item .df-accordion-title-inline{flex-grow:1}.df-accordion .df-accordion-item .df-accordion-subtitle-block{text-align:start}.df-accordion .df-accordion-item :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-subtext-foreground);font-weight:var(--df-typo-weight-regular)}.df-accordion .df-accordion-item .df-accordion-subtitle-inline{margin-inline-end:var(--df-spacing-5)}.df-accordion .df-accordion-item .df-accordion-button:has(>.df-accordion-toggle-left) .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion .df-accordion-item .df-accordion-body{padding:var(--df-spacing-5)}.df-accordion .df-accordion-toggle-left{margin-inline-end:var(--df-spacing-3)}.df-accordion.df-accordion-separator .df-accordion-button:not(.df-collapsed){border-bottom-width:1px}.df-accordion .df-accordion-button{padding-block:.75rem;font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-default)}.df-accordion .df-accordion-body{font-size:var(--df-typo-sizing-default)}.df-accordion .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-medium);border-top-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-medium);border-bottom-right-radius:var(--df-borderRadius-main-medium)}.df-accordion.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-medium) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-medium) - 1px)}.df-accordion.df-accordion-sm .df-accordion-button{padding-block:.65625rem;font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-body{font-size:var(--df-typo-sizing-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-small);border-top-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-sm .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-small);border-bottom-right-radius:var(--df-borderRadius-main-small)}.df-accordion.df-accordion-sm.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-small) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-small) - 1px)}.df-accordion.df-accordion-lg .df-accordion-button{padding-block:.84375rem;font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-button>.df-accordion-chevron{font-size:var(--df-icons-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-body{font-size:var(--df-typo-sizing-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type{border-top-left-radius:var(--df-borderRadius-main-large);border-top-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:first-of-type .df-accordion-button{border-top-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-top-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-header .df-accordion-button.collapsed{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}.df-accordion.df-accordion-lg .df-accordion-item:last-of-type>.df-accordion-collapse{border-bottom-left-radius:var(--df-borderRadius-main-large);border-bottom-right-radius:var(--df-borderRadius-main-large)}.df-accordion.df-accordion-lg.df-accordion-radio .df-accordion-item:last-of-type>.df-accordion-header.collapsed>.df-accordion-button{border-bottom-left-radius:calc(var(--df-borderRadius-main-large) - 1px);border-bottom-right-radius:calc(var(--df-borderRadius-main-large) - 1px)}\n"] }]
786
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], ariaLabelledBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabelledBy", required: false }] }] } });
787
+
788
+ /**
789
+ * A directive to define a template containing a subsection element inside the selectable accordion item header.
790
+ * @since 22.0.0
791
+ */
792
+ class DfAccordionItemSelectableSubsection {
793
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemSelectableSubsection, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
794
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfAccordionItemSelectableSubsection, isStandalone: true, selector: "ng-template[dfAccordionItemSelectableSubsection]", ngImport: i0 }); }
795
+ }
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemSelectableSubsection, decorators: [{
797
+ type: Directive,
798
+ args: [{
799
+ selector: 'ng-template[dfAccordionItemSelectableSubsection]'
800
+ }]
801
+ }] });
802
+ /**
803
+ * An accordion item with a built-in radio input in the header.
804
+ * Implements {@link ControlValueAccessor} so it can be used with `formControlName` or `ngModel`.
805
+ * All selectable items sharing the same form control act as a radio group:
806
+ * expanding an item selects its {@link DfAccordionItemSelectable#value | value}.
807
+ *
808
+ * As its content, it accepts two directives:
809
+ * - `dfAccordionItemTitle`: to define the title of the accordion item.
810
+ * - `dfAccordionItemBody`: to define the body content of the accordion item.
811
+ *
812
+ * Optionally:
813
+ * - `dfAccordionItemSelectableSubsection`: to define a subsection element inside the header.
814
+ * @since 22.0.0
815
+ */
816
+ class DfAccordionItemSelectable extends AgnosWidgetDirective {
817
+ constructor() {
818
+ super(callWidgetFactory((arg) => this.accordion['api'].registerItem(arg), {
819
+ events: {
820
+ onVisibleChange: (visible) => {
821
+ this.visibleChange.emit(visible);
822
+ if (visible) {
823
+ this.onChange(this.value());
824
+ this.onTouched();
825
+ }
826
+ },
827
+ onHidden: () => this.hidden.emit(),
828
+ onShown: () => this.shown.emit()
829
+ },
830
+ afterInit: (widget) => {
831
+ useDirectiveForHost(widget.directives.itemDirective);
832
+ }
833
+ }));
834
+ /**
835
+ * The id of the accordion-item. It can be used for controlling the accordion-item via the accordion api.
836
+ *
837
+ * @defaultValue `'dfId-[number]'`
838
+ */
839
+ this.id = input(/* @ts-ignore */
840
+ ...(ngDevMode ? [undefined, { debugName: "id" }] : /* istanbul ignore next */ []));
841
+ /**
842
+ * If `true`, the accordion-item body container will be removed from the DOM when the accordion-item is collapsed. It will be just hidden otherwise.
843
+ *
844
+ * @defaultValue `true`
845
+ */
846
+ this.destroyOnHide = input(undefined, { ...(ngDevMode ? { debugName: "destroyOnHide" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
847
+ /**
848
+ * If `true`, the accordion-item will be visible (expanded). Otherwise, it will be hidden (collapsed).
849
+ *
850
+ * @defaultValue `false`
851
+ */
852
+ this.visible = input(undefined, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: auBooleanAttribute });
853
+ /**
854
+ * The value this item represents in the radio group.
855
+ * When the item is expanded, this value is emitted to the form control.
856
+ */
857
+ this.value = input(/* @ts-ignore */
858
+ ...(ngDevMode ? [undefined, { debugName: "value" }] : /* istanbul ignore next */ []));
859
+ /**
860
+ * An event fired when an item is shown.
861
+ */
862
+ this.shown = output();
863
+ /**
864
+ * An event fired when an item is hidden.
865
+ */
866
+ this.hidden = output();
867
+ /**
868
+ * An event fired when the `visible` value changes.
869
+ *
870
+ * Event payload is the new value of visible.
871
+ */
872
+ this.visibleChange = output();
873
+ /**
874
+ * Optional input only valid if the accordion's subtitleType is 'inline' or 'block' to set custom subtitle.
875
+ */
876
+ this.subtitle = input(/* @ts-ignore */
877
+ ...(ngDevMode ? [undefined, { debugName: "subtitle" }] : /* istanbul ignore next */ []));
878
+ /**
879
+ * Optional input only valid for Icon variant to set custom icon class.
880
+ */
881
+ this.iconClass = input(/* @ts-ignore */
882
+ ...(ngDevMode ? [undefined, { debugName: "iconClass" }] : /* istanbul ignore next */ []));
883
+ /**
884
+ * Optional input only valid for addon number variant to set the number.
885
+ */
886
+ this.number = input('', /* @ts-ignore */
887
+ ...(ngDevMode ? [{ debugName: "number" }] : /* istanbul ignore next */ []));
888
+ /**
889
+ * In case of subtitle, defines how the subtitle is displayed.
890
+ * Only valid for 'default' and 'card'.
891
+ * On a card variant, subtitle is always displayed as inline.
892
+ */
893
+ this.subtitleType = input(/* @ts-ignore */
894
+ ...(ngDevMode ? [undefined, { debugName: "subtitleType" }] : /* istanbul ignore next */ []));
895
+ this.title = contentChild(DfAccordionItemTitle, { ...(ngDevMode ? { debugName: "title" } : /* istanbul ignore next */ {}), read: TemplateRef });
896
+ this.body = contentChild(DfAccordionItemBody, { ...(ngDevMode ? { debugName: "body" } : /* istanbul ignore next */ {}), read: TemplateRef });
897
+ this.subsection = contentChild(DfAccordionItemSelectableSubsection, { ...(ngDevMode ? { debugName: "subsection" } : /* istanbul ignore next */ {}), read: TemplateRef });
898
+ this.accordion = inject(DfAccordionSelectable);
899
+ this.subtitleComputed = computed(() => {
900
+ return this.subtitleType() ?? this.accordion['state'].subtitleType();
901
+ }, /* @ts-ignore */
902
+ ...(ngDevMode ? [{ debugName: "subtitleComputed" }] : /* istanbul ignore next */ []));
903
+ this.onChange = () => { };
904
+ this.onTouched = () => { };
905
+ afterNextRender(() => {
906
+ this.api.initDone();
907
+ });
908
+ }
909
+ /** @internal */
910
+ writeValue(val) {
911
+ if (val === this.value()) {
912
+ this._agnosWidget.patch({ visible: true });
913
+ }
914
+ }
915
+ /** @internal */
916
+ registerOnChange(fn) {
917
+ this.onChange = fn;
918
+ }
919
+ /** @internal */
920
+ registerOnTouched(fn) {
921
+ this.onTouched = fn;
922
+ }
923
+ /** @internal */
924
+ setDisabledState(isDisabled) {
925
+ this._agnosWidget.patch({ disabled: isDisabled });
926
+ }
927
+ /**
928
+ * Toggles the item.
929
+ *
930
+ * It will toggle the item, even if it is disabled.
931
+ */
932
+ async toggle() {
933
+ await this.api.toggle();
934
+ }
935
+ /**
936
+ * Expands the item.
937
+ *
938
+ * Since the parent accordion has closeOthers, it will collapse other panels.
939
+ */
940
+ async expand() {
941
+ await this.api.expand();
942
+ }
943
+ /**
944
+ * Collapses the item.
945
+ */
946
+ async collapse() {
947
+ await this.api.collapse();
948
+ }
949
+ /**
950
+ * Checks if the item is expanded.
951
+ */
952
+ isExpanded() {
953
+ return this.state.visible();
954
+ }
955
+ /** Expand the item when the label is clicked (expand-only, no toggle). */
956
+ onLabelClick(event) {
957
+ event.preventDefault();
958
+ if (!this.state.disabled()) {
959
+ void this.api.expand();
960
+ }
961
+ }
962
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemSelectable, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
963
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfAccordionItemSelectable, isStandalone: true, selector: "df-accordion-item-selectable", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, destroyOnHide: { classPropertyName: "destroyOnHide", publicName: "destroyOnHide", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, subtitle: { classPropertyName: "subtitle", publicName: "subtitle", isSignal: true, isRequired: false, transformFunction: null }, iconClass: { classPropertyName: "iconClass", publicName: "iconClass", isSignal: true, isRequired: false, transformFunction: null }, number: { classPropertyName: "number", publicName: "number", isSignal: true, isRequired: false, transformFunction: null }, subtitleType: { classPropertyName: "subtitleType", publicName: "subtitleType", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { shown: "shown", hidden: "hidden", visibleChange: "visibleChange" }, host: { properties: { "id": "[state.id()]" }, classAttribute: "df-accordion-item" }, providers: [
964
+ {
965
+ provide: NG_VALUE_ACCESSOR,
966
+ useExisting: forwardRef(() => DfAccordionItemSelectable),
967
+ multi: true
968
+ }
969
+ ], queries: [{ propertyName: "title", first: true, predicate: DfAccordionItemTitle, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "body", first: true, predicate: DfAccordionItemBody, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "subsection", first: true, predicate: DfAccordionItemSelectableSubsection, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
970
+ <div
971
+ [attr.aria-level]="accordion['state'].itemHeadingLevel()"
972
+ [dfUse]="directives.headerDirective"
973
+ class="df-accordion-header"
974
+ role="heading"
975
+ >
976
+ <label
977
+ class="df-accordion-button"
978
+ [class.df-collapsed]="!state.visible()"
979
+ [class.df-disabled]="state.disabled()"
980
+ [for]="state.id() + '-input'"
981
+ [id]="state.id() + '-toggle'"
982
+ >
983
+ <div class="df-accordion-title-container">
984
+ <input
985
+ type="radio"
986
+ (click)="onLabelClick($event)"
987
+ [name]="accordion['state'].id() + '-radio'"
988
+ [value]="value()"
989
+ [checked]="state.visible()"
990
+ [attr.disabled]="state.disabled() || null"
991
+ [id]="state.id() + '-input'"
992
+ />
993
+
994
+ @let computedSubtitle = subtitleComputed();
995
+ @if (computedSubtitle === 'block' && subtitle()) {
996
+ <div class="df-accordion-title-block-wrapper">
997
+ <ng-template [ngTemplateOutlet]="addon" />
998
+ <div class="df-accordion-title-block">
999
+ <ng-template [ngTemplateOutlet]="title()" />
1000
+ </div>
1001
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
1002
+ </div>
1003
+ } @else if (computedSubtitle === 'inline' && subtitle()) {
1004
+ <ng-template [ngTemplateOutlet]="addon" />
1005
+ <div class="df-accordion-title-inline">
1006
+ <ng-template [ngTemplateOutlet]="title()" />
1007
+ </div>
1008
+ <div class="df-accordion-subtitle-inline">{{ subtitle() }}</div>
1009
+ } @else {
1010
+ <ng-template [ngTemplateOutlet]="addon" />
1011
+ <ng-template [ngTemplateOutlet]="title()" />
1012
+ }
1013
+ </div>
1014
+ @if (subsection()) {
1015
+ <ng-template [ngTemplateOutlet]="subsection()" />
1016
+ }
1017
+ </label>
1018
+ </div>
1019
+ @if (state.shouldBeInDOM()) {
1020
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
1021
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
1022
+ <ng-template [ngTemplateOutlet]="body()" />
1023
+ </div>
1024
+ </div>
1025
+ }
1026
+
1027
+ <ng-template #addon>
1028
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
1029
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
1030
+ } @else if (accordion['state'].addon() === 'number' && number()) {
1031
+ <span class="df-accordion-number">{{ number() }}.</span>
1032
+ }
1033
+ </ng-template>
1034
+ `, isInline: true, styles: [".df-accordion.df-accordion-selectable input[type=radio]{flex-shrink:0;width:1em;height:1em;margin:0;margin-inline-end:var(--df-spacing-3);vertical-align:top;appearance:none;background-color:var(--df-color-neutral-alt-default-background);border:2px solid var(--df-color-input-border);border-radius:50%;-webkit-print-color-adjust:exact;print-color-adjust:exact;cursor:pointer}.df-accordion.df-accordion-selectable input[type=radio]:checked{background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border);background-image:none;position:relative}.df-accordion.df-accordion-selectable input[type=radio]:checked:after{content:\"\";position:absolute;inset:0;background-color:var(--df-color-neutral-alt-default-background);background-image:none;-webkit-mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2.5' fill='black'/></svg>\");mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2.5' fill='black'/></svg>\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.df-accordion.df-accordion-selectable input[type=radio]:focus{outline:0;box-shadow:none}.df-accordion.df-accordion-selectable input[type=radio]:disabled{pointer-events:auto;cursor:not-allowed;border-color:var(--df-color-disabled-main-border);background-color:var(--df-color-disabled-main-background)}.df-accordion.df-accordion-selectable input[type=radio]:disabled:checked{background-color:var(--df-color-disabled-alt-background)}.df-accordion.df-accordion-selectable input[type=radio]:disabled:checked:after{background-color:var(--df-color-neutral-alt-default-background)}.df-accordion.df-accordion-selectable .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion.df-accordion-selectable .df-accordion-button{width:auto;display:block;padding-inline:var(--df-spacing-5)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked):hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked){background-color:var(--df-color-primary-alt-active-background);color:var(--df-color-neutral-alt-active-foreground);--df-inner-box-shadow-color: var(--df-color-primary-alt-active-background)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked) :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-active-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:hover :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button.df-disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-container{font-weight:var(--df-typo-weight-bold);display:flex;align-items:center;flex-grow:1}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper{display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper>.df-accordion-title-block,.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper>.df-accordion-subtitle-block{grid-column:2}.df-accordion.df-accordion-selectable .df-accordion-button:has(:focus-visible){outline:none;box-shadow:inset 0 0 0 2px var(--df-inner-box-shadow-color),inset 0 0 0 4px var(--df-color-neutral-alt-default-foreground)}\n"], dependencies: [{ kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], encapsulation: i0.ViewEncapsulation.None }); }
1035
+ }
1036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfAccordionItemSelectable, decorators: [{
1037
+ type: Component,
1038
+ args: [{ selector: 'df-accordion-item-selectable', host: {
1039
+ class: 'df-accordion-item',
1040
+ '[id]': '[state.id()]'
1041
+ }, imports: [UseDirective, NgTemplateOutlet], encapsulation: ViewEncapsulation.None, providers: [
1042
+ {
1043
+ provide: NG_VALUE_ACCESSOR,
1044
+ useExisting: forwardRef(() => DfAccordionItemSelectable),
1045
+ multi: true
1046
+ }
1047
+ ], template: `
1048
+ <div
1049
+ [attr.aria-level]="accordion['state'].itemHeadingLevel()"
1050
+ [dfUse]="directives.headerDirective"
1051
+ class="df-accordion-header"
1052
+ role="heading"
1053
+ >
1054
+ <label
1055
+ class="df-accordion-button"
1056
+ [class.df-collapsed]="!state.visible()"
1057
+ [class.df-disabled]="state.disabled()"
1058
+ [for]="state.id() + '-input'"
1059
+ [id]="state.id() + '-toggle'"
1060
+ >
1061
+ <div class="df-accordion-title-container">
1062
+ <input
1063
+ type="radio"
1064
+ (click)="onLabelClick($event)"
1065
+ [name]="accordion['state'].id() + '-radio'"
1066
+ [value]="value()"
1067
+ [checked]="state.visible()"
1068
+ [attr.disabled]="state.disabled() || null"
1069
+ [id]="state.id() + '-input'"
1070
+ />
1071
+
1072
+ @let computedSubtitle = subtitleComputed();
1073
+ @if (computedSubtitle === 'block' && subtitle()) {
1074
+ <div class="df-accordion-title-block-wrapper">
1075
+ <ng-template [ngTemplateOutlet]="addon" />
1076
+ <div class="df-accordion-title-block">
1077
+ <ng-template [ngTemplateOutlet]="title()" />
1078
+ </div>
1079
+ <div class="df-accordion-subtitle-block">{{ subtitle() }}</div>
1080
+ </div>
1081
+ } @else if (computedSubtitle === 'inline' && subtitle()) {
1082
+ <ng-template [ngTemplateOutlet]="addon" />
1083
+ <div class="df-accordion-title-inline">
1084
+ <ng-template [ngTemplateOutlet]="title()" />
1085
+ </div>
1086
+ <div class="df-accordion-subtitle-inline">{{ subtitle() }}</div>
1087
+ } @else {
1088
+ <ng-template [ngTemplateOutlet]="addon" />
1089
+ <ng-template [ngTemplateOutlet]="title()" />
1090
+ }
1091
+ </div>
1092
+ @if (subsection()) {
1093
+ <ng-template [ngTemplateOutlet]="subsection()" />
1094
+ }
1095
+ </label>
1096
+ </div>
1097
+ @if (state.shouldBeInDOM()) {
1098
+ <div [dfUse]="directives.bodyContainerDirective" class="df-accordion-collapse">
1099
+ <div class="df-accordion-body" [dfUse]="directives.bodyDirective">
1100
+ <ng-template [ngTemplateOutlet]="body()" />
1101
+ </div>
1102
+ </div>
1103
+ }
1104
+
1105
+ <ng-template #addon>
1106
+ @if (accordion['state'].addon() === 'icon' && iconClass()) {
1107
+ <span class="{{ iconClass() }} df-accordion-icon"></span>
1108
+ } @else if (accordion['state'].addon() === 'number' && number()) {
1109
+ <span class="df-accordion-number">{{ number() }}.</span>
1110
+ }
1111
+ </ng-template>
1112
+ `, styles: [".df-accordion.df-accordion-selectable input[type=radio]{flex-shrink:0;width:1em;height:1em;margin:0;margin-inline-end:var(--df-spacing-3);vertical-align:top;appearance:none;background-color:var(--df-color-neutral-alt-default-background);border:2px solid var(--df-color-input-border);border-radius:50%;-webkit-print-color-adjust:exact;print-color-adjust:exact;cursor:pointer}.df-accordion.df-accordion-selectable input[type=radio]:checked{background-color:var(--df-color-primary-main-default-background);border-color:var(--df-color-primary-main-default-border);background-image:none;position:relative}.df-accordion.df-accordion-selectable input[type=radio]:checked:after{content:\"\";position:absolute;inset:0;background-color:var(--df-color-neutral-alt-default-background);background-image:none;-webkit-mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2.5' fill='black'/></svg>\");mask-image:url(\"data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='2.5' fill='black'/></svg>\");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain}.df-accordion.df-accordion-selectable input[type=radio]:focus{outline:0;box-shadow:none}.df-accordion.df-accordion-selectable input[type=radio]:disabled{pointer-events:auto;cursor:not-allowed;border-color:var(--df-color-disabled-main-border);background-color:var(--df-color-disabled-main-background)}.df-accordion.df-accordion-selectable input[type=radio]:disabled:checked{background-color:var(--df-color-disabled-alt-background)}.df-accordion.df-accordion-selectable input[type=radio]:disabled:checked:after{background-color:var(--df-color-neutral-alt-default-background)}.df-accordion.df-accordion-selectable .df-accordion-subtitle-inline{margin-inline-end:0}.df-accordion.df-accordion-selectable .df-accordion-button{width:auto;display:block;padding-inline:var(--df-spacing-5)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked):hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked){background-color:var(--df-color-primary-alt-active-background);color:var(--df-color-neutral-alt-active-foreground);--df-inner-box-shadow-color: var(--df-color-primary-alt-active-background)}.df-accordion.df-accordion-selectable .df-accordion-button:has(input[type=radio]:checked) :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-active-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:hover{cursor:pointer;--df-inner-box-shadow-color: var(--df-color-primary-alt-hovered-background);background-color:var(--df-color-primary-alt-hovered-background);color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button:hover :is(.df-accordion-subtitle-block,.df-accordion-subtitle-inline){color:var(--df-color-neutral-alt-hovered-foreground)}.df-accordion.df-accordion-selectable .df-accordion-button.df-disabled{cursor:not-allowed;color:var(--df-color-disabled-main-foreground);background-color:var(--df-color-disabled-main-background)}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-container{font-weight:var(--df-typo-weight-bold);display:flex;align-items:center;flex-grow:1}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper{display:grid;grid-template-columns:auto 1fr;align-items:center}.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper>.df-accordion-title-block,.df-accordion.df-accordion-selectable .df-accordion-button .df-accordion-title-block-wrapper>.df-accordion-subtitle-block{grid-column:2}.df-accordion.df-accordion-selectable .df-accordion-button:has(:focus-visible){outline:none;box-shadow:inset 0 0 0 2px var(--df-inner-box-shadow-color),inset 0 0 0 4px var(--df-color-neutral-alt-default-foreground)}\n"] }]
1113
+ }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], destroyOnHide: [{ type: i0.Input, args: [{ isSignal: true, alias: "destroyOnHide", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], shown: [{ type: i0.Output, args: ["shown"] }], hidden: [{ type: i0.Output, args: ["hidden"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], subtitle: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitle", required: false }] }], iconClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClass", required: false }] }], number: [{ type: i0.Input, args: [{ isSignal: true, alias: "number", required: false }] }], subtitleType: [{ type: i0.Input, args: [{ isSignal: true, alias: "subtitleType", required: false }] }], title: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemTitle), { ...{ read: TemplateRef }, isSignal: true }] }], body: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemBody), { ...{ read: TemplateRef }, isSignal: true }] }], subsection: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfAccordionItemSelectableSubsection), { ...{ read: TemplateRef }, isSignal: true }] }] } });
1114
+
1115
+ // the key of the accordion config in the global DF config
1116
+ const ACCORDION_CONFIG_KEY = 'accordion';
1117
+ /**
1118
+ * Provides the configuration for the accordion component.
1119
+ *
1120
+ * @example
1121
+ * ```ts
1122
+ * @Component({
1123
+ * providers: [provideDfAccordionConfig({ animated: false })]
1124
+ * })
1125
+ * export class MyHomeComponent {}
1126
+ * ```
1127
+ *
1128
+ * @param config - Partial configuration or a function that receives the parent configuration and returns a partial configuration.
1129
+ */
1130
+ const provideDfAccordionConfig = provideDfComponentConfig(ACCORDION_CONFIG_KEY);
1131
+ /**
1132
+ * Injects the configuration for the accordion component.
1133
+ *
1134
+ * @example
1135
+ * ```ts
1136
+ * @Component({
1137
+ * providers: [provideDfAccordionConfig()]
1138
+ * })
1139
+ * export class MyAccordionComponent {
1140
+ * readonly accordionConfig = injectDfAccordionConfig();
1141
+ * }
1142
+ * ```
1143
+ *
1144
+ * @returns A writable signal containing the accordion configuration.
1145
+ */
1146
+ const injectDfAccordionConfig = injectDfComponentConfig(ACCORDION_CONFIG_KEY);
1147
+
1148
+ /**
1149
+ * Generated bundle index. Do not edit.
1150
+ */
1151
+
1152
+ export { ACCORDION_CONFIG_KEY, DfAccordion, DfAccordionItem, DfAccordionItemBody, DfAccordionItemInteractive, DfAccordionItemInteractiveSection, DfAccordionItemSelectable, DfAccordionItemSelectableSubsection, DfAccordionItemTitle, DfAccordionSelectable, injectDfAccordionConfig, provideDfAccordionConfig };
1153
+ //# sourceMappingURL=design-factory-angular-accordion.mjs.map