@radix-ng/primitives 0.11.0 → 0.12.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 (445) hide show
  1. package/.compodocrc.json +12 -0
  2. package/CHANGELOG.md +182 -0
  3. package/LICENSE +21 -0
  4. package/accordion/__tests__/accordion-content.directive.spec.ts +8 -0
  5. package/accordion/__tests__/accordion-header.directive.spec.ts +8 -0
  6. package/accordion/__tests__/accordion-item.directive.spec.ts +8 -0
  7. package/accordion/__tests__/accordion-root.directive.spec.ts +8 -0
  8. package/accordion/__tests__/accordion-trigger.directive.spec.ts +8 -0
  9. package/accordion/ng-package.json +5 -0
  10. package/accordion/src/accordion-content.directive.ts +46 -0
  11. package/accordion/src/accordion-header.directive.ts +15 -0
  12. package/accordion/src/accordion-item.directive.ts +216 -0
  13. package/accordion/src/accordion-root.directive.ts +205 -0
  14. package/accordion/src/accordion-trigger.directive.ts +37 -0
  15. package/accordion/stories/accordion.docs.mdx +77 -0
  16. package/accordion/stories/accordion.stories.ts +340 -0
  17. package/alert-dialog/{index.d.ts → index.ts} +1 -0
  18. package/alert-dialog/ng-package.json +5 -0
  19. package/alert-dialog/src/alert-dialog-cancel.directive.ts +17 -0
  20. package/alert-dialog/src/alert-dialog-content.directive.ts +24 -0
  21. package/alert-dialog/src/alert-dialog-root.directive.ts +15 -0
  22. package/alert-dialog/src/alert-dialog-title.directive.ts +7 -0
  23. package/alert-dialog/src/alert-dialog-trigger.directive.ts +17 -0
  24. package/alert-dialog/src/alert-dialog.service.ts +51 -0
  25. package/alert-dialog/stories/alert-dialog.stories.ts +139 -0
  26. package/avatar/__tests__/avatar-fallback.directive.spec.ts +31 -0
  27. package/avatar/__tests__/avatar-image.directive.spec.ts +36 -0
  28. package/avatar/ng-package.json +5 -0
  29. package/avatar/src/avatar-fallback.directive.ts +62 -0
  30. package/avatar/src/avatar-image.directive.ts +55 -0
  31. package/avatar/src/avatar-root.directive.ts +35 -0
  32. package/avatar/src/avatar.config.ts +29 -0
  33. package/avatar/stories/avatar.docs.mdx +37 -0
  34. package/avatar/stories/avatar.stories.ts +87 -0
  35. package/button/__tests__/.gitkeep +0 -0
  36. package/button/src/button-abstract.directive.ts +46 -0
  37. package/checkbox/ng-package.json +5 -0
  38. package/checkbox/src/checkbox-button.directive.ts +26 -0
  39. package/checkbox/src/checkbox-indicator.directive.ts +16 -0
  40. package/checkbox/src/checkbox-input.directive.ts +36 -0
  41. package/checkbox/src/checkbox.directive.ts +146 -0
  42. package/checkbox/src/checkbox.token.ts +8 -0
  43. package/checkbox/stories/checkbox-group.component.ts +87 -0
  44. package/checkbox/stories/checkbox-group.styles.scss +49 -0
  45. package/checkbox/stories/checkbox-indeterminate.component.ts +52 -0
  46. package/checkbox/stories/checkbox.docs.mdx +58 -0
  47. package/checkbox/stories/checkbox.stories.ts +105 -0
  48. package/collapsible/__tests__/collapsible-content.directive.spec.ts +30 -0
  49. package/collapsible/__tests__/collapsible-root.directive.spec.ts +27 -0
  50. package/collapsible/__tests__/collapsible-trigger.directive.spec.ts +30 -0
  51. package/collapsible/ng-package.json +5 -0
  52. package/collapsible/src/collapsible-content.directive.ts +34 -0
  53. package/collapsible/src/collapsible-content.token.ts +6 -0
  54. package/collapsible/src/collapsible-root.directive.ts +120 -0
  55. package/collapsible/src/collapsible-trigger.directive.ts +44 -0
  56. package/collapsible/stories/collapsible-animation.component.ts +116 -0
  57. package/collapsible/stories/collapsible-external-triggering.component.ts +86 -0
  58. package/collapsible/stories/collapsible.docs.mdx +53 -0
  59. package/collapsible/stories/collapsible.stories.ts +151 -0
  60. package/context-menu/README.md +1 -0
  61. package/context-menu/index.ts +10 -0
  62. package/context-menu/ng-package.json +5 -0
  63. package/context-menu/src/context-menu-content.directive.ts +47 -0
  64. package/context-menu/src/context-menu-item-checkbox.directive.ts +30 -0
  65. package/context-menu/src/context-menu-item-indicator.directive.ts +14 -0
  66. package/context-menu/src/context-menu-item-radio-group.directive.ts +31 -0
  67. package/context-menu/src/context-menu-item-radio.directive.ts +69 -0
  68. package/context-menu/src/context-menu-item-selectable.ts +18 -0
  69. package/context-menu/src/context-menu-item.directive.ts +65 -0
  70. package/context-menu/src/context-menu-label.directive.ts +7 -0
  71. package/context-menu/src/context-menu-separator.directive.ts +13 -0
  72. package/context-menu/src/context-menu-trigger.directive.ts +82 -0
  73. package/context-menu/stories/context-menu.docs.mdx +23 -0
  74. package/context-menu/stories/context-menu.stories.ts +253 -0
  75. package/core/index.ts +3 -0
  76. package/core/src/accessor/provide-value-accessor.ts +20 -0
  77. package/core/src/auto-focus.directive.ts +81 -0
  78. package/core/src/inject-ng-control.ts +28 -0
  79. package/core/src/mount.ts +27 -0
  80. package/dialog/README.md +1 -0
  81. package/dialog/__tests__/dialog-content.directive.spec.ts +77 -0
  82. package/dialog/__tests__/dialog-trigger.directive.spec.ts +85 -0
  83. package/dialog/index.ts +31 -0
  84. package/dialog/ng-package.json +5 -0
  85. package/dialog/src/dialog-close.directive.ts +18 -0
  86. package/dialog/src/dialog-content.directive.ts +45 -0
  87. package/dialog/src/dialog-description.directive.ts +7 -0
  88. package/dialog/src/dialog-dismiss.directive.ts +18 -0
  89. package/dialog/src/dialog-ref.ts +70 -0
  90. package/dialog/src/dialog-title.directive.ts +7 -0
  91. package/dialog/src/dialog-trigger.directive.ts +52 -0
  92. package/dialog/src/dialog.config.ts +55 -0
  93. package/dialog/src/dialog.injectors.ts +12 -0
  94. package/dialog/src/dialog.providers.ts +27 -0
  95. package/dialog/src/dialog.service.ts +94 -0
  96. package/dialog/stories/dialog.docs.mdx +32 -0
  97. package/dialog/stories/dialog.stories.ts +233 -0
  98. package/dropdown-menu/ng-package.json +5 -0
  99. package/dropdown-menu/src/dropdown-menu-content.directive.ts +47 -0
  100. package/dropdown-menu/src/dropdown-menu-item-checkbox.directive.ts +30 -0
  101. package/dropdown-menu/src/dropdown-menu-item-indicator.directive.ts +14 -0
  102. package/dropdown-menu/src/dropdown-menu-item-radio-group.directive.ts +31 -0
  103. package/dropdown-menu/src/dropdown-menu-item-radio.directive.ts +72 -0
  104. package/dropdown-menu/src/dropdown-menu-item-selectable.ts +18 -0
  105. package/dropdown-menu/src/dropdown-menu-item.directive.ts +66 -0
  106. package/dropdown-menu/src/dropdown-menu-label.directive.ts +7 -0
  107. package/dropdown-menu/src/dropdown-menu-separator.directive.ts +13 -0
  108. package/dropdown-menu/src/dropdown-menu-trigger.directive.ts +185 -0
  109. package/dropdown-menu/stories/dropdown-menu-item-checkbox.component.ts +104 -0
  110. package/dropdown-menu/stories/dropdown-menu-item-checkbox.styles.scss +106 -0
  111. package/dropdown-menu/stories/dropdown-menu-item-radio.component.ts +95 -0
  112. package/dropdown-menu/stories/dropdown-menu-item-radio.styles.scss +106 -0
  113. package/dropdown-menu/stories/dropdown.docs.mdx +27 -0
  114. package/dropdown-menu/stories/dropdown.stories.ts +212 -0
  115. package/form-field/index.ts +1 -0
  116. package/form-field/src/.gitkeep +0 -0
  117. package/jest.config.ts +21 -0
  118. package/label/__tests__/label-root.directive.spec.ts +99 -0
  119. package/label/ng-package.json +5 -0
  120. package/label/src/label.directive.ts +58 -0
  121. package/label/stories/label.docs.mdx +40 -0
  122. package/label/stories/label.stories.ts +76 -0
  123. package/menu/index.ts +29 -0
  124. package/menu/ng-package.json +5 -0
  125. package/menu/src/menu-content.directive.ts +9 -0
  126. package/menu/src/menu-directive.ts +10 -0
  127. package/menu/src/menu-group.directive.ts +12 -0
  128. package/menu/src/menu-item.directive.ts +44 -0
  129. package/menu/src/menu-label.directive.ts +7 -0
  130. package/menu/src/menu-separator.directive.ts +13 -0
  131. package/menubar/index.ts +38 -0
  132. package/menubar/ng-package.json +5 -0
  133. package/menubar/src/menubar-content.directive.ts +9 -0
  134. package/menubar/src/menubar-item-checkbox.directive.ts +32 -0
  135. package/menubar/src/menubar-item-indicator.directive.ts +10 -0
  136. package/menubar/src/menubar-item-radio.directive.ts +33 -0
  137. package/menubar/src/menubar-item.directive.ts +12 -0
  138. package/menubar/src/menubar-radio-group.directive.ts +9 -0
  139. package/menubar/src/menubar-root.directive.ts +15 -0
  140. package/menubar/src/menubar-separator.directive.ts +9 -0
  141. package/menubar/src/menubar-trigger.directive.ts +40 -0
  142. package/menubar/stories/menubar.stories.ts +229 -0
  143. package/ng-package.json +8 -0
  144. package/package.json +4 -112
  145. package/portal/stories/portal.docs.mdx +85 -0
  146. package/presence/__test__/presence-test.component.ts +51 -0
  147. package/presence/__test__/presence.spec.ts +50 -0
  148. package/presence/index.ts +4 -0
  149. package/presence/src/presence.ts +119 -0
  150. package/presence/src/transitions/transition.collapse.ts +99 -0
  151. package/presence/src/transitions/transition.toast.ts +27 -0
  152. package/presence/src/types.ts +20 -0
  153. package/presence/src/utils.ts +63 -0
  154. package/presence/stories/presence-story.componen.ts +69 -0
  155. package/presence/stories/presence.docs.mdx +40 -0
  156. package/presence/stories/presence.stories.ts +29 -0
  157. package/progress/__test__/progress.spec.ts +55 -0
  158. package/progress/{index.d.ts → index.ts} +1 -0
  159. package/progress/ng-package.json +5 -0
  160. package/progress/src/progress-indicator.directive.ts +26 -0
  161. package/progress/src/progress-root.directive.ts +134 -0
  162. package/progress/stories/progress.docs.mdx +65 -0
  163. package/progress/stories/progress.stories.ts +66 -0
  164. package/project.json +39 -0
  165. package/radio/{index.d.ts → index.ts} +1 -0
  166. package/radio/ng-package.json +5 -0
  167. package/radio/src/radio-indicator.directive.ts +17 -0
  168. package/radio/src/radio-item.directive.ts +68 -0
  169. package/radio/src/radio-root.directive.ts +207 -0
  170. package/radio/src/{radio-tokens.d.ts → radio-tokens.ts} +5 -1
  171. package/radio/stories/radio-group.component.ts +39 -0
  172. package/radio/stories/radio-group.styles.scss +70 -0
  173. package/radio/stories/radio.docs.mdx +68 -0
  174. package/radio/stories/radio.stories.ts +155 -0
  175. package/separator/__tests__/separator.directive.spec.ts +58 -0
  176. package/separator/ng-package.json +5 -0
  177. package/separator/src/separator.directive.ts +35 -0
  178. package/separator/stories/separator.docs.mdx +37 -0
  179. package/separator/stories/separator.stories.ts +82 -0
  180. package/slider/src/slider-input.directive.ts +0 -0
  181. package/slider/src/slider-thumb.directives.ts +60 -0
  182. package/slider/src/slider-track.directive.ts +11 -0
  183. package/slider/src/slider.directive.ts +59 -0
  184. package/slider/src/slider.types.ts +4 -0
  185. package/switch/index.ts +22 -0
  186. package/switch/ng-package.json +5 -0
  187. package/switch/src/switch-input.directive.ts +24 -0
  188. package/switch/src/switch-root.directive.ts +127 -0
  189. package/switch/src/switch-thumb.directive.ts +15 -0
  190. package/switch/stories/switch.docs.mdx +83 -0
  191. package/switch/stories/switch.stories.ts +149 -0
  192. package/tabs/__tests__/tabs-context.service.spec.ts +35 -0
  193. package/tabs/index.ts +26 -0
  194. package/tabs/ng-package.json +5 -0
  195. package/tabs/src/tabs-content.directive.ts +23 -0
  196. package/tabs/src/tabs-context.service.ts +43 -0
  197. package/tabs/src/tabs-list.directive.ts +21 -0
  198. package/tabs/src/tabs-root.directive.ts +70 -0
  199. package/tabs/src/tabs-trigger.directive.ts +55 -0
  200. package/tabs/stories/tabs.stories.ts +213 -0
  201. package/test-setup.ts +1 -0
  202. package/toggle/__tests__/toggle.directive.spec.ts +87 -0
  203. package/toggle/ng-package.json +5 -0
  204. package/toggle/src/toggle.directive.ts +49 -0
  205. package/toggle/stories/toggle.docs.mdx +60 -0
  206. package/toggle/stories/toggle.stories.ts +84 -0
  207. package/toggle-group/ng-package.json +5 -0
  208. package/toggle-group/src/toggle-group-button.directive.ts +73 -0
  209. package/toggle-group/src/toggle-group-button.token.ts +8 -0
  210. package/toggle-group/src/toggle-group-multi.directive.ts +158 -0
  211. package/toggle-group/src/toggle-group.directive.ts +148 -0
  212. package/toggle-group/src/toggle-group.token.ts +11 -0
  213. package/toggle-group/stories/toggle-group.docs.mdx +87 -0
  214. package/toggle-group/stories/toggle-group.stories.ts +95 -0
  215. package/tsconfig.doc.json +11 -0
  216. package/tsconfig.json +29 -0
  217. package/tsconfig.lib.json +19 -0
  218. package/tsconfig.lib.prod.json +12 -0
  219. package/tsconfig.spec.json +11 -0
  220. package/visually-hidden/README.md +3 -0
  221. package/visually-hidden/stories/visually-hidden.docs.mdx +36 -0
  222. package/accordion/src/accordion-content.directive.d.ts +0 -16
  223. package/accordion/src/accordion-header.directive.d.ts +0 -7
  224. package/accordion/src/accordion-item.directive.d.ts +0 -62
  225. package/accordion/src/accordion-root.directive.d.ts +0 -78
  226. package/accordion/src/accordion-trigger.directive.d.ts +0 -15
  227. package/alert-dialog/src/alert-dialog-cancel.directive.d.ts +0 -7
  228. package/alert-dialog/src/alert-dialog-content.directive.d.ts +0 -9
  229. package/alert-dialog/src/alert-dialog-root.directive.d.ts +0 -9
  230. package/alert-dialog/src/alert-dialog-title.directive.d.ts +0 -5
  231. package/alert-dialog/src/alert-dialog-trigger.directive.d.ts +0 -7
  232. package/alert-dialog/src/alert-dialog.service.d.ts +0 -14
  233. package/avatar/src/avatar-fallback.directive.d.ts +0 -27
  234. package/avatar/src/avatar-image.directive.d.ts +0 -16
  235. package/avatar/src/avatar-root.directive.d.ts +0 -21
  236. package/avatar/src/avatar.config.d.ts +0 -13
  237. package/checkbox/src/checkbox-button.directive.d.ts +0 -8
  238. package/checkbox/src/checkbox-indicator.directive.d.ts +0 -6
  239. package/checkbox/src/checkbox-input.directive.d.ts +0 -9
  240. package/checkbox/src/checkbox.directive.d.ts +0 -75
  241. package/checkbox/src/checkbox.token.d.ts +0 -4
  242. package/collapsible/src/collapsible-content.directive.d.ts +0 -17
  243. package/collapsible/src/collapsible-content.token.d.ts +0 -3
  244. package/collapsible/src/collapsible-root.directive.d.ts +0 -55
  245. package/collapsible/src/collapsible-trigger.directive.d.ts +0 -26
  246. package/compodoc/documentation.json +0 -11395
  247. package/dropdown-menu/src/dropdown-menu-content.directive.d.ts +0 -15
  248. package/dropdown-menu/src/dropdown-menu-item-checkbox.directive.d.ts +0 -9
  249. package/dropdown-menu/src/dropdown-menu-item-indicator.directive.d.ts +0 -7
  250. package/dropdown-menu/src/dropdown-menu-item-radio-group.directive.d.ts +0 -12
  251. package/dropdown-menu/src/dropdown-menu-item-radio.directive.d.ts +0 -19
  252. package/dropdown-menu/src/dropdown-menu-item-selectable.d.ts +0 -12
  253. package/dropdown-menu/src/dropdown-menu-item.directive.d.ts +0 -17
  254. package/dropdown-menu/src/dropdown-menu-label.directive.d.ts +0 -5
  255. package/dropdown-menu/src/dropdown-menu-separator.directive.d.ts +0 -6
  256. package/dropdown-menu/src/dropdown-menu-trigger.directive.d.ts +0 -43
  257. package/esm2022/accordion/index.mjs +0 -6
  258. package/esm2022/accordion/radix-ng-primitives-accordion.mjs +0 -5
  259. package/esm2022/accordion/src/accordion-content.directive.mjs +0 -36
  260. package/esm2022/accordion/src/accordion-header.directive.mjs +0 -23
  261. package/esm2022/accordion/src/accordion-item.directive.mjs +0 -170
  262. package/esm2022/accordion/src/accordion-root.directive.mjs +0 -157
  263. package/esm2022/accordion/src/accordion-trigger.directive.mjs +0 -42
  264. package/esm2022/alert-dialog/index.mjs +0 -7
  265. package/esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs +0 -5
  266. package/esm2022/alert-dialog/src/alert-dialog-cancel.directive.mjs +0 -24
  267. package/esm2022/alert-dialog/src/alert-dialog-content.directive.mjs +0 -34
  268. package/esm2022/alert-dialog/src/alert-dialog-root.directive.mjs +0 -25
  269. package/esm2022/alert-dialog/src/alert-dialog-title.directive.mjs +0 -14
  270. package/esm2022/alert-dialog/src/alert-dialog-trigger.directive.mjs +0 -24
  271. package/esm2022/alert-dialog/src/alert-dialog.service.mjs +0 -47
  272. package/esm2022/avatar/index.mjs +0 -5
  273. package/esm2022/avatar/radix-ng-primitives-avatar.mjs +0 -5
  274. package/esm2022/avatar/src/avatar-fallback.directive.mjs +0 -54
  275. package/esm2022/avatar/src/avatar-image.directive.mjs +0 -48
  276. package/esm2022/avatar/src/avatar-root.directive.mjs +0 -38
  277. package/esm2022/avatar/src/avatar.config.mjs +0 -17
  278. package/esm2022/checkbox/index.mjs +0 -6
  279. package/esm2022/checkbox/radix-ng-primitives-checkbox.mjs +0 -5
  280. package/esm2022/checkbox/src/checkbox-button.directive.mjs +0 -33
  281. package/esm2022/checkbox/src/checkbox-indicator.directive.mjs +0 -24
  282. package/esm2022/checkbox/src/checkbox-input.directive.mjs +0 -41
  283. package/esm2022/checkbox/src/checkbox.directive.mjs +0 -141
  284. package/esm2022/checkbox/src/checkbox.token.mjs +0 -6
  285. package/esm2022/collapsible/index.mjs +0 -4
  286. package/esm2022/collapsible/radix-ng-primitives-collapsible.mjs +0 -5
  287. package/esm2022/collapsible/src/collapsible-content.directive.mjs +0 -45
  288. package/esm2022/collapsible/src/collapsible-content.token.mjs +0 -3
  289. package/esm2022/collapsible/src/collapsible-root.directive.mjs +0 -118
  290. package/esm2022/collapsible/src/collapsible-trigger.directive.mjs +0 -49
  291. package/esm2022/dropdown-menu/index.mjs +0 -11
  292. package/esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs +0 -5
  293. package/esm2022/dropdown-menu/src/dropdown-menu-content.directive.mjs +0 -56
  294. package/esm2022/dropdown-menu/src/dropdown-menu-item-checkbox.directive.mjs +0 -36
  295. package/esm2022/dropdown-menu/src/dropdown-menu-item-indicator.directive.mjs +0 -22
  296. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio-group.directive.mjs +0 -37
  297. package/esm2022/dropdown-menu/src/dropdown-menu-item-radio.directive.mjs +0 -64
  298. package/esm2022/dropdown-menu/src/dropdown-menu-item-selectable.mjs +0 -31
  299. package/esm2022/dropdown-menu/src/dropdown-menu-item.directive.mjs +0 -71
  300. package/esm2022/dropdown-menu/src/dropdown-menu-label.directive.mjs +0 -14
  301. package/esm2022/dropdown-menu/src/dropdown-menu-separator.directive.mjs +0 -21
  302. package/esm2022/dropdown-menu/src/dropdown-menu-trigger.directive.mjs +0 -176
  303. package/esm2022/index.mjs +0 -2
  304. package/esm2022/label/index.mjs +0 -2
  305. package/esm2022/label/radix-ng-primitives-label.mjs +0 -5
  306. package/esm2022/label/src/label.directive.mjs +0 -59
  307. package/esm2022/menu/index.mjs +0 -45
  308. package/esm2022/menu/radix-ng-primitives-menu.mjs +0 -5
  309. package/esm2022/menu/src/menu-content.directive.mjs +0 -17
  310. package/esm2022/menu/src/menu-directive.mjs +0 -18
  311. package/esm2022/menu/src/menu-group.directive.mjs +0 -20
  312. package/esm2022/menu/src/menu-item.directive.mjs +0 -46
  313. package/esm2022/menu/src/menu-label.directive.mjs +0 -14
  314. package/esm2022/menu/src/menu-separator.directive.mjs +0 -21
  315. package/esm2022/menubar/index.mjs +0 -60
  316. package/esm2022/menubar/radix-ng-primitives-menubar.mjs +0 -5
  317. package/esm2022/menubar/src/menubar-content.directive.mjs +0 -17
  318. package/esm2022/menubar/src/menubar-item-checkbox.directive.mjs +0 -34
  319. package/esm2022/menubar/src/menubar-item-indicator.directive.mjs +0 -17
  320. package/esm2022/menubar/src/menubar-item-radio.directive.mjs +0 -35
  321. package/esm2022/menubar/src/menubar-item.directive.mjs +0 -20
  322. package/esm2022/menubar/src/menubar-radio-group.directive.mjs +0 -17
  323. package/esm2022/menubar/src/menubar-root.directive.mjs +0 -24
  324. package/esm2022/menubar/src/menubar-separator.directive.mjs +0 -17
  325. package/esm2022/menubar/src/menubar-trigger.directive.mjs +0 -45
  326. package/esm2022/progress/index.mjs +0 -3
  327. package/esm2022/progress/radix-ng-primitives-progress.mjs +0 -5
  328. package/esm2022/progress/src/progress-indicator.directive.mjs +0 -34
  329. package/esm2022/progress/src/progress-root.directive.mjs +0 -127
  330. package/esm2022/radio/index.mjs +0 -4
  331. package/esm2022/radio/radix-ng-primitives-radio.mjs +0 -5
  332. package/esm2022/radio/src/radio-indicator.directive.mjs +0 -25
  333. package/esm2022/radio/src/radio-item.directive.mjs +0 -70
  334. package/esm2022/radio/src/radio-root.directive.mjs +0 -194
  335. package/esm2022/radio/src/radio-tokens.mjs +0 -3
  336. package/esm2022/radix-ng-primitives.mjs +0 -5
  337. package/esm2022/separator/index.mjs +0 -2
  338. package/esm2022/separator/radix-ng-primitives-separator.mjs +0 -5
  339. package/esm2022/separator/src/separator.directive.mjs +0 -31
  340. package/esm2022/switch/index.mjs +0 -30
  341. package/esm2022/switch/radix-ng-primitives-switch.mjs +0 -5
  342. package/esm2022/switch/src/switch-input.directive.mjs +0 -32
  343. package/esm2022/switch/src/switch-root.directive.mjs +0 -95
  344. package/esm2022/switch/src/switch-thumb.directive.mjs +0 -23
  345. package/esm2022/tabs/index.mjs +0 -38
  346. package/esm2022/tabs/radix-ng-primitives-tabs.mjs +0 -5
  347. package/esm2022/tabs/src/tabs-content.directive.mjs +0 -29
  348. package/esm2022/tabs/src/tabs-context.service.mjs +0 -43
  349. package/esm2022/tabs/src/tabs-list.directive.mjs +0 -23
  350. package/esm2022/tabs/src/tabs-root.directive.mjs +0 -54
  351. package/esm2022/tabs/src/tabs-trigger.directive.mjs +0 -52
  352. package/esm2022/toggle/index.mjs +0 -2
  353. package/esm2022/toggle/radix-ng-primitives-toggle.mjs +0 -5
  354. package/esm2022/toggle/src/toggle.directive.mjs +0 -39
  355. package/esm2022/toggle-group/index.mjs +0 -6
  356. package/esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs +0 -5
  357. package/esm2022/toggle-group/src/toggle-group-button.directive.mjs +0 -75
  358. package/esm2022/toggle-group/src/toggle-group-button.token.mjs +0 -6
  359. package/esm2022/toggle-group/src/toggle-group-multi.directive.mjs +0 -143
  360. package/esm2022/toggle-group/src/toggle-group.directive.mjs +0 -134
  361. package/esm2022/toggle-group/src/toggle-group.token.mjs +0 -6
  362. package/fesm2022/radix-ng-primitives-accordion.mjs +0 -418
  363. package/fesm2022/radix-ng-primitives-accordion.mjs.map +0 -1
  364. package/fesm2022/radix-ng-primitives-alert-dialog.mjs +0 -161
  365. package/fesm2022/radix-ng-primitives-alert-dialog.mjs.map +0 -1
  366. package/fesm2022/radix-ng-primitives-avatar.mjs +0 -156
  367. package/fesm2022/radix-ng-primitives-avatar.mjs.map +0 -1
  368. package/fesm2022/radix-ng-primitives-checkbox.mjs +0 -241
  369. package/fesm2022/radix-ng-primitives-checkbox.mjs.map +0 -1
  370. package/fesm2022/radix-ng-primitives-collapsible.mjs +0 -213
  371. package/fesm2022/radix-ng-primitives-collapsible.mjs.map +0 -1
  372. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs +0 -502
  373. package/fesm2022/radix-ng-primitives-dropdown-menu.mjs.map +0 -1
  374. package/fesm2022/radix-ng-primitives-label.mjs +0 -66
  375. package/fesm2022/radix-ng-primitives-label.mjs.map +0 -1
  376. package/fesm2022/radix-ng-primitives-menu.mjs +0 -158
  377. package/fesm2022/radix-ng-primitives-menu.mjs.map +0 -1
  378. package/fesm2022/radix-ng-primitives-menubar.mjs +0 -245
  379. package/fesm2022/radix-ng-primitives-menubar.mjs.map +0 -1
  380. package/fesm2022/radix-ng-primitives-progress.mjs +0 -165
  381. package/fesm2022/radix-ng-primitives-progress.mjs.map +0 -1
  382. package/fesm2022/radix-ng-primitives-radio.mjs +0 -289
  383. package/fesm2022/radix-ng-primitives-radio.mjs.map +0 -1
  384. package/fesm2022/radix-ng-primitives-separator.mjs +0 -38
  385. package/fesm2022/radix-ng-primitives-separator.mjs.map +0 -1
  386. package/fesm2022/radix-ng-primitives-switch.mjs +0 -173
  387. package/fesm2022/radix-ng-primitives-switch.mjs.map +0 -1
  388. package/fesm2022/radix-ng-primitives-tabs.mjs +0 -222
  389. package/fesm2022/radix-ng-primitives-tabs.mjs.map +0 -1
  390. package/fesm2022/radix-ng-primitives-toggle-group.mjs +0 -358
  391. package/fesm2022/radix-ng-primitives-toggle-group.mjs.map +0 -1
  392. package/fesm2022/radix-ng-primitives-toggle.mjs +0 -46
  393. package/fesm2022/radix-ng-primitives-toggle.mjs.map +0 -1
  394. package/fesm2022/radix-ng-primitives.mjs +0 -4
  395. package/fesm2022/radix-ng-primitives.mjs.map +0 -1
  396. package/label/src/label.directive.d.ts +0 -29
  397. package/menu/index.d.ts +0 -18
  398. package/menu/src/menu-content.directive.d.ts +0 -6
  399. package/menu/src/menu-directive.d.ts +0 -6
  400. package/menu/src/menu-group.directive.d.ts +0 -6
  401. package/menu/src/menu-item.directive.d.ts +0 -12
  402. package/menu/src/menu-label.directive.d.ts +0 -5
  403. package/menu/src/menu-separator.directive.d.ts +0 -6
  404. package/menubar/index.d.ts +0 -24
  405. package/menubar/src/menubar-content.directive.d.ts +0 -6
  406. package/menubar/src/menubar-item-checkbox.directive.d.ts +0 -14
  407. package/menubar/src/menubar-item-indicator.directive.d.ts +0 -5
  408. package/menubar/src/menubar-item-radio.directive.d.ts +0 -14
  409. package/menubar/src/menubar-item.directive.d.ts +0 -8
  410. package/menubar/src/menubar-radio-group.directive.d.ts +0 -6
  411. package/menubar/src/menubar-root.directive.d.ts +0 -7
  412. package/menubar/src/menubar-separator.directive.d.ts +0 -6
  413. package/menubar/src/menubar-trigger.directive.d.ts +0 -11
  414. package/progress/src/progress-indicator.directive.d.ts +0 -16
  415. package/progress/src/progress-root.directive.d.ts +0 -63
  416. package/radio/src/radio-indicator.directive.d.ts +0 -9
  417. package/radio/src/radio-item.directive.d.ts +0 -21
  418. package/radio/src/radio-root.directive.d.ts +0 -72
  419. package/separator/src/separator.directive.d.ts +0 -22
  420. package/switch/index.d.ts +0 -13
  421. package/switch/src/switch-input.directive.d.ts +0 -6
  422. package/switch/src/switch-root.directive.d.ts +0 -51
  423. package/switch/src/switch-thumb.directive.d.ts +0 -6
  424. package/tabs/index.d.ts +0 -15
  425. package/tabs/src/tabs-content.directive.d.ts +0 -8
  426. package/tabs/src/tabs-context.service.d.ts +0 -22
  427. package/tabs/src/tabs-list.directive.d.ts +0 -6
  428. package/tabs/src/tabs-root.directive.d.ts +0 -37
  429. package/tabs/src/tabs-trigger.directive.d.ts +0 -19
  430. package/toggle/src/toggle.directive.d.ts +0 -30
  431. package/toggle-group/src/toggle-group-button.directive.d.ts +0 -39
  432. package/toggle-group/src/toggle-group-button.token.d.ts +0 -4
  433. package/toggle-group/src/toggle-group-multi.directive.d.ts +0 -93
  434. package/toggle-group/src/toggle-group.directive.d.ts +0 -84
  435. package/toggle-group/src/toggle-group.token.d.ts +0 -5
  436. /package/accordion/{index.d.ts → index.ts} +0 -0
  437. /package/avatar/{index.d.ts → index.ts} +0 -0
  438. /package/checkbox/{index.d.ts → index.ts} +0 -0
  439. /package/collapsible/{index.d.ts → index.ts} +0 -0
  440. /package/dropdown-menu/{index.d.ts → index.ts} +0 -0
  441. /package/{index.d.ts → index.ts} +0 -0
  442. /package/label/{index.d.ts → index.ts} +0 -0
  443. /package/separator/{index.d.ts → index.ts} +0 -0
  444. /package/toggle/{index.d.ts → index.ts} +0 -0
  445. /package/toggle-group/{index.d.ts → index.ts} +0 -0
