@design-factory/angular 21.1.0-next.1 → 22.0.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/.ai/docs/components/accordion/accessibility.md +45 -0
  2. package/.ai/docs/components/accordion/api.md +279 -0
  3. package/.ai/docs/components/accordion/developer.md +43 -0
  4. package/.ai/docs/components/accordion/guidelines.md +99 -0
  5. package/.ai/docs/components/accordion/overview.md +17 -0
  6. package/.ai/docs/components/alert/accessibility.md +24 -0
  7. package/.ai/docs/components/alert/api.md +65 -0
  8. package/.ai/docs/components/alert/developer.md +63 -0
  9. package/.ai/docs/components/alert/guidelines.md +62 -0
  10. package/.ai/docs/components/alert/overview.md +12 -0
  11. package/.ai/docs/components/button/accessibility.md +25 -0
  12. package/.ai/docs/components/button/api.md +71 -0
  13. package/.ai/docs/components/button/developer.md +52 -0
  14. package/.ai/docs/components/button/guidelines.md +75 -0
  15. package/.ai/docs/components/button/overview.md +15 -0
  16. package/.ai/docs/components/buttongroup/api.md +16 -0
  17. package/.ai/docs/components/buttongroup/developer.md +32 -0
  18. package/.ai/docs/components/drawer/accessibility.md +15 -0
  19. package/.ai/docs/components/drawer/api.md +56 -0
  20. package/.ai/docs/components/drawer/developer.md +36 -0
  21. package/.ai/docs/components/drawer/examples.md +9 -0
  22. package/.ai/docs/components/drawer/guidelines.md +58 -0
  23. package/.ai/docs/components/drawer/overview.md +19 -0
  24. package/.ai/docs/components/dropdown/accessibility.md +27 -0
  25. package/.ai/docs/components/dropdown/api.md +85 -0
  26. package/.ai/docs/components/dropdown/developer.md +59 -0
  27. package/.ai/docs/components/dropdown/guidelines.md +80 -0
  28. package/.ai/docs/components/dropdown/overview.md +16 -0
  29. package/.ai/docs/components/sidenav/accessibility.md +48 -0
  30. package/.ai/docs/components/sidenav/api.md +110 -0
  31. package/.ai/docs/components/sidenav/developer.md +14 -0
  32. package/.ai/docs/components/sidenav/guidelines.md +83 -0
  33. package/.ai/docs/components/sidenav/overview.md +16 -0
  34. package/.ai/docs/components/tooltip/accessibility.md +11 -0
  35. package/.ai/docs/components/tooltip/api.md +39 -0
  36. package/.ai/docs/components/tooltip/developer.md +16 -0
  37. package/.ai/docs/components/tooltip/guidelines.md +84 -0
  38. package/.ai/docs/components/tooltip/overview.md +23 -0
  39. package/.ai/docs/components/topnav/accessibility.md +51 -0
  40. package/.ai/docs/components/topnav/api.md +190 -0
  41. package/.ai/docs/components/topnav/developer.md +43 -0
  42. package/.ai/docs/components/topnav/guidelines.md +121 -0
  43. package/.ai/docs/components/topnav/overview.md +17 -0
  44. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.html +75 -0
  45. package/.ai/docs/demos/accordion/addons-subtitle/accordion-addons-subtitle.ts +27 -0
  46. package/.ai/docs/demos/accordion/basic/accordion-basic.html +16 -0
  47. package/.ai/docs/demos/accordion/basic/accordion-basic.ts +14 -0
  48. package/.ai/docs/demos/accordion/close-others/accordion-close-others.html +16 -0
  49. package/.ai/docs/demos/accordion/close-others/accordion-close-others.ts +14 -0
  50. package/.ai/docs/demos/accordion/interactive/accordion-interactive.html +84 -0
  51. package/.ai/docs/demos/accordion/interactive/accordion-interactive.ts +30 -0
  52. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.html +126 -0
  53. package/.ai/docs/demos/accordion/interactive-addons-subtitle/accordion-interactive-addons-subtitle.ts +33 -0
  54. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.html +36 -0
  55. package/.ai/docs/demos/accordion/programmatic-control/accordion-programmatic-control.ts +15 -0
  56. package/.ai/docs/demos/accordion/selectable/accordion-selectable.html +16 -0
  57. package/.ai/docs/demos/accordion/selectable/accordion-selectable.ts +14 -0
  58. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.html +28 -0
  59. package/.ai/docs/demos/accordion/selectable-extended/accordion-selectable-extended.ts +80 -0
  60. package/.ai/docs/demos/accordion/separator/accordion-separator.html +16 -0
  61. package/.ai/docs/demos/accordion/separator/accordion-separator.ts +14 -0
  62. package/.ai/docs/demos/alert/banner/alert-banner.html +15 -0
  63. package/.ai/docs/demos/alert/banner/alert-banner.ts +16 -0
  64. package/.ai/docs/demos/alert/basic/alert-basic.html +6 -0
  65. package/.ai/docs/demos/alert/basic/alert-basic.ts +9 -0
  66. package/.ai/docs/demos/alert/card/alert-card.html +15 -0
  67. package/.ai/docs/demos/alert/card/alert-card.ts +9 -0
  68. package/.ai/docs/demos/alert/dismissal/alert-dismissal.html +5 -0
  69. package/.ai/docs/demos/alert/dismissal/alert-dismissal.ts +27 -0
  70. package/.ai/docs/demos/alert/expandable/alert-expandable.html +9 -0
  71. package/.ai/docs/demos/alert/expandable/alert-expandable.ts +11 -0
  72. package/.ai/docs/demos/button/basic/button-basic.html +4 -0
  73. package/.ai/docs/demos/button/basic/button-basic.ts +9 -0
  74. package/.ai/docs/demos/button/disabled/button-disabled.html +18 -0
  75. package/.ai/docs/demos/button/disabled/button-disabled.ts +12 -0
  76. package/.ai/docs/demos/button/icons/button-icons.html +17 -0
  77. package/.ai/docs/demos/button/icons/button-icons.ts +10 -0
  78. package/.ai/docs/demos/button/surfaces/button-surfaces.html +13 -0
  79. package/.ai/docs/demos/button/surfaces/button-surfaces.ts +9 -0
  80. package/.ai/docs/demos/button/variants/button-variants.html +49 -0
  81. package/.ai/docs/demos/button/variants/button-variants.ts +9 -0
  82. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.html +6 -0
  83. package/.ai/docs/demos/buttongroup/basic/buttongroup-basic.ts +10 -0
  84. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.html +6 -0
  85. package/.ai/docs/demos/buttongroup/disabled/buttongroup-disabled.ts +10 -0
  86. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.html +8 -0
  87. package/.ai/docs/demos/buttongroup/mirror/buttongroup-mirror.ts +10 -0
  88. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.html +19 -0
  89. package/.ai/docs/demos/buttongroup/orientation/buttongroup-orientation.ts +10 -0
  90. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.html +19 -0
  91. package/.ai/docs/demos/buttongroup/sizing/buttongroup-sizing.ts +10 -0
  92. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.html +46 -0
  93. package/.ai/docs/demos/drawer/inline/drawer-inline-basic.ts +33 -0
  94. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.html +30 -0
  95. package/.ai/docs/demos/drawer/overlay/drawer-overlay-basic.ts +25 -0
  96. package/.ai/docs/demos/dropdown/basic/dropdown-basic.html +8 -0
  97. package/.ai/docs/demos/dropdown/basic/dropdown-basic.ts +15 -0
  98. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.html +9 -0
  99. package/.ai/docs/demos/dropdown/sizes/dropdown-sizes.ts +21 -0
  100. package/.ai/docs/demos/dropdown/split/dropdown-split.html +9 -0
  101. package/.ai/docs/demos/dropdown/split/dropdown-split.ts +11 -0
  102. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.html +22 -0
  103. package/.ai/docs/demos/dropdown/toggle/dropdown-toggle.ts +10 -0
  104. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/routes.ts +95 -0
  105. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.html +42 -0
  106. package/.ai/docs/demos/sidenav/sidenav-basic-no-icon/sidenav-basic-no-icon.ts +12 -0
  107. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/routes.ts +41 -0
  108. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.html +34 -0
  109. package/.ai/docs/demos/sidenav/sidenav-basic-with-icon/sidenav-basic-with-icon.ts +12 -0
  110. package/.ai/docs/demos/tooltip/basic/tooltip-basic.html +1 -0
  111. package/.ai/docs/demos/tooltip/basic/tooltip-basic.ts +10 -0
  112. package/.ai/docs/demos/tooltip/placements/tooltip-placements.html +35 -0
  113. package/.ai/docs/demos/tooltip/placements/tooltip-placements.ts +12 -0
  114. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.html +5 -0
  115. package/.ai/docs/demos/tooltip/sizes/tooltip-sizes.ts +10 -0
  116. package/.ai/docs/demos/topnav/brand/topnav-brand.ts +64 -0
  117. package/.ai/docs/demos/topnav/environment-banner/topnav-environment-banner.ts +20 -0
  118. package/.ai/docs/demos/topnav/navigation/routes.ts +35 -0
  119. package/.ai/docs/demos/topnav/navigation/topnav-navigation-flat.ts +67 -0
  120. package/.ai/docs/demos/topnav/navigation/topnav-navigation-tree.ts +82 -0
  121. package/.ai/docs/demos/topnav/quick-actions/notifications.ts +75 -0
  122. package/.ai/docs/demos/topnav/quick-actions/topnav-quick-actions.ts +108 -0
  123. package/.ai/docs/demos/topnav/quick-actions/user-account.ts +23 -0
  124. package/.ai/index.md +26 -0
  125. package/fesm2022/design-factory-angular-accordion.mjs +1153 -0
  126. package/fesm2022/design-factory-angular-accordion.mjs.map +1 -0
  127. package/fesm2022/design-factory-angular-alert.mjs +312 -0
  128. package/fesm2022/design-factory-angular-alert.mjs.map +1 -0
  129. package/fesm2022/design-factory-angular-breakpoints.mjs +53 -0
  130. package/fesm2022/design-factory-angular-breakpoints.mjs.map +1 -0
  131. package/fesm2022/design-factory-angular-button.mjs +240 -0
  132. package/fesm2022/design-factory-angular-button.mjs.map +1 -0
  133. package/fesm2022/design-factory-angular-buttongroup.mjs +75 -0
  134. package/fesm2022/design-factory-angular-buttongroup.mjs.map +1 -0
  135. package/fesm2022/design-factory-angular-drawer.mjs +76 -81
  136. package/fesm2022/design-factory-angular-drawer.mjs.map +1 -1
  137. package/fesm2022/design-factory-angular-dropdown.mjs +323 -0
  138. package/fesm2022/design-factory-angular-dropdown.mjs.map +1 -0
  139. package/fesm2022/design-factory-angular-form-field.mjs +287 -0
  140. package/fesm2022/design-factory-angular-form-field.mjs.map +1 -0
  141. package/fesm2022/design-factory-angular-icon.mjs +24 -0
  142. package/fesm2022/design-factory-angular-icon.mjs.map +1 -0
  143. package/fesm2022/design-factory-angular-input.mjs +34 -0
  144. package/fesm2022/design-factory-angular-input.mjs.map +1 -0
  145. package/fesm2022/design-factory-angular-internals.mjs +119 -39
  146. package/fesm2022/design-factory-angular-internals.mjs.map +1 -1
  147. package/fesm2022/design-factory-angular-separator.mjs +43 -0
  148. package/fesm2022/design-factory-angular-separator.mjs.map +1 -0
  149. package/fesm2022/design-factory-angular-sidenav.mjs +766 -438
  150. package/fesm2022/design-factory-angular-sidenav.mjs.map +1 -1
  151. package/fesm2022/design-factory-angular-slider.mjs +451 -0
  152. package/fesm2022/design-factory-angular-slider.mjs.map +1 -0
  153. package/fesm2022/design-factory-angular-theme.mjs +30 -20
  154. package/fesm2022/design-factory-angular-theme.mjs.map +1 -1
  155. package/fesm2022/design-factory-angular-toggle.mjs +172 -0
  156. package/fesm2022/design-factory-angular-toggle.mjs.map +1 -0
  157. package/fesm2022/design-factory-angular-tooltip.mjs +138 -0
  158. package/fesm2022/design-factory-angular-tooltip.mjs.map +1 -0
  159. package/fesm2022/design-factory-angular-topnav.mjs +635 -558
  160. package/fesm2022/design-factory-angular-topnav.mjs.map +1 -1
  161. package/package.json +61 -8
  162. package/schematics/collection.json +35 -0
  163. package/schematics/component-migration/accordion/constants.d.ts +10 -0
  164. package/schematics/component-migration/accordion/constants.js +46 -0
  165. package/schematics/component-migration/accordion/guide.md +257 -0
  166. package/schematics/component-migration/accordion/index.d.ts +2 -0
  167. package/schematics/component-migration/accordion/index.js +5 -0
  168. package/schematics/component-migration/accordion/migration.d.ts +2 -0
  169. package/schematics/component-migration/accordion/migration.js +13 -0
  170. package/schematics/component-migration/accordion/schema.json +25 -0
  171. package/schematics/component-migration/accordion/steps/accordion-imports.d.ts +3 -0
  172. package/schematics/component-migration/accordion/steps/accordion-imports.js +41 -0
  173. package/schematics/component-migration/accordion/steps/template-migration.d.ts +3 -0
  174. package/schematics/component-migration/accordion/steps/template-migration.js +554 -0
  175. package/schematics/component-migration/accordion/steps/title-content.d.ts +9 -0
  176. package/schematics/component-migration/accordion/steps/title-content.js +75 -0
  177. package/schematics/component-migration/ai/prompt.md +83 -0
  178. package/schematics/component-migration/alert/guide.md +246 -0
  179. package/schematics/component-migration/alert/index.d.ts +2 -0
  180. package/schematics/component-migration/alert/index.js +5 -0
  181. package/schematics/component-migration/alert/migration.d.ts +2 -0
  182. package/schematics/component-migration/alert/migration.js +50 -0
  183. package/schematics/component-migration/alert/schema.json +25 -0
  184. package/schematics/component-migration/alert/steps/alert-imports.d.ts +4 -0
  185. package/schematics/component-migration/alert/steps/alert-imports.js +97 -0
  186. package/schematics/component-migration/alert/steps/animation-input.d.ts +3 -0
  187. package/schematics/component-migration/alert/steps/animation-input.js +17 -0
  188. package/schematics/component-migration/alert/steps/close-output.d.ts +3 -0
  189. package/schematics/component-migration/alert/steps/close-output.js +17 -0
  190. package/schematics/component-migration/alert/steps/icon-directive-imports.d.ts +3 -0
  191. package/schematics/component-migration/alert/steps/icon-directive-imports.js +84 -0
  192. package/schematics/component-migration/alert/steps/icon-directive.d.ts +3 -0
  193. package/schematics/component-migration/alert/steps/icon-directive.js +10 -0
  194. package/schematics/component-migration/alert/steps/legacy-module-imports.d.ts +3 -0
  195. package/schematics/component-migration/alert/steps/legacy-module-imports.js +57 -0
  196. package/schematics/component-migration/alert/steps/programmatic-close.d.ts +3 -0
  197. package/schematics/component-migration/alert/steps/programmatic-close.js +44 -0
  198. package/schematics/component-migration/alert/steps/selector.d.ts +3 -0
  199. package/schematics/component-migration/alert/steps/selector.js +18 -0
  200. package/schematics/component-migration/alert/steps/static-classes.d.ts +3 -0
  201. package/schematics/component-migration/alert/steps/static-classes.js +97 -0
  202. package/schematics/component-migration/alert/steps/static-type.d.ts +3 -0
  203. package/schematics/component-migration/alert/steps/static-type.js +28 -0
  204. package/schematics/component-migration/alert/steps/template-reference.d.ts +3 -0
  205. package/schematics/component-migration/alert/steps/template-reference.js +15 -0
  206. package/schematics/component-migration/alert/steps/template-todos.d.ts +3 -0
  207. package/schematics/component-migration/alert/steps/template-todos.js +78 -0
  208. package/schematics/component-migration/button/guide.md +278 -0
  209. package/schematics/component-migration/button/index.d.ts +2 -0
  210. package/schematics/component-migration/button/index.js +5 -0
  211. package/schematics/component-migration/button/migration.d.ts +2 -0
  212. package/schematics/component-migration/button/migration.js +180 -0
  213. package/schematics/component-migration/button/schema.json +25 -0
  214. package/schematics/component-migration/button/steps/static-classes.d.ts +10 -0
  215. package/schematics/component-migration/button/steps/static-classes.js +128 -0
  216. package/schematics/component-migration/button/steps/template-todos.d.ts +19 -0
  217. package/schematics/component-migration/button/steps/template-todos.js +120 -0
  218. package/schematics/component-migration/button/types.d.ts +7 -0
  219. package/schematics/component-migration/button/types.js +2 -0
  220. package/schematics/component-migration/dropdown/guide.md +252 -0
  221. package/schematics/component-migration/dropdown/index.d.ts +2 -0
  222. package/schematics/component-migration/dropdown/index.js +5 -0
  223. package/schematics/component-migration/dropdown/migration.d.ts +2 -0
  224. package/schematics/component-migration/dropdown/migration.js +41 -0
  225. package/schematics/component-migration/dropdown/schema.json +25 -0
  226. package/schematics/component-migration/dropdown/steps/dropdown-imports.d.ts +3 -0
  227. package/schematics/component-migration/dropdown/steps/dropdown-imports.js +308 -0
  228. package/schematics/component-migration/dropdown/steps/template-attributes.d.ts +10 -0
  229. package/schematics/component-migration/dropdown/steps/template-attributes.js +57 -0
  230. package/schematics/component-migration/dropdown/steps/template-helpers.d.ts +20 -0
  231. package/schematics/component-migration/dropdown/steps/template-helpers.js +125 -0
  232. package/schematics/component-migration/dropdown/steps/template-imports.d.ts +22 -0
  233. package/schematics/component-migration/dropdown/steps/template-imports.js +12 -0
  234. package/schematics/component-migration/dropdown/steps/template-items.d.ts +7 -0
  235. package/schematics/component-migration/dropdown/steps/template-items.js +58 -0
  236. package/schematics/component-migration/dropdown/steps/template-menu.d.ts +14 -0
  237. package/schematics/component-migration/dropdown/steps/template-menu.js +107 -0
  238. package/schematics/component-migration/dropdown/steps/template-todos.d.ts +19 -0
  239. package/schematics/component-migration/dropdown/steps/template-todos.js +118 -0
  240. package/schematics/component-migration/dropdown/steps/template-toggle.d.ts +9 -0
  241. package/schematics/component-migration/dropdown/steps/template-toggle.js +70 -0
  242. package/schematics/component-migration/dropdown/steps/template-wrapper.d.ts +12 -0
  243. package/schematics/component-migration/dropdown/steps/template-wrapper.js +105 -0
  244. package/schematics/component-migration/index.d.ts +3 -0
  245. package/schematics/component-migration/index.js +26 -0
  246. package/schematics/component-migration/next-steps/index.d.ts +13 -0
  247. package/schematics/component-migration/next-steps/index.js +34 -0
  248. package/schematics/component-migration/registry.d.ts +1 -0
  249. package/schematics/component-migration/registry.js +15 -0
  250. package/schematics/component-migration/schema.json +20 -0
  251. package/schematics/component-migration/shared/ai-handoff.d.ts +2 -0
  252. package/schematics/component-migration/shared/ai-handoff.js +28 -0
  253. package/schematics/component-migration/shared/angular-component.d.ts +10 -0
  254. package/schematics/component-migration/shared/angular-component.js +125 -0
  255. package/schematics/component-migration/shared/button-visual-classes.d.ts +24 -0
  256. package/schematics/component-migration/shared/button-visual-classes.js +111 -0
  257. package/schematics/component-migration/shared/component-context.d.ts +7 -0
  258. package/schematics/component-migration/shared/component-context.js +24 -0
  259. package/schematics/component-migration/shared/component-imports.d.ts +45 -0
  260. package/schematics/component-migration/shared/component-imports.js +380 -0
  261. package/schematics/component-migration/shared/create-component-schematic.d.ts +3 -0
  262. package/schematics/component-migration/shared/create-component-schematic.js +55 -0
  263. package/schematics/component-migration/shared/import-edits.d.ts +11 -0
  264. package/schematics/component-migration/shared/import-edits.js +157 -0
  265. package/schematics/component-migration/shared/legacy-config-todos.d.ts +3 -0
  266. package/schematics/component-migration/shared/legacy-config-todos.js +90 -0
  267. package/schematics/component-migration/shared/migrate-project.d.ts +12 -0
  268. package/schematics/component-migration/shared/migrate-project.js +151 -0
  269. package/schematics/component-migration/shared/project-templates.d.ts +15 -0
  270. package/schematics/component-migration/shared/project-templates.js +43 -0
  271. package/schematics/component-migration/shared/scan-project.d.ts +3 -0
  272. package/schematics/component-migration/shared/scan-project.js +24 -0
  273. package/schematics/component-migration/shared/static-placement.d.ts +1 -0
  274. package/schematics/component-migration/shared/static-placement.js +45 -0
  275. package/schematics/component-migration/shared/template-edits.d.ts +28 -0
  276. package/schematics/component-migration/shared/template-edits.js +153 -0
  277. package/schematics/component-migration/shared/template-result.d.ts +3 -0
  278. package/schematics/component-migration/shared/template-result.js +11 -0
  279. package/schematics/component-migration/shared/testing.d.ts +13 -0
  280. package/schematics/component-migration/shared/testing.js +59 -0
  281. package/schematics/component-migration/shared/todo-comments.d.ts +10 -0
  282. package/schematics/component-migration/shared/todo-comments.js +81 -0
  283. package/schematics/component-migration/shared/types.d.ts +41 -0
  284. package/schematics/component-migration/shared/types.js +2 -0
  285. package/schematics/component-migration/tooltip/guide.md +196 -0
  286. package/schematics/component-migration/tooltip/index.d.ts +2 -0
  287. package/schematics/component-migration/tooltip/index.js +5 -0
  288. package/schematics/component-migration/tooltip/migration.d.ts +2 -0
  289. package/schematics/component-migration/tooltip/migration.js +50 -0
  290. package/schematics/component-migration/tooltip/schema.json +25 -0
  291. package/schematics/component-migration/tooltip/steps/template-attributes.d.ts +13 -0
  292. package/schematics/component-migration/tooltip/steps/template-attributes.js +266 -0
  293. package/schematics/component-migration/tooltip/steps/template-todos.d.ts +24 -0
  294. package/schematics/component-migration/tooltip/steps/template-todos.js +115 -0
  295. package/schematics/component-migration/tooltip/steps/tooltip-imports.d.ts +3 -0
  296. package/schematics/component-migration/tooltip/steps/tooltip-imports.js +79 -0
  297. package/schematics/component-migration/utils/component-resource-collector.d.ts +34 -0
  298. package/schematics/component-migration/utils/component-resource-collector.js +107 -0
  299. package/schematics/component-migration/utils/project_tsconfig_paths.d.ts +18 -0
  300. package/schematics/component-migration/utils/project_tsconfig_paths.js +105 -0
  301. package/schematics/component-migration/utils/typescript/compiler_host.d.ts +44 -0
  302. package/schematics/component-migration/utils/typescript/compiler_host.js +87 -0
  303. package/schematics/component-migration/utils/typescript/decorators.d.ts +22 -0
  304. package/schematics/component-migration/utils/typescript/decorators.js +41 -0
  305. package/schematics/component-migration/utils/typescript/functions.d.ts +14 -0
  306. package/schematics/component-migration/utils/typescript/functions.js +20 -0
  307. package/schematics/component-migration/utils/typescript/imports.d.ts +17 -0
  308. package/schematics/component-migration/utils/typescript/imports.js +110 -0
  309. package/schematics/component-migration/utils/typescript/parse_tsconfig.d.ts +9 -0
  310. package/schematics/component-migration/utils/typescript/parse_tsconfig.js +29 -0
  311. package/schematics/component-migration/utils/typescript/property-name.d.ts +13 -0
  312. package/schematics/component-migration/utils/typescript/property-name.js +22 -0
  313. package/schematics/package.json +3 -0
  314. package/types/design-factory-angular-accordion.d.ts +553 -0
  315. package/types/design-factory-angular-alert.d.ts +166 -0
  316. package/types/design-factory-angular-breakpoints.d.ts +13 -0
  317. package/types/design-factory-angular-button.d.ts +166 -0
  318. package/types/design-factory-angular-buttongroup.d.ts +45 -0
  319. package/types/design-factory-angular-drawer.d.ts +19 -26
  320. package/types/design-factory-angular-dropdown.d.ts +148 -0
  321. package/types/design-factory-angular-form-field.d.ts +122 -0
  322. package/types/design-factory-angular-icon.d.ts +11 -0
  323. package/types/design-factory-angular-input.d.ts +16 -0
  324. package/types/design-factory-angular-internals.d.ts +78 -19
  325. package/types/design-factory-angular-separator.d.ts +29 -0
  326. package/types/design-factory-angular-sidenav.d.ts +114 -17
  327. package/types/design-factory-angular-slider.d.ts +239 -0
  328. package/types/design-factory-angular-toggle.d.ts +93 -0
  329. package/types/design-factory-angular-tooltip.d.ts +113 -0
  330. package/types/design-factory-angular-topnav.d.ts +47 -52
  331. package/drawer/README.md +0 -54
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-factory-angular-button.mjs","sources":["../../button/button-host.ts","../../button/button-visual.ts","../../button/button.ts","../../button/design-factory-angular-button.ts"],"sourcesContent":["import { booleanAttribute, DestroyRef, Directive, ElementRef, inject, input } from '@angular/core';\n\n/**\n * Internal host behavior for DF button-like directives.\n *\n * @since 22.0\n * @internal\n */\n@Directive({\n host: {\n '[attr.type]': 'isButton ? type() : null',\n '[attr.disabled]': 'isButton && disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'isAnchor && disabled() ? \"true\" : null',\n '[attr.tabindex]': 'isAnchor && disabled() ? \"-1\" : tabindex()',\n '(keydown)': 'onKeydown($event)'\n }\n})\nexport class ɵDfButtonHost {\n /**\n * Native button type attribute.\n * @defaultValue `'button'`\n */\n readonly type = input<HTMLButtonElement['type']>('button');\n /**\n * Disabled state for buttons and anchor buttons.\n * @defaultValue `false`\n */\n readonly disabled = input(false, { transform: booleanAttribute });\n /**\n * Host tabindex override.\n * @defaultValue `undefined`\n */\n readonly tabindex = input<string | number | null | undefined>(undefined);\n readonly #hostEl = inject<ElementRef<HTMLButtonElement | HTMLAnchorElement>>(ElementRef).nativeElement;\n protected readonly isButton = this.#hostEl.tagName.toLowerCase() === 'button';\n protected readonly isAnchor = this.#hostEl.tagName.toLowerCase() === 'a';\n\n constructor() {\n // Angular host listener metadata does not expose capture-phase options. Use a native listener so\n // disabled anchor buttons can block clicks before RouterLink or other bubble-phase handlers navigate.\n if (this.isAnchor) {\n const destroyRef = inject(DestroyRef);\n\n const onClickCapture = (event: Event) => {\n if (this.disabled()) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n };\n\n this.#hostEl.addEventListener('click', onClickCapture, { capture: true });\n destroyRef.onDestroy(() => this.#hostEl.removeEventListener('click', onClickCapture, { capture: true }));\n }\n }\n\n protected onKeydown(event: KeyboardEvent) {\n if (this.isAnchor && this.disabled() && (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar')) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n afterNextRender,\n booleanAttribute,\n computed,\n Directive,\n ElementRef,\n inject,\n InjectionToken,\n input,\n PLATFORM_ID\n} from '@angular/core';\nimport type { DfButtonAppearance, DfButtonSize, DfButtonVariant } from './button.types';\n\n/**\n * Interface for the `dfButtonGroup` directive, which is provided to all `dfButton` elements in a group.\n *\n * @since 22.0\n * @internal\n */\nexport interface ɵDfButtonGroupInterface {\n readonly size: () => DfButtonSize;\n readonly appearance: () => 'solid' | 'outline';\n readonly mirror: () => boolean;\n readonly orientation: () => 'horizontal' | 'vertical';\n}\n\n/**\n * Injection token for the `dfButtonGroup` directive, which is provided to all `dfButton` elements in a group.\n *\n * @since 22.0\n * @internal\n */\nexport const ɵDfButtonGroupInjectionToken = new InjectionToken<ɵDfButtonGroupInterface>('DfButtonGroup');\n\n/**\n * Shared visual directive for DF button-like elements.\n *\n * @since 22.0\n * @internal\n */\n@Directive({\n host: {\n class: 'df-btn df-btn-no-transition',\n '[class.df-btn-solid]': `resolvedAppearance() === 'solid'`,\n '[class.df-btn-outline]': `resolvedAppearance() === 'outline'`,\n '[class.df-btn-text]': `resolvedAppearance() === 'text'`,\n '[class.df-btn-transparent]': `resolvedTransparent() && resolvedAppearance() !== 'solid'`,\n '[class.df-btn-primary]': `resolvedVariant() === 'primary'`,\n '[class.df-btn-neutral]': `resolvedVariant() === 'neutral'`,\n '[class.df-btn-danger]': `resolvedVariant() === 'danger'`,\n '[class.df-btn-mirror]': 'resolvedMirror()',\n '[class.df-btn-sm]': `resolvedSize() === 'sm'`,\n '[class.df-btn-lg]': `resolvedSize() === 'lg'`\n }\n})\nexport class ɵDfButtonVisual {\n /**\n * The button group that contains this button, if any.\n */\n private readonly buttonGroup = inject(ɵDfButtonGroupInjectionToken, { optional: true });\n /**\n * Semantic variant of the button. Forced to `'primary'` if the button is in a `df-button-group`.\n * @defaultValue `'primary'`\n */\n readonly variant = input<DfButtonVariant>('primary');\n /**\n * Effective variant applied to the host. Resolves to `'primary'` when the button is in a `df-button-group`,\n * otherwise falls back to the `variant` input.\n */\n protected readonly resolvedVariant = this.buttonGroup ? () => 'primary' as const : this.variant;\n /**\n * Visual appearance of the button. In a `df-button-group`, the group appearance is used unless the button\n * sets an explicit `'solid'` or `'outline'` appearance.\n * @defaultValue `'solid'`\n */\n readonly appearance = input<DfButtonAppearance>();\n /**\n * Effective appearance applied to the host. In a `df-button-group`, resolves to the group appearance unless the\n * button sets an explicit `'solid'` or `'outline'` appearance; otherwise falls back to the `appearance` input or\n * `'solid'`.\n */\n protected readonly resolvedAppearance = computed(() => {\n const appearance = this.appearance();\n if (this.buttonGroup && (!appearance || appearance === 'text')) {\n return this.buttonGroup.appearance();\n }\n return appearance ?? 'solid';\n });\n /**\n * Size of the button. Ignored if the button is in a `df-button-group` (the group size is used instead).\n * @defaultValue `'md'`\n */\n readonly size = input<DfButtonSize>('md');\n /**\n * Effective size applied to the host. Resolves to the group size when the button is in a `df-button-group`,\n * otherwise falls back to the `size` input.\n */\n protected readonly resolvedSize = this.buttonGroup ? this.buttonGroup.size : this.size;\n /**\n * Makes outline and text buttons transparent. Solid buttons are unaffected.\n * Ignored if the button is in a `df-button-group` (transparent buttons are currently not supported in groups).\n * @defaultValue `false`\n */\n readonly transparent = input(false, { transform: booleanAttribute });\n /**\n * Effective transparent flag applied to the host. Always false in a `df-button-group`, otherwise falls back\n * to the `transparent` input.\n */\n protected readonly resolvedTransparent = this.buttonGroup ? () => false : this.transparent;\n /**\n * Enables mirrored styling for inverse surfaces.\n * Ignored if the button is in a `df-button-group` (the group value is used instead).\n * @defaultValue `false`\n */\n readonly mirror = input(false, { transform: booleanAttribute });\n /**\n * Effective mirror flag applied to the host. Resolves to the group value when the button is in a\n * `df-button-group`, otherwise falls back to the `mirror` input.\n */\n protected readonly resolvedMirror = this.buttonGroup ? this.buttonGroup.mirror : this.mirror;\n\n constructor() {\n // Angular may attach the host class bindings one tick after the host element is inserted when routed views render.\n // See https://github.com/angular/angular/issues/57528 and https://github.com/angular/angular/issues/66923.\n // That briefly animates the initial color, background, and border changes, causing a visible flicker on first render.\n // Keep transitions disabled for the first client frame so those initial class changes do not animate.\n if (isPlatformBrowser(inject(PLATFORM_ID))) {\n const hostEl = inject<ElementRef<HTMLElement>>(ElementRef).nativeElement;\n afterNextRender(() => requestAnimationFrame(() => hostEl.classList.remove('df-btn-no-transition')));\n }\n }\n}\n","/* eslint-disable @angular-eslint/component-selector */\nimport { Component, ViewEncapsulation } from '@angular/core';\nimport { ɵDfButtonHost } from './button-host';\nimport { ɵDfButtonVisual } from './button-visual';\nexport type { DfButtonAppearance, DfButtonSize, DfButtonVariant } from './button.types';\n\n/**\n * Design Factory button directive for native `<button>` and `<a>` elements.\n *\n * @since 22.0\n */\n@Component({\n selector: 'button[dfButton], a[dfButton]',\n hostDirectives: [\n {\n directive: ɵDfButtonVisual,\n inputs: ['variant', 'appearance', 'size', 'transparent', 'mirror']\n },\n {\n directive: ɵDfButtonHost,\n inputs: ['type', 'disabled', 'tabindex']\n }\n ],\n template: `<ng-content />`,\n styleUrls: ['./button.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DfButton {}\n\n/**\n * Design Factory icon-only button directive for native `<button>` and `<a>` elements.\n *\n * Provide an accessible name with `aria-label` or `aria-labelledby`.\n * Provide the icon with classes on the host element.\n *\n * @since 22.0\n */\n@Component({\n selector: 'button[dfIconButton], a[dfIconButton]',\n host: {\n class: 'df-btn-icononly'\n },\n hostDirectives: [\n {\n directive: ɵDfButtonVisual,\n inputs: ['variant', 'appearance', 'size', 'transparent', 'mirror']\n },\n {\n directive: ɵDfButtonHost,\n inputs: ['type', 'disabled', 'tabindex']\n }\n ],\n template: ``,\n styleUrls: ['./button.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DfIconButton {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, booleanAttribute, ViewEncapsulation, Component } from '@angular/core';
3
+ import { ɵDfButtonGroupInjectionToken as _DfButtonGroupInjectionToken } from '@design-factory/angular/button';
4
+
5
+ /**
6
+ * Groups a set of related `dfButton` actions, rendering them as a single visually joined control.
7
+ *
8
+ * Project `dfButton` elements as content:
9
+ *
10
+ * ```html
11
+ * <df-button-group [size]="'md'" [appearance]="'outline'">
12
+ * <button dfButton [appearance]="'solid'">Main action</button>
13
+ * <button dfButton>Left</button>
14
+ * <button dfButton>Middle</button>
15
+ * <button dfButton>Right</button>
16
+ * </df-button-group>
17
+ * ```
18
+ *
19
+ * @since 22.0
20
+ */
21
+ class DfButtonGroup {
22
+ constructor() {
23
+ /**
24
+ * The size of the buttons in the group.
25
+ * @defaultValue `'md'`
26
+ */
27
+ this.size = input('md', /* @ts-ignore */
28
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
29
+ /**
30
+ * The appearance of the buttons in the group.
31
+ * @defaultValue `'outline'`
32
+ */
33
+ this.appearance = input('outline', /* @ts-ignore */
34
+ ...(ngDevMode ? [{ debugName: "appearance" }] : /* istanbul ignore next */ []));
35
+ /**
36
+ * Enables mirrored styling for inverse surfaces.
37
+ * @defaultValue `false`
38
+ */
39
+ this.mirror = input(false, { ...(ngDevMode ? { debugName: "mirror" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
40
+ /**
41
+ * The orientation of the button group.
42
+ * @defaultValue `'horizontal'`
43
+ */
44
+ this.orientation = input('horizontal', /* @ts-ignore */
45
+ ...(ngDevMode ? [{ debugName: "orientation" }] : /* istanbul ignore next */ []));
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfButtonGroup, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.4", type: DfButtonGroup, isStandalone: true, selector: "df-button-group", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, appearance: { classPropertyName: "appearance", publicName: "appearance", isSignal: true, isRequired: false, transformFunction: null }, mirror: { classPropertyName: "mirror", publicName: "mirror", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "group" }, properties: { "class.df-btn-group-horizontal": "orientation() === 'horizontal'", "class.df-btn-group-vertical": "orientation() === 'vertical'" }, classAttribute: "df-btn-group" }, providers: [
49
+ {
50
+ provide: _DfButtonGroupInjectionToken,
51
+ useExisting: DfButtonGroup
52
+ }
53
+ ], ngImport: i0, template: `<ng-content />`, isInline: true, styles: [".df-btn-group{display:inline-flex;position:relative;isolation:isolate}.df-btn-group>.df-btn{position:relative;flex:1 1 auto}.df-btn-group>.df-btn:hover,.df-btn-group>.df-btn:focus,.df-btn-group>.df-btn:active{z-index:1}.df-btn-group>.df-btn:focus-visible{z-index:2;outline:0;box-shadow:0 0 0 2px var(--df-color-inert-neutral-main-pageBackground),0 0 0 4px var(--df-button-focus-ring-color)}.df-btn-group>.df-btn:is(:disabled,[aria-disabled=true]){z-index:-1}.df-btn-group-horizontal{flex-direction:row;align-items:center;vertical-align:middle}.df-btn-group-horizontal>.df-btn:not(:first-child){margin-inline-start:-1px;border-start-start-radius:0;border-end-start-radius:0}.df-btn-group-horizontal>.df-btn:not(:last-child,.df-dropdown-toggle){border-start-end-radius:0;border-end-end-radius:0}.df-btn-group-horizontal>.df-btn.df-btn-solid.df-dropdown-toggle{margin-inline-start:0;border-inline-start-color:transparent;background-clip:padding-box}.df-btn-group-vertical{flex-direction:column;align-items:stretch}.df-btn-group-vertical>.df-btn:not(:first-child){margin-block-start:-1px;border-start-start-radius:0;border-start-end-radius:0}.df-btn-group-vertical>.df-btn:not(:last-child,.df-dropdown-toggle){border-end-start-radius:0;border-end-end-radius:0}.df-btn-group-vertical>.df-btn.df-btn-solid.df-dropdown-toggle{margin-block-start:0;border-block-start-color:transparent;background-clip:padding-box}\n"], encapsulation: i0.ViewEncapsulation.None }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfButtonGroup, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'df-button-group', host: {
58
+ role: 'group',
59
+ class: 'df-btn-group',
60
+ '[class.df-btn-group-horizontal]': `orientation() === 'horizontal'`,
61
+ '[class.df-btn-group-vertical]': `orientation() === 'vertical'`
62
+ }, providers: [
63
+ {
64
+ provide: _DfButtonGroupInjectionToken,
65
+ useExisting: DfButtonGroup
66
+ }
67
+ ], template: `<ng-content />`, encapsulation: ViewEncapsulation.None, styles: [".df-btn-group{display:inline-flex;position:relative;isolation:isolate}.df-btn-group>.df-btn{position:relative;flex:1 1 auto}.df-btn-group>.df-btn:hover,.df-btn-group>.df-btn:focus,.df-btn-group>.df-btn:active{z-index:1}.df-btn-group>.df-btn:focus-visible{z-index:2;outline:0;box-shadow:0 0 0 2px var(--df-color-inert-neutral-main-pageBackground),0 0 0 4px var(--df-button-focus-ring-color)}.df-btn-group>.df-btn:is(:disabled,[aria-disabled=true]){z-index:-1}.df-btn-group-horizontal{flex-direction:row;align-items:center;vertical-align:middle}.df-btn-group-horizontal>.df-btn:not(:first-child){margin-inline-start:-1px;border-start-start-radius:0;border-end-start-radius:0}.df-btn-group-horizontal>.df-btn:not(:last-child,.df-dropdown-toggle){border-start-end-radius:0;border-end-end-radius:0}.df-btn-group-horizontal>.df-btn.df-btn-solid.df-dropdown-toggle{margin-inline-start:0;border-inline-start-color:transparent;background-clip:padding-box}.df-btn-group-vertical{flex-direction:column;align-items:stretch}.df-btn-group-vertical>.df-btn:not(:first-child){margin-block-start:-1px;border-start-start-radius:0;border-start-end-radius:0}.df-btn-group-vertical>.df-btn:not(:last-child,.df-dropdown-toggle){border-end-start-radius:0;border-end-end-radius:0}.df-btn-group-vertical>.df-btn.df-btn-solid.df-dropdown-toggle{margin-block-start:0;border-block-start-color:transparent;background-clip:padding-box}\n"] }]
68
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], appearance: [{ type: i0.Input, args: [{ isSignal: true, alias: "appearance", required: false }] }], mirror: [{ type: i0.Input, args: [{ isSignal: true, alias: "mirror", required: false }] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }] } });
69
+
70
+ /**
71
+ * Generated bundle index. Do not edit.
72
+ */
73
+
74
+ export { DfButtonGroup };
75
+ //# sourceMappingURL=design-factory-angular-buttongroup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"design-factory-angular-buttongroup.mjs","sources":["../../buttongroup/buttongroup.ts","../../buttongroup/design-factory-angular-buttongroup.ts"],"sourcesContent":["import { booleanAttribute, Component, input, ViewEncapsulation } from '@angular/core';\nimport { DfButtonSize, ɵDfButtonGroupInjectionToken, ɵDfButtonGroupInterface } from '@design-factory/angular/button';\n\n/**\n * Groups a set of related `dfButton` actions, rendering them as a single visually joined control.\n *\n * Project `dfButton` elements as content:\n *\n * ```html\n * <df-button-group [size]=\"'md'\" [appearance]=\"'outline'\">\n * <button dfButton [appearance]=\"'solid'\">Main action</button>\n * <button dfButton>Left</button>\n * <button dfButton>Middle</button>\n * <button dfButton>Right</button>\n * </df-button-group>\n * ```\n *\n * @since 22.0\n */\n@Component({\n selector: 'df-button-group',\n host: {\n role: 'group',\n class: 'df-btn-group',\n '[class.df-btn-group-horizontal]': `orientation() === 'horizontal'`,\n '[class.df-btn-group-vertical]': `orientation() === 'vertical'`\n },\n providers: [\n {\n provide: ɵDfButtonGroupInjectionToken,\n useExisting: DfButtonGroup\n }\n ],\n template: `<ng-content />`,\n styleUrls: ['./buttongroup.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class DfButtonGroup implements ɵDfButtonGroupInterface {\n /**\n * The size of the buttons in the group.\n * @defaultValue `'md'`\n */\n readonly size = input<DfButtonSize>('md');\n /**\n * The appearance of the buttons in the group.\n * @defaultValue `'outline'`\n */\n readonly appearance = input<'solid' | 'outline'>('outline');\n /**\n * Enables mirrored styling for inverse surfaces.\n * @defaultValue `false`\n */\n readonly mirror = input(false, { transform: booleanAttribute });\n /**\n * The orientation of the button group.\n * @defaultValue `'horizontal'`\n */\n readonly orientation = input<'horizontal' | 'vertical'>('horizontal');\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["ɵDfButtonGroupInjectionToken"],"mappings":";;;;AAGA;;;;;;;;;;;;;;;AAeG;MAmBU,aAAa,CAAA;AAlB1B,IAAA,WAAA,GAAA;AAmBE;;;AAGG;QACM,IAAA,CAAA,IAAI,GAAG,KAAK,CAAe,IAAI;iFAAC;AACzC;;;AAGG;QACM,IAAA,CAAA,UAAU,GAAG,KAAK,CAAsB,SAAS;uFAAC;AAC3D;;;AAGG;QACM,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,KAAK,8EAAI,SAAS,EAAE,gBAAgB,EAAA,CAAG;AAC/D;;;AAGG;QACM,IAAA,CAAA,WAAW,GAAG,KAAK,CAA4B,YAAY;wFAAC;AACtE,IAAA;8GArBY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,EAAA,+BAAA,EAAA,gCAAA,EAAA,6BAAA,EAAA,8BAAA,EAAA,EAAA,cAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EAVb;AACT,YAAA;AACE,gBAAA,OAAO,EAAEA,4BAA4B;AACrC,gBAAA,WAAW,EAAE;AACd;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EACS,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,i4CAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAIf,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlBzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,IAAA,EACrB;AACJ,wBAAA,IAAI,EAAE,OAAO;AACb,wBAAA,KAAK,EAAE,cAAc;AACrB,wBAAA,iCAAiC,EAAE,CAAA,8BAAA,CAAgC;AACnE,wBAAA,+BAA+B,EAAE,CAAA,4BAAA;qBAClC,EAAA,SAAA,EACU;AACT,wBAAA;AACE,4BAAA,OAAO,EAAEA,4BAA4B;AACrC,4BAAA,WAAW,EAAA;AACZ;AACF,qBAAA,EAAA,QAAA,EACS,CAAA,cAAA,CAAgB,EAAA,aAAA,EAEX,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,i4CAAA,CAAA,EAAA;;;ACnCvC;;AAEG;;;;"}
@@ -4,8 +4,9 @@ import { createCollapseTransition } from '@design-factory/core/services/transiti
4
4
  import { createSimpleClassTransition } from '@design-factory/core/services/transitions/simpleClassTransition';
5
5
  import { NgTemplateOutlet } from '@angular/common';
6
6
  import * as i0 from '@angular/core';
7
- import { inject, TemplateRef, Directive, contentChild, computed, input, booleanAttribute, model, output, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
7
+ import { Directive, contentChild, TemplateRef, computed, input, booleanAttribute, model, output, ViewEncapsulation, Component } from '@angular/core';
8
8
  import { AgnosWidgetDirective, callWidgetFactory, UseDirective, UseMultiDirective } from '@design-factory/angular/internals';
9
+ import { DfIconButton } from '@design-factory/angular/button';
9
10
 
10
11
  const fadeTransition = createSimpleClassTransition({
11
12
  animationPendingClasses: ['df-fade'],
@@ -26,48 +27,39 @@ const horizontalConfig = {
26
27
  animationPendingClasses: ['df-collapse-collapsing', 'df-collapse-horizontal']
27
28
  };
28
29
  /**
29
- * Marks an `<ng-template>` as drawer header content.
30
+ * A directive to define a template containing the header content of the drawer.
30
31
  */
31
32
  class DfDrawerHeaderTemplate {
32
- constructor() {
33
- this.templateRef = inject(TemplateRef);
34
- }
35
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerHeaderTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
36
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerHeaderTemplate, isStandalone: true, selector: "ng-template[dfDrawerHeader]", ngImport: i0 }); }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerHeaderTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
34
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfDrawerHeaderTemplate, isStandalone: true, selector: "ng-template[dfDrawerHeader]", ngImport: i0 }); }
37
35
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerHeaderTemplate, decorators: [{
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerHeaderTemplate, decorators: [{
39
37
  type: Directive,
40
38
  args: [{
41
39
  selector: 'ng-template[dfDrawerHeader]'
42
40
  }]
43
41
  }] });
