@tamagui/menu 2.0.0-rc.3 → 2.0.0-rc.31

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 (55) hide show
  1. package/dist/cjs/Menu.cjs +17 -4
  2. package/dist/cjs/Menu.native.js +20 -4
  3. package/dist/cjs/Menu.native.js.map +1 -1
  4. package/dist/cjs/createNonNativeMenu.cjs +113 -153
  5. package/dist/cjs/createNonNativeMenu.native.js +131 -167
  6. package/dist/cjs/createNonNativeMenu.native.js.map +1 -1
  7. package/dist/esm/Menu.mjs +17 -4
  8. package/dist/esm/Menu.mjs.map +1 -1
  9. package/dist/esm/Menu.native.js +20 -4
  10. package/dist/esm/Menu.native.js.map +1 -1
  11. package/dist/esm/createNonNativeMenu.mjs +114 -154
  12. package/dist/esm/createNonNativeMenu.mjs.map +1 -1
  13. package/dist/esm/createNonNativeMenu.native.js +132 -168
  14. package/dist/esm/createNonNativeMenu.native.js.map +1 -1
  15. package/dist/esm/index.js +2 -5
  16. package/dist/esm/index.js.map +1 -6
  17. package/dist/esm/index.mjs +0 -1
  18. package/dist/esm/index.mjs.map +1 -1
  19. package/dist/esm/index.native.js +0 -1
  20. package/dist/esm/index.native.js.map +1 -1
  21. package/dist/jsx/Menu.mjs +17 -4
  22. package/dist/jsx/Menu.mjs.map +1 -1
  23. package/dist/jsx/Menu.native.js +20 -4
  24. package/dist/jsx/Menu.native.js.map +1 -1
  25. package/dist/jsx/createNonNativeMenu.mjs +114 -154
  26. package/dist/jsx/createNonNativeMenu.mjs.map +1 -1
  27. package/dist/jsx/createNonNativeMenu.native.js +131 -167
  28. package/dist/jsx/createNonNativeMenu.native.js.map +1 -1
  29. package/dist/jsx/index.js +2 -5
  30. package/dist/jsx/index.js.map +1 -6
  31. package/dist/jsx/index.mjs +0 -1
  32. package/dist/jsx/index.mjs.map +1 -1
  33. package/package.json +12 -14
  34. package/src/Menu.tsx +11 -3
  35. package/src/createNonNativeMenu.tsx +220 -290
  36. package/types/Menu.d.ts +81 -46
  37. package/types/Menu.d.ts.map +1 -1
  38. package/types/createNonNativeMenu.d.ts +116 -68
  39. package/types/createNonNativeMenu.d.ts.map +1 -1
  40. package/types/index.d.ts +81 -46
  41. package/types/index.d.ts.map +1 -1
  42. package/dist/cjs/Menu.js +0 -137
  43. package/dist/cjs/Menu.js.map +0 -6
  44. package/dist/cjs/createNonNativeMenu.js +0 -334
  45. package/dist/cjs/createNonNativeMenu.js.map +0 -6
  46. package/dist/cjs/index.js +0 -32
  47. package/dist/cjs/index.js.map +0 -6
  48. package/dist/esm/Menu.js +0 -119
  49. package/dist/esm/Menu.js.map +0 -6
  50. package/dist/esm/createNonNativeMenu.js +0 -325
  51. package/dist/esm/createNonNativeMenu.js.map +0 -6
  52. package/dist/jsx/Menu.js +0 -119
  53. package/dist/jsx/Menu.js.map +0 -6
  54. package/dist/jsx/createNonNativeMenu.js +0 -325
  55. package/dist/jsx/createNonNativeMenu.js.map +0 -6
package/dist/cjs/Menu.cjs CHANGED
@@ -37,7 +37,8 @@ module.exports = __toCommonJS(Menu_exports);
37
37
  var import_create_menu = require("@tamagui/create-menu"),
38
38
  import_web = require("@tamagui/web"),
39
39
  import_react = __toESM(require("react"), 1),
