@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
package/package.json CHANGED
@@ -2,17 +2,17 @@
2
2
  "name": "@design-factory/angular",
3
3
  "description": "Amadeus design system Angular implementation",
4
4
  "license": "BSD-3-Clause",
5
- "version": "21.1.0",
5
+ "version": "22.0.0-next.0",
6
6
  "dependencies": {
7
- "@design-factory/core": "21.1.0",
7
+ "@design-factory/core": "22.0.0-next.0",
8
8
  "tslib": "^2.0.0"
9
9
  },
10
10
  "peerDependencies": {
11
- "@angular/common": "^21.0.0",
12
- "@angular/core": "^21.0.0",
13
- "@angular/localize": "^21.0.0",
14
- "@angular/router": "^21.0.0",
15
- "@design-factory/styles": "21.1.0",
11
+ "@angular/common": "^22.0.0",
12
+ "@angular/core": "^22.0.0",
13
+ "@angular/localize": "^22.0.0",
14
+ "@angular/router": "^22.0.0",
15
+ "@design-factory/styles": "22.0.0-next.0",
16
16
  "@amadeus-it-group/tansu": "^2.0.0",
17
17
  "@floating-ui/dom": "^1.6.12",
18
18
  "embla-carousel": "^8.5.2",
@@ -43,26 +43,79 @@
43
43
  "types": "./types/design-factory-angular.d.ts",
44
44
  "default": "./fesm2022/design-factory-angular.mjs"
45
45
  },
46
+ "./accordion": {
47
+ "types": "./types/design-factory-angular-accordion.d.ts",
48
+ "default": "./fesm2022/design-factory-angular-accordion.mjs"
49
+ },
50
+ "./alert": {
51
+ "types": "./types/design-factory-angular-alert.d.ts",
52
+ "default": "./fesm2022/design-factory-angular-alert.mjs"
53
+ },
54
+ "./breakpoints": {
55
+ "types": "./types/design-factory-angular-breakpoints.d.ts",
56
+ "default": "./fesm2022/design-factory-angular-breakpoints.mjs"
57
+ },
58
+ "./button": {
59
+ "types": "./types/design-factory-angular-button.d.ts",
60
+ "default": "./fesm2022/design-factory-angular-button.mjs"
61
+ },
62
+ "./buttongroup": {
63
+ "types": "./types/design-factory-angular-buttongroup.d.ts",
64
+ "default": "./fesm2022/design-factory-angular-buttongroup.mjs"
65
+ },
46
66
  "./drawer": {
47
67
  "types": "./types/design-factory-angular-drawer.d.ts",
48
68
  "default": "./fesm2022/design-factory-angular-drawer.mjs"
49
69
  },
70
+ "./dropdown": {
71
+ "types": "./types/design-factory-angular-dropdown.d.ts",
72
+ "default": "./fesm2022/design-factory-angular-dropdown.mjs"
73
+ },
74
+ "./form-field": {
75
+ "types": "./types/design-factory-angular-form-field.d.ts",
76
+ "default": "./fesm2022/design-factory-angular-form-field.mjs"
77
+ },
78
+ "./icon": {
79
+ "types": "./types/design-factory-angular-icon.d.ts",
80
+ "default": "./fesm2022/design-factory-angular-icon.mjs"
81
+ },
82
+ "./input": {
83
+ "types": "./types/design-factory-angular-input.d.ts",
84
+ "default": "./fesm2022/design-factory-angular-input.mjs"
85
+ },
50
86
  "./internals": {
51
87
  "types": "./types/design-factory-angular-internals.d.ts",
52
88
  "default": "./fesm2022/design-factory-angular-internals.mjs"
53
89
  },
90
+ "./separator": {
91
+ "types": "./types/design-factory-angular-separator.d.ts",
92
+ "default": "./fesm2022/design-factory-angular-separator.mjs"
93
+ },
54
94
  "./sidenav": {
55
95
  "types": "./types/design-factory-angular-sidenav.d.ts",
56
96
  "default": "./fesm2022/design-factory-angular-sidenav.mjs"
57
97
  },