44
42
  /**
45
- * Marks an `<ng-template>` as drawer body content.
43
+ * A directive to define a template containing the body content of the drawer.
46
44
  */
47
45
  class DfDrawerBodyTemplate {
48
- constructor() {
49
- this.templateRef = inject(TemplateRef);
50
- }
51
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerBodyTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
52
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerBodyTemplate, isStandalone: true, selector: "ng-template[dfDrawerBody]", ngImport: i0 }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerBodyTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
47
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfDrawerBodyTemplate, isStandalone: true, selector: "ng-template[dfDrawerBody]", ngImport: i0 }); }
53
48
  }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerBodyTemplate, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerBodyTemplate, decorators: [{
55
50
  type: Directive,
56
51
  args: [{
57
52
  selector: 'ng-template[dfDrawerBody]'
58
53
  }]
59
54
  }] });
60
55
  /**
61
- * Marks an `<ng-template>` as drawer footer content.
56
+ * A directive to define a template containing the footer content of the drawer.
62
57
  */
63
58
  class DfDrawerFooterTemplate {
64
- constructor() {
65
- this.templateRef = inject(TemplateRef);
66
- }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerFooterTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
68
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.0", type: DfDrawerFooterTemplate, isStandalone: true, selector: "ng-template[dfDrawerFooter]", ngImport: i0 }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerFooterTemplate, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
60
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.4", type: DfDrawerFooterTemplate, isStandalone: true, selector: "ng-template[dfDrawerFooter]", ngImport: i0 }); }
69
61
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawerFooterTemplate, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawerFooterTemplate, decorators: [{
71
63
  type: Directive,
72
64
  args: [{
73
65
  selector: 'ng-template[dfDrawerFooter]'
@@ -75,7 +67,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
75
67
  }] });
76
68
  /**
77
69
  * Enables users to show contextual content via a sliding panel from any screen edge.
78
- * @experimental
70
+ *
71
+ * See {@link https://design-factory.amadeus.net/components/drawer|Design Factory documentation} for details and examples.
72
+ * @since 21.1
79
73
  */
80
74
  class DfDrawer extends AgnosWidgetDirective {
81
75
  constructor() {
@@ -90,7 +84,6 @@ class DfDrawer extends AgnosWidgetDirective {
90
84
  events: {
91
85
  onSizeChange: (size) => {
92
86
  this.size.set(size);
93
- this.sizeChange.emit(size);
94
87
  },
95
88
  onVisibleChange: (visible) => {
96
89
  this.visibleChange.emit(visible);
@@ -107,64 +100,73 @@ class DfDrawer extends AgnosWidgetDirective {
107
100
  }
108
101
  });
109
102
  super(widget);
110
- this.headerTemplate = contentChild(DfDrawerHeaderTemplate, ...(ngDevMode ? [{ debugName: "headerTemplate" }] : []));
111
- this.bodyTemplate = contentChild(DfDrawerBodyTemplate, ...(ngDevMode ? [{ debugName: "bodyTemplate" }] : []));
112
- this.footerTemplate = contentChild(DfDrawerFooterTemplate, ...(ngDevMode ? [{ debugName: "footerTemplate" }] : []));
113
- this.hasSectionTemplates = computed(() => !!this.headerTemplate() || !!this.bodyTemplate() || !!this.footerTemplate(), ...(ngDevMode ? [{ debugName: "hasSectionTemplates" }] : []));
103
+ this.headerTemplate = contentChild(DfDrawerHeaderTemplate, { ...(ngDevMode ? { debugName: "headerTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
104
+ this.bodyTemplate = contentChild(DfDrawerBodyTemplate, { ...(ngDevMode ? { debugName: "bodyTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
105
+ this.footerTemplate = contentChild(DfDrawerFooterTemplate, { ...(ngDevMode ? { debugName: "footerTemplate" } : /* istanbul ignore next */ {}), read: TemplateRef });
106
+ this.hasSectionTemplates = computed(() => !!this.headerTemplate() || !!this.bodyTemplate() || !!this.footerTemplate(), /* @ts-ignore */
107
+ ...(ngDevMode ? [{ debugName: "hasSectionTemplates" }] : /* istanbul ignore next */ []));
114
108
  /**
115
109
  * CSS classes to be applied on the widget main container
116
110
  *
117
111
  * @defaultValue ``
118
112
  */
119
- this.className = input('', ...(ngDevMode ? [{ debugName: "className" }] : []));
113
+ this.className = input('', /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
120
115
  /**
121
116
  * If `true` allows body scrolling when the drawer is open.
122
117
  *
123
118
  * @defaultValue `false`
124
119
  */
125
- this.bodyScroll = input(false, { ...(ngDevMode ? { debugName: "bodyScroll" } : {}), transform: booleanAttribute });
120
+ this.bodyScroll = input(false, { ...(ngDevMode ? { debugName: "bodyScroll" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
126
121
  /**
127
122
  * If `true` displays the backdrop element and disables the body scrolling, otherwise the body of the document is navigable
128
123
  *
129
124
  * @defaultValue `true`
130
125
  */
131
- this.backdrop = input(true, { ...(ngDevMode ? { debugName: "backdrop" } : {}), transform: booleanAttribute });
126
+ this.backdrop = input(true, { ...(ngDevMode ? { debugName: "backdrop" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
127
+ /**
128
+ * If `true` the drawer will be closed when clicking on the backdrop, otherwise the backdrop is static and non iteractive.
129
+ *
130
+ * @defaultValue `true`
131
+ */
132
+ this.closeOnBackdropClick = input(true, { ...(ngDevMode ? { debugName: "closeOnBackdropClick" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
132
133
  /**
133
134
  * Which element should contain the drawer and backdrop DOM elements.
134
135
  * If it is not null, the drawer and backdrop DOM elements are moved to the specified container.
135
136
  * Otherwise, they stay where the widget is located.
136
137
  *
137
- * @defaultValue
138
- * ```ts
139
- * typeof window !== 'undefined' ? document.body : null
140
- * ```
138
+ * Defaults to `document.body` in the browser and `null` on the server.
139
+ *
140
+ * @defaultValue `document.body`
141
141
  */
142
- this.container = input(null, ...(ngDevMode ? [{ debugName: "container" }] : []));
142
+ this.container = input(null, /* @ts-ignore */
143
+ ...(ngDevMode ? [{ debugName: "container" }] : /* istanbul ignore next */ []));
143
144
  /**
144
145
  * The size of the drawer in pixels.
145
146
  *
146
147
  * @defaultValue `300`
147
148
  */
148
- this.size = model(300, ...(ngDevMode ? [{ debugName: "size" }] : []));
149
+ this.size = model(300, /* @ts-ignore */
150
+ ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
149
151
  /**
150
152
  * If `true`, the drawer can be resized by the user.
151
153
  *
152
154
  * @defaultValue `false`
153
155
  */
154
- this.resizable = input(false, { ...(ngDevMode ? { debugName: "resizable" } : {}), transform: booleanAttribute });
156
+ this.resizable = input(false, { ...(ngDevMode ? { debugName: "resizable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
155
157
  /**
156
158
  * If `true`, the drawer is shown; otherwise, it is hidden.
157
159
  *
158
160
  * @defaultValue `false`
159
161
  */
160
- this.visible = input(false, { ...(ngDevMode ? { debugName: "visible" } : {}), transform: booleanAttribute });
162
+ this.visible = input(false, { ...(ngDevMode ? { debugName: "visible" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
161
163
  /**
162
164
  * If `true`, the drawer element is kept in the DOM when it is not visible.
163
165
  * This can be useful to preserve the state of the drawer content when it is hidden.
164
166
  *
165
167
  * @defaultValue `false`
166
168
  */
167
- this.keepInDom = input(false, { ...(ngDevMode ? { debugName: "keepInDom" } : {}), transform: booleanAttribute });
169
+ this.keepInDom = input(false, { ...(ngDevMode ? { debugName: "keepInDom" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
168
170
  /**
169
171
  * The display configuration of the drawer.
170
172
  * - `'overlay'` (default): the drawer overlays the page content with a backdrop.
@@ -172,24 +174,15 @@ class DfDrawer extends AgnosWidgetDirective {
172
174
  *
173
175
  * @defaultValue `'overlay'`
174
176
  */
175
- this.configuration = input('overlay', ...(ngDevMode ? [{ debugName: "configuration" }] : []));
177
+ this.configuration = input('overlay', /* @ts-ignore */
178
+ ...(ngDevMode ? [{ debugName: "configuration" }] : /* istanbul ignore next */ []));
176
179
  /**
177
180
  * The position of the drawer on the screen.
178
181
  *
179
182
  * @defaultValue `'inline-start'`
180
183
  */
181
- this.position = input('inline-start', ...(ngDevMode ? [{ debugName: "position" }] : []));
182
- /**
183
- * An event emitted when the width is changed.
184
- *
185
- * Event payload is equal to the newly selected width.
186
- *
187
- * @defaultValue
188
- * ```ts
189
- * () => {}
190
- * ```
191
- */
192
- this.sizeChange = output();
184
+ this.position = input('inline-start', /* @ts-ignore */
185
+ ...(ngDevMode ? [{ debugName: "position" }] : /* istanbul ignore next */ []));
193
186
  /**
194
187
  * Event to be triggered when the visible property changes.
195
188
  *
@@ -233,7 +226,7 @@ class DfDrawer extends AgnosWidgetDirective {
233
226
  *
234
227
  * @defaultValue `true`
235
228
  */
236
- this.focusOnInit = input(true, { ...(ngDevMode ? { debugName: "focusOnInit" } : {}), transform: booleanAttribute });
229
+ this.focusOnInit = input(true, { ...(ngDevMode ? { debugName: "focusOnInit" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
237
230
  this.navManager = createNavManager();
238
231
  this.navManagerConfig = {
239
232
  keys: {
@@ -274,8 +267,8 @@ class DfDrawer extends AgnosWidgetDirective {
274
267
  close(animated) {
275
268
  return this.api.close(animated);
276
269
  }
277
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
278
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.0", type: DfDrawer, isStandalone: true, selector: "df-drawer", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, keepInDom: { classPropertyName: "keepInDom", publicName: "keepInDom", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, focusOnInit: { classPropertyName: "focusOnInit", publicName: "focusOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", sizeChange: "sizeChange", visibleChange: "visibleChange", minimizedChange: "minimizedChange", maximizedChange: "maximizedChange", resizingChange: "resizingChange", minSize: "minSize", maxSize: "maxSize" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: DfDrawerHeaderTemplate, descendants: true, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: DfDrawerBodyTemplate, descendants: true, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: DfDrawerFooterTemplate, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
270
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.4", type: DfDrawer, isStandalone: true, selector: "df-drawer", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, bodyScroll: { classPropertyName: "bodyScroll", publicName: "bodyScroll", isSignal: true, isRequired: false, transformFunction: null }, backdrop: { classPropertyName: "backdrop", publicName: "backdrop", isSignal: true, isRequired: false, transformFunction: null }, closeOnBackdropClick: { classPropertyName: "closeOnBackdropClick", publicName: "closeOnBackdropClick", isSignal: true, isRequired: false, transformFunction: null }, container: { classPropertyName: "container", publicName: "container", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, resizable: { classPropertyName: "resizable", publicName: "resizable", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, keepInDom: { classPropertyName: "keepInDom", publicName: "keepInDom", isSignal: true, isRequired: false, transformFunction: null }, configuration: { classPropertyName: "configuration", publicName: "configuration", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, focusOnInit: { classPropertyName: "focusOnInit", publicName: "focusOnInit", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { size: "sizeChange", visibleChange: "visibleChange", minimizedChange: "minimizedChange", maximizedChange: "maximizedChange", resizingChange: "resizingChange", minSize: "minSize", maxSize: "maxSize" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: DfDrawerHeaderTemplate, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "bodyTemplate", first: true, predicate: DfDrawerBodyTemplate, descendants: true, read: TemplateRef, isSignal: true }, { propertyName: "footerTemplate", first: true, predicate: DfDrawerFooterTemplate, descendants: true, read: TemplateRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
279
272
  @let isHidden = state.hidden();
280
273
  @let backdropHidden = state.backdropHidden();
281
274
  @if (!isHidden || keepInDom()) {
@@ -293,19 +286,19 @@ class DfDrawer extends AgnosWidgetDirective {
293
286
  @if (hasSectionTemplates()) {
294
287
  @if (headerTemplate(); as header) {
295
288
  <div class="df-drawer-header">
296
- <ng-template [ngTemplateOutlet]="header.templateRef" />
289
+ <ng-template [ngTemplateOutlet]="header" />
297
290
  </div>
298
291
  }
299
292
  <div class="df-drawer-body">
300
293
  @if (bodyTemplate(); as body) {
301
- <ng-template [ngTemplateOutlet]="body.templateRef" />
294
+ <ng-template [ngTemplateOutlet]="body" />
302
295
  } @else {
303
296
  <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
304
297
  }
305
298
  </div>
306
299
  @if (footerTemplate(); as footer) {
307
300
  <div class="df-drawer-footer">
308
- <ng-template [ngTemplateOutlet]="footer.templateRef" />
301
+ <ng-template [ngTemplateOutlet]="footer" />
309
302
  </div>
310
303
  }
311
304
  } @else {
@@ -321,14 +314,15 @@ class DfDrawer extends AgnosWidgetDirective {
321
314
  >
322
315
  <ng-content select="df-drawer-splitter-content">
323
316
  <button
317
+ dfIconButton
324
318
  #splitterHandle
325
- class="btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle"
326
- [class]="{
327
- 'fa-grip-lines-vertical': !isVertical,
328
- 'fa-grip-lines': isVertical,
329
- 'df-btn-outline-neutral-mirror': !backdropHidden,
330
- 'btn-outline-primary': backdropHidden
331
- }"
319
+ class="df-drawer-splitter-handle"
320
+ [class.fa-grip-lines]="isVertical"
321
+ [class.fa-grip-lines-vertical]="!isVertical"
322
+ appearance="text"
323
+ [variant]="backdropHidden ? 'primary' : 'neutral'"
324
+ [mirror]="!backdropHidden"
325
+ transparent
332
326
  i18n-aria-label="@@df.drawer.resize.ariaLabel"
333
327
  aria-label="Resize drawer"
334
328
  [dfUse]="[navManager.directive, navManagerConfig]"
@@ -344,11 +338,11 @@ class DfDrawer extends AgnosWidgetDirective {
344
338
  [dfUseMulti]="[directives.backdropPortalDirective, directives.backdropDirective]"
345
339
  ></div>
346
340
  }
347
- `, isInline: true, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none}.df-drawer{--df-drawer-z-index: 2010;--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:var(--df-drawer-z-index);position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline-end:auto;inset-inline-start:-32px}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block-end:auto;cursor:ns-resize;inset-block-start:-32px}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{--df-btn-bg: transparent;flex-shrink:0;border:none;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(max-width:576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{--df-drawer-backdrop-z-index: 2000;--df-drawer-backdrop-opacity: .9;position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:var(--df-drawer-backdrop-z-index)}.df-drawer-backdrop.df-show{opacity:var(--df-drawer-backdrop-opacity);pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: UseMultiDirective, selector: "[dfUseMulti]", inputs: ["dfUseMulti"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
341
+ `, isInline: true, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none!important}.df-drawer{--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:2010;position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline:-32px auto}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block:-32px auto;cursor:ns-resize}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent;touch-action:none}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{flex-shrink:0;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(width<=576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:2000}.df-drawer-backdrop.df-show{opacity:.9;pointer-events:auto}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: UseDirective, selector: "[dfUse]", inputs: ["dfUse"] }, { kind: "directive", type: UseMultiDirective, selector: "[dfUseMulti]", inputs: ["dfUseMulti"] }, { kind: "component", type: DfIconButton, selector: "button[dfIconButton], a[dfIconButton]" }], encapsulation: i0.ViewEncapsulation.None }); }
348
342
  }
349
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImport: i0, type: DfDrawer, decorators: [{
343
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.4", ngImport: i0, type: DfDrawer, decorators: [{
350
344
  type: Component,
351
- args: [{ selector: 'df-drawer', imports: [NgTemplateOutlet, UseDirective, UseMultiDirective], template: `
345
+ args: [{ selector: 'df-drawer', imports: [NgTemplateOutlet, UseDirective, UseMultiDirective, DfIconButton], template: `
352
346
  @let isHidden = state.hidden();
353
347
  @let backdropHidden = state.backdropHidden();
354
348
  @if (!isHidden || keepInDom()) {
@@ -366,19 +360,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
366
360
  @if (hasSectionTemplates()) {
367
361
  @if (headerTemplate(); as header) {
368
362
  <div class="df-drawer-header">
369
- <ng-template [ngTemplateOutlet]="header.templateRef" />
363
+ <ng-template [ngTemplateOutlet]="header" />
370
364
  </div>
371
365
  }
372
366
  <div class="df-drawer-body">
373
367
  @if (bodyTemplate(); as body) {
374
- <ng-template [ngTemplateOutlet]="body.templateRef" />
368
+ <ng-template [ngTemplateOutlet]="body" />
375
369
  } @else {
376
370
  <ng-template [ngTemplateOutlet]="defaultBodyTemplate" />
377
371
  }
378
372
  </div>
379
373
  @if (footerTemplate(); as footer) {
380
374
  <div class="df-drawer-footer">
381
- <ng-template [ngTemplateOutlet]="footer.templateRef" />
375
+ <ng-template [ngTemplateOutlet]="footer" />
382
376
  </div>
383
377
  }
384
378
  } @else {
@@ -394,14 +388,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
394
388
  >
395
389
  <ng-content select="df-drawer-splitter-content">
396
390
  <button
391
+ dfIconButton
397
392
  #splitterHandle
398
- class="btn df-btn-icononly df-btn-tertiary df-drawer-splitter-handle"
399
- [class]="{
400
- 'fa-grip-lines-vertical': !isVertical,
401
- 'fa-grip-lines': isVertical,
402
- 'df-btn-outline-neutral-mirror': !backdropHidden,
403
- 'btn-outline-primary': backdropHidden
404
- }"
393
+ class="df-drawer-splitter-handle"
394
+ [class.fa-grip-lines]="isVertical"
395
+ [class.fa-grip-lines-vertical]="!isVertical"
396
+ appearance="text"
397
+ [variant]="backdropHidden ? 'primary' : 'neutral'"
398
+ [mirror]="!backdropHidden"
399
+ transparent
405
400
  i18n-aria-label="@@df.drawer.resize.ariaLabel"
406
401
  aria-label="Resize drawer"
407
402
  [dfUse]="[navManager.directive, navManagerConfig]"
@@ -417,8 +412,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.0", ngImpor
417
412
  [dfUseMulti]="[directives.backdropPortalDirective, directives.backdropDirective]"
418
413
  ></div>
419
414
  }
420
- `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none}.df-drawer{--df-drawer-z-index: 2010;--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:var(--df-drawer-z-index);position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline-end:auto;inset-inline-start:-32px}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block-end:auto;cursor:ns-resize;inset-block-start:-32px}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{--df-btn-bg: transparent;flex-shrink:0;border:none;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(max-width:576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{--df-drawer-backdrop-z-index: 2000;--df-drawer-backdrop-opacity: .9;position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:var(--df-drawer-backdrop-z-index)}.df-drawer-backdrop.df-show{opacity:var(--df-drawer-backdrop-opacity);pointer-events:auto}\n"] }]
421
- }], ctorParameters: () => [], propDecorators: { headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerHeaderTemplate), { isSignal: true }] }], bodyTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerBodyTemplate), { isSignal: true }] }], footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerFooterTemplate), { isSignal: true }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], bodyScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyScroll", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], keepInDom: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepInDom", required: false }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], sizeChange: [{ type: i0.Output, args: ["sizeChange"] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], minimizedChange: [{ type: i0.Output, args: ["minimizedChange"] }], maximizedChange: [{ type: i0.Output, args: ["maximizedChange"] }], resizingChange: [{ type: i0.Output, args: ["resizingChange"] }], focusOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnInit", required: false }] }], minSize: [{ type: i0.Output, args: ["minSize"] }], maxSize: [{ type: i0.Output, args: ["maxSize"] }] } });
415
+ `, encapsulation: ViewEncapsulation.None, styles: [".df-fade{transition:opacity .15s linear}@media(prefers-reduced-motion:reduce){.df-fade{transition:none}}.df-fade:not(.df-show){opacity:0}.df-hidden{display:none!important}.df-drawer{--df-drawer-size: max-content;--df-drawer-min-size: 0;--df-drawer-max-size: 100vw;display:flex;flex-direction:column;width:100%;min-width:0;max-width:none;height:var(--df-drawer-size);min-height:var(--df-drawer-min-size);max-height:var(--df-drawer-max-size)}.df-drawer .df-drawer-header{display:flex;padding:var(--df-spacing-6) var(--df-spacing-4) var(--df-spacing-5) var(--df-spacing-6);border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer .df-drawer-body{padding:var(--df-spacing-6) var(--df-spacing-6) 0}.df-drawer .df-drawer-footer{display:flex;justify-content:end;padding:var(--df-spacing-6);margin-top:auto;flex-wrap:wrap}.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:var(--df-drawer-size);min-width:var(--df-drawer-min-size);max-width:var(--df-drawer-max-size);height:100%;min-height:0;max-height:none}.df-drawer{background-color:var(--df-color-inert-neutral-main-background);z-index:2010;position:fixed}.df-drawer.df-inline-start{inset-block:0;inset-inline-start:0;border-inline-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end{inset-block:0;inset-inline-end:0;border-inline-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-inline-end .df-drawer-splitter{inset-inline:-32px auto}.df-drawer.df-block-start{inset-inline:0;inset-block-start:0;border-block-end:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-start .df-drawer-splitter{inset-block-start:auto;cursor:ns-resize}.df-drawer.df-block-start .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer.df-block-end{inset-inline:0;inset-block-end:0;border-block-start:1px solid var(--df-color-inert-neutral-main-border)}.df-drawer.df-block-end .df-drawer-splitter{inset-block:-32px auto;cursor:ns-resize}.df-drawer.df-block-end .df-drawer-splitter .df-drawer-splitter-handle{cursor:ns-resize}.df-drawer .df-drawer-splitter{display:flex;position:absolute;inset-block:0;inset-inline-end:-4px;width:8px;cursor:ew-resize;background:transparent;touch-action:none}.df-drawer .df-drawer-splitter .df-drawer-splitter-handle{flex-shrink:0;cursor:ew-resize}.df-drawer.df-block-start .df-drawer-splitter,.df-drawer.df-block-end .df-drawer-splitter{inset-inline:0;width:auto;height:8px;cursor:ns-resize}.df-drawer.df-collapse-hide{display:none}.df-drawer.df-collapse-collapsing{min-width:0;min-height:0;height:0;overflow:hidden;transition:height .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing{transition:none}}.df-drawer.df-collapse-collapsing.df-collapse-horizontal{width:0;height:auto;transition:width .35s ease}@media(prefers-reduced-motion:reduce){.df-drawer.df-collapse-collapsing.df-collapse-horizontal{transition:none}}@media(width<=576px){.df-drawer.df-inline-start,.df-drawer.df-inline-end{width:100dvw;min-width:100dvw;max-width:100dvw}.df-drawer.df-block-start,.df-drawer.df-block-end{height:100dvh;min-height:100dvh;max-height:100dvh}}.df-drawer-backdrop{position:fixed;inset:0;background-color:var(--df-color-backdrop-background);z-index:2000}.df-drawer-backdrop.df-show{opacity:.9;pointer-events:auto}\n"] }]
416
+ }], ctorParameters: () => [], propDecorators: { headerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerHeaderTemplate), { ...{ read: TemplateRef }, isSignal: true }] }], bodyTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerBodyTemplate), { ...{ read: TemplateRef }, isSignal: true }] }], footerTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => DfDrawerFooterTemplate), { ...{ read: TemplateRef }, isSignal: true }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], bodyScroll: [{ type: i0.Input, args: [{ isSignal: true, alias: "bodyScroll", required: false }] }], backdrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "backdrop", required: false }] }], closeOnBackdropClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnBackdropClick", required: false }] }], container: [{ type: i0.Input, args: [{ isSignal: true, alias: "container", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }, { type: i0.Output, args: ["sizeChange"] }], resizable: [{ type: i0.Input, args: [{ isSignal: true, alias: "resizable", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], keepInDom: [{ type: i0.Input, args: [{ isSignal: true, alias: "keepInDom", required: false }] }], configuration: [{ type: i0.Input, args: [{ isSignal: true, alias: "configuration", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], visibleChange: [{ type: i0.Output, args: ["visibleChange"] }], minimizedChange: [{ type: i0.Output, args: ["minimizedChange"] }], maximizedChange: [{ type: i0.Output, args: ["maximizedChange"] }], resizingChange: [{ type: i0.Output, args: ["resizingChange"] }], focusOnInit: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusOnInit", required: false }] }], minSize: [{ type: i0.Output, args: ["minSize"] }], maxSize: [{ type: i0.Output, args: ["maxSize"] }] } });
422
417
 
423
418
  /**
424
419
  * Generated bundle index. Do not edit.