40
- import_createNonNativeMenu = require("./createNonNativeMenu.cjs");
40
+ import_createNonNativeMenu = require("./createNonNativeMenu.cjs"),
41
+ import_jsx_runtime = require("react/jsx-runtime");
41
42
  function createMenu(params) {
42
43
  const {
43
44
  Menu: NativeMenuRoot
@@ -113,14 +114,18 @@ function createMenu(params) {
113
114
  Component: NonNativeMenu.RadioGroup,
114
115
  NativeComponent: ({
115
116
  children
116
- }) => children
117
+ }) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
118
+ children
119
+ })
117
120
  }),
118
121
  RadioItem = (0, import_create_menu.withNativeMenu)({
119
122
  ...COMMON_PARAMS,
120
123
  Component: NonNativeMenu.RadioItem,
121
124
  NativeComponent: ({
122
125
  children
123
- }) => children
126
+ }) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
127
+ children
128
+ })
124
129
  }),
125
130
  ItemIndicator = (0, import_create_menu.withNativeMenu)({
126
131
  ...COMMON_PARAMS,
@@ -151,7 +156,14 @@ function createMenu(params) {
151
156
  ...COMMON_PARAMS,
152
157
  Component: NonNativeMenu.SubContent,
153
158
  NativeComponent: NativeMenuRoot.SubContent
159
+ }),
160
+ NativeScrollView = ({
161
+ children
162
+ }) => /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
163
+ children
154
164
  });
165
+ NativeScrollView.displayName = "MenuScrollView";
166
+ const ScrollView = import_web.isWeb ? NonNativeMenu.ScrollView : NativeScrollView;
155
167
  return (0, import_web.withStaticProperties)(MenuComp, {
156
168
  Trigger,
157
169
  Portal,
@@ -171,6 +183,7 @@ function createMenu(params) {
171
183
  ItemTitle,
172
184
  ItemSubtitle,
173
185
  ItemIcon,
174
- ItemImage
186
+ ItemImage,
187
+ ScrollView
175
188
  });
176
189
  }
@@ -36,7 +36,8 @@ __export(Menu_exports, {
36
36
  createMenu: () => createMenu
37
37
  });
38
38
  module.exports = __toCommonJS(Menu_exports);
39
- var import_create_menu = require("@tamagui/create-menu"),
39
+ var import_jsx_runtime = require("react/jsx-runtime"),
40
+ import_create_menu = require("@tamagui/create-menu"),
40
41
  import_web = require("@tamagui/web"),
41
42
  import_react = __toESM(require("react"), 1),
42
43
  import_createNonNativeMenu = require("./createNonNativeMenu.native.js");
@@ -117,7 +118,9 @@ function createMenu(params) {
117
118
  var {
118
119
  children
119
120
  } = param;
120
- return children;
121
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
122
+ children
123
+ });
121
124
  }
122
125
  }),
123
126
  RadioItem = (0, import_create_menu.withNativeMenu)({
@@ -127,7 +130,9 @@ function createMenu(params) {
127
130
  var {
128
131
  children
129
132
  } = param;
130
- return children;
133
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
134
+ children
135
+ });
131
136
  }
132
137
  }),
