@react-spectrum/menu 3.0.0-alpha.1 → 3.0.0-nightly-4980928d3-240906

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 (250) hide show
  1. package/README.md +1 -1
  2. package/dist/ActionMenu.main.js +70 -0
  3. package/dist/ActionMenu.main.js.map +1 -0
  4. package/dist/ActionMenu.mjs +65 -0
  5. package/dist/ActionMenu.module.js +65 -0
  6. package/dist/ActionMenu.module.js.map +1 -0
  7. package/dist/ContextualHelpTrigger.main.js +190 -0
  8. package/dist/ContextualHelpTrigger.main.js.map +1 -0
  9. package/dist/ContextualHelpTrigger.mjs +185 -0
  10. package/dist/ContextualHelpTrigger.module.js +185 -0
  11. package/dist/ContextualHelpTrigger.module.js.map +1 -0
  12. package/dist/Menu.main.js +241 -0
  13. package/dist/Menu.main.js.map +1 -0
  14. package/dist/Menu.mjs +235 -0
  15. package/dist/Menu.module.js +235 -0
  16. package/dist/Menu.module.js.map +1 -0
  17. package/dist/MenuItem.main.js +148 -0
  18. package/dist/MenuItem.main.js.map +1 -0
  19. package/dist/MenuItem.mjs +143 -0
  20. package/dist/MenuItem.module.js +143 -0
  21. package/dist/MenuItem.module.js.map +1 -0
  22. package/dist/MenuSection.main.js +80 -0
  23. package/dist/MenuSection.main.js.map +1 -0
  24. package/dist/MenuSection.mjs +75 -0
  25. package/dist/MenuSection.module.js +75 -0
  26. package/dist/MenuSection.module.js.map +1 -0
  27. package/dist/MenuTrigger.main.js +119 -0
  28. package/dist/MenuTrigger.main.js.map +1 -0
  29. package/dist/MenuTrigger.mjs +114 -0
  30. package/dist/MenuTrigger.module.js +114 -0
  31. package/dist/MenuTrigger.module.js.map +1 -0
  32. package/dist/SubmenuTrigger.main.js +152 -0
  33. package/dist/SubmenuTrigger.main.js.map +1 -0
  34. package/dist/SubmenuTrigger.mjs +147 -0
  35. package/dist/SubmenuTrigger.module.js +147 -0
  36. package/dist/SubmenuTrigger.module.js.map +1 -0
  37. package/dist/ar-AE.main.js +8 -0
  38. package/dist/ar-AE.main.js.map +1 -0
  39. package/dist/ar-AE.mjs +10 -0
  40. package/dist/ar-AE.module.js +10 -0
  41. package/dist/ar-AE.module.js.map +1 -0
  42. package/dist/bg-BG.main.js +8 -0
  43. package/dist/bg-BG.main.js.map +1 -0
  44. package/dist/bg-BG.mjs +10 -0
  45. package/dist/bg-BG.module.js +10 -0
  46. package/dist/bg-BG.module.js.map +1 -0
  47. package/dist/context.main.js +43 -0
  48. package/dist/context.main.js.map +1 -0
  49. package/dist/context.mjs +29 -0
  50. package/dist/context.module.js +29 -0
  51. package/dist/context.module.js.map +1 -0
  52. package/dist/contextualhelp_vars_css.main.js +23 -0
  53. package/dist/contextualhelp_vars_css.main.js.map +1 -0
  54. package/dist/contextualhelp_vars_css.mjs +25 -0
  55. package/dist/contextualhelp_vars_css.module.js +25 -0
  56. package/dist/contextualhelp_vars_css.module.js.map +1 -0
  57. package/dist/cs-CZ.main.js +8 -0
  58. package/dist/cs-CZ.main.js.map +1 -0
  59. package/dist/cs-CZ.mjs +10 -0
  60. package/dist/cs-CZ.module.js +10 -0
  61. package/dist/cs-CZ.module.js.map +1 -0
  62. package/dist/da-DK.main.js +8 -0
  63. package/dist/da-DK.main.js.map +1 -0
  64. package/dist/da-DK.mjs +10 -0
  65. package/dist/da-DK.module.js +10 -0
  66. package/dist/da-DK.module.js.map +1 -0
  67. package/dist/de-DE.main.js +8 -0
  68. package/dist/de-DE.main.js.map +1 -0
  69. package/dist/de-DE.mjs +10 -0
  70. package/dist/de-DE.module.js +10 -0
  71. package/dist/de-DE.module.js.map +1 -0
  72. package/dist/el-GR.main.js +8 -0
  73. package/dist/el-GR.main.js.map +1 -0
  74. package/dist/el-GR.mjs +10 -0
  75. package/dist/el-GR.module.js +10 -0
  76. package/dist/el-GR.module.js.map +1 -0
  77. package/dist/en-US.main.js +8 -0
  78. package/dist/en-US.main.js.map +1 -0
  79. package/dist/en-US.mjs +10 -0
  80. package/dist/en-US.module.js +10 -0
  81. package/dist/en-US.module.js.map +1 -0
  82. package/dist/es-ES.main.js +8 -0
  83. package/dist/es-ES.main.js.map +1 -0
  84. package/dist/es-ES.mjs +10 -0
  85. package/dist/es-ES.module.js +10 -0
  86. package/dist/es-ES.module.js.map +1 -0
  87. package/dist/et-EE.main.js +8 -0
  88. package/dist/et-EE.main.js.map +1 -0
  89. package/dist/et-EE.mjs +10 -0
  90. package/dist/et-EE.module.js +10 -0
  91. package/dist/et-EE.module.js.map +1 -0
  92. package/dist/fi-FI.main.js +8 -0
  93. package/dist/fi-FI.main.js.map +1 -0
  94. package/dist/fi-FI.mjs +10 -0
  95. package/dist/fi-FI.module.js +10 -0
  96. package/dist/fi-FI.module.js.map +1 -0
  97. package/dist/fr-FR.main.js +8 -0
  98. package/dist/fr-FR.main.js.map +1 -0
  99. package/dist/fr-FR.mjs +10 -0
  100. package/dist/fr-FR.module.js +10 -0
  101. package/dist/fr-FR.module.js.map +1 -0
  102. package/dist/he-IL.main.js +8 -0
  103. package/dist/he-IL.main.js.map +1 -0
  104. package/dist/he-IL.mjs +10 -0
  105. package/dist/he-IL.module.js +10 -0
  106. package/dist/he-IL.module.js.map +1 -0
  107. package/dist/hr-HR.main.js +8 -0
  108. package/dist/hr-HR.main.js.map +1 -0
  109. package/dist/hr-HR.mjs +10 -0
  110. package/dist/hr-HR.module.js +10 -0
  111. package/dist/hr-HR.module.js.map +1 -0
  112. package/dist/hu-HU.main.js +8 -0
  113. package/dist/hu-HU.main.js.map +1 -0
  114. package/dist/hu-HU.mjs +10 -0
  115. package/dist/hu-HU.module.js +10 -0
  116. package/dist/hu-HU.module.js.map +1 -0
  117. package/dist/import.mjs +28 -0
  118. package/dist/intlStrings.main.js +108 -0
  119. package/dist/intlStrings.main.js.map +1 -0
  120. package/dist/intlStrings.mjs +110 -0
  121. package/dist/intlStrings.module.js +110 -0
  122. package/dist/intlStrings.module.js.map +1 -0
  123. package/dist/it-IT.main.js +8 -0
  124. package/dist/it-IT.main.js.map +1 -0
  125. package/dist/it-IT.mjs +10 -0
  126. package/dist/it-IT.module.js +10 -0
  127. package/dist/it-IT.module.js.map +1 -0
  128. package/dist/ja-JP.main.js +8 -0
  129. package/dist/ja-JP.main.js.map +1 -0
  130. package/dist/ja-JP.mjs +10 -0
  131. package/dist/ja-JP.module.js +10 -0
  132. package/dist/ja-JP.module.js.map +1 -0
  133. package/dist/ko-KR.main.js +8 -0
  134. package/dist/ko-KR.main.js.map +1 -0
  135. package/dist/ko-KR.mjs +10 -0
  136. package/dist/ko-KR.module.js +10 -0
  137. package/dist/ko-KR.module.js.map +1 -0
  138. package/dist/lt-LT.main.js +8 -0
  139. package/dist/lt-LT.main.js.map +1 -0
  140. package/dist/lt-LT.mjs +10 -0
  141. package/dist/lt-LT.module.js +10 -0
  142. package/dist/lt-LT.module.js.map +1 -0
  143. package/dist/lv-LV.main.js +8 -0
  144. package/dist/lv-LV.main.js.map +1 -0
  145. package/dist/lv-LV.mjs +10 -0
  146. package/dist/lv-LV.module.js +10 -0
  147. package/dist/lv-LV.module.js.map +1 -0
  148. package/dist/main.js +27 -364
  149. package/dist/main.js.map +1 -0
  150. package/dist/menu_vars_css.main.js +177 -0
  151. package/dist/menu_vars_css.main.js.map +1 -0
  152. package/dist/menu_vars_css.mjs +179 -0
  153. package/dist/menu_vars_css.module.js +179 -0
  154. package/dist/menu_vars_css.module.js.map +1 -0
  155. package/dist/module.js +19 -304
  156. package/dist/module.js.map +1 -0
  157. package/dist/nb-NO.main.js +8 -0
  158. package/dist/nb-NO.main.js.map +1 -0
  159. package/dist/nb-NO.mjs +10 -0
  160. package/dist/nb-NO.module.js +10 -0
  161. package/dist/nb-NO.module.js.map +1 -0
  162. package/dist/nl-NL.main.js +8 -0
  163. package/dist/nl-NL.main.js.map +1 -0
  164. package/dist/nl-NL.mjs +10 -0
  165. package/dist/nl-NL.module.js +10 -0
  166. package/dist/nl-NL.module.js.map +1 -0
  167. package/dist/pl-PL.main.js +8 -0
  168. package/dist/pl-PL.main.js.map +1 -0
  169. package/dist/pl-PL.mjs +10 -0
  170. package/dist/pl-PL.module.js +10 -0
  171. package/dist/pl-PL.module.js.map +1 -0
  172. package/dist/pt-BR.main.js +8 -0
  173. package/dist/pt-BR.main.js.map +1 -0
  174. package/dist/pt-BR.mjs +10 -0
  175. package/dist/pt-BR.module.js +10 -0
  176. package/dist/pt-BR.module.js.map +1 -0
  177. package/dist/pt-PT.main.js +8 -0
  178. package/dist/pt-PT.main.js.map +1 -0
  179. package/dist/pt-PT.mjs +10 -0
  180. package/dist/pt-PT.module.js +10 -0
  181. package/dist/pt-PT.module.js.map +1 -0
  182. package/dist/ro-RO.main.js +8 -0
  183. package/dist/ro-RO.main.js.map +1 -0
  184. package/dist/ro-RO.mjs +10 -0
  185. package/dist/ro-RO.module.js +10 -0
  186. package/dist/ro-RO.module.js.map +1 -0
  187. package/dist/ru-RU.main.js +8 -0
  188. package/dist/ru-RU.main.js.map +1 -0
  189. package/dist/ru-RU.mjs +10 -0
  190. package/dist/ru-RU.module.js +10 -0
  191. package/dist/ru-RU.module.js.map +1 -0
  192. package/dist/sk-SK.main.js +8 -0
  193. package/dist/sk-SK.main.js.map +1 -0
  194. package/dist/sk-SK.mjs +10 -0
  195. package/dist/sk-SK.module.js +10 -0
  196. package/dist/sk-SK.module.js.map +1 -0
  197. package/dist/sl-SI.main.js +8 -0
  198. package/dist/sl-SI.main.js.map +1 -0
  199. package/dist/sl-SI.mjs +10 -0
  200. package/dist/sl-SI.module.js +10 -0
  201. package/dist/sl-SI.module.js.map +1 -0
  202. package/dist/sr-SP.main.js +8 -0
  203. package/dist/sr-SP.main.js.map +1 -0
  204. package/dist/sr-SP.mjs +10 -0
  205. package/dist/sr-SP.module.js +10 -0
  206. package/dist/sr-SP.module.js.map +1 -0
  207. package/dist/sv-SE.main.js +8 -0
  208. package/dist/sv-SE.main.js.map +1 -0
  209. package/dist/sv-SE.mjs +10 -0
  210. package/dist/sv-SE.module.js +10 -0
  211. package/dist/sv-SE.module.js.map +1 -0
  212. package/dist/tr-TR.main.js +8 -0
  213. package/dist/tr-TR.main.js.map +1 -0
  214. package/dist/tr-TR.mjs +10 -0
  215. package/dist/tr-TR.module.js +10 -0
  216. package/dist/tr-TR.module.js.map +1 -0
  217. package/dist/types.d.ts +39 -4
  218. package/dist/types.d.ts.map +1 -1
  219. package/dist/uk-UA.main.js +8 -0
  220. package/dist/uk-UA.main.js.map +1 -0
  221. package/dist/uk-UA.mjs +10 -0
  222. package/dist/uk-UA.module.js +10 -0
  223. package/dist/uk-UA.module.js.map +1 -0
  224. package/dist/vars.89a944d6.css +568 -0
  225. package/dist/vars.89a944d6.css.map +1 -0
  226. package/dist/vars.c9740d19.css +30 -0
  227. package/dist/vars.c9740d19.css.map +1 -0
  228. package/dist/zh-CN.main.js +8 -0
  229. package/dist/zh-CN.main.js.map +1 -0
  230. package/dist/zh-CN.mjs +10 -0
  231. package/dist/zh-CN.module.js +10 -0
  232. package/dist/zh-CN.module.js.map +1 -0
  233. package/dist/zh-TW.main.js +8 -0
  234. package/dist/zh-TW.main.js.map +1 -0
  235. package/dist/zh-TW.mjs +10 -0
  236. package/dist/zh-TW.module.js +10 -0
  237. package/dist/zh-TW.module.js.map +1 -0
  238. package/package.json +40 -31
  239. package/src/ActionMenu.tsx +61 -0
  240. package/src/ContextualHelpTrigger.tsx +193 -0
  241. package/src/Menu.tsx +221 -0
  242. package/src/MenuItem.tsx +155 -0
  243. package/src/MenuSection.tsx +99 -0
  244. package/src/MenuTrigger.tsx +115 -0
  245. package/src/SubmenuTrigger.tsx +154 -0
  246. package/src/context.ts +63 -0
  247. package/src/index.ts +23 -0
  248. package/src/overlays.css +32 -0
  249. package/LICENSE +0 -201
  250. package/dist/main.css +0 -295