98
+ "./slider": {
99
+ "types": "./types/design-factory-angular-slider.d.ts",
100
+ "default": "./fesm2022/design-factory-angular-slider.mjs"
101
+ },
58
102
  "./theme": {
59
103
  "types": "./types/design-factory-angular-theme.d.ts",
60
104
  "default": "./fesm2022/design-factory-angular-theme.mjs"
61
105
  },
106
+ "./toggle": {
107
+ "types": "./types/design-factory-angular-toggle.d.ts",
108
+ "default": "./fesm2022/design-factory-angular-toggle.mjs"
109
+ },
110
+ "./tooltip": {
111
+ "types": "./types/design-factory-angular-tooltip.d.ts",
112
+ "default": "./fesm2022/design-factory-angular-tooltip.mjs"
113
+ },
62
114
  "./topnav": {
63
115
  "types": "./types/design-factory-angular-topnav.d.ts",
64
116
  "default": "./fesm2022/design-factory-angular-topnav.mjs"
65
117
  }
66
118
  },
67
- "sideEffects": false
119
+ "sideEffects": false,
120
+ "type": "module"
68
121
  }
@@ -5,6 +5,41 @@
5
5
  "description": "Add design factory angular to the project and install dependencies.",
6
6
  "factory": "./ng-add/index",
7
7
  "schema": "./ng-add/schema.json"
8
+ },
9
+ "migrate-alert": {
10
+ "description": "Scan or migrate legacy alert usages in an Angular project.",
11
+ "factory": "./component-migration/alert/index",
12
+ "schema": "./component-migration/alert/schema.json"
13
+ },
14
+ "component-migration": {
15
+ "description": "Scan an Angular project for legacy Design Factory component usages.",
16
+ "factory": "./component-migration/index",
17
+ "schema": "./component-migration/schema.json"
18
+ },
19
+ "migrate-button": {
20
+ "description": "Scan or migrate legacy button usages in an Angular project.",
21
+ "factory": "./component-migration/button/index",
22
+ "schema": "./component-migration/button/schema.json"
23
+ },
24
+ "migrate-accordion": {
25
+ "description": "Scan or migrate legacy accordion usages in an Angular project.",
26
+ "factory": "./component-migration/accordion/index",
27
+ "schema": "./component-migration/accordion/schema.json"
28
+ },
29
+ "migrate-dropdown": {
30
+ "description": "Scan or migrate legacy dropdown usages in an Angular project.",
31
+ "factory": "./component-migration/dropdown/index",
32
+ "schema": "./component-migration/dropdown/schema.json"
33
+ },
34
+ "migrate-tooltip": {
35
+ "description": "Scan or migrate legacy tooltip usages in an Angular project.",
36
+ "factory": "./component-migration/tooltip/index",
37
+ "schema": "./component-migration/tooltip/schema.json"
38
+ },
39
+ "component-migration-next-steps": {
40
+ "description": "Print final component migration next steps.",
41
+ "factory": "./component-migration/next-steps/index",
42
+ "private": true
8
43
  }
9
44
  }
10
45
  }