133
138
  ItemIndicator = (0, import_create_menu.withNativeMenu)({
@@ -160,6 +165,16 @@ function createMenu(params) {
160
165
  Component: NonNativeMenu.SubContent,
161
166
  NativeComponent: NativeMenuRoot.SubContent
162
167
  }),
168
+ NativeScrollView = function (param) {
169
+ var {
170
+ children
171
+ } = param;
172
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {
173
+ children
174
+ });
175
+ };
176
+ NativeScrollView.displayName = "MenuScrollView";
177
+ var ScrollView = import_web.isWeb ? NonNativeMenu.ScrollView : NativeScrollView,
163
178
  Menu = (0, import_web.withStaticProperties)(MenuComp, {
164
179
  Trigger,
165
180
  Portal,
@@ -179,7 +194,8 @@ function createMenu(params) {
179
194
  ItemTitle,
180
195
  ItemSubtitle,
181
196
  ItemIcon,
182
- ItemImage
197
+ ItemImage,
198
+ ScrollView
183
199
  });
184
200
  return Menu;
185
201
  }
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Menu_exports","__export","createMenu","module","exports","import_create_menu","require","import_web","import_react","__toESM","import_createNonNativeMenu","params","Menu","NativeMenuRoot","createNativeMenu","NonNativeMenu","createNonNativeMenu","COMMON_PARAMS","isRoot","scope","DROPDOWN_MENU_CONTEXT","MenuComp","withNativeMenu","Component","Root","NativeComponent","Trigger","Portal","default","Fragment","Content","Group","Label","Item","ItemTitle","ItemSubtitle","ItemIcon","ItemImage","CheckboxItem","RadioGroup","param","children","RadioItem","ItemIndicator","Separator","Arrow","Sub","SubTrigger","SubContent","withStaticProperties"],"sources":["../../src/Menu.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","Menu_exports","__export","createMenu","module","exports","import_jsx_runtime","require","import_create_menu","import_web","import_react","__toESM","import_createNonNativeMenu","params","Menu","NativeMenuRoot","createNativeMenu","NonNativeMenu","createNonNativeMenu","COMMON_PARAMS","isRoot","scope","DROPDOWN_MENU_CONTEXT","MenuComp","withNativeMenu","Component","Root","NativeComponent","Trigger","Portal","default","Fragment","Content","Group","Label","Item","ItemTitle","ItemSubtitle","ItemIcon","ItemImage","CheckboxItem","RadioGroup","param","children","jsx","RadioItem","ItemIndicator","Separator","Arrow","Sub","SubTrigger","SubContent","NativeScrollView","displayName","ScrollView","isWeb","withStaticProperties"],"sources":["../../src/Menu.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -36,12 +36,40 @@ __export(createNonNativeMenu_exports, {
36
36
  });
37
37
  module.exports = __toCommonJS(createNonNativeMenu_exports);
38
38
  var import_create_menu = require("@tamagui/create-menu"),
39
+ import_popper = require("@tamagui/popper"),
40
+ import_scroll_view = require("@tamagui/scroll-view"),
39
41
  import_use_controllable_state = require("@tamagui/use-controllable-state"),
40
42
  import_web = require("@tamagui/web"),
41
43
  React = __toESM(require("react"), 1),
42
44
  import_react = require("react"),
43
45
  import_jsx_runtime = require("react/jsx-runtime");
44
46
  const DROPDOWN_MENU_CONTEXT = "MenuContext";
