@fluentui-react-native/menu 1.4.34 → 1.6.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 (300) hide show
  1. package/CHANGELOG.json +37 -1
  2. package/CHANGELOG.md +19 -2
  3. package/SPEC.md +254 -39
  4. package/assets/Menu_android.png +0 -0
  5. package/assets/checkbox_android.png +0 -0
  6. package/lib/Menu/Menu.d.ts.map +1 -1
  7. package/lib/Menu/Menu.js +2 -6
  8. package/lib/Menu/Menu.js.map +1 -1
  9. package/lib/Menu/Menu.types.d.ts +21 -1
  10. package/lib/Menu/Menu.types.d.ts.map +1 -1
  11. package/lib/Menu/Menu.types.js +6 -0
  12. package/lib/Menu/Menu.types.js.map +1 -1
  13. package/lib/Menu/renderMenu.android.d.ts +5 -0
  14. package/lib/Menu/renderMenu.android.d.ts.map +1 -0
  15. package/lib/Menu/renderMenu.android.js +14 -0
  16. package/lib/Menu/renderMenu.android.js.map +1 -0
  17. package/lib/Menu/renderMenu.d.ts +5 -0
  18. package/lib/Menu/renderMenu.d.ts.map +1 -0
  19. package/lib/Menu/renderMenu.js +10 -0
  20. package/lib/Menu/renderMenu.js.map +1 -0
  21. package/lib/Menu/useMenu.android.d.ts +3 -0
  22. package/lib/Menu/useMenu.android.d.ts.map +1 -0
  23. package/lib/Menu/useMenu.android.js +257 -0
  24. package/lib/Menu/useMenu.android.js.map +1 -0
  25. package/lib/MenuCallout/MenuCallout.android.d.ts +4 -0
  26. package/lib/MenuCallout/MenuCallout.android.d.ts.map +1 -0
  27. package/lib/MenuCallout/MenuCallout.android.js +33 -0
  28. package/lib/MenuCallout/MenuCallout.android.js.map +1 -0
  29. package/lib/MenuCallout/MenuCallout.d.ts +4 -0
  30. package/lib/MenuCallout/MenuCallout.d.ts.map +1 -0
  31. package/lib/MenuCallout/MenuCallout.js +15 -0
  32. package/lib/MenuCallout/MenuCallout.js.map +1 -0
  33. package/lib/MenuCallout/MenuCallout.types.d.ts +18 -0
  34. package/lib/MenuCallout/MenuCallout.types.d.ts.map +1 -0
  35. package/lib/MenuCallout/MenuCallout.types.js +2 -0
  36. package/lib/MenuCallout/MenuCallout.types.js.map +1 -0
  37. package/lib/MenuCallout/index.d.ts +4 -0
  38. package/lib/MenuCallout/index.d.ts.map +1 -0
  39. package/lib/MenuCallout/index.js +3 -0
  40. package/lib/MenuCallout/index.js.map +1 -0
  41. package/lib/MenuDivider/MenuDivider.d.ts +2 -1
  42. package/lib/MenuDivider/MenuDivider.d.ts.map +1 -1
  43. package/lib/MenuDivider/MenuDivider.styling.d.ts.map +1 -1
  44. package/lib/MenuDivider/MenuDivider.styling.js +4 -8
  45. package/lib/MenuDivider/MenuDivider.styling.js.map +1 -1
  46. package/lib/MenuDivider/MenuDivider.types.d.ts +6 -1
  47. package/lib/MenuDivider/MenuDivider.types.d.ts.map +1 -1
  48. package/lib/MenuDivider/MenuDivider.types.js +1 -0
  49. package/lib/MenuDivider/MenuDivider.types.js.map +1 -1
  50. package/lib/MenuDivider/MenuDividerTokens.android.d.ts +5 -0
  51. package/lib/MenuDivider/MenuDividerTokens.android.d.ts.map +1 -0
  52. package/lib/MenuDivider/MenuDividerTokens.android.js +7 -0
  53. package/lib/MenuDivider/MenuDividerTokens.android.js.map +1 -0
  54. package/lib/MenuDivider/index.d.ts +1 -1
  55. package/lib/MenuDivider/index.d.ts.map +1 -1
  56. package/lib/MenuItem/MenuItem.styling.d.ts.map +1 -1
  57. package/lib/MenuItem/MenuItem.styling.js +2 -1
  58. package/lib/MenuItem/MenuItem.styling.js.map +1 -1
  59. package/lib/MenuItem/MenuItem.types.d.ts +5 -0
  60. package/lib/MenuItem/MenuItem.types.d.ts.map +1 -1
  61. package/lib/MenuItem/MenuItemTokens.android.d.ts +5 -0
  62. package/lib/MenuItem/MenuItemTokens.android.d.ts.map +1 -0
  63. package/lib/MenuItem/MenuItemTokens.android.js +20 -0
  64. package/lib/MenuItem/MenuItemTokens.android.js.map +1 -0
  65. package/lib/MenuItem/useMenuItem.d.ts.map +1 -1
  66. package/lib/MenuItem/useMenuItem.js.map +1 -1
  67. package/lib/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  68. package/lib/MenuItemCheckbox/MenuItemCheckbox.js +5 -10
  69. package/lib/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  70. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  71. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js +25 -20
  72. package/lib/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  73. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +40 -0
  74. package/lib/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  75. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts +5 -0
  76. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts.map +1 -0
  77. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.js +41 -0
  78. package/lib/MenuItemCheckbox/MenuItemCheckboxTokens.android.js.map +1 -0
  79. package/lib/MenuItemRadio/MenuItemRadio.d.ts +6 -3
  80. package/lib/MenuItemRadio/MenuItemRadio.d.ts.map +1 -1
  81. package/lib/MenuItemRadio/MenuItemRadio.js +37 -9
  82. package/lib/MenuItemRadio/MenuItemRadio.js.map +1 -1
  83. package/lib/MenuItemRadio/MenuItemRadio.styling.android.d.ts +6 -0
  84. package/lib/MenuItemRadio/MenuItemRadio.styling.android.d.ts.map +1 -0
  85. package/lib/MenuItemRadio/MenuItemRadio.styling.android.js +57 -0
  86. package/lib/MenuItemRadio/MenuItemRadio.styling.android.js.map +1 -0
  87. package/lib/MenuItemRadio/MenuItemRadio.styling.d.ts +5 -0
  88. package/lib/MenuItemRadio/MenuItemRadio.styling.d.ts.map +1 -0
  89. package/lib/MenuItemRadio/MenuItemRadio.styling.js +37 -0
  90. package/lib/MenuItemRadio/MenuItemRadio.styling.js.map +1 -0
  91. package/lib/MenuItemRadio/MenuItemRadio.types.d.ts +137 -0
  92. package/lib/MenuItemRadio/MenuItemRadio.types.d.ts.map +1 -0
  93. package/lib/MenuItemRadio/MenuItemRadio.types.js +2 -0
  94. package/lib/MenuItemRadio/MenuItemRadio.types.js.map +1 -0
  95. package/lib/MenuItemRadio/MenuItemRadioTokens.android.d.ts +5 -0
  96. package/lib/MenuItemRadio/MenuItemRadioTokens.android.d.ts.map +1 -0
  97. package/lib/MenuItemRadio/MenuItemRadioTokens.android.js +44 -0
  98. package/lib/MenuItemRadio/MenuItemRadioTokens.android.js.map +1 -0
  99. package/lib/MenuItemRadio/MenuItemRadioTokens.d.ts +5 -0
  100. package/lib/MenuItemRadio/MenuItemRadioTokens.d.ts.map +1 -0
  101. package/lib/MenuItemRadio/MenuItemRadioTokens.js +52 -0
  102. package/lib/MenuItemRadio/MenuItemRadioTokens.js.map +1 -0
  103. package/lib/MenuItemRadio/index.d.ts +2 -1
  104. package/lib/MenuItemRadio/index.d.ts.map +1 -1
  105. package/lib/MenuItemRadio/index.js +1 -1
  106. package/lib/MenuItemRadio/index.js.map +1 -1
  107. package/lib/MenuItemRadio/useMenuItemRadio.d.ts +2 -2
  108. package/lib/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  109. package/lib/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  110. package/lib/MenuList/MenuList.styling.d.ts.map +1 -1
  111. package/lib/MenuList/MenuList.styling.js +2 -1
  112. package/lib/MenuList/MenuList.styling.js.map +1 -1
  113. package/lib/MenuList/MenuList.types.d.ts +6 -0
  114. package/lib/MenuList/MenuList.types.d.ts.map +1 -1
  115. package/lib/MenuList/MenuListTokens.android.d.ts +5 -0
  116. package/lib/MenuList/MenuListTokens.android.d.ts.map +1 -0
  117. package/lib/MenuList/MenuListTokens.android.js +7 -0
  118. package/lib/MenuList/MenuListTokens.android.js.map +1 -0
  119. package/lib/MenuPopover/MenuPopover.d.ts +4 -2
  120. package/lib/MenuPopover/MenuPopover.d.ts.map +1 -1
  121. package/lib/MenuPopover/MenuPopover.js +2 -2
  122. package/lib/MenuPopover/MenuPopover.js.map +1 -1
  123. package/lib/MenuPopover/MenuPopover.types.d.ts +12 -1
  124. package/lib/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  125. package/lib/MenuPopover/MenuPopoverTokens.android.d.ts +5 -0
  126. package/lib/MenuPopover/MenuPopoverTokens.android.d.ts.map +1 -0
  127. package/lib/MenuPopover/MenuPopoverTokens.android.js +14 -0
  128. package/lib/MenuPopover/MenuPopoverTokens.android.js.map +1 -0
  129. package/lib/MenuPopover/MenuPopoverTokens.d.ts +4 -2
  130. package/lib/MenuPopover/MenuPopoverTokens.d.ts.map +1 -1
  131. package/lib/index.d.ts +1 -1
  132. package/lib/index.d.ts.map +1 -1
  133. package/lib/index.js +1 -1
  134. package/lib/index.js.map +1 -1
  135. package/lib-commonjs/Menu/Menu.d.ts.map +1 -1
  136. package/lib-commonjs/Menu/Menu.js +2 -6
  137. package/lib-commonjs/Menu/Menu.js.map +1 -1
  138. package/lib-commonjs/Menu/Menu.types.d.ts +21 -1
  139. package/lib-commonjs/Menu/Menu.types.d.ts.map +1 -1
  140. package/lib-commonjs/Menu/Menu.types.js +7 -1
  141. package/lib-commonjs/Menu/Menu.types.js.map +1 -1
  142. package/lib-commonjs/Menu/renderMenu.android.d.ts +5 -0
  143. package/lib-commonjs/Menu/renderMenu.android.d.ts.map +1 -0
  144. package/lib-commonjs/Menu/renderMenu.android.js +19 -0
  145. package/lib-commonjs/Menu/renderMenu.android.js.map +1 -0
  146. package/lib-commonjs/Menu/renderMenu.d.ts +5 -0
  147. package/lib-commonjs/Menu/renderMenu.d.ts.map +1 -0
  148. package/lib-commonjs/Menu/renderMenu.js +15 -0
  149. package/lib-commonjs/Menu/renderMenu.js.map +1 -0
  150. package/lib-commonjs/Menu/useMenu.android.d.ts +3 -0
  151. package/lib-commonjs/Menu/useMenu.android.d.ts.map +1 -0
  152. package/lib-commonjs/Menu/useMenu.android.js +261 -0
  153. package/lib-commonjs/Menu/useMenu.android.js.map +1 -0
  154. package/lib-commonjs/MenuCallout/MenuCallout.android.d.ts +4 -0
  155. package/lib-commonjs/MenuCallout/MenuCallout.android.d.ts.map +1 -0
  156. package/lib-commonjs/MenuCallout/MenuCallout.android.js +36 -0
  157. package/lib-commonjs/MenuCallout/MenuCallout.android.js.map +1 -0
  158. package/lib-commonjs/MenuCallout/MenuCallout.d.ts +4 -0
  159. package/lib-commonjs/MenuCallout/MenuCallout.d.ts.map +1 -0
  160. package/lib-commonjs/MenuCallout/MenuCallout.js +18 -0
  161. package/lib-commonjs/MenuCallout/MenuCallout.js.map +1 -0
  162. package/lib-commonjs/MenuCallout/MenuCallout.types.d.ts +18 -0
  163. package/lib-commonjs/MenuCallout/MenuCallout.types.d.ts.map +1 -0
  164. package/lib-commonjs/MenuCallout/MenuCallout.types.js +5 -0
  165. package/lib-commonjs/MenuCallout/MenuCallout.types.js.map +1 -0
  166. package/lib-commonjs/MenuCallout/index.d.ts +4 -0
  167. package/lib-commonjs/MenuCallout/index.d.ts.map +1 -0
  168. package/lib-commonjs/MenuCallout/index.js +8 -0
  169. package/lib-commonjs/MenuCallout/index.js.map +1 -0
  170. package/lib-commonjs/MenuDivider/MenuDivider.d.ts +2 -1
  171. package/lib-commonjs/MenuDivider/MenuDivider.d.ts.map +1 -1
  172. package/lib-commonjs/MenuDivider/MenuDivider.styling.d.ts.map +1 -1
  173. package/lib-commonjs/MenuDivider/MenuDivider.styling.js +4 -8
  174. package/lib-commonjs/MenuDivider/MenuDivider.styling.js.map +1 -1
  175. package/lib-commonjs/MenuDivider/MenuDivider.types.d.ts +6 -1
  176. package/lib-commonjs/MenuDivider/MenuDivider.types.d.ts.map +1 -1
  177. package/lib-commonjs/MenuDivider/MenuDivider.types.js +2 -1
  178. package/lib-commonjs/MenuDivider/MenuDivider.types.js.map +1 -1
  179. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.d.ts +5 -0
  180. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.d.ts.map +1 -0
  181. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.js +11 -0
  182. package/lib-commonjs/MenuDivider/MenuDividerTokens.android.js.map +1 -0
  183. package/lib-commonjs/MenuDivider/index.d.ts +1 -1
  184. package/lib-commonjs/MenuDivider/index.d.ts.map +1 -1
  185. package/lib-commonjs/MenuItem/MenuItem.styling.d.ts.map +1 -1
  186. package/lib-commonjs/MenuItem/MenuItem.styling.js +2 -1
  187. package/lib-commonjs/MenuItem/MenuItem.styling.js.map +1 -1
  188. package/lib-commonjs/MenuItem/MenuItem.types.d.ts +5 -0
  189. package/lib-commonjs/MenuItem/MenuItem.types.d.ts.map +1 -1
  190. package/lib-commonjs/MenuItem/MenuItemTokens.android.d.ts +5 -0
  191. package/lib-commonjs/MenuItem/MenuItemTokens.android.d.ts.map +1 -0
  192. package/lib-commonjs/MenuItem/MenuItemTokens.android.js +24 -0
  193. package/lib-commonjs/MenuItem/MenuItemTokens.android.js.map +1 -0
  194. package/lib-commonjs/MenuItem/useMenuItem.d.ts.map +1 -1
  195. package/lib-commonjs/MenuItem/useMenuItem.js.map +1 -1
  196. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.d.ts.map +1 -1
  197. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js +4 -9
  198. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.js.map +1 -1
  199. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.d.ts.map +1 -1
  200. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js +25 -20
  201. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.styling.js.map +1 -1
  202. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts +40 -0
  203. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckbox.types.d.ts.map +1 -1
  204. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts +5 -0
  205. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.d.ts.map +1 -0
  206. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.js +45 -0
  207. package/lib-commonjs/MenuItemCheckbox/MenuItemCheckboxTokens.android.js.map +1 -0
  208. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts +6 -3
  209. package/lib-commonjs/MenuItemRadio/MenuItemRadio.d.ts.map +1 -1
  210. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js +39 -10
  211. package/lib-commonjs/MenuItemRadio/MenuItemRadio.js.map +1 -1
  212. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.d.ts +6 -0
  213. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.d.ts.map +1 -0
  214. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.js +60 -0
  215. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.android.js.map +1 -0
  216. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.d.ts +5 -0
  217. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.d.ts.map +1 -0
  218. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.js +40 -0
  219. package/lib-commonjs/MenuItemRadio/MenuItemRadio.styling.js.map +1 -0
  220. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.d.ts +137 -0
  221. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.d.ts.map +1 -0
  222. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.js +5 -0
  223. package/lib-commonjs/MenuItemRadio/MenuItemRadio.types.js.map +1 -0
  224. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.d.ts +5 -0
  225. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.d.ts.map +1 -0
  226. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.js +48 -0
  227. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.android.js.map +1 -0
  228. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.d.ts +5 -0
  229. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.d.ts.map +1 -0
  230. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.js +56 -0
  231. package/lib-commonjs/MenuItemRadio/MenuItemRadioTokens.js.map +1 -0
  232. package/lib-commonjs/MenuItemRadio/index.d.ts +2 -1
  233. package/lib-commonjs/MenuItemRadio/index.d.ts.map +1 -1
  234. package/lib-commonjs/MenuItemRadio/index.js +1 -2
  235. package/lib-commonjs/MenuItemRadio/index.js.map +1 -1
  236. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts +2 -2
  237. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.d.ts.map +1 -1
  238. package/lib-commonjs/MenuItemRadio/useMenuItemRadio.js.map +1 -1
  239. package/lib-commonjs/MenuList/MenuList.styling.d.ts.map +1 -1
  240. package/lib-commonjs/MenuList/MenuList.styling.js +2 -1
  241. package/lib-commonjs/MenuList/MenuList.styling.js.map +1 -1
  242. package/lib-commonjs/MenuList/MenuList.types.d.ts +6 -0
  243. package/lib-commonjs/MenuList/MenuList.types.d.ts.map +1 -1
  244. package/lib-commonjs/MenuList/MenuListTokens.android.d.ts +5 -0
  245. package/lib-commonjs/MenuList/MenuListTokens.android.d.ts.map +1 -0
  246. package/lib-commonjs/MenuList/MenuListTokens.android.js +11 -0
  247. package/lib-commonjs/MenuList/MenuListTokens.android.js.map +1 -0
  248. package/lib-commonjs/MenuPopover/MenuPopover.d.ts +4 -2
  249. package/lib-commonjs/MenuPopover/MenuPopover.d.ts.map +1 -1
  250. package/lib-commonjs/MenuPopover/MenuPopover.js +2 -2
  251. package/lib-commonjs/MenuPopover/MenuPopover.js.map +1 -1
  252. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts +12 -1
  253. package/lib-commonjs/MenuPopover/MenuPopover.types.d.ts.map +1 -1
  254. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.d.ts +5 -0
  255. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.d.ts.map +1 -0
  256. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.js +17 -0
  257. package/lib-commonjs/MenuPopover/MenuPopoverTokens.android.js.map +1 -0
  258. package/lib-commonjs/MenuPopover/MenuPopoverTokens.d.ts +4 -2
  259. package/lib-commonjs/MenuPopover/MenuPopoverTokens.d.ts.map +1 -1
  260. package/lib-commonjs/index.d.ts +1 -1
  261. package/lib-commonjs/index.d.ts.map +1 -1
  262. package/lib-commonjs/index.js +1 -2
  263. package/lib-commonjs/index.js.map +1 -1
  264. package/package.json +2 -2
  265. package/src/Menu/Menu.tsx +3 -13
  266. package/src/Menu/Menu.types.ts +24 -1
  267. package/src/Menu/renderMenu.android.tsx +26 -0
  268. package/src/Menu/renderMenu.tsx +18 -0
  269. package/src/Menu/useMenu.android.ts +325 -0
  270. package/src/MenuCallout/MenuCallout.android.tsx +60 -0
  271. package/src/MenuCallout/MenuCallout.tsx +20 -0
  272. package/src/MenuCallout/MenuCallout.types.ts +22 -0
  273. package/src/MenuCallout/index.ts +3 -0
  274. package/src/MenuDivider/MenuDivider.styling.ts +4 -0
  275. package/src/MenuDivider/MenuDivider.types.ts +7 -1
  276. package/src/MenuDivider/MenuDividerTokens.android.ts +11 -0
  277. package/src/MenuDivider/index.ts +1 -1
  278. package/src/MenuItem/MenuItem.styling.ts +3 -1
  279. package/src/MenuItem/MenuItem.types.ts +6 -0
  280. package/src/MenuItem/MenuItemTokens.android.ts +24 -0
  281. package/src/MenuItem/useMenuItem.ts +0 -1
  282. package/src/MenuItemCheckbox/MenuItemCheckbox.styling.ts +29 -2
  283. package/src/MenuItemCheckbox/MenuItemCheckbox.tsx +15 -2
  284. package/src/MenuItemCheckbox/MenuItemCheckbox.types.ts +47 -0
  285. package/src/MenuItemCheckbox/MenuItemCheckboxTokens.android.ts +46 -0
  286. package/src/MenuItemRadio/MenuItemRadio.styling.android.ts +98 -0
  287. package/src/MenuItemRadio/MenuItemRadio.styling.ts +75 -0
  288. package/src/MenuItemRadio/MenuItemRadio.tsx +68 -9
  289. package/src/MenuItemRadio/MenuItemRadio.types.ts +160 -0
  290. package/src/MenuItemRadio/MenuItemRadioTokens.android.ts +51 -0
  291. package/src/MenuItemRadio/MenuItemRadioTokens.ts +56 -0
  292. package/src/MenuItemRadio/index.ts +9 -1
  293. package/src/MenuItemRadio/useMenuItemRadio.ts +2 -2
  294. package/src/MenuList/MenuList.styling.ts +3 -0
  295. package/src/MenuList/MenuList.types.ts +7 -0
  296. package/src/MenuList/MenuListTokens.android.ts +11 -0
  297. package/src/MenuPopover/MenuPopover.tsx +6 -2
  298. package/src/MenuPopover/MenuPopover.types.ts +14 -1
  299. package/src/MenuPopover/MenuPopoverTokens.android.ts +21 -0
  300. package/src/index.ts +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/Menu/Menu.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAE1B,8DAAmE;AAGnE,2CAAwC;AACxC,qCAAoC;AACpC,6DAA4D;AAC5D,sDAAsD;AAEzC,QAAA,IAAI,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAgB;IACnD,IAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAC;IAC7B,IAAM,YAAY,GAAG,IAAA,yCAAmB,EAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,UAAC,KAAgB,EAAE,QAAyB;QACjD,IAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;aAChD;SACF;QAED,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QACrC,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAErC,OAAO,CACL,8BAAC,0BAAY,IAAC,KAAK,EAAE,YAAY;YAC9B,WAAW;YAGX,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,IAAI,WAAW,CAC3D,CAChB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AACH,YAAI,CAAC,WAAW,GAAG,qBAAQ,CAAC;AAE5B,kBAAe,YAAI,CAAC"}
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/Menu/Menu.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAE1B,8DAAmE;AAGnE,2CAAwC;AACxC,2CAA+C;AAC/C,qCAAoC;AACpC,6DAA4D;AAE/C,QAAA,IAAI,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAgB;IACnD,IAAM,KAAK,GAAG,IAAA,iBAAO,EAAC,KAAK,CAAC,CAAC;IAC7B,IAAM,YAAY,GAAG,IAAA,yCAAmB,EAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,UAAC,KAAgB,EAAE,QAAyB;QACjD,IAAM,aAAa,GAAG,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAyB,CAAC;QAE/E,IAAI,OAAO,EAAE;YACX,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;aAChD;SACF;QACD,OAAO,IAAA,4BAAe,EAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,YAAI,CAAC,WAAW,GAAG,qBAAQ,CAAC;AAE5B,kBAAe,YAAI,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import type React from 'react';
3
- import type { View } from 'react-native';
3
+ import type { Animated, LayoutChangeEvent, View } from 'react-native';
4
4
  import type { InteractionEvent } from '@fluentui-react-native/interactive-hooks';
