@fluentui-react-native/menu 1.4.33 → 1.5.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 (297) hide show
  1. package/CHANGELOG.json +67 -1
  2. package/CHANGELOG.md +24 -2
  3. package/lib/Menu/Menu.d.ts.map +1 -1
  4. package/lib/Menu/Menu.js +2 -6
  5. package/lib/Menu/Menu.js.map +1 -1
  6. package/lib/Menu/Menu.types.d.ts +20 -1
  7. package/lib/Menu/Menu.types.d.ts.map +1 -1
  8. package/lib/Menu/Menu.types.js +6 -0
  9. package/lib/Menu/Menu.types.js.map +1 -1
  10. package/lib/Menu/renderMenu.android.d.ts +5 -0
  11. package/lib/Menu/renderMenu.android.d.ts.map +1 -0
  12. package/lib/Menu/renderMenu.android.js +14 -0
  13. package/lib/Menu/renderMenu.android.js.map +1 -0
  14. package/lib/Menu/renderMenu.d.ts +5 -0
  15. package/lib/Menu/renderMenu.d.ts.map +1 -0
  16. package/lib/Menu/renderMenu.js +10 -0
  17. package/lib/Menu/renderMenu.js.map +1 -0
  18. package/lib/Menu/useMenu.android.d.ts +3 -0
  19. package/lib/Menu/useMenu.android.d.ts.map +1 -0
  20. package/lib/Menu/useMenu.android.js +257 -0
  21. package/lib/Menu/useMenu.android.js.map +1 -0
  22. package/lib/MenuCallout/MenuCallout.android.d.ts +4 -0
  23. package/lib/MenuCallout/MenuCallout.android.d.ts.map +1 -0
  24. package/lib/MenuCallout/MenuCallout.android.js +33 -0
  25. package/lib/MenuCallout/MenuCallout.android.js.map +1 -0
  26. package/lib/MenuCallout/MenuCallout.d.ts +4 -0
  27. package/lib/MenuCallout/MenuCallout.d.ts.map +1 -0
  28. package/lib/MenuCallout/MenuCallout.js +15 -0
  29. package/lib/MenuCallout/MenuCallout.js.map +1 -0
  30. package/lib/MenuCallout/MenuCallout.types.d.ts +18 -0
  31. package/lib/MenuCallout/MenuCallout.types.d.ts.map +1 -0
  32. package/lib/MenuCallout/MenuCallout.types.js +2 -0
  33. package/lib/MenuCallout/MenuCallout.types.js.map +1 -0
  34. package/lib/MenuCallout/index.d.ts +4 -0
  35. package/lib/MenuCallout/index.d.ts.map +1 -0
  36. package/lib/MenuCallout/index.js +3 -0
  37. package/lib/MenuCallout/index.js.map +1 -0
  38. package/lib/MenuDivider/MenuDivider.d.ts +2 -1
  39. package/lib/MenuDivider/MenuDivider.d.ts.map +1 -1
  40. package/lib/MenuDivider/MenuDivider.styling.d.ts.map +1 -1
  41. package/lib/MenuDivider/MenuDivider.styling.js +4 -8
  42. package/lib/MenuDivider/MenuDivider.styling.js.map +1 -1
  43. package/lib/MenuDivider/MenuDivider.types.d.ts +6 -1
  44. package/lib/MenuDivider/MenuDivider.types.d.ts.map +1 -1
  45. package/lib/MenuDivider/MenuDivider.types.js +1 -0
  46. package/lib/MenuDivider/MenuDivider.types.js.map +1 -1
  47. package/lib/MenuDivider/MenuDividerTokens.android.d.ts +5 -0
  48. package/lib/MenuDivider/MenuDividerTokens.android.d.ts.map +1 -0
  49. package/lib/MenuDivider/MenuDividerTokens.android.js +7 -0
  50. package/lib/MenuDivider/MenuDividerTokens.android.js.map +1 -0
  51. package/lib/MenuDivider/index.d.ts +1 -1
  52. package/lib/MenuDivider/index.d.ts.map +1 -1
  53. package/lib/MenuItem/MenuItem.styling.d.ts.map +1 -1
  54. package/lib/MenuItem/MenuItem.styling.js +2 -1
  55. package/lib/MenuItem/MenuItem.styling.js.map +1 -1
  56. package/lib/MenuItem/MenuItem.types.d.ts +4 -0
  57. package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
  58. package/lib/MenuItem/MenuItemTokens.android.d.ts +5 -0
  59. package/lib/MenuItem/MenuItemTokens.android.d.ts.map +1 -0
  60. package/lib/MenuItem/MenuItemTokens.android.js +20 -0
  61. package/lib/MenuItem/MenuItemTokens.android.js.map +1 -0
  62. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  63. package/lib/MenuItem/useMenuItem.js.map +1 -1
  64. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  65. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +5 -10
  66. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  67. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  68. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js +25 -20
  69. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  70. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +40 -0
  71. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  72. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts +5 -0
  73. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts.map +1 -0
  74. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.js +41 -0
  75. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.js.map +1 -0
  76. package/lib/MenuItemRadio/MenuItemRadio.d.ts +6 -3
  77. package/lib/MenuItemRadio/MenuItemRadio.d.ts.map +1 -1
  78. package/lib/MenuItemRadio/MenuItemRadio.js +37 -9
  79. package/lib/MenuItemRadio/MenuItemRadio.js.map +1 -1
  80. package/lib/MenuItemRadio/MenuItemRadio.styling.android.d.ts +6 -0
  81. package/lib/MenuItemRadio/MenuItemRadio.styling.android.d.ts.map +1 -0
  82. package/lib/MenuItemRadio/MenuItemRadio.styling.android.js +57 -0
  83. package/lib/MenuItemRadio/MenuItemRadio.styling.android.js.map +1 -0
  84. package/lib/MenuItemRadio/MenuItemRadio.styling.d.ts +5 -0
  85. package/lib/MenuItemRadio/MenuItemRadio.styling.d.ts.map +1 -0
  86. package/lib/MenuItemRadio/MenuItemRadio.styling.js +37 -0
  87. package/lib/MenuItemRadio/MenuItemRadio.styling.js.map +1 -0
  88. package/lib/MenuItemRadio/MenuItemRadio.types.d.ts +162 -0
  89. package/lib/MenuItemRadio/MenuItemRadio.types.d.ts.map +1 -0
  90. package/lib/MenuItemRadio/MenuItemRadio.types.js +2 -0
  91. package/lib/MenuItemRadio/MenuItemRadio.types.js.map +1 -0
  92. package/lib/MenuItemRadio/MenuItemRadioTokens.android.d.ts +5 -0
  93. package/lib/MenuItemRadio/MenuItemRadioTokens.android.d.ts.map +1 -0
  94. package/lib/MenuItemRadio/MenuItemRadioTokens.android.js +44 -0
  95. package/lib/MenuItemRadio/MenuItemRadioTokens.android.js.map +1 -0
  96. package/lib/MenuItemRadio/MenuItemRadioTokens.d.ts +5 -0
  97. package/lib/MenuItemRadio/MenuItemRadioTokens.d.ts.map +1 -0
  98. package/lib/MenuItemRadio/MenuItemRadioTokens.js +52 -0
  99. package/lib/MenuItemRadio/MenuItemRadioTokens.js.map +1 -0
  100. package/lib/MenuItemRadio/index.d.ts +2 -1
  101. package/lib/MenuItemRadio/index.d.ts.map +1 -1
  102. package/lib/MenuItemRadio/index.js +1 -1
  103. package/lib/MenuItemRadio/index.js.map +1 -1
  104. package/lib/MenuItemRadio/useMenuItemRadio.d.ts +2 -2
  105. package/lib/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  106. package/lib/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  107. package/lib/MenuList/MenuList.styling.d.ts.map +1 -1
  108. package/lib/MenuList/MenuList.styling.js +2 -1
  109. package/lib/MenuList/MenuList.styling.js.map +1 -1
  110. package/lib/MenuList/MenuList.types.d.ts +4 -0
  111. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  112. package/lib/MenuList/MenuListTokens.android.d.ts +5 -0
  113. package/lib/MenuList/MenuListTokens.android.d.ts.map +1 -0
  114. package/lib/MenuList/MenuListTokens.android.js +7 -0
  115. package/lib/MenuList/MenuListTokens.android.js.map +1 -0
  116. package/lib/MenuPopover/MenuPopover.d.ts +4 -2
  117. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  118. package/lib/MenuPopover/MenuPopover.js +2 -2
  119. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  120. package/lib/MenuPopover/MenuPopover.types.d.ts +12 -1
  121. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  122. package/lib/MenuPopover/MenuPopoverTokens.android.d.ts +5 -0
  123. package/lib/MenuPopover/MenuPopoverTokens.android.d.ts.map +1 -0
  124. package/lib/MenuPopover/MenuPopoverTokens.android.js +14 -0
  125. package/lib/MenuPopover/MenuPopoverTokens.android.js.map +1 -0
  126. package/lib/MenuPopover/MenuPopoverTokens.d.ts +4 -2
  127. package/lib/MenuPopover/MenuPopoverTokens.d.ts.map +1 -1
  128. package/lib/index.d.ts +1 -1
  129. package/lib/index.d.ts.map +1 -1
  130. package/lib/index.js +1 -1
  131. package/lib/index.js.map +1 -1
  132. package/lib-commonjs/Menu/Menu.d.ts.map +1 -1
  133. package/lib-commonjs/Menu/Menu.js +2 -6
  134. package/lib-commonjs/Menu/Menu.js.map +1 -1
  135. package/lib-commonjs/Menu/Menu.types.d.ts +20 -1
  136. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  137. package/lib-commonjs/Menu/Menu.types.js +7 -1
  138. package/lib-commonjs/Menu/Menu.types.js.map +1 -1
  139. package/lib-commonjs/Menu/renderMenu.android.d.ts +5 -0
  140. package/lib-commonjs/Menu/renderMenu.android.d.ts.map +1 -0
  141. package/lib-commonjs/Menu/renderMenu.android.js +19 -0
  142. package/lib-commonjs/Menu/renderMenu.android.js.map +1 -0
  143. package/lib-commonjs/Menu/renderMenu.d.ts +5 -0
  144. package/lib-commonjs/Menu/renderMenu.d.ts.map +1 -0
  145. package/lib-commonjs/Menu/renderMenu.js +15 -0
  146. package/lib-commonjs/Menu/renderMenu.js.map +1 -0
  147. package/lib-commonjs/Menu/useMenu.android.d.ts +3 -0
  148. package/lib-commonjs/Menu/useMenu.android.d.ts.map +1 -0
  149. package/lib-commonjs/Menu/useMenu.android.js +261 -0
  150. package/lib-commonjs/Menu/useMenu.android.js.map +1 -0
  151. package/lib-commonjs/MenuCallout/MenuCallout.android.d.ts +4 -0
  152. package/lib-commonjs/MenuCallout/MenuCallout.android.d.ts.map +1 -0
  153. package/lib-commonjs/MenuCallout/MenuCallout.android.js +36 -0
  154. package/lib-commonjs/MenuCallout/MenuCallout.android.js.map +1 -0
  155. package/lib-commonjs/MenuCallout/MenuCallout.d.ts +4 -0
  156. package/lib-commonjs/MenuCallout/MenuCallout.d.ts.map +1 -0
  157. package/lib-commonjs/MenuCallout/MenuCallout.js +18 -0
  158. package/lib-commonjs/MenuCallout/MenuCallout.js.map +1 -0
  159. package/lib-commonjs/MenuCallout/MenuCallout.types.d.ts +18 -0
  160. package/lib-commonjs/MenuCallout/MenuCallout.types.d.ts.map +1 -0
  161. package/lib-commonjs/MenuCallout/MenuCallout.types.js +5 -0
  162. package/lib-commonjs/MenuCallout/MenuCallout.types.js.map +1 -0
  163. package/lib-commonjs/MenuCallout/index.d.ts +4 -0
  164. package/lib-commonjs/MenuCallout/index.d.ts.map +1 -0
  165. package/lib-commonjs/MenuCallout/index.js +8 -0
  166. package/lib-commonjs/MenuCallout/index.js.map +1 -0
  167. package/lib-commonjs/MenuDivider/MenuDivider.d.ts +2 -1
  168. package/lib-commonjs/MenuDivider/MenuDivider.d.ts.map +1 -1
  169. package/lib-commonjs/MenuDivider/MenuDivider.styling.d.ts.map +1 -1
  170. package/lib-commonjs/MenuDivider/MenuDivider.styling.js +4 -8
  171. package/lib-commonjs/MenuDivider/MenuDivider.styling.js.map +1 -1
  172. package/lib-commonjs/MenuDivider/MenuDivider.types.d.ts +6 -1
  173. package/lib-commonjs/MenuDivider/MenuDivider.types.d.ts.map +1 -1
  174. package/lib-commonjs/MenuDivider/MenuDivider.types.js +2 -1
  175. package/lib-commonjs/MenuDivider/MenuDivider.types.js.map +1 -1
  176. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.d.ts +5 -0
  177. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.d.ts.map +1 -0
  178. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.js +11 -0
  179. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.js.map +1 -0
  180. package/lib-commonjs/MenuDivider/index.d.ts +1 -1
  181. package/lib-commonjs/MenuDivider/index.d.ts.map +1 -1
  182. package/lib-commonjs/MenuItem/MenuItem.styling.d.ts.map +1 -1
  183. package/lib-commonjs/MenuItem/MenuItem.styling.js +2 -1
  184. package/lib-commonjs/MenuItem/MenuItem.styling.js.map +1 -1
  185. package/lib-commonjs/MenuItem/MenuItem.types.d.ts +4 -0
  186. package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
  187. package/lib-commonjs/MenuItem/MenuItemTokens.android.d.ts +5 -0
  188. package/lib-commonjs/MenuItem/MenuItemTokens.android.d.ts.map +1 -0
  189. package/lib-commonjs/MenuItem/MenuItemTokens.android.js +24 -0
  190. package/lib-commonjs/MenuItem/MenuItemTokens.android.js.map +1 -0
  191. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  192. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  193. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  194. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +4 -9
  195. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  196. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  197. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js +25 -20
  198. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  199. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +40 -0
  200. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  201. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts +5 -0
  202. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts.map +1 -0
  203. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.js +45 -0
  204. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.js.map +1 -0
  205. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts +6 -3
  206. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts.map +1 -1
  207. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js +39 -10
  208. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js.map +1 -1
  209. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.d.ts +6 -0
  210. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.d.ts.map +1 -0
  211. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.js +60 -0
  212. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.js.map +1 -0
  213. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.d.ts +5 -0
  214. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.d.ts.map +1 -0
  215. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.js +40 -0
  216. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.js.map +1 -0
  217. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.d.ts +162 -0
  218. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.d.ts.map +1 -0
  219. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.js +5 -0
  220. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.js.map +1 -0
  221. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.d.ts +5 -0
  222. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.d.ts.map +1 -0
  223. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.js +48 -0
  224. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.js.map +1 -0
  225. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.d.ts +5 -0
  226. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.d.ts.map +1 -0
  227. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.js +56 -0
  228. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.js.map +1 -0
  229. package/lib-commonjs/MenuItemRadio/index.d.ts +2 -1
  230. package/lib-commonjs/MenuItemRadio/index.d.ts.map +1 -1
  231. package/lib-commonjs/MenuItemRadio/index.js +1 -2
  232. package/lib-commonjs/MenuItemRadio/index.js.map +1 -1
  233. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts +2 -2
  234. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  235. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  236. package/lib-commonjs/MenuList/MenuList.styling.d.ts.map +1 -1
  237. package/lib-commonjs/MenuList/MenuList.styling.js +2 -1
  238. package/lib-commonjs/MenuList/MenuList.styling.js.map +1 -1
  239. package/lib-commonjs/MenuList/MenuList.types.d.ts +4 -0
  240. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  241. package/lib-commonjs/MenuList/MenuListTokens.android.d.ts +5 -0
  242. package/lib-commonjs/MenuList/MenuListTokens.android.d.ts.map +1 -0
  243. package/lib-commonjs/MenuList/MenuListTokens.android.js +11 -0
  244. package/lib-commonjs/MenuList/MenuListTokens.android.js.map +1 -0
  245. package/lib-commonjs/MenuPopover/MenuPopover.d.ts +4 -2
  246. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  247. package/lib-commonjs/MenuPopover/MenuPopover.js +2 -2
  248. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  249. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +12 -1
  250. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  251. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.d.ts +5 -0
  252. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.d.ts.map +1 -0
  253. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.js +17 -0
  254. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.js.map +1 -0
  255. package/lib-commonjs/MenuPopover/MenuPopoverTokens.d.ts +4 -2
  256. package/lib-commonjs/MenuPopover/MenuPopoverTokens.d.ts.map +1 -1
  257. package/lib-commonjs/index.d.ts +1 -1
  258. package/lib-commonjs/index.d.ts.map +1 -1
  259. package/lib-commonjs/index.js +1 -2
  260. package/lib-commonjs/index.js.map +1 -1
  261. package/package.json +7 -7
  262. package/src/Menu/Menu.tsx +3 -13
  263. package/src/Menu/Menu.types.ts +22 -1
  264. package/src/Menu/renderMenu.android.tsx +26 -0
  265. package/src/Menu/renderMenu.tsx +18 -0
  266. package/src/Menu/useMenu.android.ts +325 -0
  267. package/src/MenuCallout/MenuCallout.android.tsx +60 -0
  268. package/src/MenuCallout/MenuCallout.tsx +20 -0
  269. package/src/MenuCallout/MenuCallout.types.ts +22 -0
  270. package/src/MenuCallout/index.ts +3 -0
  271. package/src/MenuDivider/MenuDivider.styling.ts +4 -0
  272. package/src/MenuDivider/MenuDivider.types.ts +7 -1
  273. package/src/MenuDivider/MenuDividerTokens.android.ts +11 -0
  274. package/src/MenuDivider/index.ts +1 -1
  275. package/src/MenuItem/MenuItem.styling.ts +3 -1
  276. package/src/MenuItem/MenuItem.types.ts +5 -0
  277. package/src/MenuItem/MenuItemTokens.android.ts +24 -0
  278. package/src/MenuItem/useMenuItem.ts +0 -1
  279. package/src/MenuItemCheckbox/MenuItemCheckbox.styling.ts +29 -2
  280. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +15 -2
  281. package/src/MenuItemCheckbox/MenuItemCheckbox.types.ts +47 -0
  282. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.android.ts +46 -0
  283. package/src/MenuItemRadio/MenuItemRadio.styling.android.ts +98 -0
  284. package/src/MenuItemRadio/MenuItemRadio.styling.ts +75 -0
  285. package/src/MenuItemRadio/MenuItemRadio.tsx +68 -9
  286. package/src/MenuItemRadio/MenuItemRadio.types.ts +190 -0
  287. package/src/MenuItemRadio/MenuItemRadioTokens.android.ts +51 -0
  288. package/src/MenuItemRadio/MenuItemRadioTokens.ts +56 -0
  289. package/src/MenuItemRadio/index.ts +9 -1
  290. package/src/MenuItemRadio/useMenuItemRadio.ts +2 -2
  291. package/src/MenuList/MenuList.styling.ts +3 -0
  292. package/src/MenuList/MenuList.types.ts +5 -0
  293. package/src/MenuList/MenuListTokens.android.ts +11 -0
  294. package/src/MenuPopover/MenuPopover.tsx +6 -2
  295. package/src/MenuPopover/MenuPopover.types.ts +14 -1
  296. package/src/MenuPopover/MenuPopoverTokens.android.ts +21 -0
  297. package/src/index.ts +10 -1