47
+ function useMenuTriggerSetup(open) {
48
+ const triggerStateSettersRef = React.useRef(/* @__PURE__ */new Map()),
49
+ activeTriggerIdRef = React.useRef(null),
50
+ setActiveTrigger = (0, import_web.useEvent)(id => {
51
+ const prevId = activeTriggerIdRef.current;
52
+ prevId !== id && (prevId && triggerStateSettersRef.current.get(prevId)?.(!1), activeTriggerIdRef.current = id, id && open && triggerStateSettersRef.current.get(id)?.(!0));
53
+ }),
54
+ registerTrigger = (0, import_web.useEvent)((id, setOpenState) => {
55
+ triggerStateSettersRef.current.set(id, setOpenState), setOpenState(activeTriggerIdRef.current === id && open);
56
+ }),
57
+ unregisterTrigger = (0, import_web.useEvent)(id => {
58
+ triggerStateSettersRef.current.delete(id), activeTriggerIdRef.current === id && (activeTriggerIdRef.current = null);
59
+ });
60
+ return React.useEffect(() => {
61
+ if (!open) {
62
+ setActiveTrigger(null);
63
+ return;
64
+ }
65
+ const activeId = activeTriggerIdRef.current;
66
+ activeId && triggerStateSettersRef.current.get(activeId)?.(!0);
67
+ }, [open, setActiveTrigger]), {
68
+ setActiveTrigger,
69
+ registerTrigger,
70
+ unregisterTrigger
71
+ };
72
+ }
45
73
  function createNonNativeMenu(params) {
46
74
  const {
47
75
  Menu
@@ -67,16 +95,26 @@ function createNonNativeMenu(params) {
67
95
  prop: openProp,
68
96
  defaultProp: defaultOpen,
69
97
  onChange: onOpenChange
70
- });
98
+ }),
99
+ openRef = React.useRef(open);
100
+ openRef.current = open;
101
+ const {
102
+ setActiveTrigger,
103
+ registerTrigger,
104
+ unregisterTrigger
105
+ } = useMenuTriggerSetup(open);
71
106
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(MenuProvider, {
72
107
  scope,
73
108
  triggerId: (0, import_react.useId)(),
74
109
  triggerRef,
75
110
  contentId: (0, import_react.useId)(),
76
- open,
77
- onOpenChange: setOpen,
111
+ openRef,
112
+ onOpenChange: React.useCallback(nextOpen => setOpen(nextOpen), [setOpen]),
78
113
  onOpenToggle: React.useCallback(() => setOpen(prevOpen => !prevOpen), [setOpen]),
79
114
  modal,
115
+ setActiveTrigger,
116
+ registerTrigger,
117
+ unregisterTrigger,
80
118
  children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(Menu, {
81
119
  scope: scope || DROPDOWN_MENU_CONTEXT,
82
120
  open,
@@ -101,8 +139,22 @@ function createNonNativeMenu(params) {
101
139
  ...triggerProps
102
140
  } = props,
103
141
  context = useMenuContext(scope),
142
+ popperCtx = (0, import_popper.usePopperContextSlow)(scope || DROPDOWN_MENU_CONTEXT),
104
143
  Comp = asChild ? import_web.Slot : import_web.View,
105
144
  isTouchDevice = (0, import_web.useIsTouchDevice)(),
145
+ triggerElRef = React.useRef(null),
146
+ triggerId = React.useId(),
147
+ [triggerOpen, setTriggerOpen] = React.useState(!1),
148
+ {
149
+ registerTrigger,
150
+ unregisterTrigger
151
+ } = context;
152
+ React.useEffect(() => (registerTrigger(triggerId, setTriggerOpen), () => unregisterTrigger(triggerId)), [registerTrigger, unregisterTrigger, triggerId]);
153
+ const activateSelf = React.useCallback(() => {
154
+ context.setActiveTrigger(triggerId);
155
+ const el = triggerElRef.current;
156
+ el && (context.triggerRef.current = el, el instanceof HTMLElement && (popperCtx.refs?.setReference(el), requestAnimationFrame(() => popperCtx.update?.())));
157
+ }, [context, triggerId, popperCtx]),
106
158
  pressEvent = import_web.isWeb ? isTouchDevice ? "onClick" : "onPointerDown" : "onPress";
107
159
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(MenuTriggerFrame, {
108
160
  asChild: !0,
@@ -112,23 +164,23 @@ function createNonNativeMenu(params) {
112
164
  role: "button",
113
165
  id: context.triggerId,
114
166
  "aria-haspopup": "menu",
115
- "aria-expanded": context.open,
116
- "aria-controls": context.open ? context.contentId : void 0,
117
- "data-state": context.open ? "open" : "closed",
167
+ "aria-expanded": triggerOpen,
168
+ "aria-controls": triggerOpen ? context.contentId : void 0,
169
+ "data-state": triggerOpen ? "open" : "closed",
118
170
  "data-disabled": disabled ? "" : void 0,
119
171
  "aria-disabled": disabled || void 0,
120
- ref: (0, import_web.composeRefs)(forwardedRef, context.triggerRef),
172
+ ref: (0, import_web.composeRefs)(forwardedRef, context.triggerRef, triggerElRef),
121
173
  [pressEvent]: (0, import_web.composeEventHandlers)(
122
174
  //@ts-ignore
123
175
  props[pressEvent], event => {
124
176
  if (!disabled) {
125
177
  if (import_web.isWeb && event instanceof PointerEvent && event.button !== 0 && event.ctrlKey === !0) return;
126
- context.onOpenToggle(), context.open || event.preventDefault();
178
+ context.openRef.current ? context.setActiveTrigger(null) : activateSelf(), context.onOpenToggle(), context.openRef.current || event.preventDefault();
127
179
  }
128
180
  }),
129
181
  ...(import_web.isWeb && {
130
182
  onKeyDown: (0, import_web.composeEventHandlers)(onKeydown, event => {
131
- disabled || (["Enter", " "].includes(event.key) && context.onOpenToggle(), event.key === "ArrowDown" && context.onOpenChange(!0), ["Enter", " ", "ArrowDown"].includes(event.key) && event.preventDefault());
183
+ disabled || (["Enter", " "].includes(event.key) && (context.openRef.current ? context.setActiveTrigger(null) : activateSelf(), context.onOpenToggle()), event.key === "ArrowDown" && (activateSelf(), context.onOpenChange(!0)), ["Enter", " ", "ArrowDown"].includes(event.key) && event.preventDefault());
132
184
  })
133
185
  }),
134
186
  ...triggerProps,
@@ -171,7 +223,10 @@ function createNonNativeMenu(params) {
171
223
  ...contentProps,
172
224
  ref: forwardedRef,
173
225
  onCloseAutoFocus: (0, import_web.composeEventHandlers)(props.onCloseAutoFocus, event => {
174
- hasInteractedOutsideRef.current || context.triggerRef.current?.focus(), hasInteractedOutsideRef.current = !1, event.preventDefault();
226
+ hasInteractedOutsideRef.current || requestAnimationFrame(() => {
227
+ const activeEl = document.activeElement;
228
+ (!activeEl || activeEl === document.body) && context.triggerRef.current?.focus();
229
+ }), hasInteractedOutsideRef.current = !1, event.preventDefault();
175
230
  }),
176
231
  onInteractOutside: (0, import_web.composeEventHandlers)(props.onInteractOutside, event => {
177
232
  const originalEvent = event.detail.originalEvent,
@@ -179,122 +234,17 @@ function createNonNativeMenu(params) {
179
234
  isRightClick = originalEvent.button === 2 || ctrlLeftClick;
180
235
  (!context.modal || isRightClick) && (hasInteractedOutsideRef.current = !0);
181
236
  }),
182
- ...props.style
237
+ style: import_web.isWeb ? {
238
+ ...props.style,
239
+ "--tamagui-menu-content-transform-origin": "var(--tamagui-popper-transform-origin)",
240
+ "--tamagui-menu-content-available-width": "var(--tamagui-popper-available-width)",
241
+ "--tamagui-menu-content-available-height": "var(--tamagui-popper-available-height)",
242
+ "--tamagui-menu-trigger-width": "var(--tamagui-popper-anchor-width)",
243
+ "--tamagui-menu-trigger-height": "var(--tamagui-popper-anchor-height)"
244
+ } : props.style
183
245
  });
184
246
  });
185
247
  MenuContent.displayName = CONTENT_NAME;
186
- const GROUP_NAME = "MenuGroup",
187
- MenuGroup = Menu.Group;
188
- MenuGroup.displayName = GROUP_NAME;
189
- const LABEL_NAME = "MenuLabel",
190
- MenuLabel = Menu.Label;
191
- MenuLabel.displayName = LABEL_NAME;
192
- const ITEM_NAME = "MenuItem",
193
- MenuItemFrame = Menu.Item,
194
- MenuItem = React.forwardRef((props, forwardedRef) => {
195
- const {
196
- scope,
197
- ...itemProps
198
- } = props;
199
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(MenuItemFrame, {
200
- componentName: ITEM_NAME,
201
- scope: scope || DROPDOWN_MENU_CONTEXT,
202
- ...itemProps,
203
- ref: forwardedRef
204
- });
205
- });
206
- MenuItem.displayName = ITEM_NAME;
207
- const ITEM_TITLE_NAME = "MenuItemTitle",
208
- MenuItemTitle = Menu.ItemTitle;
209
- MenuItemTitle.displayName = ITEM_TITLE_NAME;
210
- const ITEM_SUB_TITLE_NAME = "MenuItemSubTitle",
211
- MenuItemSubTitle = Menu.ItemSubtitle;
212
- MenuItemSubTitle.displayName = ITEM_SUB_TITLE_NAME;
213
- const ITEM_IMAGE_NAME = "MenuItemImage",
214
- MenuItemImage = Menu.ItemImage;
215
- MenuItemImage.displayName = ITEM_IMAGE_NAME;
216
- const ITEM_ICON_NAME = "MenuItemIcon",
217
- MenuItemIcon = Menu.ItemIcon;
218
- MenuItemIcon.displayName = ITEM_ICON_NAME;
219
- const CHECKBOX_ITEM_NAME = "MenuCheckboxItem",
220
- MenuCheckboxItemFrame = Menu.CheckboxItem,
221
- MenuCheckboxItem = React.forwardRef((props, forwardedRef) => {
222
- const {
223
- scope,
224
- ...checkboxItemProps
225
- } = props;
226
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(MenuCheckboxItemFrame, {
227
- componentName: CHECKBOX_ITEM_NAME,
228
- scope: scope || DROPDOWN_MENU_CONTEXT,
229
- ...checkboxItemProps,
230
- ref: forwardedRef
231
- });
232
- });
233
- MenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
234
- const RADIO_GROUP_NAME = "MenuRadioGroup",
235
- MenuRadioGroup = React.forwardRef((props, forwardedRef) => {
236
- const {
237
- scope,
238
- ...radioGroupProps
239
- } = props;
240
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(Menu.RadioGroup, {
241
- scope: scope || DROPDOWN_MENU_CONTEXT,
242
- ...radioGroupProps,
243
- ref: forwardedRef
244
- });
245
- });
246
- MenuRadioGroup.displayName = RADIO_GROUP_NAME;
247
- const RADIO_ITEM_NAME = "MenuRadioItem",
248
- MenuRadioItemFrame = Menu.RadioItem,
249
- MenuRadioItem = React.forwardRef((props, forwardedRef) => {
250
- const {
251
- scope,
252
- ...radioItemProps
253
- } = props;
254
- return (
255
- // @ts-ignore explanation: deeply nested types typescript limitation
256
- /* @__PURE__ */
257
- (0, import_jsx_runtime.jsx)(MenuRadioItemFrame, {
258
- componentName: RADIO_ITEM_NAME,
259
- scope: scope || DROPDOWN_MENU_CONTEXT,
260
- ...radioItemProps,
261
- ref: forwardedRef
262
- })
263
- );
264
- });
265
- MenuRadioItem.displayName = RADIO_ITEM_NAME;
266
- const INDICATOR_NAME = "MenuItemIndicator",
267
- MenuItemIndicatorFrame = Menu.ItemIndicator,
268
- MenuItemIndicator = MenuItemIndicatorFrame.styleable((props, forwardedRef) => {
269
- const {
270
- scope,
271
- ...itemIndicatorProps
272
- } = props;
273
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(MenuItemIndicatorFrame, {
274
- componentName: INDICATOR_NAME,
275
- scope: scope || DROPDOWN_MENU_CONTEXT,
276
- ...itemIndicatorProps,
277
- ref: forwardedRef
278
- });
279
- });
280
- MenuItemIndicator.displayName = INDICATOR_NAME;
281
- const SEPARATOR_NAME = "MenuSeparator",
282
- MenuSeparator = Menu.Separator;
283
- MenuSeparator.displayName = SEPARATOR_NAME;
284
- const ARROW_NAME = "MenuArrow",
285
- MenuArrow = React.forwardRef((props, forwardedRef) => {
286
- const {
287
- scope,
288
- ...arrowProps
289
- } = props;
290
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(Menu.Arrow, {
291
- componentName: ARROW_NAME,
292
- scope: scope || DROPDOWN_MENU_CONTEXT,
293
- ...arrowProps,
294
- ref: forwardedRef
295
- });
296
- });
297
- MenuArrow.displayName = ARROW_NAME;
298
248
  const DROPDOWN_MENU_SUB_NAME = "MenuSub",
299
249
  MenuSub = props => {
300
250
  const {
@@ -319,21 +269,6 @@ function createNonNativeMenu(params) {
319
269
  });
320
270
  };
321
271
  MenuSub.displayName = DROPDOWN_MENU_SUB_NAME;
322
- const SUB_TRIGGER_NAME = "MenuSubTrigger",
323
- MenuSubTrigger = import_web.View.styleable((props, forwardedRef) => {
324
- const {
325
- scope,
326
- asChild,
327
- ...subTriggerProps
328
- } = props;
329
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(Menu.SubTrigger, {
330
- componentName: SUB_TRIGGER_NAME,
331
- scope: scope || DROPDOWN_MENU_CONTEXT,
332
- ...subTriggerProps,
333
- ref: forwardedRef
334
- });
335
- });
336
- MenuSubTrigger.displayName = SUB_TRIGGER_NAME;
337
272
  const SUB_CONTENT_NAME = "MenuSubContent",
338
273
  MenuSubContent = React.forwardRef((props, forwardedRef) => {
339
274
  const {
@@ -354,26 +289,51 @@ function createNonNativeMenu(params) {
354
289
  } : null
355
290
  });
356
291
  });
357
- return MenuSubContent.displayName = SUB_CONTENT_NAME, (0, import_web.withStaticProperties)(MenuComp, {
292
+ MenuSubContent.displayName = SUB_CONTENT_NAME;
293
+ const MenuScrollView = (0, import_web.styled)(import_scroll_view.ScrollView, {
294
+ flexShrink: 1,
295
+ alignSelf: "stretch",
296
+ showsHorizontalScrollIndicator: !1,
297
+ showsVerticalScrollIndicator: !1,
298
+ "$platform-web": {
299
+ maxHeight: "var(--tamagui-menu-content-available-height)"
300
+ }
301
+ }),
302
+ Group = Menu.Group,
303
+ Label = Menu.Label,
304
+ Item = Menu.Item,
305
+ CheckboxItem = Menu.CheckboxItem,
306
+ RadioGroup = Menu.RadioGroup,
307
+ RadioItem = Menu.RadioItem,
308
+ ItemIndicator = Menu.ItemIndicator,
309
+ Separator = Menu.Separator,
310
+ Arrow = Menu.Arrow,
311
+ SubTrigger = Menu.SubTrigger,
312
+ ItemTitle = Menu.ItemTitle,
313
+ ItemSubtitle = Menu.ItemSubtitle,
314
+ ItemImage = Menu.ItemImage,
315
+ ItemIcon = Menu.ItemIcon;
316
+ return (0, import_web.withStaticProperties)(MenuComp, {
358
317
  Root: MenuComp,
359
318
  Trigger: MenuTrigger,
360
319
  Portal: MenuPortal,
361
320
  Content: MenuContent,
362
- Group: MenuGroup,
363
- Label: MenuLabel,
364
- Item: MenuItem,
365
- CheckboxItem: MenuCheckboxItem,
366
- RadioGroup: MenuRadioGroup,
367
- RadioItem: MenuRadioItem,
368
- ItemIndicator: MenuItemIndicator,
369
- Separator: MenuSeparator,
370
- Arrow: MenuArrow,
321
+ Group,
322
+ Label,
323
+ Item,
324
+ CheckboxItem,
325
+ RadioGroup,
326
+ RadioItem,
327
+ ItemIndicator,
328
+ Separator,
329
+ Arrow,
371
330
  Sub: MenuSub,
372
- SubTrigger: MenuSubTrigger,
331
+ SubTrigger,
373
332
  SubContent: MenuSubContent,
374
- ItemTitle: MenuItemTitle,
375
- ItemSubtitle: MenuItemSubTitle,
376
- ItemImage: MenuItemImage,
377
- ItemIcon: MenuItemIcon
333
+ ItemTitle,
334
+ ItemSubtitle,
335
+ ItemImage,
336
+ ItemIcon,
337
+ ScrollView: MenuScrollView
378
338
  });
379
339
  }