5
5
  import type { MenuListProps } from '../MenuList/MenuList.types';
6
6
  export declare const menuName = "Menu";
@@ -11,6 +11,7 @@ export interface MenuProps extends MenuListProps {
11
11
  defaultOpen?: boolean;
12
12
  /**
13
13
  * How much delay to have between hover in and showing the menu, in ms.
14
+ * @platform win32, macOS
14
15
  */
15
16
  hoverDelay?: number;
16
17
  /**
@@ -27,6 +28,10 @@ export interface MenuProps extends MenuListProps {
27
28
  */
28
29
  persistOnItemClick?: boolean;
29
30
  }
31
+ export type MenuSizeType = {
32
+ width: Animated.Value;
33
+ height: Animated.Value;
34
+ };
30
35
  export interface MenuState extends MenuProps {
31
36
  isControlled: boolean;
32
37
  isSubmenu: boolean;
@@ -36,5 +41,20 @@ export interface MenuState extends MenuProps {
36
41
  triggerRef: React.RefObject<View>;
37
42
  hasMaxHeight?: boolean;
38
43
  hasMaxWidth?: boolean;
44
+ setAnchorWidth?: (value: null | number | ((prevState: null | number) => null | number)) => void;
45
+ shadowMenuContainerStyle?: object;
46
+ _container?: React.MutableRefObject<View>;
47
+ onRequestClose?: (e: InteractionEvent) => void;
48
+ onMenuLayout?: (e: LayoutChangeEvent) => void;
49
+ menuHeight?: number;
50
+ maxMenuHeight?: number;
51
+ animationStarted?: boolean;
52
+ menuSize?: MenuSizeType;
53
+ testID?: string;
54
+ }
55
+ export declare enum AndroidMenuStates {
56
+ Hidden = 0,
57
+ Animating = 1,
58
+ Shown = 2
39
59
  }
40
60
  //# sourceMappingURL=Menu.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAK9D,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1E,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"Menu.types.d.ts","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAEjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,eAAO,MAAM,QAAQ,SAAS,CAAC;AAE/B,MAAM,WAAW,SAAU,SAAQ,aAAa;IAC9C;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAM9D,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC1C,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,0BAA0B,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC1E,sBAAsB,EAAE,OAAO,CAAC;IAChC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IAChG,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,UAAU,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,iBAAiB;IAC3B,MAAM,IAAA;IACN,SAAS,IAAA;IACT,KAAK,IAAA;CACN"}
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.menuName = void 0;
3
+ exports.AndroidMenuStates = exports.menuName = void 0;
4
4
  exports.menuName = 'Menu';
5
+ var AndroidMenuStates;
6
+ (function (AndroidMenuStates) {
7
+ AndroidMenuStates[AndroidMenuStates["Hidden"] = 0] = "Hidden";
8
+ AndroidMenuStates[AndroidMenuStates["Animating"] = 1] = "Animating";
9
+ AndroidMenuStates[AndroidMenuStates["Shown"] = 2] = "Shown";
10
+ })(AndroidMenuStates = exports.AndroidMenuStates || (exports.AndroidMenuStates = {}));
5
11
  //# sourceMappingURL=Menu.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";;;AAOa,QAAA,QAAQ,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"Menu.types.js","sourceRoot":"","sources":["../../src/Menu/Menu.types.ts"],"names":[],"mappings":";;;AAOa,QAAA,QAAQ,GAAG,MAAM,CAAC;AA8D/B,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,6DAAM,CAAA;IACN,mEAAS,CAAA;IACT,2DAAK,CAAA;AACP,CAAC,EAJW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAI5B"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { MenuState } from './Menu.types';
3
+ import type { MenuContextValue } from '../context';
4
+ export declare const renderFinalMenu: (childrenArray: React.ReactElement[], contextValue: MenuContextValue, state: MenuState) => JSX.Element;
5
+ //# sourceMappingURL=renderMenu.android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMenu.android.d.ts","sourceRoot":"","sources":["../../src/Menu/renderMenu.android.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,eAAO,MAAM,eAAe,kBAAmB,MAAM,YAAY,EAAE,gBAAgB,gBAAgB,SAAS,SAAS,gBAkBpH,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderFinalMenu = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var react_native_1 = require("react-native");
7
+ var context_1 = require("../context");
8
+ var renderFinalMenu = function (childrenArray, contextValue, state) {
9
+ var menuTrigger = childrenArray[0];
10
+ var menuPopover = childrenArray[1];
11
+ return (react_1.default.createElement(context_1.MenuProvider, { value: contextValue },
12
+ react_1.default.createElement(react_native_1.View, { onLayout: function (event) {
13
+ var width = event.nativeEvent.layout.width;
14
+ state.setAnchorWidth(width);
15
+ } }, menuTrigger),
16
+ react_1.default.createElement(react_native_1.View, { ref: state._container, collapsable: false, testID: state.testID }, state.open && menuPopover)));
17
+ };
18
+ exports.renderFinalMenu = renderFinalMenu;
19
+ //# sourceMappingURL=renderMenu.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMenu.android.js","sourceRoot":"","sources":["../../src/Menu/renderMenu.android.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,6CAAoC;AAIpC,sCAA0C;AAEnC,IAAM,eAAe,GAAG,UAAC,aAAmC,EAAE,YAA8B,EAAE,KAAgB;IACnH,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CACL,8BAAC,sBAAY,IAAC,KAAK,EAAE,YAAY;QAC/B,8BAAC,mBAAI,IACH,QAAQ,EAAE,UAAC,KAAK;gBACN,IAAA,KAAK,GAAK,KAAK,CAAC,WAAW,CAAC,MAAM,MAA7B,CAA8B;gBAC3C,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,IAEA,WAAW,CACP;QACP,8BAAC,mBAAI,IAAC,GAAG,EAAE,KAAK,CAAC,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAClE,KAAK,CAAC,IAAI,IAAI,WAAW,CACrB,CACM,CAChB,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,eAAe,mBAkB1B"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import type { MenuState } from './Menu.types';
3
+ import type { MenuContextValue } from '../context';
4
+ export declare const renderFinalMenu: (childrenArray: React.ReactElement[], contextValue: MenuContextValue, state: MenuState) => JSX.Element;
5
+ //# sourceMappingURL=renderMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMenu.d.ts","sourceRoot":"","sources":["../../src/Menu/renderMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,eAAO,MAAM,eAAe,kBAAmB,MAAM,YAAY,EAAE,gBAAgB,gBAAgB,SAAS,SAAS,gBAWpH,CAAC"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.renderFinalMenu = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var context_1 = require("../context");
7
+ var renderFinalMenu = function (childrenArray, contextValue, state) {
8
+ var menuTrigger = childrenArray[0];
9
+ var menuPopover = childrenArray[1];
10
+ return (react_1.default.createElement(context_1.MenuProvider, { value: contextValue },
11
+ menuTrigger,
12
+ state.open && state.shouldFocusOnContainer !== undefined && menuPopover));
13
+ };
14
+ exports.renderFinalMenu = renderFinalMenu;
15
+ //# sourceMappingURL=renderMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMenu.js","sourceRoot":"","sources":["../../src/Menu/renderMenu.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAI1B,sCAA0C;AAEnC,IAAM,eAAe,GAAG,UAAC,aAAmC,EAAE,YAA8B,EAAE,KAAgB;IACnH,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,IAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,CACL,8BAAC,sBAAY,IAAC,KAAK,EAAE,YAAY;QAC9B,WAAW;QAGX,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,sBAAsB,KAAK,SAAS,IAAI,WAAW,CAC3D,CAChB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B"}
@@ -0,0 +1,3 @@
1
+ import type { MenuProps, MenuState } from './Menu.types';
2
+ export declare const useMenu: (props: MenuProps) => MenuState;
3
+ //# sourceMappingURL=useMenu.android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenu.android.d.ts","sourceRoot":"","sources":["../../src/Menu/useMenu.android.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAsBzD,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,SAoO1C,CAAC"}
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMenu = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importStar(require("react"));
6
+ var react_native_1 = require("react-native");
7
+ var Menu_types_1 = require("./Menu.types");
8
+ var menuContext_1 = require("../context/menuContext");
9
+ // Due to how events get fired we get double notifications
10
+ // for the same event causing us to immediately reopen
11
+ // a menu when we close it. Adding in a delay to prevent
12
+ // this behavior.
13
+ // This are use when show() function is called to show the Menu
14
+ var delayOpen = 150;
15
+ var lastCloseTimestamp = -1;
16
+ /**
17
+ * Values related to Screen Width and Animation Easing
18
+ */
19
+ // Animated easing value for Menu transitions(close and open)
20
+ var EASING = react_native_1.Easing.bezier(0.4, 0, 0.2, 1);
21
+ // Screen indent is the fixed value according to Android guidelines which depicts the minimum distance from screen edge Menu should have
22
+ var SCREEN_INDENT = 16;
23
+ var useMenu = function (props) {
24
+ /**
25
+ * State , Ref and Context Values for Menu Container and Anchor
26
+ */
27
+ var triggerRef = react_1.default.useRef();
28
+ var context = (0, menuContext_1.useMenuContext)();
29
+ var isSubmenu = context.triggerRef !== null;
30
+ var isOpenControlled = typeof props.open !== 'undefined';
31
+ var _container = (0, react_1.useRef)(null);
32
+ var _a = react_1.default.useState(Menu_types_1.AndroidMenuStates.Hidden), menuState = _a[0], setMenuState = _a[1];
33
+ /**
34
+ * Call for useMenuCheckedState for identifying if any MenuItemCheckbox is checked or not
35
+ */
36
+ var _b = useMenuCheckedState(props), checked = _b[0], onCheckedChange = _b[1];
37
+ /**
38
+ * State Variables related to Height,Width and Position of the Menu Popover
39
+ */
40
+ var maxMenuHeight = (0, react_1.useState)(250)[0];
41
+ var _c = react_1.default.useState(0), anchorWidth = _c[0], setAnchorWidth = _c[1];
42
+ var _d = react_1.default.useState(0), left = _d[0], setLeft = _d[1];
43
+ var _e = react_1.default.useState(0), menuHeight = _e[0], setMenuHeight = _e[1];
44
+ var _f = react_1.default.useState(0), menuWidth = _f[0], setMenuWidth = _f[1];
45
+ var _g = react_1.default.useState(0), top = _g[0], setTop = _g[1];
46
+ /**
47
+ * Animation value for the Menu popover show,hide and opacity values
48
+ */
49
+ var _h = react_1.default.useState(new react_native_1.Animated.ValueXY({ x: 0, y: 0 })), menuSizeAnimation = _h[0], setMenuSizeAnimation = _h[1];
50
+ var _j = react_1.default.useState(new react_native_1.Animated.Value(0)), opacityAnimation = _j[0], setOpacityAnimation = _j[1];
51
+ /**
52
+ * RTL for the MenuItem needs to taken care as well.
53
+ */
54
+ var isRTL = react_native_1.I18nManager.isRTL;
55
+ /**
56
+ * Calcualations related to Menu Popver position and dimensions
57
+ */
58
+ var dimensions = react_native_1.Dimensions.get('screen');
59
+ var windowWidth = dimensions.width;
60
+ var windowHeight = dimensions.height - (react_native_1.StatusBar.currentHeight || 0);
61
+ var menuSize = {
62
+ width: menuSizeAnimation.x,
63
+ height: menuSizeAnimation.y,
64
+ };
65
+ /**
66
+ * show function handles the opening of the Menu , it calcuates the position of the Anchor in the screen.
67
+ * It also sets the Anchor width and change the state of the Popover
68
+ */ /**
69
+ * show function handles the opening of the Menu , it calcuates the position of the Anchor in the screen.
70
+ * It also sets the Anchor width and change the state of the Popover
71
+ */
72
+ var show = react_1.default.useCallback(function () {
73
+ var _a;
74
+ (_a = _container.current) === null || _a === void 0 ? void 0 : _a.measureInWindow(function (left, top, buttonWidth, buttonHeight) {
75
+ setAnchorWidth(buttonWidth);
76
+ setLeft(left);
77
+ setMenuState(Menu_types_1.AndroidMenuStates.Shown);
78
+ setTop(top + buttonHeight);
79
+ });
80
+ }, []);
81
+ /**
82
+ * hide function handles the hiding of the Menu when user clicks on the scrim outside Menu or MenuItems such as (MenuItemRadio, MenuItem)
83
+ */
84
+ var hide = react_1.default.useCallback(function () {
85
+ react_native_1.Animated.timing(opacityAnimation, {
86
+ toValue: 0,
87
+ duration: 250,
88
+ easing: EASING,
89
+ useNativeDriver: false,
90
+ }).start(function () {
91
+ // Reset state
92
+ setMenuState(Menu_types_1.AndroidMenuStates.Hidden);
93
+ setMenuSizeAnimation(new react_native_1.Animated.ValueXY({ x: 0, y: 0 }));
94
+ setOpacityAnimation(new react_native_1.Animated.Value(0));
95
+ });
96
+ }, [opacityAnimation]);
97
+ // Hook to maintain the state of the Menu for non controlled and controlled components.
98
+ var _k = useMenuOpenState(isOpenControlled, props, context.setOpen, hide, show), open = _k[0], shouldFocusOnContainer = _k[1], setOpen = _k[2];
99
+ /**
100
+ * Checks the value of the open props and show the menu accordingly
101
+ */
102
+ (0, react_1.useEffect)(function () {
103
+ if (props.open) {
104
+ show();
105
+ }
106
+ }, [props.open]);
107
+ /**
108
+ * onMenuLayout handles the start of the Animation when anchor is clicked
109
+ */
110
+ var onMenuLayout = react_1.default.useCallback(function (e) {
111
+ if (menuState === Menu_types_1.AndroidMenuStates.Animating) {
112
+ return;
113
+ }
114
+ var _a = e.nativeEvent.layout, width = _a.width, height = _a.height;
115
+ setMenuHeight(height);
116
+ setMenuWidth(width);
117
+ setMenuState(Menu_types_1.AndroidMenuStates.Animating);
118
+ react_native_1.Animated.parallel([
119
+ react_native_1.Animated.timing(menuSizeAnimation, {
120
+ toValue: { x: width, y: height },
121
+ duration: 100,
122
+ easing: EASING,
123
+ useNativeDriver: false,
124
+ }),
125
+ react_native_1.Animated.timing(opacityAnimation, {
126
+ toValue: 1,
127
+ duration: 100,
128
+ easing: EASING,
129
+ useNativeDriver: false,
130
+ }),
131
+ ]).start();
132
+ }, [menuSizeAnimation, menuState, opacityAnimation]);
133
+ /**
134
+ * onRequestClose handles the closing of the Menu when the MenuItem or scrim or outside is clicked
135
+ */
136
+ var onRequestClose = function (e) {
137
+ setOpen(e, false, false);
138
+ };
139
+ // Adjust position of menu
140
+ var transforms = [];
141
+ (0, react_1.useMemo)(function () {
142
+ /**
143
+ * If the Menu width and SCREEN_INDENT cross the screen width then the Menu will be adjusted to the oppostion left side of the screen
144
+ */
145
+ if ((isRTL && left + anchorWidth - menuWidth > SCREEN_INDENT) || (!isRTL && left + menuWidth > windowWidth - SCREEN_INDENT)) {
146
+ transforms.push({
147
+ translateX: react_native_1.Animated.multiply(menuSizeAnimation.x, -1),
148
+ });
149
+ }
150
+ else if (left < SCREEN_INDENT) {
151
+ // Setting the left podition of the Menu if the left positon is less than screen indent
152
+ setLeft(SCREEN_INDENT);
153
+ }
154
+ // Flip by Y axis if menu hits bottom screen border
155
+ if (top + menuHeight + SCREEN_INDENT > windowHeight) {
156
+ if (menuHeight > maxMenuHeight) {
157
+ transforms.push({
158
+ translateY: react_native_1.Animated.multiply(menuSizeAnimation.y, -1),
159
+ });
160
+ }
161
+ else {
162
+ transforms.push({
163
+ translateY: react_native_1.Animated.multiply(menuSizeAnimation.y, -1),
164
+ });
165
+ }
166
+ }
167
+ else if (top < SCREEN_INDENT) {
168
+ setTop(SCREEN_INDENT);
169
+ }
170
+ }, [
171
+ anchorWidth,
172
+ isRTL,
173
+ left,
174
+ maxMenuHeight,
175
+ menuHeight,
176
+ menuSizeAnimation.x,
177
+ menuSizeAnimation.y,
178
+ menuWidth,
179
+ top,
180
+ transforms,
181
+ windowHeight,
182
+ windowWidth,
183
+ ]);
184
+ /**
185
+ * Styles to be applied on the Modal Popover Animated.View
186
+ */
187
+ var shadowMenuContainerStyle = (0, react_1.useMemo)(function () {
188
+ return tslib_1.__assign({ opacity: opacityAnimation, transform: transforms, top: top }, (isRTL ? { right: left } : { left: left }));
189
+ }, [isRTL, left, opacityAnimation, top, transforms]);
190
+ /**
191
+ * handles the state when menu is opening or closing with Animation
192
+ */
193
+ var animationStarted = menuState === Menu_types_1.AndroidMenuStates.Animating;
194
+ var testID = props.testID;
195
+ // Default behavior for submenu is to open on hover
196
+ // the ...props line below will override this behavior for a submenu
197
+ // or apply openOnHover if passed into a root Menu.
198
+ var openOnHover = isSubmenu;
199
+ // We need to be able to cancel the timer that gets set on
200
+ // hover out of the parent popover if the parent popover
201
+ // is also set to open/close on hover out. Otherwise
202
+ // the parent menu will close when the timeout passes.
203
+ var parentPopoverHoverOutTimer = isSubmenu ? context.popoverHoverOutTimer : undefined;
204
+ return tslib_1.__assign(tslib_1.__assign({ openOnHover: openOnHover }, props), { open: open, setOpen: setOpen, shouldFocusOnContainer: shouldFocusOnContainer, triggerRef: triggerRef, isSubmenu: isSubmenu, isControlled: isOpenControlled, parentPopoverHoverOutTimer: parentPopoverHoverOutTimer, setAnchorWidth: setAnchorWidth, shadowMenuContainerStyle: shadowMenuContainerStyle, _container: _container, onRequestClose: onRequestClose, onMenuLayout: onMenuLayout, checked: checked, onCheckedChange: onCheckedChange, menuHeight: menuHeight, maxMenuHeight: maxMenuHeight, animationStarted: animationStarted, menuSize: menuSize, testID: testID });
205
+ };
206
+ exports.useMenu = useMenu;
207
+ /**
208
+ * useMenuOpenState handles the open and closing of the Menu based on the click
209
+ * It also takes care of Controlled Menu component by checking open variable
210
+ *
211
+ */
212
+ var useMenuOpenState = function (isControlled, props, parentSetOpen, hide, show) {
213
+ var defaultOpen = props.defaultOpen, onOpenChange = props.onOpenChange, open = props.open;
214
+ var initialState = typeof defaultOpen !== 'undefined' ? defaultOpen : !!open;
215
+ var _a = react_1.default.useState(initialState), openInternal = _a[0], setOpenInternal = _a[1];
216
+ var _b = react_1.default.useState(undefined), shouldFocusOnContainer = _b[0], setShouldFocusOnContainer = _b[1];
217
+ var state = isControlled ? open : openInternal;
218
+ /**
219
+ * setOpen handles the open of the Menu and setting focus on the Popover container
220
+ */
221
+ var setOpen = react_1.default.useCallback(function (e, isOpen, bubble) {
222
+ var openPrev = state;
223
+ if (!isControlled && (!isOpen || lastCloseTimestamp + delayOpen <= Date.now())) {
224
+ setOpenInternal(isOpen);
225
+ }
226
+ if (isOpen) {
227
+ show();
228
+ setShouldFocusOnContainer(true);
229
+ }
230
+ if (!isOpen) {
231
+ setShouldFocusOnContainer(undefined);
232
+ lastCloseTimestamp = Date.now();
233
+ hide();
234
+ }
235
+ if (onOpenChange && openPrev !== isOpen) {
236
+ onOpenChange(e, isOpen);
237
+ }
238
+ if (bubble && parentSetOpen && !isControlled) {
239
+ parentSetOpen(e, isOpen, bubble);
240
+ }
241
+ }, [state, onOpenChange, parentSetOpen, show, hide]);
242
+ return [state, shouldFocusOnContainer, setOpen];
243
+ };
244
+ /**
245
+ * Call for useMenuCheckedState for identifying if any MenuItemCheckbox is checked or not
246
+ */
247
+ var useMenuCheckedState = function (props) {
248
+ var _a;
249
+ var checked = props.checked, defaultChecked = props.defaultChecked, onCheckedChangeOriginal = props.onCheckedChange;
250
+ var _b = react_1.default.useState((_a = defaultChecked !== null && defaultChecked !== void 0 ? defaultChecked : checked) !== null && _a !== void 0 ? _a : []), checkedInternal = _b[0], setCheckedInternal = _b[1];
251
+ var isControlled = typeof checked !== 'undefined';
252
+ var state = isControlled ? checked : checkedInternal;
253
+ var onCheckedChange = react_1.default.useCallback(function (e, checked) {
254
+ if (!isControlled) {
255
+ setCheckedInternal(checked);
256
+ }
257
+ onCheckedChangeOriginal === null || onCheckedChangeOriginal === void 0 ? void 0 : onCheckedChangeOriginal(e, checked);
258
+ }, [isControlled, setCheckedInternal, onCheckedChangeOriginal]);
259
+ return [state, onCheckedChange];
260
+ };
261
+ //# sourceMappingURL=useMenu.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMenu.android.js","sourceRoot":"","sources":["../../src/Menu/useMenu.android.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { MenuCalloutProps } from './MenuCallout.types';
2
+ export declare const MenuCallout: import("@fluentui-react-native/framework").ComposableFunction<MenuCalloutProps>;
3
+ export default MenuCallout;
4
+ //# sourceMappingURL=MenuCallout.android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.android.d.ts","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.android.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAM5D,eAAO,MAAM,WAAW,iFA2CtB,CAAC;AAIH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MenuCallout = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var react_native_1 = require("react-native");
7
+ var framework_1 = require("@fluentui-react-native/framework");
8
+ var framework_2 = require("@fluentui-react-native/framework");
9
+ var MenuCallout_types_1 = require("./MenuCallout.types");
10
+ var context_1 = require("../context");
11
+ var AnimatedScrollView = react_native_1.Animated.createAnimatedComponent(react_native_1.ScrollView);
12
+ exports.MenuCallout = (0, framework_1.stagedComponent)(function (props) {
13
+ var context = (0, context_1.useMenuContext)();
14
+ return function (_rest, children) {
15
+ var mergedProps = (0, framework_2.mergeProps)(props, _rest);
16
+ var tokens = props.tokens;
17
+ return (react_1.default.createElement(react_native_1.Modal, tslib_1.__assign({}, mergedProps, { visible: context.open, onRequestClose: context.onRequestClose, supportedOrientations: ['portrait', 'portrait-upside-down', 'landscape', 'landscape-left', 'landscape-right'], transparent: true }),
18
+ react_1.default.createElement(react_native_1.TouchableWithoutFeedback, { onPress: context.onRequestClose, accessible: false },
19
+ react_1.default.createElement(react_native_1.View, { style: [react_native_1.StyleSheet.absoluteFill] },
20
+ react_1.default.createElement(react_native_1.Animated.View, { onLayout: context.onMenuLayout, style: [
21
+ context.shadowMenuContainerStyle,
22
+ {
23
+ maxHeight: mergedProps.maxHeight ? mergedProps.maxHeight : tokens.maxHeight,
24
+ maxWidth: tokens.maxWidth,
25
+ position: 'absolute',
26
+ borderRadius: tokens.cornerRadius,
27
+ elevation: tokens.elevation,
28
+ overflow: 'hidden',
29
+ },
30
+ ] }, context.menuHeight + tokens.minPadding >= tokens.maxHeight ||
31
+ context.menuHeight + tokens.minPadding >= mergedProps.maxHeight ? (react_1.default.createElement(AnimatedScrollView, { style: [context.animationStarted && context.menuSize] }, children)) : (react_1.default.createElement(react_native_1.Animated.View, { style: [context.animationStarted && context.menuSize] }, children)))))));
32
+ };
33
+ });
34
+ exports.MenuCallout.displayName = MenuCallout_types_1.menuCalloutName;
35
+ exports.default = exports.MenuCallout;
36
+ //# sourceMappingURL=MenuCallout.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.android.js","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.android.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAC1B,6CAAuG;AAEvG,8DAAmE;AACnE,8DAA8D;AAG9D,yDAAsD;AACtD,sCAA4C;AAE5C,IAAM,kBAAkB,GAAG,uBAAQ,CAAC,uBAAuB,CAAC,yBAAU,CAAC,CAAC;AAE3D,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,IAAM,OAAO,GAAG,IAAA,wBAAc,GAAE,CAAC;IAEjC,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,IAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAE5B,OAAO,CACL,8BAAC,oBAAK,uBACA,WAAW,IACf,OAAO,EAAE,OAAO,CAAC,IAAI,EACrB,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,qBAAqB,EAAE,CAAC,UAAU,EAAE,sBAAsB,EAAE,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,EAC7G,WAAW;YAEX,8BAAC,uCAAwB,IAAC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,UAAU,EAAE,KAAK;gBAC1E,8BAAC,mBAAI,IAAC,KAAK,EAAE,CAAC,yBAAU,CAAC,YAAY,CAAC;oBACpC,8BAAC,uBAAQ,CAAC,IAAI,IACZ,QAAQ,EAAE,OAAO,CAAC,YAAY,EAC9B,KAAK,EAAE;4BACL,OAAO,CAAC,wBAAwB;4BAChC;gCACE,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS;gCAC3E,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,QAAQ,EAAE,UAAU;gCACpB,YAAY,EAAE,MAAM,CAAC,YAAY;gCACjC,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,QAAQ,EAAE,QAAQ;6BACnB;yBACF,IAEA,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS;wBAC3D,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAChE,8BAAC,kBAAkB,IAAC,KAAK,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAG,QAAQ,CAAsB,CAC3G,CAAC,CAAC,CAAC,CACF,8BAAC,uBAAQ,CAAC,IAAI,IAAC,KAAK,EAAE,CAAC,OAAO,CAAC,gBAAgB,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAG,QAAQ,CAAiB,CACjG,CACa,CACX,CACkB,CACrB,CACT,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MenuCalloutProps } from './MenuCallout.types';
2
+ export declare const MenuCallout: import("@fluentui-react-native/framework").ComposableFunction<MenuCalloutProps>;
3
+ export default MenuCallout;
4
+ //# sourceMappingURL=MenuCallout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.d.ts","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,WAAW,iFAMtB,CAAC;AAIH,eAAe,WAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MenuCallout = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_1 = tslib_1.__importDefault(require("react"));
6
+ var callout_1 = require("@fluentui-react-native/callout");
7
+ var framework_1 = require("@fluentui-react-native/framework");
8
+ var framework_2 = require("@fluentui-react-native/framework");
9
+ var MenuCallout_types_1 = require("./MenuCallout.types");
10
+ exports.MenuCallout = (0, framework_1.stagedComponent)(function (props) {
11
+ return function (_rest, children) {
12
+ var mergedProps = (0, framework_2.mergeProps)(props, _rest);
13
+ return react_1.default.createElement(callout_1.Callout, tslib_1.__assign({}, mergedProps), children);
14
+ };
15
+ });
16
+ exports.MenuCallout.displayName = MenuCallout_types_1.menuCalloutName;
17
+ exports.default = exports.MenuCallout;
18
+ //# sourceMappingURL=MenuCallout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.js","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.tsx"],"names":[],"mappings":";;;;AAAA,wDAA0B;AAE1B,0DAAyD;AACzD,8DAAmE;AACnE,8DAA8D;AAG9D,yDAAsD;AAEzC,QAAA,WAAW,GAAG,IAAA,2BAAe,EAAC,UAAC,KAAuB;IACjE,OAAO,UAAC,KAAuB,EAAE,QAAyB;QACxD,IAAM,WAAW,GAAG,IAAA,sBAAU,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE7C,OAAO,8BAAC,iBAAO,uBAAK,WAAW,GAAG,QAAQ,CAAW,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,mBAAW,CAAC,WAAW,GAAG,mCAAe,CAAC;AAE1C,kBAAe,mBAAW,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ICalloutProps, ICalloutTokens } from '@fluentui-react-native/callout';
2
+ export declare const menuCalloutName = "MenuCallout";
3
+ export type MenuCalloutTokens = Omit<ICalloutTokens, 'anchorRect' | 'beakWidth' | 'dismissBehaviors'> & {
4
+ /**
5
+ * The token for the corner radius for the Modal MenuPopover
6
+ * @platform android
7
+ */
8
+ cornerRadius?: number;
9
+ /**
10
+ * Shadown elevation token for the Modal MenuPopover
11
+ * @platform android
12
+ */
13
+ elevation?: number;
14
+ };
15
+ export type MenuCalloutProps = ICalloutProps & {
16
+ tokens: MenuCalloutTokens;
17
+ };
18
+ //# sourceMappingURL=MenuCallout.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.types.d.ts","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEpF,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAI7C,MAAM,MAAM,iBAAiB,GACzB,IAAI,CAAC,cAAc,EAAE,YAAY,GAAG,WAAW,GAAG,kBAAkB,CAAC,GAAG;IACtE;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAAE,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.menuCalloutName = void 0;
4
+ exports.menuCalloutName = 'MenuCallout';
5
+ //# sourceMappingURL=MenuCallout.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MenuCallout.types.js","sourceRoot":"","sources":["../../src/MenuCallout/MenuCallout.types.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAG,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { MenuCallout } from './MenuCallout';
2
+ export { menuCalloutName } from './MenuCallout.types';
3
+ export type { MenuCalloutProps, MenuCalloutTokens } from './MenuCallout.types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/MenuCallout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.menuCalloutName = exports.MenuCallout = void 0;
4
+ var MenuCallout_1 = require("./MenuCallout");
5
+ Object.defineProperty(exports, "MenuCallout", { enumerable: true, get: function () { return MenuCallout_1.MenuCallout; } });
6
+ var MenuCallout_types_1 = require("./MenuCallout.types");
7
+ Object.defineProperty(exports, "menuCalloutName", { enumerable: true, get: function () { return MenuCallout_types_1.menuCalloutName; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/MenuCallout/index.ts"],"names":[],"mappings":";;;AAAA,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,yDAAsD;AAA7C,oHAAA,eAAe,OAAA"}
@@ -1,2 +1,3 @@
1
- export declare const MenuDivider: import("@fluentui-react-native/framework").ComposableComponent<import("@fluentui-react-native/adapters").IViewProps, import("./MenuDivider.types").MenuDividerSlotProps, import("./MenuDivider.types").MenuDividerTokens, object>;
1
+ import type { MenuDividerProps } from './MenuDivider.types';
2
+ export declare const MenuDivider: import("@fluentui-react-native/framework").ComposableComponent<MenuDividerProps, import("./MenuDivider.types").MenuDividerSlotProps, import("./MenuDivider.types").MenuDividerTokens, object>;
2
3
  //# sourceMappingURL=MenuDivider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuDivider.d.ts","sourceRoot":"","sources":["../../src/MenuDivider/MenuDivider.tsx"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW,mOAatB,CAAC"}
1
+ {"version":3,"file":"MenuDivider.d.ts","sourceRoot":"","sources":["../../src/MenuDivider/MenuDivider.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AAG7E,eAAO,MAAM,WAAW,+LAatB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MenuDivider.styling.d.ts","sourceRoot":"","sources":["../../src/MenuDivider/MenuDivider.styling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIrG,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,CAiBxG,CAAC"}
1
+ {"version":3,"file":"MenuDivider.styling.d.ts","sourceRoot":"","sources":["../../src/MenuDivider/MenuDivider.styling.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIrG,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,iBAAiB,CAmBxG,CAAC"}
@@ -1,21 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.stylingSettings = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var react_native_1 = require("react-native");
4
6
  var framework_1 = require("@fluentui-react-native/framework");
5
7
  var MenuDivider_types_1 = require("./MenuDivider.types");
6
8
  var MenuDividerTokens_1 = require("./MenuDividerTokens");
7
9
  exports.stylingSettings = {
8
10
  tokens: [MenuDividerTokens_1.defaultMenuDividerTokens, MenuDivider_types_1.menuDividerName],
11
+ tokensThatAreAlsoProps: ['insetSize'],
9
12
  slotProps: {
10
13
  root: (0, framework_1.buildProps)(function (tokens) { return ({
11
- style: {
12
- height: tokens.height,
13
- width: tokens.width,
14
- backgroundColor: tokens.backgroundColor,
15
- margin: tokens.margin,
16
- marginVertical: tokens.marginVertical,
17
- display: 'flex',
18
- },
14
+ style: tslib_1.__assign({ height: tokens.height, width: tokens.width, backgroundColor: tokens.backgroundColor, margin: tokens.margin, marginVertical: tokens.marginVertical, display: 'flex' }, (react_native_1.Platform.OS === 'android' && { marginStart: tokens.insetSize })),
19
15
  }); }, ['backgroundColor', 'height', 'margin', 'marginVertical', 'width']),
20
16
  },
21
17
  };