@@ -38,6 +38,52 @@ export interface MenuItemCheckboxTokens
38
38
  */
39
39
  iconSize?: number;
40
40
 
41
+ /**
42
+ * Color of the background of the box containing the checkmark.
43
+ * @platform android
44
+ */
45
+ checkboxBackgroundColor?: ColorValue;
46
+
47
+ /**
48
+ * Color of the border of the box containing the checkmark.
49
+ * @platform android
50
+ */
51
+ checkboxBorderColor?: ColorValue;
52
+
53
+ /**
54
+ * Border radius of the box containing the checkmark.
55
+ * @platform android
56
+ */
57
+ checkboxBorderRadius?: number;
58
+
59
+ /**
60
+ * Width of the border around the box containing the checkmark.
61
+ * @platform android
62
+ */
63
+ checkboxBorderWidth?: number;
64
+
65
+ /**
66
+ * Height and width of the box containing the checkmark.
67
+ * @platform android
68
+ */
69
+ checkboxSize?: number;
70
+
71
+ /**
72
+ * Ripple color for Android.
73
+ *
74
+ * A ripple animation is shown on click for Android. This sets the color of the ripple.
75
+ * @platform android
76
+ */
77
+ rippleColor?: ColorValue;
78
+
79
+ /**
80
+ * Ripple radius for circular radio on Android.
81
+ *
82
+ * A ripple animation is shown on click for Android. This sets the radius of the circular ripple shown on the radio button.
83
+ * @platform android
84
+ */
85
+ rippleRadius?: number;
86
+
41
87
  /**
42
88
  * States of the item control
43
89
  */