@@ -0,0 +1,38 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { RdxMenuBarContentDirective } from './src/menubar-content.directive';
3
+ import { RdxMenubarItemCheckboxDirective } from './src/menubar-item-checkbox.directive';
4
+ import { RdxMenubarItemIndicatorDirective } from './src/menubar-item-indicator.directive';
5
+ import { RdxMenubarItemRadioDirective } from './src/menubar-item-radio.directive';
6
+ import { RdxMenuBarItemDirective } from './src/menubar-item.directive';
7
+ import { RdxMenubarRadioGroupDirective } from './src/menubar-radio-group.directive';
8
+ import { RdxMenuBarDirective } from './src/menubar-root.directive';
9
+ import { RdxMenubarSeparatorDirective } from './src/menubar-separator.directive';
10
+ import { RdxMenuBarTriggerDirective } from './src/menubar-trigger.directive';
11
+
12
+ export * from './src/menubar-content.directive';
13
+ export * from './src/menubar-item-checkbox.directive';
14
+ export * from './src/menubar-item-indicator.directive';
15
+ export * from './src/menubar-item-radio.directive';
16
+ export * from './src/menubar-item.directive';
17
+ export * from './src/menubar-radio-group.directive';
18
+ export * from './src/menubar-root.directive';
19
+ export * from './src/menubar-separator.directive';
20
+ export * from './src/menubar-trigger.directive';
21
+
22
+ const menubarImports = [
23
+ RdxMenuBarContentDirective,
24
+ RdxMenuBarTriggerDirective,
25
+ RdxMenubarSeparatorDirective,
26
+ RdxMenubarItemCheckboxDirective,
27
+ RdxMenuBarDirective,
28
+ RdxMenuBarItemDirective,
29
+ RdxMenubarItemIndicatorDirective,
30
+ RdxMenubarItemRadioDirective,
31
+ RdxMenubarRadioGroupDirective
32
+ ];
33
+
34
+ @NgModule({
35
+ imports: [...menubarImports],
36
+ exports: [...menubarImports]
37
+ })
38
+ export class MenubarModule {}
@@ -0,0 +1,5 @@
1
+ {
2
+ "lib": {
3
+ "entryFile": "index.ts"
4
+ }
5
+ }
@@ -0,0 +1,9 @@
1
+ import { CdkMenu } from '@angular/cdk/menu';
2
+ import { Directive } from '@angular/core';
3
+
4
+ @Directive({
5
+ selector: '[MenuBarContent]',
6
+ standalone: true,
7
+ hostDirectives: [CdkMenu]
8
+ })
9
+ export class RdxMenuBarContentDirective {}
@@ -0,0 +1,32 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { CdkMenuItemCheckbox } from '@angular/cdk/menu';
3
+ import { booleanAttribute, computed, Directive, effect, inject, input, signal } from '@angular/core';
4
+
5
+ @Directive({
6
+ selector: '[MenubarCheckboxItem]',
7
+ standalone: true,
8
+ hostDirectives: [CdkMenuItemCheckbox],
9
+ host: {
10
+ role: 'menuitemcheckbox',
11
+ '[attr.data-state]': 'checked() ? "checked": "unchecked"',
12
+ '[disabled]': 'disabledState()'
13
+ }
14
+ })
15
+ export class RdxMenubarItemCheckboxDirective {
16
+ private readonly cdkMenuItemCheckbox = inject(CdkMenuItemCheckbox, { host: true });
17
+
18
+ readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
19
+ readonly checked = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
20
+
21
+ protected readonly disabledState = computed(() => this.disabled || this.disabled$());
22
+
23
+ protected readonly checked$ = signal(this.cdkMenuItemCheckbox.checked);
24
+ protected readonly disabled$ = signal(this.cdkMenuItemCheckbox.disabled);
25
+
26
+ constructor() {
27
+ effect(() => {
28
+ this.cdkMenuItemCheckbox.checked = this.checked();
29
+ this.cdkMenuItemCheckbox.disabled = this.disabled();
30
+ });
31
+ }
32
+ }
@@ -0,0 +1,10 @@
1
+ import { Directive } from '@angular/core';
2
+
3
+ @Directive({
4
+ selector: '[MenubarItemIndicator]',
5
+ standalone: true,
6
+ host: {
7
+ '[attr.data-state]': 'true'
8
+ }
9
+ })
10
+ export class RdxMenubarItemIndicatorDirective {}
@@ -0,0 +1,33 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { CdkMenuItemRadio } from '@angular/cdk/menu';
3
+ import { booleanAttribute, computed, Directive, effect, inject, input, signal } from '@angular/core';
4
+
5
+ @Directive({
6
+ selector: '[MenubarItemRadio]',
7
+ standalone: true,
8
+ hostDirectives: [CdkMenuItemRadio],
9
+ host: {
10
+ role: 'menuitemradio',
11
+ '[attr.aria-checked]': 'checked()',
12
+ '[attr.data-state]': 'checked() ? "checked": "unchecked"',
13
+ '[disabled]': 'disabledState()'
14
+ }
15
+ })
16
+ export class RdxMenubarItemRadioDirective {
17
+ private readonly cdkMenuItemRadio = inject(CdkMenuItemRadio, { host: true });
18
+
19
+ readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
20
+ readonly checked = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
21
+
22
+ protected readonly disabledState = computed(() => this.disabled || this.disabled$());
23
+
24
+ protected readonly checked$ = signal(this.cdkMenuItemRadio.checked);
25
+ protected readonly disabled$ = signal(this.cdkMenuItemRadio.disabled);
26
+
27
+ constructor() {
28
+ effect(() => {
29
+ this.cdkMenuItemRadio.checked = this.checked();
30
+ this.cdkMenuItemRadio.disabled = this.disabled();
31
+ });
32
+ }
33
+ }
@@ -0,0 +1,12 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { booleanAttribute, Directive, input } from '@angular/core';
3
+ import { RdxMenuItemDirective } from '@radix-ng/primitives/menu';
4
+
5
+ @Directive({
6
+ selector: '[MenuBarItem]',
7
+ standalone: true,
8
+ hostDirectives: [{ directive: RdxMenuItemDirective, inputs: ['rdxDisabled: disabled '] }]
9
+ })
10
+ export class RdxMenuBarItemDirective {
11
+ readonly disabled = input<boolean, BooleanInput>(false, { transform: booleanAttribute });
12
+ }
@@ -0,0 +1,9 @@
1
+ import { CdkMenuGroup } from '@angular/cdk/menu';
2
+ import { Directive } from '@angular/core';
3
+
4
+ @Directive({
5
+ selector: '[MenubarRadioGroup]',
6
+ standalone: true,
7
+ hostDirectives: [CdkMenuGroup]
8
+ })
9
+ export class RdxMenubarRadioGroupDirective {}
@@ -0,0 +1,15 @@
1
+ import { CdkMenuBar } from '@angular/cdk/menu';
2
+ import { Directive, input } from '@angular/core';
3
+
4
+ @Directive({
5
+ selector: '[MenuBarRoot]',
6
+ standalone: true,
7
+ hostDirectives: [CdkMenuBar],
8
+ host: {
9
+ tabindex: '0',
10
+ '[attr.data-orientation]': 'orientation()'
11
+ }
12
+ })
13
+ export class RdxMenuBarDirective {
14
+ readonly orientation = input<'horizontal' | 'vertical'>('horizontal');
15
+ }
@@ -0,0 +1,9 @@
1
+ import { Directive } from '@angular/core';
2
+ import { RdxMenuSeparatorDirective } from '@radix-ng/primitives/menu';
3
+
4
+ @Directive({
5
+ selector: '[MenubarSeparator]',
6
+ standalone: true,
7
+ hostDirectives: [RdxMenuSeparatorDirective]
8
+ })
9
+ export class RdxMenubarSeparatorDirective {}
@@ -0,0 +1,40 @@
1
+ import { BooleanInput } from '@angular/cdk/coercion';
2
+ import { CdkMenuTrigger } from '@angular/cdk/menu';
3
+ import { booleanAttribute, Directive, inject, input } from '@angular/core';
4
+
5
+ @Directive({
6
+ selector: '[MenuBarTrigger]',
7
+ standalone: true,
8
+ hostDirectives: [{ directive: CdkMenuTrigger, inputs: ['cdkMenuTriggerFor: MenuBarTrigger'] }],
9
+ host: {
10
+ type: 'button',
11
+ role: 'menuitem',
12
+ '[attr.aria-haspopup]': "'menu'",
13
+ '[attr.aria-expanded]': 'cdkTrigger.isOpen()',
14
+ '[attr.data-state]': "cdkTrigger.isOpen() ? 'open': 'closed'",
15
+ '[attr.data-disabled]': "disabled() ? '' : undefined",
16
+ '[disabled]': 'disabled()',
17
+
18
+ '(pointerdown)': 'onPointerDown($event)'
19
+ }
20
+ })
21
+ export class RdxMenuBarTriggerDirective {
22
+ protected readonly cdkTrigger = inject(CdkMenuTrigger, { host: true });
23
+
24
+ readonly disabled = input<boolean, BooleanInput>(false, {
25
+ transform: booleanAttribute
26
+ });
27
+
28
+ onPointerDown($event: MouseEvent) {
29
+ // only call handler if it's the left button (mousedown gets triggered by all mouse buttons)
30
+ // but not when the control key is pressed (avoiding MacOS right click)
31
+ if (!this.disabled() && $event.button === 0 && !$event.ctrlKey) {
32
+ /* empty */
33
+ if (!this.cdkTrigger.isOpen()) {
34
+ // prevent trigger focusing when opening
35
+ // this allows the content to be given focus without competition
36
+ $event.preventDefault();
37
+ }
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,229 @@
1
+ import { componentWrapperDecorator, Meta, moduleMetadata, StoryObj } from '@storybook/angular';
2
+ import { Check, Dot, LucideAngularModule } from 'lucide-angular';
3
+ import { MenubarModule } from '../index';
4
+
5
+ export default {
6
+ title: 'Primitives/Menubar [In Progress]',
7
+ decorators: [
8
+ moduleMetadata({
9
+ imports: [MenubarModule, LucideAngularModule, LucideAngularModule.pick({ Check, Dot })]
10
+ }),
11
+ componentWrapperDecorator(
12
+ (story) => `
13
+ <div class="radix-themes light light-theme radix-themes-default-fonts rt-Flex rt-r-ai-start rt-r-jc-center rt-r-position-relative"
14
+ data-accent-color="indigo"
15
+ data-radius="medium"
16
+ data-scaling="100%"
17
+ >
18
+ ${story}
19
+ </div>`
20
+ )
21
+ ]
22
+ } as Meta;
23
+
24
+ type Story = StoryObj;
25
+
26
+ export const Default: Story = {
27
+ render: () => ({
28
+ template: `
29
+ <div MenuBarRoot class="MenubarRoot">
30
+ <button class="MenubarTrigger" MenuBarItem [MenuBarTrigger]="file">
31
+ File
32
+ </button>
33
+ <button class="MenubarTrigger" MenuBarItem [MenuBarTrigger]="edit">
34
+ Edit
35
+ </button>
36
+ <button class="MenubarTrigger" MenuBarItem [MenuBarTrigger]="view">
37
+ View
38
+ </button>
39
+ <button class="MenubarTrigger" MenuBarItem [MenuBarTrigger]="profiles">
40
+ Profiles
41
+ </button>
42
+ </div>
43
+
44
+ <ng-template #profiles>
45
+ <div class="MenubarContent" MenuBarContent>
46
+ <div MenubarRadioGroup>
47
+ <button class="MenubarRadioItem inset" MenubarItemRadio>
48
+ <lucide-icon class="MenubarItemIndicator" name="dot"/>Andy
49
+ </button>
50
+ <button class="MenubarRadioItem inset" MenubarItemRadio checked>
51
+ <lucide-icon class="MenubarItemIndicator" name="dot"/>Luis
52
+ </button>
53
+ </div>
54
+ <div MenubarSeparator class="MenubarSeparator"></div>
55
+ <button MenuBarItem class="MenubarItem inset">Edit</button>
56
+ </div>
57
+ </ng-template>
58
+
59
+ <ng-template #view>
60
+ <div class="MenubarContent" MenuBarContent>
61
+ <button class="MenubarCheckboxItem inset" MenubarCheckboxItem>
62
+ <lucide-icon class="MenubarItemIndicator" size="16" name="check" />Always Show Bookmarks Bar
63
+ </button>
64
+ <button class="MenubarCheckboxItem inset" MenubarCheckboxItem checked>
65
+ <lucide-icon class="MenubarItemIndicator" size="16" name="check" />Always Show Full URLs
66
+ </button>
67
+ <div MenubarSeparator class="MenubarSeparator"></div>
68
+ <button class="MenubarItem" MenuBarItem>Reload <div class="RightSlot">⌘ R</div></button>
69
+ </div>
70
+ </ng-template>
71
+
72
+ <ng-template #file>
73
+ <div class="MenubarContent" MenuBarContent>
74
+ <button class="MenubarItem" MenuBarItem>
75
+ New Tab <div class="RightSlot">⌘ T</div>
76
+ </button>
77
+ <button class="MenubarItem" MenuBarItem>
78
+ New Window <div class="RightSlot">⌘ N</div>
79
+ </button>
80
+ <button class="MenubarItem" MenuBarItem disabled>
81
+ New Incognito Window
82
+ </button>
83
+ <div MenubarSeparator class="MenubarSeparator"></div>
84
+ <button class="MenubarItem" MenuBarItem [MenuBarTrigger]="share">
85
+ Share <div class="RightSlot">></div>
86
+ </button>
87
+ <div MenubarSeparator class="MenubarSeparator"></div>
88
+ <button class="MenubarItem" MenuBarItem>
89
+ Print… <div class="RightSlot">⌘ P</div>
90
+ </button>
91
+ </div>
92
+ </ng-template>
93
+
94
+ <ng-template #edit>
95
+ <div class="MenubarContent" MenuBarContent>
96
+ <button class="MenubarItem" MenuBarItem>Undo <div class="RightSlot">⌘ Z</div></button>
97
+ <button class="MenubarItem" MenuBarItem>Redo <div class="RightSlot">⇧ ⌘ Z</div></button>
98
+ <div MenubarSeparator class="MenubarSeparator"></div>
99
+ <button class="MenubarItem" MenuBarItem>Cut</button>
100
+ <button class="MenubarItem" MenuBarItem>Copy</button>
101
+ <button class="MenubarItem" MenuBarItem>Paste</button>
102
+ </div>
103
+ </ng-template>
104
+
105
+ <ng-template #share>
106
+ <div class="MenubarSubContent" MenuBarContent>
107
+ <button class="MenubarItem" MenuBarItem>Undo</button>
108
+ <button class="MenubarItem" MenuBarItem>Redo</button>
109
+ <div MenubarSeparator class="MenubarSeparator"></div>
110
+ <button class="MenubarItem" MenuBarItem>Cut</button>
111
+ <button class="MenubarItem" MenuBarItem>Copy</button>
112
+ <button class="MenubarItem" MenuBarItem>Paste</button>
113
+ </div>
114
+ </ng-template>
115
+
116
+ <style>
117
+ /* reset */
118
+ button {
119
+ all: unset;
120
+ }
121
+
122
+ .MenubarRoot {
123
+ display: flex;
124
+ background-color: white;
125
+ padding: 3px;
126
+ border-radius: 6px;
127
+ box-shadow: 0 2px 10px var(--black-a7);
128
+ }
129
+
130
+ .MenubarTrigger {
131
+ padding: 8px 12px;
132
+ outline: none;
133
+ user-select: none;
134
+ font-weight: 500;
135
+ line-height: 1;
136
+ border-radius: 4px;
137
+ color: var(--violet-11);
138
+ font-size: 13px;
139
+ display: flex;
140
+ align-items: center;
141
+ justify-content: space-between;
142
+ gap: 2px;
143
+ }
144
+
145
+ .MenubarTrigger[data-highlighted],
146
+ .MenubarTrigger[data-state='open'] {
147
+ background-color: var(--violet-4);
148
+ }
149
+
150
+ .MenubarContent,
151
+ .MenubarSubContent {
152
+ flex-direction: column;
153
+ display: inline-flex;
154
+ min-width: 220px;
155
+ background-color: white;
156
+ border-radius: 6px;
157
+ padding: 5px;
158
+ box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, 0.35), 0px 10px 20px -15px rgba(22, 23, 24, 0.2);
159
+ will-change: transform, opacity;
160
+ }
161
+
162
+ .MenubarItem,
163
+ .MenubarSubTrigger,
164
+ .MenubarCheckboxItem,
165
+ .MenubarRadioItem {
166
+ all: unset;
167
+ font-size: 13px;
168
+ line-height: 1;
169
+ color: var(--violet-11);
170
+ border-radius: 4px;
171
+ display: flex;
172
+ align-items: center;
173
+ height: 25px;
174
+ padding: 0 10px;
175
+ position: relative;
176
+ user-select: none;
177
+ }
178
+
179
+ .MenubarItem.inset,
180
+ .MenubarSubTrigger.inset,
181
+ .MenubarCheckboxItem.inset,
182
+ .MenubarRadioItem.inset {
183
+ padding-left: 20px;
184
+ }
185
+
186
+ .MenubarItem[data-disabled],
187
+ .MenubarSubTrigger[data-disabled],
188
+ .MenubarCheckboxItem[data-disabled],
189
+ .MenubarRadioItem[data-disabled] {
190
+ color: var(--mauve-8);
191
+ pointer-events: none;
192
+ }
193
+
194
+ .MenubarItemIndicator {
195
+ position: absolute;
196
+ left: 0;
197
+ width: 20px;
198
+ display: inline-flex;
199
+ align-items: center;
200
+ justify-content: center;
201
+ }
202
+
203
+ .MenubarRadioItem:hover,
204
+ .MenubarCheckboxItem:hover,
205
+ .MenubarItem:hover {
206
+ background-color: var(--violet-11);
207
+ color: white;
208
+ }
209
+
210
+ .MenubarSeparator {
211
+ height: 1px;
212
+ background-color: var(--violet-6);
213
+ margin: 5px;
214
+ }
215
+
216
+ .RightSlot {
217
+ margin-left: auto;
218
+ padding-left: 20px;
219
+ color: var(--mauve-9);
220
+ display: flex;
221
+ flex-direction: row;
222
+ flex: 1;
223
+ justify-content: flex-end;
224
+ }
225
+
226
+ </style>
227
+ `
228
+ })
229
+ };
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
3
+ "dest": "../../dist/primitives",
4
+ "lib": {
5
+ "entryFile": "index.ts"
6
+ },
7
+ "allowedNonPeerDependencies": []
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@radix-ng/primitives",
3
- "version": "0.11.0",
3
+ "version": "0.12.0",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -21,117 +21,9 @@
21
21
  "@angular/core": "^18.0.0",
22
22
  "@angular/cdk": "^18.0.0"
23
23
  },
24
- "dependencies": {
25
- "tslib": "^2.3.0"
26
- },
24
+ "dependencies": {},
27
25
  "sideEffects": false,
28
- "module": "fesm2022/radix-ng-primitives.mjs",
29
- "typings": "index.d.ts",
30
- "exports": {
31
- "./package.json": {
32
- "default": "./package.json"
33
- },
34
- ".": {
35
- "types": "./index.d.ts",
36
- "esm2022": "./esm2022/radix-ng-primitives.mjs",
37
- "esm": "./esm2022/radix-ng-primitives.mjs",
38
- "default": "./fesm2022/radix-ng-primitives.mjs"
39
- },
40
- "./accordion": {
41
- "types": "./accordion/index.d.ts",
42
- "esm2022": "./esm2022/accordion/radix-ng-primitives-accordion.mjs",
43
- "esm": "./esm2022/accordion/radix-ng-primitives-accordion.mjs",
44
- "default": "./fesm2022/radix-ng-primitives-accordion.mjs"
45
- },
46
- "./alert-dialog": {
47
- "types": "./alert-dialog/index.d.ts",
48
- "esm2022": "./esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs",
49
- "esm": "./esm2022/alert-dialog/radix-ng-primitives-alert-dialog.mjs",
50
- "default": "./fesm2022/radix-ng-primitives-alert-dialog.mjs"
51
- },
52
- "./avatar": {
53
- "types": "./avatar/index.d.ts",
54
- "esm2022": "./esm2022/avatar/radix-ng-primitives-avatar.mjs",
55
- "esm": "./esm2022/avatar/radix-ng-primitives-avatar.mjs",
56
- "default": "./fesm2022/radix-ng-primitives-avatar.mjs"
57
- },
58
- "./checkbox": {
59
- "types": "./checkbox/index.d.ts",
60
- "esm2022": "./esm2022/checkbox/radix-ng-primitives-checkbox.mjs",
61
- "esm": "./esm2022/checkbox/radix-ng-primitives-checkbox.mjs",
62
- "default": "./fesm2022/radix-ng-primitives-checkbox.mjs"
63
- },
64
- "./collapsible": {
65
- "types": "./collapsible/index.d.ts",
66
- "esm2022": "./esm2022/collapsible/radix-ng-primitives-collapsible.mjs",
67
- "esm": "./esm2022/collapsible/radix-ng-primitives-collapsible.mjs",
68
- "default": "./fesm2022/radix-ng-primitives-collapsible.mjs"
69
- },
70
- "./dropdown-menu": {
71
- "types": "./dropdown-menu/index.d.ts",
72
- "esm2022": "./esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs",
73
- "esm": "./esm2022/dropdown-menu/radix-ng-primitives-dropdown-menu.mjs",
74
- "default": "./fesm2022/radix-ng-primitives-dropdown-menu.mjs"
75
- },
76
- "./label": {
77
- "types": "./label/index.d.ts",
78
- "esm2022": "./esm2022/label/radix-ng-primitives-label.mjs",
79
- "esm": "./esm2022/label/radix-ng-primitives-label.mjs",
80
- "default": "./fesm2022/radix-ng-primitives-label.mjs"
81
- },
82
- "./menu": {
83
- "types": "./menu/index.d.ts",
84
- "esm2022": "./esm2022/menu/radix-ng-primitives-menu.mjs",
85
- "esm": "./esm2022/menu/radix-ng-primitives-menu.mjs",
86
- "default": "./fesm2022/radix-ng-primitives-menu.mjs"
87
- },
88
- "./menubar": {
89
- "types": "./menubar/index.d.ts",
90
- "esm2022": "./esm2022/menubar/radix-ng-primitives-menubar.mjs",
91
- "esm": "./esm2022/menubar/radix-ng-primitives-menubar.mjs",
92
- "default": "./fesm2022/radix-ng-primitives-menubar.mjs"
93
- },
94
- "./progress": {
95
- "types": "./progress/index.d.ts",
96
- "esm2022": "./esm2022/progress/radix-ng-primitives-progress.mjs",
97
- "esm": "./esm2022/progress/radix-ng-primitives-progress.mjs",
98
- "default": "./fesm2022/radix-ng-primitives-progress.mjs"
99
- },
100
- "./radio": {
101
- "types": "./radio/index.d.ts",
102
- "esm2022": "./esm2022/radio/radix-ng-primitives-radio.mjs",
103
- "esm": "./esm2022/radio/radix-ng-primitives-radio.mjs",
104
- "default": "./fesm2022/radix-ng-primitives-radio.mjs"
105
- },
106
- "./separator": {
107
- "types": "./separator/index.d.ts",
108
- "esm2022": "./esm2022/separator/radix-ng-primitives-separator.mjs",
109
- "esm": "./esm2022/separator/radix-ng-primitives-separator.mjs",
110
- "default": "./fesm2022/radix-ng-primitives-separator.mjs"
111
- },
112
- "./switch": {
113
- "types": "./switch/index.d.ts",
114
- "esm2022": "./esm2022/switch/radix-ng-primitives-switch.mjs",
115
- "esm": "./esm2022/switch/radix-ng-primitives-switch.mjs",
116
- "default": "./fesm2022/radix-ng-primitives-switch.mjs"
117
- },
118
- "./tabs": {
119
- "types": "./tabs/index.d.ts",
120
- "esm2022": "./esm2022/tabs/radix-ng-primitives-tabs.mjs",
121
- "esm": "./esm2022/tabs/radix-ng-primitives-tabs.mjs",
122
- "default": "./fesm2022/radix-ng-primitives-tabs.mjs"
123
- },
124
- "./toggle": {
125
- "types": "./toggle/index.d.ts",
126
- "esm2022": "./esm2022/toggle/radix-ng-primitives-toggle.mjs",
127
- "esm": "./esm2022/toggle/radix-ng-primitives-toggle.mjs",
128
- "default": "./fesm2022/radix-ng-primitives-toggle.mjs"
129
- },
130
- "./toggle-group": {
131
- "types": "./toggle-group/index.d.ts",
132
- "esm2022": "./esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs",
133
- "esm": "./esm2022/toggle-group/radix-ng-primitives-toggle-group.mjs",
134
- "default": "./fesm2022/radix-ng-primitives-toggle-group.mjs"
135
- }
26
+ "scripts": {
27
+ "compodoc": "compodoc --config .compodocrc.json"
136
28
  }
137
29
  }
@@ -0,0 +1,85 @@
1
+ import { Meta } from '@storybook/blocks';
2
+
3
+ <Meta title="Utilities/Portal" />
4
+
5
+ # Portal
6
+
7
+ #### Renders an Angular component or template in a different part of the DOM.
8
+
9
+ ## Features
10
+
11
+ - ✅ Render any Angular component or template outside of your App's main structure.
12
+ - ✅ Appends to a custom container element, which can be configured as needed.
13
+
14
+ ## Installation
15
+
16
+ To use the [Angular CDK Portal](https://material.angular.io/cdk/portal/overview), first install the CDK package:
17
+
18
+ ```bash
19
+ npm install @angular/cdk
20
+ ```
21
+
22
+ ## Basic Usage
23
+
24
+ ### Defining a Portal
25
+
26
+ First, create the component or template that you want to render in a different location:
27
+
28
+ ```typescript
29
+ import { Component } from '@angular/core';
30
+
31
+ @Component({
32
+ selector: 'component-portal-content',
33
+ standalone: true,
34
+ template: `
35
+ <p>This is portal content!</p>
36
+ `
37
+ })
38
+ export class PortalContentComponent {}
39
+ ```
40
+
41
+ ### Using the Portal
42
+
43
+ In your main component, set up the portal and the outlet:
44
+
45
+ ```typescript
46
+ // app.component.ts
47
+ import { Component, ViewChild, AfterViewInit, inject, ApplicationRef, Injector, ViewContainerRef } from '@angular/core';
48
+ import { CdkPortal, DomPortalOutlet } from '@angular/cdk/portal';
49
+ import { PortalContentComponent } from './portal-content.component';
50
+
51
+ @Component({
52
+ selector: 'app-root',
53
+ standalone: true,
54
+ template: `
55
+ <ng-template cdkPortal>
56
+ <app-portal-content></app-portal-content>
57
+ </ng-template>
58
+ <div #portalOutlet></div>
59
+ `
60
+ })
61
+ export class AppComponent implements AfterViewInit {
62
+ private readonly appRef = inject(ApplicationRef);
63
+ private readonly injector = inject(Injector);
64
+
65
+ @ViewChild(CdkPortal) portal: CdkPortal;
66
+ @ViewChild('portalOutlet', { read: ViewContainerRef }) portalOutlet: ViewContainerRef;
67
+
68
+ private host: DomPortalOutlet;
69
+
70
+ ngAfterViewInit() {
71
+ this.host = new DomPortalOutlet(this.portalOutlet.element.nativeElement, this.injector, this.appRef);
72
+ this.host.attach(this.portal);
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Anatomy
78
+
79
+ The Angular CDK Portal utility consists of a few key elements:
80
+
81
+ 1. **Portal**:
82
+ An Angular directive (`CdkPortal`) that defines the content to be rendered elsewhere.
83
+
84
+ 2. **Portal Outlet**:
85
+ An Angular directive (`CdkPortalOutlet`) or a host (`DomPortalOutlet`) where the portal content will be rendered.