@@ -0,0 +1,10 @@
1
+ import { StandaloneImportRequirement } from '../shared/types';
2
+ export declare const ACCORDION_IMPORT_MODULE = "@design-factory/angular/accordion";
3
+ export declare const ACCORDION_IMPORTS: StandaloneImportRequirement[];
4
+ export declare const LEGACY_IMPORT_MODULES: Set<string>;
5
+ export declare const LEGACY_IMPORT_SYMBOLS: Set<string>;
6
+ export declare const LEGACY_PROGRAMMATIC_IMPORT_SYMBOLS: Set<string>;
7
+ export declare const LEGACY_REMOVABLE_IMPORT_SYMBOLS: Set<string>;
8
+ export declare const LEGACY_SCOPE_IMPORT_SYMBOLS: Set<string>;
9
+ export declare const LEGACY_HOST_CLASSES: Set<string>;
10
+ export declare function componentUsesLegacyAccordion(templates: string[]): boolean;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LEGACY_HOST_CLASSES = exports.LEGACY_SCOPE_IMPORT_SYMBOLS = exports.LEGACY_REMOVABLE_IMPORT_SYMBOLS = exports.LEGACY_PROGRAMMATIC_IMPORT_SYMBOLS = exports.LEGACY_IMPORT_SYMBOLS = exports.LEGACY_IMPORT_MODULES = exports.ACCORDION_IMPORTS = exports.ACCORDION_IMPORT_MODULE = void 0;
4
+ exports.componentUsesLegacyAccordion = componentUsesLegacyAccordion;
5
+ exports.ACCORDION_IMPORT_MODULE = '@design-factory/angular/accordion';
6
+ exports.ACCORDION_IMPORTS = [
7
+ { moduleName: exports.ACCORDION_IMPORT_MODULE, symbolName: 'DfAccordion' },
8
+ { moduleName: exports.ACCORDION_IMPORT_MODULE, symbolName: 'DfAccordionItem' },
9
+ { moduleName: exports.ACCORDION_IMPORT_MODULE, symbolName: 'DfAccordionItemBody' },
10
+ { moduleName: exports.ACCORDION_IMPORT_MODULE, symbolName: 'DfAccordionItemTitle' }
11
+ ];
12
+ exports.LEGACY_IMPORT_MODULES = new Set(['@ng-bootstrap/ng-bootstrap/accordion', '@ng-bootstrap/ng-bootstrap']);
13
+ exports.LEGACY_IMPORT_SYMBOLS = new Set([
14
+ 'NgbAccordionModule',
15
+ 'NgbAccordionDirective',
16
+ 'NgbAccordionItem',
17
+ 'NgbAccordionHeader',
18
+ 'NgbAccordionButton',
19
+ 'NgbAccordionBody',
20
+ 'NgbAccordionCollapse',
21
+ 'NgbAccordionToggle',
22
+ 'NgbAccordionConfig'
23
+ ]);
24
+ exports.LEGACY_PROGRAMMATIC_IMPORT_SYMBOLS = new Set(['NgbAccordionDirective', 'NgbAccordionItem']);
25
+ exports.LEGACY_REMOVABLE_IMPORT_SYMBOLS = new Set([
26
+ 'NgbAccordionModule',
27
+ 'NgbAccordionHeader',
28
+ 'NgbAccordionButton',
29
+ 'NgbAccordionBody',
30
+ 'NgbAccordionCollapse',
31
+ 'NgbAccordionToggle'
32
+ ]);
33
+ exports.LEGACY_SCOPE_IMPORT_SYMBOLS = new Set([
34
+ ...exports.LEGACY_REMOVABLE_IMPORT_SYMBOLS,
35
+ ...exports.LEGACY_PROGRAMMATIC_IMPORT_SYMBOLS
36
+ ]);
37
+ exports.LEGACY_HOST_CLASSES = new Set([
38
+ 'df-accordion-sm',
39
+ 'df-accordion-lg',
40
+ 'df-accordion-withsep',
41
+ 'df-accordion-reverse',
42
+ 'df-withsubtitle'
43
+ ]);
44
+ function componentUsesLegacyAccordion(templates) {
45
+ return templates.some((template) => /(^|[\s<])(?:\[)?ngbAccordion(?:Item|Header|Button|Collapse|Body|Toggle)?(?:\]|=|\s|>)/.test(template.replace(/<!--[\s\S]*?-->/g, '')));
46
+ }
@@ -0,0 +1,257 @@
1
+ # Accordion Migration Guide
2
+
3
+ This guide is used by AI-assisted migration after the deterministic `migrate-accordion` schematic has run.
4
+
5
+ Use it together with the user's current working tree and current git diff. The diff shows which safe changes were made
6
+ by the schematic and which `TODO(df-migration ...)` comments still need review.
7
+
8
+ ## Legacy API
9
+
10
+ Legacy accordions use ng-bootstrap directives and legacy Design Factory classes:
11
+
12
+ - `ngbAccordion`
13
+ - `ngbAccordionItem`
14
+ - `ngbAccordionHeader`
15
+ - `ngbAccordionButton`
16
+ - `ngbAccordionCollapse`
17
+ - `ngbAccordionBody`
18
+ - `df-accordion-sm`
19
+ - `df-accordion-lg`
20
+ - `df-accordion-withsep`
21
+ - `df-accordion-reverse`
22
+ - `df-withsubtitle`
23
+ - `df-subtitle`
24
+ - `df-accordion-number`
25
+
26
+ Some accordion-like patterns are not migrated deterministically, including selectable/radio accordions and custom
27
+ header/body structures.
28
+
29
+ ## New API
30
+
31
+ New accordions use standalone exports from `@design-factory/angular/accordion`:
32
+
33
+ ```ts
34
+ import {
35
+ DfAccordion,
36
+ DfAccordionItem,
37
+ DfAccordionItemBody,
38
+ DfAccordionItemTitle
39
+ } from '@design-factory/angular/accordion';
40
+ ```
41
+
42
+ Supported default accordion structure:
43
+
44
+ ```html
45
+ <df-accordion itemHeadingLevel="3">
46
+ <df-accordion-item>
47
+ <ng-template dfAccordionItemTitle>Title</ng-template>
48
+ <ng-template dfAccordionItemBody>Body</ng-template>
49
+ </df-accordion-item>
50
+ </df-accordion>
51
+ ```
52
+
53
+ Useful inputs and outputs:
54
+
55
+ - `df-accordion`: `itemHeadingLevel`, `closeOthers`, `itemDestroyOnHide`, `animated`, `size`, `arrowPosition`, `addon`,
56
+ `subtitleType`, `separator`, `itemShown`, `itemHidden`
57
+ - `df-accordion-item`: `id`, `visible`, `disabled`, `destroyOnHide`, `subtitle`, `number`, `iconClass`, `shown`,
58
+ `hidden`, `visibleChange`
59
+
60
+ Use `df-accordion-selectable` / `df-accordion-item-selectable` for radio/selectable accordions. Use
61
+ `df-accordion-item-interactive` when the header contains interactive controls.
62
+
63
+ ## Deterministic Schematic Changes
64
+
65
+ The schematic migrates canonical ng-bootstrap accordion markup when syntax is local and unambiguous.
66
+
67
+ It can:
68
+
69
+ - replace `ngbAccordion` with `df-accordion`;
70
+ - replace `ngbAccordionItem` with `df-accordion-item`;
71
+ - move `ngbAccordionButton` content to `ng-template[dfAccordionItemTitle]`;
72
+ - move `ngbAccordionBody` content to `ng-template[dfAccordionItemBody]`;
73
+ - map `ngbAccordionItem="id"` and `[ngbAccordionItem]="expr"` to `id` / `[id]`;
74
+ - map static and bound `collapsed` to `visible`;
75
+ - map accordion `[destroyOnHide]` to `[itemDestroyOnHide]`;
76
+ - map `[animation]` to `[animated]`;
77
+ - map accordion `(shown)` / `(hidden)` to `(itemShown)` / `(itemHidden)`;
78
+ - map accordion `(show)` / `(hide)` to `(itemShown)` / `(itemHidden)` with timing review TODOs;
79
+ - combine pre-event and post-event handlers when both exist;
80
+ - map `df-accordion-sm` / `df-accordion-lg` to `size`;
81
+ - map `df-accordion-withsep` to `separator`;
82
+ - map `df-accordion-reverse` to `arrowPosition="start"`;
83
+ - remove legacy `df-withsubtitle`;
84
+ - extract simple static `.df-subtitle` content to item `subtitle`;
85
+ - extract simple static `.df-accordion-number` content to item `number` and set accordion `addon="number"`;
86
+ - set accordion `subtitleType="inline"` or `subtitleType="block"` for extracted subtitles;
87
+ - add standalone imports;
88
+ - remove stale legacy accordion imports from simple scopes when no legacy accordion template usage remains;
89
+ - add TODO comments for review, skipped patterns, dynamic state, and behavior-sensitive cases.
90
+
91
+ Legacy `NgbAccordionConfig` usage is marked with a config TODO for human review, but configuration is not migrated
92
+ automatically.
93
+
94
+ ## TODO Codes
95
+
96
+ TODO comments may include `[human]`.
97
+
98
+ Verify every TODO and remove it only when the underlying issue is actually resolved. Preserve `[human]` TODO comments
99
+ unchanged so a human can review them after the AI-assisted pass. `[human]` does not forbid AI-assisted edits around the
100
+ comment when the intent is clear; it means the final result must remain visible for human verification.
101
+
102
+ ### `accordion.review`
103
+
104
+ The accordion was migrated automatically. Verify behavior and visual appearance.
105
+
106
+ Check spacing, separator, size, arrow position, initial expanded/collapsed state, disabled state, and custom classes
107
+ preserved by the schematic. If no issue is found, remove this TODO.
108
+
109
+ ### `accordion.selectable-pattern`
110
+
111
+ The accordion uses selectable/radio markup and was not migrated deterministically.
112
+
113
+ Try to convert it to `df-accordion-selectable` and `df-accordion-item-selectable` when the form/control behavior is
114
+ clear. Preserve `formControlName`, `ngModel`, item values, ARIA labels, disabled state, custom content, and test
115
+ selectors. Keep the `[human]` TODO after the conversion so the selectable behavior can be reviewed.
116
+
117
+ Do not migrate this as a default `df-accordion`; selectable accordions have different semantics.
118
+
119
+ ### `accordion.non-canonical-structure`
120
+
121
+ The legacy markup does not match the canonical ng-bootstrap header/body structure.
122
+
123
+ Inspect the header and body and attempt a best-effort migration when the behavior is clear. Keep the `[human]` TODO
124
+ after migrating so the result remains visible for review. Use:
125
+
126
+ - `df-accordion-item` for a regular toggle-only header;
127
+ - `df-accordion-item-interactive` when the header includes buttons, links, inputs, menus, toggles, or click side
128
+ effects;
129
+ - `df-accordion-selectable` when expanding an item selects a form value.
130
+
131
+ Extra button classes, `qa-id` attributes, bound attributes, body wrapper classes, icons, and simple title wrappers are
132
+ not blockers by themselves. Preserve custom header controls and behavior. Do not flatten interactive markup into
133
+ `dfAccordionItemTitle` if it would put interactive controls inside the toggle button. Leave the legacy markup in place
134
+ only when the behavior cannot be mapped confidently.
135
+
136
+ ### `accordion.pre-event`
137
+
138
+ Legacy `show` / `hide` events fired before the state change. The new migrated outputs fire after the item is shown or
139
+ hidden.
140
+
141
+ The deterministic schematic maps them to `itemShown` / `itemHidden` on the accordion, or `shown` / `hidden` on an item.
142
+ Review handlers for timing-sensitive logic such as measuring DOM before animation, loading content before expansion, or
143
+ blocking side effects. If the handler only logs, tracks analytics, or reacts after the change, the migrated output is
144
+ usually acceptable.
145
+
146
+ ### `accordion.event-conflict`
147
+
148
+ Both legacy pre-event and post-event handlers existed for the same transition.
149
+
150
+ The deterministic schematic combines both handlers on the migrated output, preserving call order. Verify that combining
151
+ them after the state change is acceptable. If one handler depends on pre-change timing, split the behavior manually.
152
+
153
+ ### `accordion.programmatic-api`
154
+
155
+ Template reference exports such as `#acc="ngbAccordion"` or `#item="ngbAccordionItem"` were removed.
156
+
157
+ Review any TypeScript or template calls using those references. New accordion methods return `Promise<void>`, so callers
158
+ may need `await`, `void`, or async handling. Preserve behavior for `toggle`, `expand`, `collapse`, `expandAll`,
159
+ `collapseAll`, and `isExpanded`.
160
+
161
+ ### `accordion.programmatic-import`
162
+
163
+ The file still imports legacy TypeScript APIs such as `NgbAccordionDirective` or `NgbAccordionItem`.
164
+
165
+ Review actual TypeScript usage before removing imports. Replace programmatic APIs with `DfAccordion` / `DfAccordionItem`
166
+ refs only when the new async contract is handled.
167
+
168
+ ### `accordion.config`
169
+
170
+ Legacy `NgbAccordionConfig` is not supported anymore.
171
+
172
+ Do not migrate it automatically. Review the legacy defaults and decide whether they should become local accordion inputs,
173
+ new `provideDfAccordionConfig()` usage, or application-specific cleanup.
174
+
175
+ ### `accordion.subtitle`
176
+
177
+ Legacy subtitle markup was too complex for deterministic extraction and was preserved for review.
178
+
179
+ For simple cases, the deterministic schematic already removes `df-withsubtitle`, extracts `.df-subtitle` text to the
180
+ item `subtitle` input, and sets `subtitleType` on the accordion. For remaining TODOs:
181
+
182
+ - remove the legacy `df-withsubtitle` class from the accordion host;
183
+ - move plain `.df-subtitle` text to `subtitle="..."` or `[subtitle]="..."` on the related `df-accordion-item`;
184
+ - remove the old `.df-subtitle` element from `dfAccordionItemTitle` after extracting it;
185
+ - set `subtitleType="inline"` when title and subtitle were sibling content in the button;
186
+ - set `subtitleType="block"` when subtitle was nested under the title in a stacked layout;
187
+ - if `.df-accordion-number` was used, set `addon="number"` on the accordion and `number="..."` on each item, without
188
+ the trailing dot;
189
+ - for dynamic or rich subtitle content, preserve equivalent visible content in the title template when the new `subtitle`
190
+ input cannot represent it safely;
191
+ - preserve the `[human]` TODO when subtitle content is conditional, projected through complex markup, translated in a
192
+ non-obvious way, or mixed with behavior.
193
+
194
+ Do not leave `.df-subtitle` or `df-withsubtitle` as styling hooks in migrated markup unless the user explicitly asks for
195
+ temporary compatibility.
196
+
197
+ ### `accordion.heading-level`
198
+
199
+ The schematic could not infer one consistent heading level and defaulted `itemHeadingLevel` to `2`.
200
+
201
+ Choose the correct semantic heading level for the page. Prefer matching the surrounding document outline, not merely the
202
+ old visual size. Keep the value between `1` and `6`.
203
+
204
+ ### `accordion.custom-classes`
205
+
206
+ Custom classes were preserved on the accordion or item.
207
+
208
+ Check whether the class targeted old Bootstrap/ng-bootstrap DOM such as `.accordion`, `.accordion-item`,
209
+ `.accordion-button`, `.accordion-collapse`, `.accordion-body`, `.collapsed`, or `::after`. Update local CSS to the new
210
+ DF DOM only when the styling is still needed.
211
+
212
+ ### `accordion.dynamic-class`
213
+
214
+ Dynamic class bindings were preserved on the accordion host.
215
+
216
+ Inspect `[class]`, `[ngClass]`, and class binding expressions. Remove legacy accordion classes from the expression or
217
+ convert them to new inputs when clear:
218
+
219
+ - `df-accordion-sm` / `df-accordion-lg` -> `size`
220
+ - `df-accordion-withsep` -> `separator`
221
+ - `df-accordion-reverse` -> `arrowPosition`
222
+ - `df-withsubtitle` -> `subtitleType` plus item `subtitle`
223
+
224
+ Leave the TODO when the expression is computed or shared in a way that needs human review.
225
+
226
+ ### `accordion.dynamic-collapsed`
227
+
228
+ A legacy collapsed expression was inverted to `visible`.
229
+
230
+ Verify that `[visible]="!(expr)"` still matches the intended state. If the expression is already inverted or confusing,
231
+ prefer a small component getter/helper with a clear name.
232
+
233
+ ### `accordion.legacy-import`
234
+
235
+ A legacy ng-bootstrap accordion import remains for second-pass verification.
236
+
237
+ The deterministic schematic removes stale legacy imports for simple fully migrated scopes. If this TODO remains, the
238
+ file still has legacy accordion markup, an indirect/shared imports shape, or programmatic TypeScript usage.
239
+
240
+ Remove the import only after confirming no remaining legacy accordion template/directive API or programmatic TypeScript
241
+ API is used in the file.
242
+
243
+ ### `accordion.indirect-component-imports`
244
+
245
+ The component needs DF accordion imports, but its Angular `imports` metadata is not a simple array literal.
246
+
247
+ Inspect the referenced value or expression. Add `DfAccordion`, `DfAccordionItem`, `DfAccordionItemBody`, and
248
+ `DfAccordionItemTitle` only when the imports shape is clear. Preserve the TODO when the imports value is computed,
249
+ shared, or otherwise ambiguous.
250
+
251
+ ## Validation
252
+
253
+ - Review every `TODO(df-migration accordion.*)` comment.
254
+ - Check visual spacing, separator, size, arrow position, subtitle layout, and number/icon addons.
255
+ - Check expanded/collapsed initial state and `closeOthers` behavior.
256
+ - Check programmatic calls and template references.
257
+ - Check custom CSS and tests/page objects that query Bootstrap `.accordion-*` selectors.
@@ -0,0 +1,2 @@
1
+ declare const _default: (options: import("../shared/types").ComponentMigrationSchema) => import("@angular-devkit/schematics").Rule;
2
+ export default _default;
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const create_component_schematic_1 = require("../shared/create-component-schematic");
4
+ const migration_1 = require("./migration");
5
+ exports.default = (0, create_component_schematic_1.createComponentMigrationSchematic)(migration_1.accordionMigration);
@@ -0,0 +1,2 @@
1
+ import { ComponentMigrationDefinition } from '../shared/types';
2
+ export declare const accordionMigration: ComponentMigrationDefinition;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accordionMigration = void 0;
4
+ const legacy_config_todos_1 = require("../shared/legacy-config-todos");
5
+ const accordion_imports_1 = require("./steps/accordion-imports");
6
+ const template_migration_1 = require("./steps/template-migration");
7
+ exports.accordionMigration = {
8
+ id: 'accordion',
9
+ countLegacyTemplateUsages: template_migration_1.countLegacyAccordionUsages,
10
+ migrateTemplate: template_migration_1.migrateAccordionTemplate,
11
+ migrateSourceFile: accordion_imports_1.migrateAccordionSourceFile,
12
+ migrateProjectSourceFile: (context) => (0, legacy_config_todos_1.editLegacyConfigTodos)(context, ['NgbAccordionConfig'])
13
+ };
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "SchematicsMigrateAccordion",
4
+ "title": "Migrate Accordion Schema",
5
+ "type": "object",
6
+ "properties": {
7
+ "project": {
8
+ "type": "string",
9
+ "description": "Name of the Angular project to scan or migrate",
10
+ "$default": {
11
+ "$source": "projectName"
12
+ }
13
+ },
14
+ "all": {
15
+ "type": "boolean",
16
+ "description": "Scan or migrate every buildable Angular project",
17
+ "default": false
18
+ },
19
+ "scan": {
20
+ "type": "boolean",
21
+ "description": "Only scan accordion usages without applying the migration",
22
+ "default": false
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,3 @@
1
+ import { TemplateEdit } from '../../shared/template-edits';
2
+ import { ComponentMigrationSourceContext } from '../../shared/types';
3
+ export declare function migrateAccordionSourceFile(context: ComponentMigrationSourceContext): TemplateEdit[];
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrateAccordionSourceFile = migrateAccordionSourceFile;
4
+ const component_context_1 = require("../../shared/component-context");
5
+ const component_imports_1 = require("../../shared/component-imports");
6
+ const constants_1 = require("../constants");
7
+ function migrateAccordionSourceFile(context) {
8
+ const legacyImports = (0, component_imports_1.getComponentNamedImports)(context.sourceFile, constants_1.LEGACY_IMPORT_MODULES, constants_1.LEGACY_IMPORT_SYMBOLS);
9
+ const sourceNeedsDfAccordion = [...context.standaloneImportsByComponent.values()].some((requirements) => requirements.some((requirement) => requirement.moduleName === constants_1.ACCORDION_IMPORT_MODULE));
10
+ const sourceNeedsLegacyAccordion = (0, component_context_1.sourceFileNeedsComponentTemplate)(context, constants_1.componentUsesLegacyAccordion);
11
+ const edits = [
12
+ ...(0, component_imports_1.editStandaloneComponentImports)(context, constants_1.ACCORDION_IMPORT_MODULE, {
13
+ indirectComponentImportsTodo: {
14
+ code: 'accordion.indirect-component-imports',
15
+ message: 'Component imports use an indirect value. Add the required DF accordion imports after verifying its shape.'
16
+ },
17
+ legacyImports,
18
+ legacyScopeImportedNames: constants_1.LEGACY_SCOPE_IMPORT_SYMBOLS,
19
+ componentKeepsLegacyScope: constants_1.componentUsesLegacyAccordion
20
+ })
21
+ ];
22
+ if (legacyImports.length > 0) {
23
+ edits.push(...(0, component_imports_1.editRemovableLegacyImports)(context.sourceFile, constants_1.LEGACY_IMPORT_MODULES, legacyImports, (legacyImport) => {
24
+ if (!sourceNeedsDfAccordion || sourceNeedsLegacyAccordion) {
25
+ return false;
26
+ }
27
+ return constants_1.LEGACY_SCOPE_IMPORT_SYMBOLS.has(legacyImport.importedName);
28
+ }));
29
+ edits.push(...(0, component_imports_1.editLegacyImportTodos)(context.sourceFile, constants_1.LEGACY_IMPORT_MODULES, (legacyImport) => (!sourceNeedsDfAccordion || sourceNeedsLegacyAccordion) &&
30
+ constants_1.LEGACY_REMOVABLE_IMPORT_SYMBOLS.has(legacyImport.importedName), {
31
+ code: 'accordion.legacy-import',
32
+ message: 'Legacy accordion import remains for second-pass verification. Remove it after confirming no legacy accordion APIs need it.'
33
+ }), ...(0, component_imports_1.editLegacyImportTodos)(context.sourceFile, constants_1.LEGACY_IMPORT_MODULES, (legacyImport) => constants_1.LEGACY_PROGRAMMATIC_IMPORT_SYMBOLS.has(legacyImport.importedName) &&
34
+ (0, component_imports_1.hasIdentifierReferenceOutsideImports)(context.sourceFile, legacyImport.localName), {
35
+ code: 'accordion.programmatic-import',
36
+ marker: 'human',
37
+ message: 'This file still imports legacy ng-bootstrap accordion TypeScript APIs. Review programmatic usage manually because the new API returns promises.'
38
+ }));
39
+ }
40
+ return edits;
41
+ }
@@ -0,0 +1,3 @@
1
+ import { ComponentMigrationTemplateResult } from '../../shared/types';
2
+ export declare function migrateAccordionTemplate(template: string): ComponentMigrationTemplateResult;
3
+ export declare function countLegacyAccordionUsages(template: string): number;