@@ -62,6 +108,7 @@ export interface MenuItemCheckboxInfo {
62
108
 
63
109
  export interface MenuItemCheckboxSlotProps {
64
110
  root: React.PropsWithRef<PressablePropsExtended>;
111
+ checkbox?: PressablePropsExtended; // Android only
65
112
  checkmark?: XmlProps;
66
113
  content?: TextProps;
67
114
  iconPlaceholder?: React.PropsWithRef<IViewProps>;
@@ -0,0 +1,46 @@
1
+ import type { Theme } from '@fluentui-react-native/framework';
2
+ import { globalTokens } from '@fluentui-react-native/theme-tokens';
3
+ import type { TokenSettings } from '@fluentui-react-native/use-styling';
4
+
5
+ import type { MenuItemCheckboxTokens } from './MenuItemCheckbox.types';
6
+
7
+ export const defaultMenuItemCheckboxTokens: TokenSettings<MenuItemCheckboxTokens, Theme> = (t: Theme): MenuItemCheckboxTokens => ({
8
+ checkmarkSize: globalTokens.size120,
9
+ checkmarkVisibility: 0,
10
+ color: t.colors.neutralForeground1,
11
+ variant: 'body1',
12
+ gap: globalTokens.size160,
13
+ iconColor: t.colors.neutralForeground2,
14
+ iconSize: globalTokens.size200,
15
+ maxWidth: 300,
16
+ paddingVertical: globalTokens.size60,
17
+ paddingHorizontal: globalTokens.size160,
18
+ checkmarkPadding: globalTokens.sizeNone,
19
+ checkboxBorderWidth: globalTokens.stroke.width15,
20
+ checkboxBorderRadius: globalTokens.corner.radius40,
21
+ checkboxSize: globalTokens.size200,
22
+ checkboxBorderColor: t.colors.neutralStrokeAccessible,
23
+
24
+ rippleColor: '#D4D4D4',
25
+ pressed: {
26
+ backgroundColor: t.colors.neutralBackground1Pressed,
27
+ },
28
+ disabled: {
29
+ backgroundColor: t.colors.neutralBackground1,
30
+ checkboxBorderColor: t.colors.neutralStrokeDisabled,
31
+ color: t.colors.neutralForegroundDisabled1,
32
+ iconColor: t.colors.neutralForegroundDisabled,
33
+ // Unselected, Disabled
34
+ rippleColor: '#D4D4D4',
35
+ checked: {
36
+ checkboxBackgroundColor: t.colors.brandBackgroundDisabled,
37
+ checkmarkVisibility: 1,
38
+ },
39
+ },
40
+ checked: {
41
+ checkmarkVisibility: 1,
42
+ checkboxBackgroundColor: t.colors.brandBackground,
43
+ checkboxBorderWidth: globalTokens.stroke.widthNone,
44
+ checkmarkColor: t.colors.neutralForegroundOnColor,
45
+ },
46
+ });
@@ -0,0 +1,98 @@
1
+ import { Platform } from 'react-native';
2
+
3
+ import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';
4
+ import { buildProps } from '@fluentui-react-native/framework';
5
+ import { borderStyles, fontStyles, layoutStyles } from '@fluentui-react-native/tokens';
6
+
7
+ import type { MenuItemRadioProps, MenuItemRadioSlotProps } from './MenuItemRadio.types';
8
+ import { menuItemRadioName } from './MenuItemRadio.types';
9
+ import { defaultMenuItemRadioTokens } from './MenuItemRadioTokens';
10
+ import type { MenuItemRadioTokens } from '../MenuItemRadio/MenuItemRadio.types';
11
+
12
+ export const menuItemRadioStates: (keyof MenuItemRadioTokens)[] = ['hovered', 'focused', 'pressed', 'disabled', 'checked'];
13
+
14
+ export const stylingSettings: UseStylingOptions<MenuItemRadioProps, MenuItemRadioSlotProps, MenuItemRadioTokens> = {
15
+ tokens: [defaultMenuItemRadioTokens, menuItemRadioName],
16
+ states: menuItemRadioStates,
17
+ slotProps: {
18
+ root: buildProps(
19
+ (tokens: MenuItemRadioTokens, theme: Theme) => ({
20
+ style: {
21
+ alignItems: 'center',
22
+ backgroundColor: tokens.backgroundColor,
23
+ display: 'flex',
24
+ flexDirection: 'row',
25
+ ...layoutStyles.from(tokens, theme),
26
+ ...borderStyles.from(tokens, theme),
27
+ },
28
+ }),
29
+ ['backgroundColor', ...borderStyles.keys, ...layoutStyles.keys],
30
+ ),
31
+
32
+ radioButton: buildProps(
33
+ (tokens: MenuItemRadioTokens) => ({
34
+ style: {
35
+ backgroundColor: 'transparent',
36
+ alignItems: 'center',
37
+ justifyContent: 'center',
38
+ marginEnd: tokens.paddingHorizontal,
39
+ width: tokens.radioOuterCircleSize,
40
+ height: tokens.radioOuterCircleSize,
41
+ borderWidth: tokens.radioBorderWidth,
42
+ borderStyle: tokens.radioBorderStyle,
43
+ borderRadius: tokens.radioOuterCircleSize / 2,
44
+ borderColor: tokens.radioBorder,
45
+ },
46
+ android_ripple: { color: tokens.rippleColor, radius: tokens.rippleRadius, borderless: true },
47
+ }),
48
+ ['radioBorderWidth', 'radioBorderStyle', 'radioOuterCircleSize', 'rippleColor', 'rippleRadius', 'radioBorder'],
49
+ ),
50
+
51
+ radioInnerCircle: buildProps(
52
+ (tokens: MenuItemRadioTokens) => ({
53
+ style: {
54
+ opacity: tokens.radioVisibility,
55
+ borderRadius: tokens.radioInnerCircleSize / 2,
56
+ height: tokens.radioInnerCircleSize,
57
+ width: tokens.radioInnerCircleSize,
58
+ backgroundColor: tokens.radioFill,
59
+ },
60
+ }),
61
+ ['radioInnerCircleSize', 'radioVisibility', 'radioFill'],
62
+ ),
63
+
64
+ content: buildProps(
65
+ (tokens: MenuItemRadioTokens, theme: Theme) => ({
66
+ style: {
67
+ flexGrow: 1,
68
+ color: tokens.color,
69
+ ...(Platform.OS === 'android' && { flexShrink: 1 }),
70
+ ...fontStyles.from(tokens, theme),
71
+ },
72
+ }),
73
+ ['color', ...fontStyles.keys],
74
+ ),
75
+ iconPlaceholder: buildProps(
76
+ (tokens: MenuItemRadioTokens) => ({
77
+ style: {
78
+ minHeight: tokens.iconSize,
79
+ minWidth: tokens.iconSize,
80
+ alignItems: 'center',
81
+ justifyContent: 'center',
82
+ marginEnd: tokens.gap,
83
+ },
84
+ }),
85
+ ['checkmarkSize', 'gap'],
86
+ ),
87
+ imgIcon: buildProps(
88
+ (tokens: MenuItemRadioTokens) => ({
89
+ style: { tintColor: tokens.iconColor, height: tokens.iconSize, width: tokens.iconSize },
90
+ }),
91
+ ['gap', 'iconColor', 'iconSize'],
92
+ ),
93
+ fontOrSvgIcon: buildProps(
94
+ (tokens: MenuItemRadioTokens) => ({ color: tokens.iconColor, size: tokens.iconSize }),
95
+ ['gap', 'iconColor', 'iconSize'],
96
+ ),
97
+ },
98
+ };
@@ -0,0 +1,75 @@
1
+ import { Platform } from 'react-native';
2
+
3
+ import type { Theme, UseStylingOptions } from '@fluentui-react-native/framework';
4
+ import { buildProps } from '@fluentui-react-native/framework';
5
+ import { borderStyles, fontStyles, layoutStyles } from '@fluentui-react-native/tokens';
6
+
7
+ import type { MenuItemRadioProps, MenuItemRadioSlotProps, MenuItemRadioTokens } from './MenuItemRadio.types';
8
+ import { menuItemRadioName } from './MenuItemRadio.types';
9
+ import { defaultMenuItemRadioTokens } from './MenuItemRadioTokens';
10
+
11
+ export const menuItemRadioStates: (keyof MenuItemRadioTokens)[] = ['hovered', 'focused', 'pressed', 'disabled', 'checked'];
12
+
13
+ export const stylingSettings: UseStylingOptions<MenuItemRadioProps, MenuItemRadioSlotProps, MenuItemRadioTokens> = {
14
+ tokens: [defaultMenuItemRadioTokens, menuItemRadioName],
15
+ states: menuItemRadioStates,
16
+ slotProps: {
17
+ root: buildProps(
18
+ (tokens: MenuItemRadioTokens, theme: Theme) => ({
19
+ style: {
20
+ alignItems: 'center',
21
+ backgroundColor: tokens.backgroundColor,
22
+ display: 'flex',
23
+ flexDirection: 'row',
24
+ ...layoutStyles.from(tokens, theme),
25
+ ...borderStyles.from(tokens, theme),
26
+ },
27
+ }),
28
+ ['backgroundColor', ...borderStyles.keys, ...layoutStyles.keys],
29
+ ),
30
+ checkmark: buildProps(
31
+ (tokens: MenuItemRadioTokens) => ({
32
+ opacity: tokens.checkmarkVisibility,
33
+ color: tokens.checkmarkColor ?? tokens.color,
34
+ height: tokens.checkmarkSize,
35
+ width: tokens.checkmarkSize,
36
+ viewBox: '0 0 ' + (tokens.checkmarkSize - tokens.checkmarkPadding * 2) + ' ' + (tokens.checkmarkSize - tokens.checkmarkPadding * 2),
37
+ ...(Platform.OS !== 'android' && { style: { marginEnd: tokens.gap } }),
38
+ }),
39
+ ['checkmarkPadding', 'checkmarkSize', 'checkmarkVisibility', 'color', 'gap'],
40
+ ),
41
+ content: buildProps(
42
+ (tokens: MenuItemRadioTokens, theme: Theme) => ({
43
+ style: {
44
+ flexGrow: 1,
45
+ color: tokens.color,
46
+ ...(Platform.OS === 'android' && { flexShrink: 1 }),
47
+ ...fontStyles.from(tokens, theme),
48
+ },
49
+ }),
50
+ ['color', ...fontStyles.keys],
51
+ ),
52
+ iconPlaceholder: buildProps(
53
+ (tokens: MenuItemRadioTokens) => ({
54
+ style: {
55
+ minHeight: tokens.iconSize,
56
+ minWidth: tokens.iconSize,
57
+ alignItems: 'center',
58
+ justifyContent: 'center',
59
+ marginEnd: tokens.gap,
60
+ },
61
+ }),
62
+ ['checkmarkSize', 'gap'],
63
+ ),
64
+ imgIcon: buildProps(
65
+ (tokens: MenuItemRadioTokens) => ({
66
+ style: { tintColor: tokens.iconColor, height: tokens.iconSize, width: tokens.iconSize },
67
+ }),
68
+ ['gap', 'iconColor', 'iconSize'],
69
+ ),
70
+ fontOrSvgIcon: buildProps(
71
+ (tokens: MenuItemRadioTokens) => ({ color: tokens.iconColor, size: tokens.iconSize }),
72
+ ['gap', 'iconColor', 'iconSize'],
73
+ ),
74
+ },
75
+ };
@@ -1,17 +1,76 @@
1
- import type { UseSlots } from '@fluentui-react-native/framework';
1
+ /** @jsx withSlots */
2
+ import React from 'react';
3
+ import { Image, Platform, Pressable, View } from 'react-native';
2
4
 
3
- import { useMenuItemRadio } from './useMenuItemRadio';
4
- import { MenuItemCheckbox, menuItemFinalRender } from '../MenuItemCheckbox/MenuItemCheckbox';
5
- import type { MenuItemCheckboxProps, MenuItemCheckboxType } from '../MenuItemCheckbox/MenuItemCheckbox.types';
5
+ import type { Slots, UseSlots } from '@fluentui-react-native/framework';
6
+ import { compose, mergeProps, withSlots } from '@fluentui-react-native/framework';
7
+ import { IconV1 as Icon } from '@fluentui-react-native/icon';
8
+ import { TextV1 as Text } from '@fluentui-react-native/text';
9
+ import { SvgXml } from 'react-native-svg';
6
10
 
7
- export const menuItemRadioName = 'MenuItemRadio';
11
+ import { stylingSettings } from './MenuItemRadio.styling';
12
+ import type { MenuItemRadioInfo, MenuItemRadioProps, MenuItemRadioSlotProps, MenuItemRadioType } from './MenuItemRadio.types';
13
+ import { menuItemRadioName } from './MenuItemRadio.types';
14
+ import { useMenuItemRadio } from './useMenuItemRadio';
15
+ import { getAccessibilityLabel, getTooltip } from '../MenuItem/MenuItem';
8
16
 
9
- export const MenuItemRadio = MenuItemCheckbox.compose({
17
+ export const MenuItemRadio = compose<MenuItemRadioType>({
10
18
  displayName: menuItemRadioName,
11
- useRender: (userProps: MenuItemCheckboxProps, useSlots: UseSlots<MenuItemCheckboxType>) => {
19
+ ...stylingSettings,
20
+ slots: {
21
+ root: Pressable,
22
+ radioInnerCircle: View,
23
+ radioButton: Pressable,
24
+ checkmark: SvgXml,
25
+ content: Text,
26
+ iconPlaceholder: View,
27
+ imgIcon: Image,
28
+ fontOrSvgIcon: Icon,
29
+ },
30
+ useRender: (userProps: MenuItemRadioProps, useSlots: UseSlots<MenuItemRadioType>) => {
12
31
  const menuItem = useMenuItemRadio(userProps);
13
- const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer]);
32
+ const Slots = useSlots(userProps, (layer): boolean => menuItem.state[layer] || userProps[layer]);
14
33
 
15
- return menuItemFinalRender(menuItem, Slots);
34
+ return menuItemRadioFinalRender(menuItem, Slots);
16
35
  },
17
36
  });
37
+
38
+ export const menuItemRadioFinalRender = (
39
+ menuItem: MenuItemRadioInfo,
40
+ Slots: Slots<MenuItemRadioSlotProps>,
41
+ ): React.FunctionComponent<MenuItemRadioProps> => {
42
+ return (final: MenuItemRadioProps, children: React.ReactNode) => {
43
+ const { accessibilityLabel, icon, tooltip, ...mergedProps } = mergeProps(menuItem.props, final);
44
+
45
+ const checkmarkXml = `
46
+ <svg>
47
+ <path fill='currentColor' d='M9.85355 3.14645C10.0488 3.34171 10.0488 3.65829 9.85355 3.85355L5.35355 8.35355C5.15829 8.54882 4.84171 8.54882 4.64645 8.35355L2.64645 6.35355C2.45118 6.15829 2.45118 5.84171 2.64645 5.64645C2.84171 5.45118 3.15829 5.45118 3.35355 5.64645L5 7.29289L9.14645 3.14645C9.34171 2.95118 9.65829 2.95118 9.85355 3.14645Z' />
48
+ </svg>`;
49
+
50
+ const label = getAccessibilityLabel(accessibilityLabel, children[0]);
51
+ const tooltipResult = getTooltip(tooltip, menuItem.state.hasTooltips, children[0]);
52
+
53
+ return (
54
+ <Slots.root {...mergedProps} accessibilityLabel={label}>
55
+ {Platform.OS === 'android' ? (
56
+ <Slots.radioButton onPress={mergedProps.onPress} accessible={false} focusable={false}>
57
+ <Slots.radioInnerCircle />
58
+ </Slots.radioButton>
59
+ ) : (
60
+ <Slots.checkmark accessible={false} xml={checkmarkXml} />
61
+ )}
62
+ {(icon || menuItem.state.hasIcons) && (
63
+ <Slots.iconPlaceholder accessible={false}>
64
+ {icon && icon.source && <Slots.imgIcon accessible={false} {...icon} />}
65
+ {icon && (icon.svgSource || icon.fontSource) && <Slots.fontOrSvgIcon accessible={false} {...icon} />}
66
+ </Slots.iconPlaceholder>
67
+ )}
68
+ {children && (
69
+ <Slots.content accessible={false} tooltip={tooltipResult}>
70
+ {children}
71
+ </Slots.content>
72
+ )}
73
+ </Slots.root>
74
+ );
75
+ };
76
+ };
@@ -0,0 +1,190 @@
1
+ import type * as React from 'react';
2
+ import type { ColorValue, ImageProps, ViewStyle } from 'react-native';
3
+
4
+ import type { IViewProps } from '@fluentui-react-native/adapters';
5
+ import type { IconPropsV1 as IconProps } from '@fluentui-react-native/icon';
6
+ import type { PressablePropsExtended, PressableState } from '@fluentui-react-native/interactive-hooks';
7
+ import type { TextProps } from '@fluentui-react-native/text';
8
+ import type { XmlProps } from 'react-native-svg';
9
+
10
+ import type { MenuItemProps, MenuItemTokens } from '../MenuItem/MenuItem.types';
11
+
12
+ export const menuItemRadioName = 'MenuItemRadio';
13
+
14
+ export interface MenuItemRadioTokens
15
+ extends Omit<MenuItemTokens, 'submenuIndicatorPadding' | 'submenuIndicatorSize' | 'disabled' | 'focused' | 'hovered' | 'pressed'> {
16
+ /**
17
+ * Color of the checkmark icon
18
+ */
19
+ checkmarkColor?: ColorValue;
20
+
21
+ /**
22
+ * Amount of space in pixels around the checkmark icon
23
+ */
24
+ checkmarkPadding?: number;
25
+
26
+ /**
27
+ * Visibility of the checkmark icon from 0 to 1
28
+ */
29
+ checkmarkVisibility?: number;
30
+
31
+ /**
32
+ * Color of the icon
33
+ */
34
+ iconColor?: ColorValue;
35
+
36
+ /**
37
+ * Size of the icon. Pixels for SVG and points for font icon.
38
+ */
39
+ iconSize?: number;
40
+
41
+ /**
42
+ * Color of the background of the box containing the checkmark.
43
+ * @platform android
44
+ */
45
+ checkboxBackgroundColor?: ColorValue;
46
+
47
+ /**
48
+ * Color of the border of the box containing the checkmark.
49
+ * @platform android
50
+ */
51
+ checkboxBorderColor?: ColorValue;
52
+
53
+ /**
54
+ * Border radius of the box containing the checkmark.
55
+ * @platform android
56
+ */
57
+ checkboxBorderRadius?: number;
58
+
59
+ /**
60
+ * Width of the border around the box containing the checkmark.
61
+ * @platform android
62
+ */
63
+ checkboxBorderWidth?: number;
64
+
65
+ /**
66
+ * Height and width of the box containing the checkmark.
67
+ * @platform android
68
+ */
69
+ checkboxSize?: number;
70
+
71
+ /**
72
+ * Ripple color for Android.
73
+ *
74
+ * A ripple animation is shown on click for Android. This sets the color of the ripple.
75
+ * @platform android
76
+ */
77
+ rippleColor?: ColorValue;
78
+
79
+ /**
80
+ * Color of the background of the box containing the radio.
81
+ * @platform android
82
+ */
83
+ radioBackgroundColor?: ColorValue;
84
+
85
+ /**
86
+ * Color of the border of the box containing the radio.
87
+ * @platform android
88
+ */
89
+ radioBorderColor?: ColorValue;
90
+
91
+ /**
92
+ * Border radius of the box containing the radio.
93
+ * @platform android
94
+ */
95
+ radioBorderRadius?: number;
96
+
97
+ /**
98
+ * Height and width of the box containing the radio.
99
+ * @platform android
100
+ */
101
+ radioSize?: number;
102
+
103
+ /**
104
+ * Indicator radio border color
105
+ * @platform android
106
+ */
107
+ radioBorder?: ColorValue;
108
+
109
+ /**
110
+ * Indicator radio border style
111
+ * @platform android
112
+ */
113
+ radioBorderStyle?: ViewStyle['borderStyle'];
114
+
115
+ /**
116
+ * Inner circle color when selected
117
+ * @platform android
118
+ */
119
+ radioFill?: ColorValue;
120
+
121
+ /**
122
+ * Visibility of the radio inner circle from 0 to 1
123
+ * @platform android
124
+ */
125
+ radioVisibility?: number;
126
+
127
+ /**
128
+ * Diameter size of the outer indicator
129
+ * @platform android
130
+ */
131
+ radioOuterCircleSize?: number;
132
+
133
+ /**
134
+ * Diameter size of the inner circle indicator
135
+ * @platform android
136
+ */
137
+ radioInnerCircleSize?: number;
138
+
139
+ /**
140
+ * Border width of Radio
141
+ * @platform android
142
+ */
143
+ radioBorderWidth?: number;
144
+
145
+ /**
146
+ * Ripple radius for circular radio on Android.
147
+ *
148
+ * A ripple animation is shown on click for Android. This sets the radius of the circular ripple shown on the radio button.
149
+ * @platform android
150
+ */
151
+ rippleRadius?: number;
152
+
153
+ /**
154
+ * States of the item control
155
+ */
156
+ checked?: MenuItemRadioTokens;
157
+ disabled?: MenuItemRadioTokens;
158
+ focused?: MenuItemRadioTokens;
159
+ hovered?: MenuItemRadioTokens;
160
+ pressed?: MenuItemRadioTokens;
161
+ }
162
+
163
+ export interface MenuItemRadioProps extends MenuItemProps {
164
+ /**
165
+ * Identifier for the control
166
+ */
167
+ name: string;
168
+ }
169
+
170
+ export interface MenuItemRadioInfo {
171
+ props: MenuItemRadioProps & React.ComponentPropsWithRef<any>;
172
+ state: PressableState & { hasIcons: boolean; hasTooltips: boolean };
173
+ }
174
+
175
+ export interface MenuItemRadioSlotProps {
176
+ root: React.PropsWithRef<PressablePropsExtended>;
177
+ content?: TextProps;
178
+ checkmark?: XmlProps;
179
+ radioButton?: PressablePropsExtended;
180
+ radioInnerCircle?: React.PropsWithRef<IViewProps>;
181
+ iconPlaceholder?: React.PropsWithRef<IViewProps>;
182
+ imgIcon?: ImageProps;
183
+ fontOrSvgIcon?: IconProps;
184
+ }
185
+
186
+ export interface MenuItemRadioType {
187
+ props: MenuItemRadioProps;
188
+ tokens: MenuItemRadioTokens;
189
+ slotProps: MenuItemRadioSlotProps;
190
+ }
@@ -0,0 +1,51 @@
1
+ import type { Theme } from '@fluentui-react-native/framework';
2
+ import { globalTokens } from '@fluentui-react-native/theme-tokens';
3
+ import type { TokenSettings } from '@fluentui-react-native/use-styling';
4
+
5
+ import type { MenuItemRadioTokens } from './MenuItemRadio.types';
6
+
7
+ export const defaultMenuItemRadioTokens: TokenSettings<MenuItemRadioTokens, Theme> = (t: Theme): MenuItemRadioTokens => ({
8
+ checkmarkSize: globalTokens.size120,
9
+ color: t.colors.neutralForeground1,
10
+ variant: 'body1',
11
+ gap: globalTokens.size160,
12
+ iconColor: t.colors.neutralForeground2,
13
+ iconSize: globalTokens.size200,
14
+ maxWidth: 300,
15
+ paddingVertical: globalTokens.size60,
16
+ paddingHorizontal: globalTokens.size160,
17
+
18
+ radioOuterCircleSize: globalTokens.size200,
19
+ radioInnerCircleSize: globalTokens.size100,
20
+ radioBorderStyle: 'solid',
21
+ radioBorderWidth: globalTokens.stroke.width15,
22
+ rippleRadius: globalTokens.size160,
23
+
24
+ // Unselected, Rest
25
+ radioBorder: t.colors.neutralStrokeAccessible,
26
+ radioVisibility: 0,
27
+
28
+ rippleColor: '#D4D4D4',
29
+ pressed: {
30
+ backgroundColor: t.colors.neutralBackground1Pressed,
31
+ },
32
+ disabled: {
33
+ backgroundColor: t.colors.neutralBackground1,
34
+ color: t.colors.neutralForegroundDisabled1,
35
+ iconColor: t.colors.neutralForegroundDisabled,
36
+ // Unselected, Disabled
37
+ rippleColor: '#D4D4D4',
38
+ radioBorder: t.colors.neutralStrokeDisabled,
39
+ radioVisibility: 0,
40
+ checked: {
41
+ radioBorder: t.colors.brandBackgroundDisabled,
42
+ radioFill: t.colors.brandForegroundDisabled2,
43
+ radioVisibility: 1,
44
+ },
45
+ },
46
+ checked: {
47
+ radioBorder: t.colors.brandBackground,
48
+ radioFill: t.colors.brandForeground1,
49
+ radioVisibility: 1,
50
+ },
51
+ });
@@ -0,0 +1,56 @@
1
+ import type { FontWeightValue, Theme } from '@fluentui-react-native/framework';
2
+ import { globalTokens } from '@fluentui-react-native/theme-tokens';
3
+ import type { TokenSettings } from '@fluentui-react-native/use-styling';
4
+
5
+ import type { MenuItemRadioTokens } from './MenuItemRadio.types';
6
+
7
+ export const defaultMenuItemRadioTokens: TokenSettings<MenuItemRadioTokens, Theme> = (t: Theme): MenuItemRadioTokens => ({
8
+ backgroundColor: t.colors.neutralBackground1,
9
+ borderRadius: globalTokens.corner.radiusNone,
10
+ checkmarkPadding: globalTokens.size20,
11
+ checkmarkSize: 16,
12
+ checkmarkVisibility: 0,
13
+ color: t.colors.neutralForeground1,
14
+ fontFamily: t.typography.families.primary,
15
+ fontSize: globalTokens.font.size200,
16
+ fontWeight: globalTokens.font.weight.regular as FontWeightValue,
17
+ gap: globalTokens.size40,
18
+ iconColor: t.colors.neutralForeground1,
19
+ iconSize: 16,
20
+ minHeight: 24,
21
+ minWidth: 160,
22
+ maxWidth: 300,
23
+ padding: globalTokens.size40,
24
+ paddingHorizontal: globalTokens.size80,
25
+ pressed: {
26
+ backgroundColor: t.colors.neutralBackground1Pressed,
27
+ color: t.colors.neutralForeground1Pressed,
28
+ iconColor: t.colors.neutralForeground1Pressed,
29
+ checked: {
30
+ checkmarkColor: t.colors.neutralForeground1Pressed,
31
+ checkmarkVisibility: 1,
32
+ },
33
+ },
34
+ disabled: {
35
+ backgroundColor: t.colors.neutralBackground1,
36
+ color: t.colors.neutralForegroundDisabled,
37
+ iconColor: t.colors.neutralForegroundDisabled,
38
+ checked: {
39
+ checkmarkColor: t.colors.neutralForegroundDisabled,
40
+ checkmarkVisibility: 1,
41
+ },
42
+ },
43
+ focused: {
44
+ backgroundColor: t.colors.neutralBackground1Hover,
45
+ color: t.colors.neutralForeground1Hover,
46
+ iconColor: t.colors.neutralForeground1Hover,
47
+ checked: {
48
+ checkmarkColor: t.colors.neutralForeground1Hover,
49
+ checkmarkVisibility: 1,
50
+ },
51
+ },
52
+ checked: {
53
+ checkmarkColor: t.colors.neutralForeground1,
54
+ checkmarkVisibility: 1,
55
+ },
56
+ });
@@ -1,2 +1,10 @@
1
- export { MenuItemRadio, menuItemRadioName } from './MenuItemRadio';
1
+ export { MenuItemRadio } from './MenuItemRadio';
2
2
  export { useMenuItemRadio } from './useMenuItemRadio';
3
+ export type {
4
+ MenuItemRadioInfo,
5
+ MenuItemRadioProps,
6
+ MenuItemRadioSlotProps,
7
+ MenuItemRadioTokens,
8
+ MenuItemRadioType,
9
+ menuItemRadioName,
10
+ } from './MenuItemRadio.types';
@@ -4,10 +4,10 @@ import type { InteractionEvent } from '@fluentui-react-native/interactive-hooks'
4
4
 
5
5
  import { useMenuContext } from '../context/menuContext';
6
6
  import { useMenuListContext } from '../context/menuListContext';
7
- import type { MenuItemCheckboxProps, MenuItemCheckboxInfo } from '../MenuItemCheckbox/MenuItemCheckbox.types';
8
7
  import { useMenuCheckboxInteraction } from '../MenuItemCheckbox/useMenuItemCheckbox';
8
+ import type { MenuItemRadioProps, MenuItemRadioInfo } from '../MenuItemRadio/MenuItemRadio.types';
9
9
 
10
- export const useMenuItemRadio = (props: MenuItemCheckboxProps): MenuItemCheckboxInfo => {
10
+ export const useMenuItemRadio = (props: MenuItemRadioProps): MenuItemRadioInfo => {
11
11
  const { disabled, name, persistOnClick } = props;
12
12
  const context = useMenuContext();
13
13
  const listContext = useMenuListContext();