@@ -0,0 +1,119 @@
1
+ var $cac834c4bc0a51d3$exports = require("./context.main.js");
2
+ require("./vars.89a944d6.css");
3
+ var $3deee0fd2b46e64f$exports = require("./menu_vars_css.main.js");
4
+ var $6doGq$reactspectrumutils = require("@react-spectrum/utils");
5
+ var $6doGq$reactspectrumoverlays = require("@react-spectrum/overlays");
6
+ var $6doGq$reactariainteractions = require("@react-aria/interactions");
7
+ var $6doGq$react = require("react");
8
+ var $6doGq$reactariamenu = require("@react-aria/menu");
9
+ var $6doGq$reactstatelymenu = require("@react-stately/menu");
10
+
11
+
12
+ function $parcel$interopDefault(a) {
13
+ return a && a.__esModule ? a.default : a;
14
+ }
15
+
16
+ function $parcel$export(e, n, v, s) {
17
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
18
+ }
19
+
20
+ $parcel$export(module.exports, "MenuTrigger", () => $e56311f7204399c7$export$27d2ad3c5815583e);
21
+ /*
22
+ * Copyright 2020 Adobe. All rights reserved.
23
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
24
+ * you may not use this file except in compliance with the License. You may obtain a copy
25
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
26
+ *
27
+ * Unless required by applicable law or agreed to in writing, software distributed under
28
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
29
+ * OF ANY KIND, either express or implied. See the License for the specific language
30
+ * governing permissions and limitations under the License.
31
+ */
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ function $e56311f7204399c7$var$MenuTrigger(props, ref) {
40
+ let triggerRef = (0, $6doGq$react.useRef)(undefined);
41
+ let domRef = (0, $6doGq$reactspectrumutils.useDOMRef)(ref);
42
+ let menuTriggerRef = domRef || triggerRef;
43
+ let menuRef = (0, $6doGq$react.useRef)(undefined);
44
+ let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
45
+ let [menuTrigger, menu] = (0, ($parcel$interopDefault($6doGq$react))).Children.toArray(children);
46
+ let state = (0, $6doGq$reactstatelymenu.useMenuTriggerState)(props);
47
+ let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $6doGq$reactariamenu.useMenuTrigger)({
48
+ trigger: trigger
49
+ }, state, menuTriggerRef);
50
+ let initialPlacement;
51
+ switch(direction){
52
+ case 'left':
53
+ case 'right':
54
+ case 'start':
55
+ case 'end':
56
+ initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
57
+ break;
58
+ case 'bottom':
59
+ case 'top':
60
+ default:
61
+ initialPlacement = `${direction} ${align}`;
62
+ }
63
+ let isMobile = (0, $6doGq$reactspectrumutils.useIsMobileDevice)();
64
+ let menuContext = {
65
+ ...menuProps,
66
+ ref: menuRef,
67
+ onClose: state.close,
68
+ closeOnSelect: closeOnSelect,
69
+ autoFocus: state.focusStrategy || true,
70
+ UNSAFE_style: isMobile ? {
71
+ width: '100%',
72
+ maxHeight: 'inherit'
73
+ } : undefined,
74
+ UNSAFE_className: (0, $6doGq$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), {
75
+ 'spectrum-Menu-popover': !isMobile
76
+ }),
77
+ state: state
78
+ };
79
+ // On small screen devices, the menu is rendered in a tray, otherwise a popover.
80
+ let overlay;
81
+ if (isMobile) overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumoverlays.Tray), {
82
+ state: state,
83
+ isFixedHeight: true
84
+ }, menu);
85
+ else overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumoverlays.Popover), {
86
+ UNSAFE_style: {
87
+ clipPath: 'unset',
88
+ overflow: 'visible',
89
+ filter: 'unset',
90
+ borderWidth: '0px'
91
+ },
92
+ state: state,
93
+ triggerRef: menuTriggerRef,
94
+ scrollRef: menuRef,
95
+ placement: initialPlacement,
96
+ hideArrow: true,
97
+ shouldFlip: shouldFlip
98
+ }, menu);
99
+ return /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$react.Fragment), null, /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactspectrumutils.SlotProvider), {
100
+ slots: {
101
+ actionButton: {
102
+ holdAffordance: trigger === 'longPress'
103
+ }
104
+ }
105
+ }, /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $6doGq$reactariainteractions.PressResponder), {
106
+ ...menuTriggerProps,
107
+ ref: menuTriggerRef,
108
+ isPressed: state.isOpen
109
+ }, menuTrigger)), /*#__PURE__*/ (0, ($parcel$interopDefault($6doGq$react))).createElement((0, $cac834c4bc0a51d3$exports.MenuContext).Provider, {
110
+ value: menuContext
111
+ }, overlay));
112
+ }
113
+ /**
114
+ * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
115
+ * linking the Menu's open state with the trigger's press state.
116
+ */ let $e56311f7204399c7$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $6doGq$react.forwardRef)($e56311f7204399c7$var$MenuTrigger);
117
+
118
+
119
+ //# sourceMappingURL=MenuTrigger.main.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;AAcD,SAAS,kCAAY,KAA+B,EAAE,GAAwB;IAC5E,IAAI,aAAa,CAAA,GAAA,mBAAK,EAAe;IACrC,IAAI,SAAS,CAAA,GAAA,mCAAQ,EAAE;IACvB,IAAI,iBAAiB,UAAU;IAC/B,IAAI,UAAU,CAAA,GAAA,mBAAK,EAAkB;IACrC,IAAI,YACF,QAAQ,SACR,QAAQ,qBACR,aAAa,iBACb,YAAY,yBACZ,aAAa,WACb,UAAU,SACX,GAAG;IAEJ,IAAI,CAAC,aAAa,KAAK,GAAG,CAAA,GAAA,sCAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACjD,IAAI,QAAQ,CAAA,GAAA,2CAAkB,EAAE;IAEhC,IAAI,oBAAC,gBAAgB,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,mCAAa,EAAE;iBAAC;IAAO,GAAG,OAAO;IAErE,IAAI;IACJ,OAAQ;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,QAAQ,WAAW,MAAM,CAAC;YACvE;QACF,KAAK;QACL,KAAK;QACL;YACE,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9C;IAEA,IAAI,WAAW,CAAA,GAAA,2CAAgB;IAC/B,IAAI,cAAc;QAChB,GAAG,SAAS;QACZ,KAAK;QACL,SAAS,MAAM,KAAK;uBACpB;QACA,WAAW,MAAM,aAAa,IAAI;QAClC,cAAc,WAAW;YACvB,OAAO;YACP,WAAW;QACb,IAAI;QACJ,kBAAkB,CAAA,GAAA,oCAAS,EAAE,CAAA,GAAA,mDAAK,GAAG;YAAC,yBAAyB,CAAC;QAAQ;eACxE;IACF;IAEA,gFAAgF;IAChF,IAAI;IACJ,IAAI,UACF,wBACE,0DAAC,CAAA,GAAA,iCAAG;QAAE,OAAO;QAAO,eAAA;OACjB;SAIL,wBACE,0DAAC,CAAA,GAAA,oCAAM;QACL,cAAc;YAAC,UAAU;YAAS,UAAU;YAAW,QAAQ;YAAS,aAAa;QAAK;QAC1F,OAAO;QACP,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAA;QACA,YAAY;OACX;IAKP,qBACE,0DAAC,CAAA,GAAA,qBAAO,uBACN,0DAAC,CAAA,GAAA,sCAAW;QAAE,OAAO;YAAC,cAAc;gBAAC,gBAAgB,YAAY;YAAW;QAAC;qBAC3E,0DAAC,CAAA,GAAA,2CAAa;QAAG,GAAG,gBAAgB;QAAE,KAAK;QAAgB,WAAW,MAAM,MAAM;OAC/E,6BAGL,0DAAC,CAAA,GAAA,qCAAU,EAAE,QAAQ;QAAC,OAAO;OAC1B;AAIT;AAEA;;;CAGC,GACD,IAAI,0DAAe,CAAA,GAAA,uBAAS,EAAE","sources":["packages/@react-spectrum/menu/src/MenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>(undefined);\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n state\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state} isFixedHeight>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', filter: 'unset', borderWidth: '0px'}}\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n"],"names":[],"version":3,"file":"MenuTrigger.main.js.map"}
@@ -0,0 +1,114 @@
1
+ import {MenuContext as $d94604d52c3e3feb$export$c7e742effb1c51e2} from "./context.mjs";
2
+ import "./vars.89a944d6.css";
3
+ import $5R0iF$menu_vars_cssmodulejs from "./menu_vars_css.mjs";
4
+ import {useDOMRef as $5R0iF$useDOMRef, useIsMobileDevice as $5R0iF$useIsMobileDevice, classNames as $5R0iF$classNames, SlotProvider as $5R0iF$SlotProvider} from "@react-spectrum/utils";
5
+ import {Tray as $5R0iF$Tray, Popover as $5R0iF$Popover} from "@react-spectrum/overlays";
6
+ import {PressResponder as $5R0iF$PressResponder} from "@react-aria/interactions";
7
+ import $5R0iF$react, {useRef as $5R0iF$useRef, Fragment as $5R0iF$Fragment, forwardRef as $5R0iF$forwardRef} from "react";
8
+ import {useMenuTrigger as $5R0iF$useMenuTrigger} from "@react-aria/menu";
9
+ import {useMenuTriggerState as $5R0iF$useMenuTriggerState} from "@react-stately/menu";
10
+
11
+
12
+ function $parcel$interopDefault(a) {
13
+ return a && a.__esModule ? a.default : a;
14
+ }
15
+ /*
16
+ * Copyright 2020 Adobe. All rights reserved.
17
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
18
+ * you may not use this file except in compliance with the License. You may obtain a copy
19
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
20
+ *
21
+ * Unless required by applicable law or agreed to in writing, software distributed under
22
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
23
+ * OF ANY KIND, either express or implied. See the License for the specific language
24
+ * governing permissions and limitations under the License.
25
+ */
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ function $aa0b855f135b86e3$var$MenuTrigger(props, ref) {
34
+ let triggerRef = (0, $5R0iF$useRef)(undefined);
35
+ let domRef = (0, $5R0iF$useDOMRef)(ref);
36
+ let menuTriggerRef = domRef || triggerRef;
37
+ let menuRef = (0, $5R0iF$useRef)(undefined);
38
+ let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
39
+ let [menuTrigger, menu] = (0, $5R0iF$react).Children.toArray(children);
40
+ let state = (0, $5R0iF$useMenuTriggerState)(props);
41
+ let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $5R0iF$useMenuTrigger)({
42
+ trigger: trigger
43
+ }, state, menuTriggerRef);
44
+ let initialPlacement;
45
+ switch(direction){
46
+ case 'left':
47
+ case 'right':
48
+ case 'start':
49
+ case 'end':
50
+ initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
51
+ break;
52
+ case 'bottom':
53
+ case 'top':
54
+ default:
55
+ initialPlacement = `${direction} ${align}`;
56
+ }
57
+ let isMobile = (0, $5R0iF$useIsMobileDevice)();
58
+ let menuContext = {
59
+ ...menuProps,
60
+ ref: menuRef,
61
+ onClose: state.close,
62
+ closeOnSelect: closeOnSelect,
63
+ autoFocus: state.focusStrategy || true,
64
+ UNSAFE_style: isMobile ? {
65
+ width: '100%',
66
+ maxHeight: 'inherit'
67
+ } : undefined,
68
+ UNSAFE_className: (0, $5R0iF$classNames)((0, ($parcel$interopDefault($5R0iF$menu_vars_cssmodulejs))), {
69
+ 'spectrum-Menu-popover': !isMobile
70
+ }),
71
+ state: state
72
+ };
73
+ // On small screen devices, the menu is rendered in a tray, otherwise a popover.
74
+ let overlay;
75
+ if (isMobile) overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Tray), {
76
+ state: state,
77
+ isFixedHeight: true
78
+ }, menu);
79
+ else overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Popover), {
80
+ UNSAFE_style: {
81
+ clipPath: 'unset',
82
+ overflow: 'visible',
83
+ filter: 'unset',
84
+ borderWidth: '0px'
85
+ },
86
+ state: state,
87
+ triggerRef: menuTriggerRef,
88
+ scrollRef: menuRef,
89
+ placement: initialPlacement,
90
+ hideArrow: true,
91
+ shouldFlip: shouldFlip
92
+ }, menu);
93
+ return /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Fragment), null, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$SlotProvider), {
94
+ slots: {
95
+ actionButton: {
96
+ holdAffordance: trigger === 'longPress'
97
+ }
98
+ }
99
+ }, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$PressResponder), {
100
+ ...menuTriggerProps,
101
+ ref: menuTriggerRef,
102
+ isPressed: state.isOpen
103
+ }, menuTrigger)), /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $d94604d52c3e3feb$export$c7e742effb1c51e2).Provider, {
104
+ value: menuContext
105
+ }, overlay));
106
+ }
107
+ /**
108
+ * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
109
+ * linking the Menu's open state with the trigger's press state.
110
+ */ let $aa0b855f135b86e3$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $5R0iF$forwardRef)($aa0b855f135b86e3$var$MenuTrigger);
111
+
112
+
113
+ export {$aa0b855f135b86e3$export$27d2ad3c5815583e as MenuTrigger};
114
+ //# sourceMappingURL=MenuTrigger.module.js.map
@@ -0,0 +1,114 @@
1
+ import {MenuContext as $d94604d52c3e3feb$export$c7e742effb1c51e2} from "./context.module.js";
2
+ import "./vars.89a944d6.css";
3
+ import $5R0iF$menu_vars_cssmodulejs from "./menu_vars_css.module.js";
4
+ import {useDOMRef as $5R0iF$useDOMRef, useIsMobileDevice as $5R0iF$useIsMobileDevice, classNames as $5R0iF$classNames, SlotProvider as $5R0iF$SlotProvider} from "@react-spectrum/utils";
5
+ import {Tray as $5R0iF$Tray, Popover as $5R0iF$Popover} from "@react-spectrum/overlays";
6
+ import {PressResponder as $5R0iF$PressResponder} from "@react-aria/interactions";
7
+ import $5R0iF$react, {useRef as $5R0iF$useRef, Fragment as $5R0iF$Fragment, forwardRef as $5R0iF$forwardRef} from "react";
8
+ import {useMenuTrigger as $5R0iF$useMenuTrigger} from "@react-aria/menu";
9
+ import {useMenuTriggerState as $5R0iF$useMenuTriggerState} from "@react-stately/menu";
10
+
11
+
12
+ function $parcel$interopDefault(a) {
13
+ return a && a.__esModule ? a.default : a;
14
+ }
15
+ /*
16
+ * Copyright 2020 Adobe. All rights reserved.
17
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
18
+ * you may not use this file except in compliance with the License. You may obtain a copy
19
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
20
+ *
21
+ * Unless required by applicable law or agreed to in writing, software distributed under
22
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
23
+ * OF ANY KIND, either express or implied. See the License for the specific language
24
+ * governing permissions and limitations under the License.
25
+ */
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ function $aa0b855f135b86e3$var$MenuTrigger(props, ref) {
34
+ let triggerRef = (0, $5R0iF$useRef)(undefined);
35
+ let domRef = (0, $5R0iF$useDOMRef)(ref);
36
+ let menuTriggerRef = domRef || triggerRef;
37
+ let menuRef = (0, $5R0iF$useRef)(undefined);
38
+ let { children: children, align: align = 'start', shouldFlip: shouldFlip = true, direction: direction = 'bottom', closeOnSelect: closeOnSelect, trigger: trigger = 'press' } = props;
39
+ let [menuTrigger, menu] = (0, $5R0iF$react).Children.toArray(children);
40
+ let state = (0, $5R0iF$useMenuTriggerState)(props);
41
+ let { menuTriggerProps: menuTriggerProps, menuProps: menuProps } = (0, $5R0iF$useMenuTrigger)({
42
+ trigger: trigger
43
+ }, state, menuTriggerRef);
44
+ let initialPlacement;
45
+ switch(direction){
46
+ case 'left':
47
+ case 'right':
48
+ case 'start':
49
+ case 'end':
50
+ initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}`;
51
+ break;
52
+ case 'bottom':
53
+ case 'top':
54
+ default:
55
+ initialPlacement = `${direction} ${align}`;
56
+ }
57
+ let isMobile = (0, $5R0iF$useIsMobileDevice)();
58
+ let menuContext = {
59
+ ...menuProps,
60
+ ref: menuRef,
61
+ onClose: state.close,
62
+ closeOnSelect: closeOnSelect,
63
+ autoFocus: state.focusStrategy || true,
64
+ UNSAFE_style: isMobile ? {
65
+ width: '100%',
66
+ maxHeight: 'inherit'
67
+ } : undefined,
68
+ UNSAFE_className: (0, $5R0iF$classNames)((0, ($parcel$interopDefault($5R0iF$menu_vars_cssmodulejs))), {
69
+ 'spectrum-Menu-popover': !isMobile
70
+ }),
71
+ state: state
72
+ };
73
+ // On small screen devices, the menu is rendered in a tray, otherwise a popover.
74
+ let overlay;
75
+ if (isMobile) overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Tray), {
76
+ state: state,
77
+ isFixedHeight: true
78
+ }, menu);
79
+ else overlay = /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Popover), {
80
+ UNSAFE_style: {
81
+ clipPath: 'unset',
82
+ overflow: 'visible',
83
+ filter: 'unset',
84
+ borderWidth: '0px'
85
+ },
86
+ state: state,
87
+ triggerRef: menuTriggerRef,
88
+ scrollRef: menuRef,
89
+ placement: initialPlacement,
90
+ hideArrow: true,
91
+ shouldFlip: shouldFlip
92
+ }, menu);
93
+ return /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$Fragment), null, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$SlotProvider), {
94
+ slots: {
95
+ actionButton: {
96
+ holdAffordance: trigger === 'longPress'
97
+ }
98
+ }
99
+ }, /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $5R0iF$PressResponder), {
100
+ ...menuTriggerProps,
101
+ ref: menuTriggerRef,
102
+ isPressed: state.isOpen
103
+ }, menuTrigger)), /*#__PURE__*/ (0, $5R0iF$react).createElement((0, $d94604d52c3e3feb$export$c7e742effb1c51e2).Provider, {
104
+ value: menuContext
105
+ }, overlay));
106
+ }
107
+ /**
108
+ * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,
109
+ * linking the Menu's open state with the trigger's press state.
110
+ */ let $aa0b855f135b86e3$export$27d2ad3c5815583e = /*#__PURE__*/ (0, $5R0iF$forwardRef)($aa0b855f135b86e3$var$MenuTrigger);
111
+
112
+
113
+ export {$aa0b855f135b86e3$export$27d2ad3c5815583e as MenuTrigger};
114
+ //# sourceMappingURL=MenuTrigger.module.js.map
@@ -0,0 +1 @@
1
+ {"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;AAcD,SAAS,kCAAY,KAA+B,EAAE,GAAwB;IAC5E,IAAI,aAAa,CAAA,GAAA,aAAK,EAAe;IACrC,IAAI,SAAS,CAAA,GAAA,gBAAQ,EAAE;IACvB,IAAI,iBAAiB,UAAU;IAC/B,IAAI,UAAU,CAAA,GAAA,aAAK,EAAkB;IACrC,IAAI,YACF,QAAQ,SACR,QAAQ,qBACR,aAAa,iBACb,YAAY,yBACZ,aAAa,WACb,UAAU,SACX,GAAG;IAEJ,IAAI,CAAC,aAAa,KAAK,GAAG,CAAA,GAAA,YAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;IACjD,IAAI,QAAQ,CAAA,GAAA,0BAAkB,EAAE;IAEhC,IAAI,oBAAC,gBAAgB,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,qBAAa,EAAE;iBAAC;IAAO,GAAG,OAAO;IAErE,IAAI;IACJ,OAAQ;QACN,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;YACH,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,QAAQ,WAAW,MAAM,CAAC;YACvE;QACF,KAAK;QACL,KAAK;QACL;YACE,mBAAmB,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAC9C;IAEA,IAAI,WAAW,CAAA,GAAA,wBAAgB;IAC/B,IAAI,cAAc;QAChB,GAAG,SAAS;QACZ,KAAK;QACL,SAAS,MAAM,KAAK;uBACpB;QACA,WAAW,MAAM,aAAa,IAAI;QAClC,cAAc,WAAW;YACvB,OAAO;YACP,WAAW;QACb,IAAI;QACJ,kBAAkB,CAAA,GAAA,iBAAS,EAAE,CAAA,GAAA,sDAAK,GAAG;YAAC,yBAAyB,CAAC;QAAQ;eACxE;IACF;IAEA,gFAAgF;IAChF,IAAI;IACJ,IAAI,UACF,wBACE,gCAAC,CAAA,GAAA,WAAG;QAAE,OAAO;QAAO,eAAA;OACjB;SAIL,wBACE,gCAAC,CAAA,GAAA,cAAM;QACL,cAAc;YAAC,UAAU;YAAS,UAAU;YAAW,QAAQ;YAAS,aAAa;QAAK;QAC1F,OAAO;QACP,YAAY;QACZ,WAAW;QACX,WAAW;QACX,WAAA;QACA,YAAY;OACX;IAKP,qBACE,gCAAC,CAAA,GAAA,eAAO,uBACN,gCAAC,CAAA,GAAA,mBAAW;QAAE,OAAO;YAAC,cAAc;gBAAC,gBAAgB,YAAY;YAAW;QAAC;qBAC3E,gCAAC,CAAA,GAAA,qBAAa;QAAG,GAAG,gBAAgB;QAAE,KAAK;QAAgB,WAAW,MAAM,MAAM;OAC/E,6BAGL,gCAAC,CAAA,GAAA,yCAAU,EAAE,QAAQ;QAAC,OAAO;OAC1B;AAIT;AAEA;;;CAGC,GACD,IAAI,0DAAe,CAAA,GAAA,iBAAS,EAAE","sources":["packages/@react-spectrum/menu/src/MenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, SlotProvider, useDOMRef, useIsMobileDevice} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport {MenuContext} from './context';\nimport {Placement} from '@react-types/overlays';\nimport {Popover, Tray} from '@react-spectrum/overlays';\nimport {PressResponder} from '@react-aria/interactions';\nimport React, {forwardRef, Fragment, useRef} from 'react';\nimport {SpectrumMenuTriggerProps} from '@react-types/menu';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useMenuTrigger} from '@react-aria/menu';\nimport {useMenuTriggerState} from '@react-stately/menu';\n\nfunction MenuTrigger(props: SpectrumMenuTriggerProps, ref: DOMRef<HTMLElement>) {\n let triggerRef = useRef<HTMLElement>(undefined);\n let domRef = useDOMRef(ref);\n let menuTriggerRef = domRef || triggerRef;\n let menuRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n align = 'start',\n shouldFlip = true,\n direction = 'bottom',\n closeOnSelect,\n trigger = 'press'\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let state = useMenuTriggerState(props);\n\n let {menuTriggerProps, menuProps} = useMenuTrigger({trigger}, state, menuTriggerRef);\n\n let initialPlacement: Placement;\n switch (direction) {\n case 'left':\n case 'right':\n case 'start':\n case 'end':\n initialPlacement = `${direction} ${align === 'end' ? 'bottom' : 'top'}` as Placement;\n break;\n case 'bottom':\n case 'top':\n default:\n initialPlacement = `${direction} ${align}` as Placement;\n }\n\n let isMobile = useIsMobileDevice();\n let menuContext = {\n ...menuProps,\n ref: menuRef,\n onClose: state.close,\n closeOnSelect,\n autoFocus: state.focusStrategy || true,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n state\n };\n\n // On small screen devices, the menu is rendered in a tray, otherwise a popover.\n let overlay;\n if (isMobile) {\n overlay = (\n <Tray state={state} isFixedHeight>\n {menu}\n </Tray>\n );\n } else {\n overlay = (\n <Popover\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', filter: 'unset', borderWidth: '0px'}}\n state={state}\n triggerRef={menuTriggerRef}\n scrollRef={menuRef}\n placement={initialPlacement}\n hideArrow\n shouldFlip={shouldFlip}>\n {menu}\n </Popover>\n );\n }\n\n return (\n <Fragment>\n <SlotProvider slots={{actionButton: {holdAffordance: trigger === 'longPress'}}}>\n <PressResponder {...menuTriggerProps} ref={menuTriggerRef} isPressed={state.isOpen}>\n {menuTrigger}\n </PressResponder>\n </SlotProvider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </Fragment>\n );\n}\n\n/**\n * The MenuTrigger serves as a wrapper around a Menu and its associated trigger,\n * linking the Menu's open state with the trigger's press state.\n */\nlet _MenuTrigger = forwardRef(MenuTrigger);\nexport {_MenuTrigger as MenuTrigger};\n"],"names":[],"version":3,"file":"MenuTrigger.module.js.map"}
@@ -0,0 +1,152 @@
1
+ var $cac834c4bc0a51d3$exports = require("./context.main.js");
2
+ require("./vars.89a944d6.css");
3
+ var $3deee0fd2b46e64f$exports = require("./menu_vars_css.main.js");
4
+ var $esjnM$reactspectrumutils = require("@react-spectrum/utils");
5
+ var $esjnM$reactariautils = require("@react-aria/utils");
6
+ var $esjnM$reactspectrumoverlays = require("@react-spectrum/overlays");
7
+ var $esjnM$react = require("react");
8
+ var $esjnM$reactdom = require("react-dom");
9
+ var $esjnM$reactariai18n = require("@react-aria/i18n");
10
+ var $esjnM$reactariamenu = require("@react-aria/menu");
11
+ var $esjnM$reactstatelymenu = require("@react-stately/menu");
12
+
13
+
14
+ function $parcel$interopDefault(a) {
15
+ return a && a.__esModule ? a.default : a;
16
+ }
17
+
18
+ function $parcel$export(e, n, v, s) {
19
+ Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
20
+ }
21
+
22
+ $parcel$export(module.exports, "SubmenuTrigger", () => $86ed235c4695ff3f$export$ecabc99eeffab7ca);
23
+ /*
24
+ * Copyright 2020 Adobe. All rights reserved.
25
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
26
+ * you may not use this file except in compliance with the License. You may obtain a copy
27
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
28
+ *
29
+ * Unless required by applicable law or agreed to in writing, software distributed under
30
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
31
+ * OF ANY KIND, either express or implied. See the License for the specific language
32
+ * governing permissions and limitations under the License.
33
+ */
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+ function $86ed235c4695ff3f$var$SubmenuTrigger(props) {
44
+ let triggerRef = (0, $esjnM$react.useRef)(undefined);
45
+ let { children: children, targetKey: targetKey } = props;
46
+ let [menuTrigger, menu] = (0, ($parcel$interopDefault($esjnM$react))).Children.toArray(children);
47
+ let { popoverContainer: popoverContainer, trayContainerRef: trayContainerRef, menu: parentMenuRef, submenu: menuRef, rootMenuTriggerState: rootMenuTriggerState } = (0, $cac834c4bc0a51d3$exports.useMenuStateContext)();
48
+ let submenuTriggerState = (0, $esjnM$reactstatelymenu.useSubmenuTriggerState)({
49
+ triggerKey: targetKey
50
+ }, rootMenuTriggerState);
51
+ let { submenuTriggerProps: submenuTriggerProps, submenuProps: submenuProps, popoverProps: popoverProps } = (0, $esjnM$reactariamenu.useSubmenuTrigger)({
52
+ parentMenuRef: parentMenuRef,
53
+ submenuRef: menuRef
54
+ }, submenuTriggerState, triggerRef);
55
+ let isMobile = (0, $esjnM$reactspectrumutils.useIsMobileDevice)();
56
+ let onBackButtonPress = ()=>{
57
+ submenuTriggerState.close();
58
+ if (parentMenuRef.current && !parentMenuRef.current.contains(document.activeElement)) parentMenuRef.current.focus();
59
+ };
60
+ let { direction: direction } = (0, $esjnM$reactariai18n.useLocale)();
61
+ let mobileSubmenuKeyDown = (e)=>{
62
+ switch(e.key){
63
+ case 'ArrowLeft':
64
+ if (direction === 'ltr') triggerRef.current.focus();
65
+ break;
66
+ case 'ArrowRight':
67
+ if (direction === 'rtl') triggerRef.current.focus();
68
+ break;
69
+ }
70
+ };
71
+ let overlay;
72
+ if (isMobile) {
73
+ var _submenuProps;
74
+ delete submenuTriggerProps.onBlur;
75
+ delete submenuTriggerProps.onHoverChange;
76
+ var _autoFocus;
77
+ (_autoFocus = (_submenuProps = submenuProps).autoFocus) !== null && _autoFocus !== void 0 ? _autoFocus : _submenuProps.autoFocus = true;
78
+ if (trayContainerRef.current && submenuTriggerState.isOpen) overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$reactdom))).createPortal(menu, trayContainerRef.current);
79
+ } else {
80
+ let onDismissButtonPress = ()=>{
81
+ var _parentMenuRef_current;
82
+ submenuTriggerState.close();
83
+ (_parentMenuRef_current = parentMenuRef.current) === null || _parentMenuRef_current === void 0 ? void 0 : _parentMenuRef_current.focus();
84
+ };
85
+ overlay = /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $esjnM$reactspectrumoverlays.Popover), {
86
+ ...popoverProps,
87
+ onDismissButtonPress: onDismissButtonPress,
88
+ UNSAFE_className: (0, $esjnM$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), 'spectrum-Submenu-popover'),
89
+ container: popoverContainer,
90
+ containerPadding: 0,
91
+ enableBothDismissButtons: true,
92
+ UNSAFE_style: {
93
+ clipPath: 'unset',
94
+ overflow: 'visible',
95
+ borderWidth: '0px'
96
+ },
97
+ state: submenuTriggerState,
98
+ triggerRef: triggerRef,
99
+ scrollRef: menuRef,
100
+ placement: "end top",
101
+ hideArrow: true
102
+ }, menu);
103
+ }
104
+ let menuContext = {
105
+ ...(0, $esjnM$reactariautils.mergeProps)(submenuProps, {
106
+ ref: menuRef,
107
+ UNSAFE_style: isMobile ? {
108
+ width: '100%',
109
+ maxHeight: 'inherit'
110
+ } : undefined,
111
+ UNSAFE_className: (0, $esjnM$reactspectrumutils.classNames)((0, ($parcel$interopDefault($3deee0fd2b46e64f$exports))), {
112
+ 'spectrum-Menu-popover': !isMobile
113
+ }),
114
+ ...isMobile && {
115
+ onBackButtonPress: onBackButtonPress,
116
+ onKeyDown: mobileSubmenuKeyDown
117
+ }
118
+ })
119
+ };
120
+ return /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, ($parcel$interopDefault($esjnM$react))).Fragment, null, /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $cac834c4bc0a51d3$exports.SubmenuTriggerContext).Provider, {
121
+ value: {
122
+ triggerRef: triggerRef,
123
+ ...submenuTriggerProps
124
+ }
125
+ }, menuTrigger), /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement((0, $cac834c4bc0a51d3$exports.MenuContext).Provider, {
126
+ value: menuContext
127
+ }, overlay));
128
+ }
129
+ $86ed235c4695ff3f$var$SubmenuTrigger.getCollectionNode = function*(props) {
130
+ let childArray = [];
131
+ (0, ($parcel$interopDefault($esjnM$react))).Children.forEach(props.children, (child)=>{
132
+ if (/*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).isValidElement(child)) childArray.push(child);
133
+ });
134
+ let [trigger] = childArray;
135
+ let [, content] = props.children;
136
+ yield {
137
+ element: /*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).cloneElement(trigger, {
138
+ ...trigger.props,
139
+ hasChildItems: true,
140
+ isTrigger: true
141
+ }),
142
+ wrapper: (element)=>/*#__PURE__*/ (0, ($parcel$interopDefault($esjnM$react))).createElement($86ed235c4695ff3f$var$SubmenuTrigger, {
143
+ key: element.key,
144
+ targetKey: element.key,
145
+ ...props
146
+ }, element, content)
147
+ };
148
+ };
149
+ let $86ed235c4695ff3f$export$ecabc99eeffab7ca = $86ed235c4695ff3f$var$SubmenuTrigger;
150
+
151
+
152
+ //# sourceMappingURL=SubmenuTrigger.main.js.map
@@ -0,0 +1 @@
1
+ {"mappings":"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","sources":["packages/@react-spectrum/menu/src/SubmenuTrigger.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {classNames, useIsMobileDevice} from '@react-spectrum/utils';\nimport {Key} from '@react-types/shared';\nimport {MenuContext, SubmenuTriggerContext, useMenuStateContext} from './context';\nimport {mergeProps} from '@react-aria/utils';\nimport {Popover} from '@react-spectrum/overlays';\nimport React, {type JSX, ReactElement, useRef} from 'react';\nimport ReactDOM from 'react-dom';\nimport styles from '@adobe/spectrum-css-temp/components/menu/vars.css';\nimport {useLocale} from '@react-aria/i18n';\nimport {useSubmenuTrigger} from '@react-aria/menu';\nimport {useSubmenuTriggerState} from '@react-stately/menu';\n\ninterface SubmenuTriggerProps {\n /**\n * The contents of the SubmenuTrigger - an Item and a Menu.\n */\n children: ReactElement<any>[],\n targetKey: Key\n}\n\nexport interface SpectrumSubmenuTriggerProps extends Omit<SubmenuTriggerProps, 'targetKey'> {}\n\nfunction SubmenuTrigger(props: SubmenuTriggerProps) {\n let triggerRef = useRef<HTMLDivElement>(undefined);\n let {\n children,\n targetKey\n } = props;\n\n let [menuTrigger, menu] = React.Children.toArray(children);\n let {popoverContainer, trayContainerRef, menu: parentMenuRef, submenu: menuRef, rootMenuTriggerState} = useMenuStateContext();\n let submenuTriggerState = useSubmenuTriggerState({triggerKey: targetKey}, rootMenuTriggerState);\n let {submenuTriggerProps, submenuProps, popoverProps} = useSubmenuTrigger({\n parentMenuRef,\n submenuRef: menuRef\n }, submenuTriggerState, triggerRef);\n let isMobile = useIsMobileDevice();\n let onBackButtonPress = () => {\n submenuTriggerState.close();\n if (parentMenuRef.current && !parentMenuRef.current.contains(document.activeElement)) {\n parentMenuRef.current.focus();\n }\n };\n\n let {direction} = useLocale();\n let mobileSubmenuKeyDown = (e: KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowLeft':\n if (direction === 'ltr') {\n triggerRef.current.focus();\n }\n break;\n case 'ArrowRight':\n if (direction === 'rtl') {\n triggerRef.current.focus();\n }\n break;\n }\n };\n\n let overlay;\n\n if (isMobile) {\n delete submenuTriggerProps.onBlur;\n delete submenuTriggerProps.onHoverChange;\n submenuProps.autoFocus ??= true;\n if (trayContainerRef.current && submenuTriggerState.isOpen) {\n overlay = ReactDOM.createPortal(menu, trayContainerRef.current);\n }\n } else {\n let onDismissButtonPress = () => {\n submenuTriggerState.close();\n parentMenuRef.current?.focus();\n };\n\n overlay = (\n <Popover\n {...popoverProps}\n onDismissButtonPress={onDismissButtonPress}\n UNSAFE_className={classNames(styles, 'spectrum-Submenu-popover')}\n container={popoverContainer}\n containerPadding={0}\n enableBothDismissButtons\n UNSAFE_style={{clipPath: 'unset', overflow: 'visible', borderWidth: '0px'}}\n state={submenuTriggerState}\n triggerRef={triggerRef}\n scrollRef={menuRef}\n placement=\"end top\"\n hideArrow>\n {menu}\n </Popover>\n );\n }\n\n let menuContext = {\n ...mergeProps(submenuProps, {\n ref: menuRef,\n UNSAFE_style: isMobile ? {\n width: '100%',\n maxHeight: 'inherit'\n } : undefined,\n UNSAFE_className: classNames(styles, {'spectrum-Menu-popover': !isMobile}),\n ...(isMobile && {\n onBackButtonPress,\n onKeyDown: mobileSubmenuKeyDown\n })\n })\n };\n\n return (\n <>\n <SubmenuTriggerContext.Provider value={{triggerRef, ...submenuTriggerProps}}>{menuTrigger}</SubmenuTriggerContext.Provider>\n <MenuContext.Provider value={menuContext}>\n {overlay}\n </MenuContext.Provider>\n </>\n );\n}\n\nSubmenuTrigger.getCollectionNode = function* (props: SpectrumSubmenuTriggerProps) {\n let childArray: ReactElement[] = [];\n React.Children.forEach(props.children, child => {\n if (React.isValidElement(child)) {\n childArray.push(child);\n }\n });\n let [trigger] = childArray;\n let [, content] = props.children as [ReactElement, ReactElement];\n\n yield {\n element: React.cloneElement(trigger, {...trigger.props as any, hasChildItems: true, isTrigger: true}),\n wrapper: (element) => (\n <SubmenuTrigger key={element.key} targetKey={element.key} {...props}>\n {element}\n {content}\n </SubmenuTrigger>\n )\n };\n};\n\nlet _SubmenuTrigger = SubmenuTrigger as (props: SpectrumSubmenuTriggerProps) => JSX.Element;\nexport {_SubmenuTrigger as SubmenuTrigger};\n"],"names":[],"version":3,"file":"SubmenuTrigger.main.js.map"}