@bacon-pos/ui 0.6.0 → 0.7.1

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 (84) hide show
  1. package/lib/commonjs/components/Dropdown/Dropdown.stories.js +99 -1
  2. package/lib/commonjs/components/Dropdown/Dropdown.stories.js.map +1 -1
  3. package/lib/commonjs/components/Menu/Menu.js +25 -52
  4. package/lib/commonjs/components/Menu/Menu.js.map +1 -1
  5. package/lib/commonjs/components/Menu/MenuButton.js +4 -0
  6. package/lib/commonjs/components/Menu/MenuButton.js.map +1 -1
  7. package/lib/commonjs/components/Menu/SelectButton.js +4 -0
  8. package/lib/commonjs/components/Menu/SelectButton.js.map +1 -1
  9. package/lib/commonjs/components/Menu/UserMenu.js +77 -0
  10. package/lib/commonjs/components/Menu/UserMenu.js.map +1 -0
  11. package/lib/commonjs/components/Menu/UserMenu.stories.js +85 -0
  12. package/lib/commonjs/components/Menu/UserMenu.stories.js.map +1 -0
  13. package/lib/commonjs/components/Menu/UserMenu.test.js +52 -0
  14. package/lib/commonjs/components/Menu/UserMenu.test.js.map +1 -0
  15. package/lib/commonjs/components/Menu/index.js +7 -0
  16. package/lib/commonjs/components/Menu/index.js.map +1 -1
  17. package/lib/commonjs/components/Menu/placement.js +84 -0
  18. package/lib/commonjs/components/Menu/placement.js.map +1 -0
  19. package/lib/commonjs/components/Menu/placement.test.js +186 -0
  20. package/lib/commonjs/components/Menu/placement.test.js.map +1 -0
  21. package/lib/commonjs/components/Select/Select.js +2 -0
  22. package/lib/commonjs/components/Select/Select.js.map +1 -1
  23. package/lib/module/components/Dropdown/Dropdown.stories.js +98 -0
  24. package/lib/module/components/Dropdown/Dropdown.stories.js.map +1 -1
  25. package/lib/module/components/Menu/Menu.js +27 -54
  26. package/lib/module/components/Menu/Menu.js.map +1 -1
  27. package/lib/module/components/Menu/MenuButton.js +4 -0
  28. package/lib/module/components/Menu/MenuButton.js.map +1 -1
  29. package/lib/module/components/Menu/SelectButton.js +4 -0
  30. package/lib/module/components/Menu/SelectButton.js.map +1 -1
  31. package/lib/module/components/Menu/UserMenu.js +73 -0
  32. package/lib/module/components/Menu/UserMenu.js.map +1 -0
  33. package/lib/module/components/Menu/UserMenu.stories.js +81 -0
  34. package/lib/module/components/Menu/UserMenu.stories.js.map +1 -0
  35. package/lib/module/components/Menu/UserMenu.test.js +52 -0
  36. package/lib/module/components/Menu/UserMenu.test.js.map +1 -0
  37. package/lib/module/components/Menu/index.js +1 -0
  38. package/lib/module/components/Menu/index.js.map +1 -1
  39. package/lib/module/components/Menu/placement.js +80 -0
  40. package/lib/module/components/Menu/placement.js.map +1 -0
  41. package/lib/module/components/Menu/placement.test.js +186 -0
  42. package/lib/module/components/Menu/placement.test.js.map +1 -0
  43. package/lib/module/components/Select/Select.js +2 -0
  44. package/lib/module/components/Select/Select.js.map +1 -1
  45. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +7 -1
  46. package/lib/typescript/commonjs/components/Menu/Menu.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts +6 -2
  48. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts +6 -2
  50. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts.map +1 -1
  51. package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts +50 -0
  52. package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts.map +1 -0
  53. package/lib/typescript/commonjs/components/Menu/index.d.ts +2 -0
  54. package/lib/typescript/commonjs/components/Menu/index.d.ts.map +1 -1
  55. package/lib/typescript/commonjs/components/Menu/placement.d.ts +47 -0
  56. package/lib/typescript/commonjs/components/Menu/placement.d.ts.map +1 -0
  57. package/lib/typescript/commonjs/components/Menu/placement.test.d.ts +2 -0
  58. package/lib/typescript/commonjs/components/Menu/placement.test.d.ts.map +1 -0
  59. package/lib/typescript/commonjs/components/Select/Select.d.ts +3 -1
  60. package/lib/typescript/commonjs/components/Select/Select.d.ts.map +1 -1
  61. package/lib/typescript/module/components/Menu/Menu.d.ts +7 -1
  62. package/lib/typescript/module/components/Menu/Menu.d.ts.map +1 -1
  63. package/lib/typescript/module/components/Menu/MenuButton.d.ts +6 -2
  64. package/lib/typescript/module/components/Menu/MenuButton.d.ts.map +1 -1
  65. package/lib/typescript/module/components/Menu/SelectButton.d.ts +6 -2
  66. package/lib/typescript/module/components/Menu/SelectButton.d.ts.map +1 -1
  67. package/lib/typescript/module/components/Menu/UserMenu.d.ts +50 -0
  68. package/lib/typescript/module/components/Menu/UserMenu.d.ts.map +1 -0
  69. package/lib/typescript/module/components/Menu/index.d.ts +2 -0
  70. package/lib/typescript/module/components/Menu/index.d.ts.map +1 -1
  71. package/lib/typescript/module/components/Menu/placement.d.ts +47 -0
  72. package/lib/typescript/module/components/Menu/placement.d.ts.map +1 -0
  73. package/lib/typescript/module/components/Menu/placement.test.d.ts +2 -0
  74. package/lib/typescript/module/components/Menu/placement.test.d.ts.map +1 -0
  75. package/lib/typescript/module/components/Select/Select.d.ts +3 -1
  76. package/lib/typescript/module/components/Select/Select.d.ts.map +1 -1
  77. package/package.json +1 -1
  78. package/src/components/Menu/Menu.tsx +37 -46
  79. package/src/components/Menu/MenuButton.tsx +9 -1
  80. package/src/components/Menu/SelectButton.tsx +9 -1
  81. package/src/components/Menu/UserMenu.tsx +108 -0
  82. package/src/components/Menu/index.ts +2 -0
  83. package/src/components/Menu/placement.ts +107 -0
  84. package/src/components/Select/Select.tsx +4 -0
@@ -1,34 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  import { useEffect, useRef, useState } from 'react';
4
- import { Animated, Dimensions, Easing, Modal, Platform, Pressable, View } from 'react-native';
4
+ import { Animated, Dimensions, Easing, Modal, Platform, Pressable, StatusBar, View } from 'react-native';
5
+ import { computeMenuPlacement } from "./placement.js";
5
6
 
6
7
  /** A point on a box: a vertical and a horizontal edge/center. */
7
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
8
- const V_FRAC = {
9
- top: 0,
10
- center: 0.5,
11
- bottom: 1
12
- };
13
- const H_FRAC = {
14
- left: 0,
15
- center: 0.5,
16
- right: 1
17
- };
18
8
 
19
9
  /** State handed to the trigger renderer and (optionally) the content renderer. */
20
-
10
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
21
11
  const ZERO_INSETS = {
22
12
  top: 0,
23
13
  right: 0,
24
14
  bottom: 0,
25
15
  left: 0
26
16
  };
27
- function clamp(value, min, max) {
28
- if (max < min) return min;
29
- return Math.min(Math.max(value, min), max);
30
- }
31
17
 
18
+ /** Default coordinate offset for the translucent Modal (Android status bar). */
19
+ const DEFAULT_STATUS_BAR_HEIGHT = Platform.OS === 'android' ? StatusBar.currentHeight ?? 0 : 0;
32
20
  /**
33
21
  * Anchored overlay menu. Renders a trigger inline and, when open, a floating
34
22
  * panel positioned relative to the trigger via two origins — `anchorOrigin`
@@ -50,6 +38,7 @@ export function Menu({
50
38
  offset = 8,
51
39
  autoFit = true,
52
40
  insets = ZERO_INSETS,
41
+ statusBarHeight = DEFAULT_STATUS_BAR_HEIGHT,
53
42
  open: openProp,
54
43
  onOpenChange,
55
44
  screenPadding = 8,
@@ -117,43 +106,27 @@ export function Menu({
117
106
  if (naturalHeight === null) setNaturalHeight(height);
118
107
  };
119
108
 
120
- // Auto-fit: choose a vertical direction with room and cap the height so the
121
- // menu never runs off-screen. Only meaningful for a "drop" origin config
122
- // (top↔bottom); otherwise we keep the origins as given.
123
- const isDropConfig = anchorOrigin.vertical === 'bottom' && menuOrigin.vertical === 'top' || anchorOrigin.vertical === 'top' && menuOrigin.vertical === 'bottom';
124
- const preferredUp = anchorOrigin.vertical === 'top' && menuOrigin.vertical === 'bottom';
125
- let effAnchor = anchorOrigin;
126
- let effMenu = menuOrigin;
127
- let autoMaxHeight;
128
- if (autoFit && isDropConfig && rect && naturalHeight !== null) {
129
- const screen = Dimensions.get('window');
130
- const spaceBelow = screen.height - insets.bottom - (rect.y + rect.height) - offset - screenPadding;
131
- const spaceAbove = rect.y - insets.top - offset - screenPadding;
132
- let up = preferredUp;
133
- if (!preferredUp) up = naturalHeight > spaceBelow && spaceAbove > spaceBelow;else up = !(naturalHeight > spaceAbove && spaceBelow > spaceAbove);
134
- const chosen = up ? spaceAbove : spaceBelow;
135
- if (naturalHeight > chosen && chosen > 0) autoMaxHeight = chosen;
136
- effAnchor = {
137
- horizontal: anchorOrigin.horizontal,
138
- vertical: up ? 'top' : 'bottom'
139
- };
140
- effMenu = {
141
- horizontal: menuOrigin.horizontal,
142
- vertical: up ? 'bottom' : 'top'
143
- };
144
- }
145
- let top = 0;
146
- let left = 0;
147
- if (rect && menuSize) {
148
- const screen = Dimensions.get('window');
149
- const anchorX = rect.x + H_FRAC[effAnchor.horizontal] * rect.width;
150
- const anchorY = rect.y + V_FRAC[effAnchor.vertical] * rect.height;
151
- const offsetY = effMenu.vertical === 'top' ? offset : effMenu.vertical === 'bottom' ? -offset : 0;
152
- left = anchorX - H_FRAC[effMenu.horizontal] * menuSize.width;
153
- top = anchorY - V_FRAC[effMenu.vertical] * menuSize.height + offsetY;
154
- left = clamp(left, screenPadding + insets.left, screen.width - insets.right - menuSize.width - screenPadding);
155
- top = clamp(top, screenPadding + insets.top, screen.height - insets.bottom - menuSize.height - screenPadding);
156
- }
109
+ // All positioning math lives in the pure `computeMenuPlacement` (unit-tested):
110
+ // it applies the status-bar offset, auto-fit flip, height cap and screen clamp.
111
+ const screen = Dimensions.get('window');
112
+ const placement = rect && naturalHeight !== null ? computeMenuPlacement({
113
+ rect,
114
+ menuWidth: menuSize?.width ?? 0,
115
+ menuHeight: menuSize?.height ?? naturalHeight,
116
+ naturalHeight,
117
+ anchorOrigin,
118
+ menuOrigin,
119
+ offset,
120
+ screenPadding,
121
+ insets,
122
+ screenWidth: screen.width,
123
+ screenHeight: screen.height,
124
+ statusBarHeight,
125
+ autoFit
126
+ }) : null;
127
+ const top = placement?.top ?? 0;
128
+ const left = placement?.left ?? 0;
129
+ const autoMaxHeight = placement?.maxHeight;
157
130
  const placed = Boolean(rect && menuSize);
158
131
  const content = typeof children === 'function' ? children({
159
132
  close,
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useState","Animated","Dimensions","Easing","Modal","Platform","Pressable","View","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","V_FRAC","top","center","bottom","H_FRAC","left","right","ZERO_INSETS","clamp","value","min","max","Math","Menu","renderTrigger","children","anchorOrigin","vertical","horizontal","menuOrigin","offset","autoFit","insets","open","openProp","onOpenChange","screenPadding","triggerStyle","triggerRef","uncontrolledOpen","setUncontrolledOpen","isControlled","undefined","rect","setRect","menuSize","setMenuSize","naturalHeight","setNaturalHeight","anim","Value","current","setOpen","next","close","toggle","setValue","measureInWindow","x","y","width","height","timing","toValue","duration","easing","out","ease","useNativeDriver","OS","start","onMenuLayout","e","nativeEvent","layout","isDropConfig","preferredUp","effAnchor","effMenu","autoMaxHeight","screen","get","spaceBelow","spaceAbove","up","chosen","anchorX","anchorY","offsetY","placed","Boolean","content","triggerWidth","maxHeight","ref","collapsable","style","alignSelf","visible","transparent","animationType","onRequestClose","statusBarTranslucent","accessibilityLabel","onPress","flex","onLayout","onStartShouldSetResponder","position","opacity","transform","scale","interpolate","inputRange","outputRange"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/Menu.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAwB,OAAO;AACnE,SACEC,QAAQ,EACRC,UAAU,EACVC,MAAM,EACNC,KAAK,EACLC,QAAQ,EACRC,SAAS,EACTC,IAAI,QAIC,cAAc;;AAKrB;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAMA,MAAMC,MAAsC,GAAG;EAAEC,GAAG,EAAE,CAAC;EAAEC,MAAM,EAAE,GAAG;EAAEC,MAAM,EAAE;AAAE,CAAC;AACjF,MAAMC,MAAwC,GAAG;EAAEC,IAAI,EAAE,CAAC;EAAEH,MAAM,EAAE,GAAG;EAAEI,KAAK,EAAE;AAAE,CAAC;;AAEnF;;AAiDA,MAAMC,WAAuB,GAAG;EAAEN,GAAG,EAAE,CAAC;EAAEK,KAAK,EAAE,CAAC;EAAEH,MAAM,EAAE,CAAC;EAAEE,IAAI,EAAE;AAAE,CAAC;AASxE,SAASG,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAU;EAC9D,IAAIA,GAAG,GAAGD,GAAG,EAAE,OAAOA,GAAG;EACzB,OAAOE,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,IAAIA,CAAC;EACnBC,aAAa;EACbC,QAAQ;EACRC,YAAY,GAAG;IAAEC,QAAQ,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAO,CAAC;EACzDC,UAAU,GAAG;IAAEF,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAO,CAAC;EACpDE,MAAM,GAAG,CAAC;EACVC,OAAO,GAAG,IAAI;EACdC,MAAM,GAAGf,WAAW;EACpBgB,IAAI,EAAEC,QAAQ;EACdC,YAAY;EACZC,aAAa,GAAG,CAAC;EACjBC;AACS,CAAC,EAAE;EACZ,MAAMC,UAAU,GAAG3C,MAAM,CAAO,IAAI,CAAC;EACrC,MAAM,CAAC4C,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG5C,QAAQ,CAAC,KAAK,CAAC;EAC/D,MAAM6C,YAAY,GAAGP,QAAQ,KAAKQ,SAAS;EAC3C,MAAMT,IAAI,GAAGQ,YAAY,GAAGP,QAAQ,GAAGK,gBAAgB;EAEvD,MAAM,CAACI,IAAI,EAAEC,OAAO,CAAC,GAAGhD,QAAQ,CAAc,IAAI,CAAC;EACnD,MAAM,CAACiD,QAAQ,EAAEC,WAAW,CAAC,GAAGlD,QAAQ,CAA2C,IAAI,CAAC;EACxF;EACA;EACA;EACA,MAAM,CAACmD,aAAa,EAAEC,gBAAgB,CAAC,GAAGpD,QAAQ,CAAgB,IAAI,CAAC;EACvE,MAAMqD,IAAI,GAAGtD,MAAM,CAAC,IAAIE,QAAQ,CAACqD,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EAElD,MAAMC,OAAO,GAAIC,IAAa,IAAK;IACjC,IAAI,CAACZ,YAAY,EAAED,mBAAmB,CAACa,IAAI,CAAC;IAC5ClB,YAAY,GAAGkB,IAAI,CAAC;EACtB,CAAC;EACD,MAAMC,KAAK,GAAGA,CAAA,KAAMF,OAAO,CAAC,KAAK,CAAC;EAClC,MAAMG,MAAM,GAAGA,CAAA,KAAMH,OAAO,CAAC,CAACnB,IAAI,CAAC;;EAEnC;EACAvC,SAAS,CAAC,MAAM;IACd,IAAI,CAACuC,IAAI,EAAE;MACTa,WAAW,CAAC,IAAI,CAAC;MACjBE,gBAAgB,CAAC,IAAI,CAAC;MACtBC,IAAI,CAACO,QAAQ,CAAC,CAAC,CAAC;MAChB;IACF;IACAlB,UAAU,CAACa,OAAO,EAAEM,eAAe,CAAC,CAACC,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,KAAK;MAC3DjB,OAAO,CAAC;QAAEc,CAAC;QAAEC,CAAC;QAAEC,KAAK;QAAEC;MAAO,CAAC,CAAC;IAClC,CAAC,CAAC;EACJ,CAAC,EAAE,CAAC5B,IAAI,EAAEgB,IAAI,CAAC,CAAC;;EAEhB;EACAvD,SAAS,CAAC,MAAM;IACd,IAAIuC,IAAI,IAAIU,IAAI,IAAIE,QAAQ,EAAE;MAC5BhD,QAAQ,CAACiE,MAAM,CAACb,IAAI,EAAE;QACpBc,OAAO,EAAE,CAAC;QACVC,QAAQ,EAAE,GAAG;QACbC,MAAM,EAAElE,MAAM,CAACmE,GAAG,CAACnE,MAAM,CAACoE,IAAI,CAAC;QAC/BC,eAAe,EAAEnE,QAAQ,CAACoE,EAAE,KAAK;MACnC,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;IACZ;EACF,CAAC,EAAE,CAACrC,IAAI,EAAEU,IAAI,EAAEE,QAAQ,EAAEI,IAAI,CAAC,CAAC;EAEhC,MAAMsB,YAAY,GAAIC,CAAoB,IAAK;IAC7C,MAAM;MAAEZ,KAAK;MAAEC;IAAO,CAAC,GAAGW,CAAC,CAACC,WAAW,CAACC,MAAM;IAC9C,IAAI,CAAC7B,QAAQ,IAAIA,QAAQ,CAACe,KAAK,KAAKA,KAAK,IAAIf,QAAQ,CAACgB,MAAM,KAAKA,MAAM,EAAE;MACvEf,WAAW,CAAC;QAAEc,KAAK;QAAEC;MAAO,CAAC,CAAC;IAChC;IACA;IACA,IAAId,aAAa,KAAK,IAAI,EAAEC,gBAAgB,CAACa,MAAM,CAAC;EACtD,CAAC;;EAED;EACA;EACA;EACA,MAAMc,YAAY,GACfjD,YAAY,CAACC,QAAQ,KAAK,QAAQ,IAAIE,UAAU,CAACF,QAAQ,KAAK,KAAK,IACnED,YAAY,CAACC,QAAQ,KAAK,KAAK,IAAIE,UAAU,CAACF,QAAQ,KAAK,QAAS;EACvE,MAAMiD,WAAW,GAAGlD,YAAY,CAACC,QAAQ,KAAK,KAAK,IAAIE,UAAU,CAACF,QAAQ,KAAK,QAAQ;EAEvF,IAAIkD,SAAS,GAAGnD,YAAY;EAC5B,IAAIoD,OAAO,GAAGjD,UAAU;EACxB,IAAIkD,aAAiC;EAErC,IAAIhD,OAAO,IAAI4C,YAAY,IAAIhC,IAAI,IAAII,aAAa,KAAK,IAAI,EAAE;IAC7D,MAAMiC,MAAM,GAAGlF,UAAU,CAACmF,GAAG,CAAC,QAAQ,CAAC;IACvC,MAAMC,UAAU,GAAGF,MAAM,CAACnB,MAAM,GAAG7B,MAAM,CAACnB,MAAM,IAAI8B,IAAI,CAACgB,CAAC,GAAGhB,IAAI,CAACkB,MAAM,CAAC,GAAG/B,MAAM,GAAGM,aAAa;IAClG,MAAM+C,UAAU,GAAGxC,IAAI,CAACgB,CAAC,GAAG3B,MAAM,CAACrB,GAAG,GAAGmB,MAAM,GAAGM,aAAa;IAC/D,IAAIgD,EAAE,GAAGR,WAAW;IACpB,IAAI,CAACA,WAAW,EAAEQ,EAAE,GAAGrC,aAAa,GAAGmC,UAAU,IAAIC,UAAU,GAAGD,UAAU,CAAC,KACxEE,EAAE,GAAG,EAAErC,aAAa,GAAGoC,UAAU,IAAID,UAAU,GAAGC,UAAU,CAAC;IAClE,MAAME,MAAM,GAAGD,EAAE,GAAGD,UAAU,GAAGD,UAAU;IAC3C,IAAInC,aAAa,GAAGsC,MAAM,IAAIA,MAAM,GAAG,CAAC,EAAEN,aAAa,GAAGM,MAAM;IAChER,SAAS,GAAG;MAAEjD,UAAU,EAAEF,YAAY,CAACE,UAAU;MAAED,QAAQ,EAAEyD,EAAE,GAAG,KAAK,GAAG;IAAS,CAAC;IACpFN,OAAO,GAAG;MAAElD,UAAU,EAAEC,UAAU,CAACD,UAAU;MAAED,QAAQ,EAAEyD,EAAE,GAAG,QAAQ,GAAG;IAAM,CAAC;EAClF;EAEA,IAAIzE,GAAG,GAAG,CAAC;EACX,IAAII,IAAI,GAAG,CAAC;EACZ,IAAI4B,IAAI,IAAIE,QAAQ,EAAE;IACpB,MAAMmC,MAAM,GAAGlF,UAAU,CAACmF,GAAG,CAAC,QAAQ,CAAC;IACvC,MAAMK,OAAO,GAAG3C,IAAI,CAACe,CAAC,GAAG5C,MAAM,CAAC+D,SAAS,CAACjD,UAAU,CAAC,GAAGe,IAAI,CAACiB,KAAK;IAClE,MAAM2B,OAAO,GAAG5C,IAAI,CAACgB,CAAC,GAAGjD,MAAM,CAACmE,SAAS,CAAClD,QAAQ,CAAC,GAAGgB,IAAI,CAACkB,MAAM;IACjE,MAAM2B,OAAO,GACXV,OAAO,CAACnD,QAAQ,KAAK,KAAK,GAAGG,MAAM,GAAGgD,OAAO,CAACnD,QAAQ,KAAK,QAAQ,GAAG,CAACG,MAAM,GAAG,CAAC;IACnFf,IAAI,GAAGuE,OAAO,GAAGxE,MAAM,CAACgE,OAAO,CAAClD,UAAU,CAAC,GAAGiB,QAAQ,CAACe,KAAK;IAC5DjD,GAAG,GAAG4E,OAAO,GAAG7E,MAAM,CAACoE,OAAO,CAACnD,QAAQ,CAAC,GAAGkB,QAAQ,CAACgB,MAAM,GAAG2B,OAAO;IACpEzE,IAAI,GAAGG,KAAK,CAACH,IAAI,EAAEqB,aAAa,GAAGJ,MAAM,CAACjB,IAAI,EAAEiE,MAAM,CAACpB,KAAK,GAAG5B,MAAM,CAAChB,KAAK,GAAG6B,QAAQ,CAACe,KAAK,GAAGxB,aAAa,CAAC;IAC7GzB,GAAG,GAAGO,KAAK,CAACP,GAAG,EAAEyB,aAAa,GAAGJ,MAAM,CAACrB,GAAG,EAAEqE,MAAM,CAACnB,MAAM,GAAG7B,MAAM,CAACnB,MAAM,GAAGgC,QAAQ,CAACgB,MAAM,GAAGzB,aAAa,CAAC;EAC/G;EAEA,MAAMqD,MAAM,GAAGC,OAAO,CAAC/C,IAAI,IAAIE,QAAQ,CAAC;EACxC,MAAM8C,OAAO,GACX,OAAOlE,QAAQ,KAAK,UAAU,GAC1BA,QAAQ,CAAC;IAAE6B,KAAK;IAAEsC,YAAY,EAAEjD,IAAI,EAAEiB,KAAK;IAAEiC,SAAS,EAAEd;EAAc,CAAC,CAAC,GACxEtD,QAAQ;EAEd,oBACEhB,KAAA,CAAAF,SAAA;IAAAkB,QAAA,gBACEpB,IAAA,CAACF,IAAI;MACH2F,GAAG,EAAExD,UAAW;MAChByD,WAAW,EAAE,KAAM;MACnBC,KAAK,EAAE,CAAC;QAAEC,SAAS,EAAE;MAAa,CAAC,EAAE5D,YAAY,CAAE;MAAAZ,QAAA,EAElDD,aAAa,CAAC;QAAES,IAAI;QAAEsB,MAAM;QAAED;MAAM,CAAC;IAAC,CACnC,CAAC,eAEPjD,IAAA,CAACL,KAAK;MACJkG,OAAO,EAAEjE,IAAK;MACdkE,WAAW;MACXC,aAAa,EAAC,MAAM;MACpBC,cAAc,EAAE/C,KAAM;MACtBgD,oBAAoB;MAAA7E,QAAA,eAEpBpB,IAAA,CAACH,SAAS;QACRqG,kBAAkB,EAAC,YAAY;QAC/BC,OAAO,EAAElD,KAAM;QACf0C,KAAK,EAAE;UAAES,IAAI,EAAE;QAAE,CAAE;QAAAhF,QAAA,eAEnBpB,IAAA,CAACR,QAAQ,CAACM,IAAI;UACZuG,QAAQ,EAAEnC;UACV;UAAA;UACAoC,yBAAyB,EAAEA,CAAA,KAAM,IAAK;UACtCX,KAAK,EAAE;YACLY,QAAQ,EAAE,UAAU;YACpBjG,GAAG;YACHI,IAAI;YACJ8F,OAAO,EAAEpB,MAAM,GAAGxC,IAAI,GAAG,CAAC;YAC1B6D,SAAS,EAAE,CAAC;cAAEC,KAAK,EAAEtB,MAAM,GAAGxC,IAAI,CAAC+D,WAAW,CAAC;gBAAEC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAEC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;cAAE,CAAC,CAAC,GAAG;YAAE,CAAC;UACtG,CAAE;UAAAzF,QAAA,EAEDkE;QAAO,CACK;MAAC,CACP;IAAC,CACP,CAAC;EAAA,CACR,CAAC;AAEP","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useState","Animated","Dimensions","Easing","Modal","Platform","Pressable","StatusBar","View","computeMenuPlacement","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ZERO_INSETS","top","right","bottom","left","DEFAULT_STATUS_BAR_HEIGHT","OS","currentHeight","Menu","renderTrigger","children","anchorOrigin","vertical","horizontal","menuOrigin","offset","autoFit","insets","statusBarHeight","open","openProp","onOpenChange","screenPadding","triggerStyle","triggerRef","uncontrolledOpen","setUncontrolledOpen","isControlled","undefined","rect","setRect","menuSize","setMenuSize","naturalHeight","setNaturalHeight","anim","Value","current","setOpen","next","close","toggle","setValue","measureInWindow","x","y","width","height","timing","toValue","duration","easing","out","ease","useNativeDriver","start","onMenuLayout","e","nativeEvent","layout","screen","get","placement","menuWidth","menuHeight","screenWidth","screenHeight","autoMaxHeight","maxHeight","placed","Boolean","content","triggerWidth","ref","collapsable","style","alignSelf","visible","transparent","animationType","onRequestClose","statusBarTranslucent","accessibilityLabel","onPress","flex","onLayout","onStartShouldSetResponder","position","opacity","transform","scale","interpolate","inputRange","outputRange"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/Menu.tsx"],"mappings":"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","ignoreList":[]}
@@ -28,6 +28,8 @@ export function MenuButton({
28
28
  horizontal: 'right'
29
29
  },
30
30
  offset = 8,
31
+ insets,
32
+ statusBarHeight,
31
33
  menuWidth,
32
34
  showDividers,
33
35
  closeOnSelect = true,
@@ -38,6 +40,8 @@ export function MenuButton({
38
40
  anchorOrigin: anchorOrigin,
39
41
  menuOrigin: menuOrigin,
40
42
  offset: offset,
43
+ insets: insets,
44
+ statusBarHeight: statusBarHeight,
41
45
  open: open,
42
46
  onOpenChange: onOpenChange,
43
47
  renderTrigger: ({
@@ -1 +1 @@
1
- {"version":3,"names":["Dropdown","IconButton","Menu","jsx","_jsx","MenuButton","options","onSelect","icon","accessibilityLabel","variant","size","shape","disabled","anchorOrigin","vertical","horizontal","menuOrigin","offset","menuWidth","showDividers","closeOnSelect","open","onOpenChange","renderTrigger","toggle","onPress","children","close","maxHeight","width","key"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/MenuButton.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAA4B,yBAAsB;AACnE,SAASC,UAAU,QAA2E,6BAA0B;AAExH,SAASC,IAAI,QAAyB,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAqC/C;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,OAAO;EACPC,QAAQ;EACRC,IAAI,GAAG,MAAM;EACbC,kBAAkB,GAAG,cAAc;EACnCC,OAAO,GAAG,WAAW;EACrBC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,OAAO;EACfC,QAAQ,GAAG,KAAK;EAChBC,YAAY,GAAG;IAAEC,QAAQ,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAQ,CAAC;EAC1DC,UAAU,GAAG;IAAEF,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAQ,CAAC;EACrDE,MAAM,GAAG,CAAC;EACVC,SAAS;EACTC,YAAY;EACZC,aAAa,GAAG,IAAI;EACpBC,IAAI;EACJC;AACe,CAAC,EAAE;EAClB,oBACEnB,IAAA,CAACF,IAAI;IACHY,YAAY,EAAEA,YAAa;IAC3BG,UAAU,EAAEA,UAAW;IACvBC,MAAM,EAAEA,MAAO;IACfI,IAAI,EAAEA,IAAK;IACXC,YAAY,EAAEA,YAAa;IAC3BC,aAAa,EAAEA,CAAC;MAAEC;IAAO,CAAC,kBACxBrB,IAAA,CAACH,UAAU;MACTO,IAAI,EAAEA,IAAK;MACXC,kBAAkB,EAAEA,kBAAmB;MACvCC,OAAO,EAAEA,OAAQ;MACjBC,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbC,QAAQ,EAAEA,QAAS;MACnBa,OAAO,EAAED;IAAO,CACjB,CACD;IAAAE,QAAA,EAEDA,CAAC;MAAEC,KAAK;MAAEC;IAAU,CAAC,kBACpBzB,IAAA,CAACJ,QAAQ;MACPM,OAAO,EAAEA,OAAQ;MACjBwB,KAAK,EAAEX,SAAU;MACjBU,SAAS,EAAEA,SAAU;MACrBT,YAAY,EAAEA,YAAa;MAC3Bb,QAAQ,EAAGwB,GAAG,IAAK;QACjBxB,QAAQ,GAAGwB,GAAG,CAAC;QACf,IAAIV,aAAa,EAAEO,KAAK,CAAC,CAAC;MAC5B;IAAE,CACH;EACF,CACG,CAAC;AAEX","ignoreList":[]}
1
+ {"version":3,"names":["Dropdown","IconButton","Menu","jsx","_jsx","MenuButton","options","onSelect","icon","accessibilityLabel","variant","size","shape","disabled","anchorOrigin","vertical","horizontal","menuOrigin","offset","insets","statusBarHeight","menuWidth","showDividers","closeOnSelect","open","onOpenChange","renderTrigger","toggle","onPress","children","close","maxHeight","width","key"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/MenuButton.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAA4B,yBAAsB;AACnE,SAASC,UAAU,QAA2E,6BAA0B;AAExH,SAASC,IAAI,QAA0C,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAyChE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EACzBC,OAAO;EACPC,QAAQ;EACRC,IAAI,GAAG,MAAM;EACbC,kBAAkB,GAAG,cAAc;EACnCC,OAAO,GAAG,WAAW;EACrBC,IAAI,GAAG,IAAI;EACXC,KAAK,GAAG,OAAO;EACfC,QAAQ,GAAG,KAAK;EAChBC,YAAY,GAAG;IAAEC,QAAQ,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAQ,CAAC;EAC1DC,UAAU,GAAG;IAAEF,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAQ,CAAC;EACrDE,MAAM,GAAG,CAAC;EACVC,MAAM;EACNC,eAAe;EACfC,SAAS;EACTC,YAAY;EACZC,aAAa,GAAG,IAAI;EACpBC,IAAI;EACJC;AACe,CAAC,EAAE;EAClB,oBACErB,IAAA,CAACF,IAAI;IACHY,YAAY,EAAEA,YAAa;IAC3BG,UAAU,EAAEA,UAAW;IACvBC,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfC,eAAe,EAAEA,eAAgB;IACjCI,IAAI,EAAEA,IAAK;IACXC,YAAY,EAAEA,YAAa;IAC3BC,aAAa,EAAEA,CAAC;MAAEC;IAAO,CAAC,kBACxBvB,IAAA,CAACH,UAAU;MACTO,IAAI,EAAEA,IAAK;MACXC,kBAAkB,EAAEA,kBAAmB;MACvCC,OAAO,EAAEA,OAAQ;MACjBC,IAAI,EAAEA,IAAK;MACXC,KAAK,EAAEA,KAAM;MACbC,QAAQ,EAAEA,QAAS;MACnBe,OAAO,EAAED;IAAO,CACjB,CACD;IAAAE,QAAA,EAEDA,CAAC;MAAEC,KAAK;MAAEC;IAAU,CAAC,kBACpB3B,IAAA,CAACJ,QAAQ;MACPM,OAAO,EAAEA,OAAQ;MACjB0B,KAAK,EAAEX,SAAU;MACjBU,SAAS,EAAEA,SAAU;MACrBT,YAAY,EAAEA,YAAa;MAC3Bf,QAAQ,EAAG0B,GAAG,IAAK;QACjB1B,QAAQ,GAAG0B,GAAG,CAAC;QACf,IAAIV,aAAa,EAAEO,KAAK,CAAC,CAAC;MAC5B;IAAE,CACH;EACF,CACG,CAAC;AAEX","ignoreList":[]}
@@ -59,6 +59,8 @@ export function SelectButton({
59
59
  horizontal: 'left'
60
60
  },
61
61
  offset = 8,
62
+ insets,
63
+ statusBarHeight,
62
64
  menuWidth,
63
65
  showDividers,
64
66
  closeOnSelect = true,
@@ -96,6 +98,8 @@ export function SelectButton({
96
98
  anchorOrigin: anchorOrigin,
97
99
  menuOrigin: menuOrigin,
98
100
  offset: offset,
101
+ insets: insets,
102
+ statusBarHeight: statusBarHeight,
99
103
  open: open,
100
104
  onOpenChange: onOpenChange,
101
105
  triggerStyle: fullWidth ? {
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useTheme","Button","Dropdown","Icon","Menu","jsx","_jsx","triggerForeground","theme","variant","action","state","colors","secondaryForeground","inverseForeground","destructiveSubtleForeground","successForeground","successSubtleForeground","primaryForeground","SelectButton","options","value","valueProp","defaultValue","onChange","placeholder","placeholderIcon","showSelectedIcon","chevron","size","fullWidth","disabled","anchorOrigin","vertical","horizontal","menuOrigin","offset","menuWidth","showDividers","closeOnSelect","open","onOpenChange","isControlled","undefined","uncontrolled","setUncontrolled","selected","find","o","key","label","triggerIcon","icon","fg","iconSize","setValue","rows","map","leading","kind","name","trailing","color","feedback","success","triggerStyle","alignSelf","renderTrigger","toggle","onPress","leftIcon","rightIcon","children","close","maxHeight","width","onSelect"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/SelectButton.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useState","useTheme","Button","Dropdown","Icon","Menu","jsx","_jsx","triggerForeground","theme","variant","action","state","colors","secondaryForeground","inverseForeground","destructiveSubtleForeground","successForeground","successSubtleForeground","primaryForeground","SelectButton","options","value","valueProp","defaultValue","onChange","placeholder","placeholderIcon","showSelectedIcon","chevron","size","fullWidth","disabled","anchorOrigin","vertical","horizontal","menuOrigin","offset","insets","statusBarHeight","menuWidth","showDividers","closeOnSelect","open","onOpenChange","isControlled","undefined","uncontrolled","setUncontrolled","selected","find","o","key","label","triggerIcon","icon","fg","iconSize","setValue","rows","map","leading","kind","name","trailing","color","feedback","success","triggerStyle","alignSelf","renderTrigger","toggle","onPress","leftIcon","rightIcon","children","close","maxHeight","width","onSelect"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/SelectButton.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ import { Dropdown } from "../Dropdown/Dropdown.js";
4
+ import { UserChip } from "../UserChip/UserChip.js";
5
+ import { Menu } from "./Menu.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ /**
8
+ * User menu — an avatar / `UserChip` that opens an anchored `Dropdown` (e.g. an
9
+ * account menu). A composed component built from `UserChip` + `Menu` +
10
+ * `Dropdown`. Pass a `name` to use the labelled pill as the trigger, or omit it
11
+ * for just the avatar. Dismisses on outside press / back button.
12
+ */
13
+ export function UserMenu({
14
+ options,
15
+ onSelect,
16
+ source,
17
+ name,
18
+ initials,
19
+ size = 'md',
20
+ chipBackgroundColor,
21
+ chipColor,
22
+ anchorOrigin = {
23
+ vertical: 'bottom',
24
+ horizontal: 'left'
25
+ },
26
+ menuOrigin = {
27
+ vertical: 'top',
28
+ horizontal: 'left'
29
+ },
30
+ offset = 8,
31
+ insets,
32
+ statusBarHeight,
33
+ menuWidth,
34
+ showDividers,
35
+ closeOnSelect = true,
36
+ open,
37
+ onOpenChange
38
+ }) {
39
+ return /*#__PURE__*/_jsx(Menu, {
40
+ anchorOrigin: anchorOrigin,
41
+ menuOrigin: menuOrigin,
42
+ offset: offset,
43
+ insets: insets,
44
+ statusBarHeight: statusBarHeight,
45
+ open: open,
46
+ onOpenChange: onOpenChange,
47
+ renderTrigger: ({
48
+ toggle
49
+ }) => /*#__PURE__*/_jsx(UserChip, {
50
+ source: source,
51
+ name: name,
52
+ initials: initials,
53
+ size: size,
54
+ backgroundColor: chipBackgroundColor,
55
+ color: chipColor,
56
+ onPress: toggle
57
+ }),
58
+ children: ({
59
+ close,
60
+ maxHeight
61
+ }) => /*#__PURE__*/_jsx(Dropdown, {
62
+ options: options,
63
+ width: menuWidth,
64
+ maxHeight: maxHeight,
65
+ showDividers: showDividers,
66
+ onSelect: key => {
67
+ onSelect?.(key);
68
+ if (closeOnSelect) close();
69
+ }
70
+ })
71
+ });
72
+ }
73
+ //# sourceMappingURL=UserMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dropdown","UserChip","Menu","jsx","_jsx","UserMenu","options","onSelect","source","name","initials","size","chipBackgroundColor","chipColor","anchorOrigin","vertical","horizontal","menuOrigin","offset","insets","statusBarHeight","menuWidth","showDividers","closeOnSelect","open","onOpenChange","renderTrigger","toggle","backgroundColor","color","onPress","children","close","maxHeight","width","key"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/UserMenu.tsx"],"mappings":";;AACA,SAASA,QAAQ,QAA4B,yBAAsB;AACnE,SAASC,QAAQ,QAA2B,yBAAsB;AAClE,SAASC,IAAI,QAA0C,WAAQ;AAAC,SAAAC,GAAA,IAAAC,IAAA;AA2ChE;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,QAAQA,CAAC;EACvBC,OAAO;EACPC,QAAQ;EACRC,MAAM;EACNC,IAAI;EACJC,QAAQ;EACRC,IAAI,GAAG,IAAI;EACXC,mBAAmB;EACnBC,SAAS;EACTC,YAAY,GAAG;IAAEC,QAAQ,EAAE,QAAQ;IAAEC,UAAU,EAAE;EAAO,CAAC;EACzDC,UAAU,GAAG;IAAEF,QAAQ,EAAE,KAAK;IAAEC,UAAU,EAAE;EAAO,CAAC;EACpDE,MAAM,GAAG,CAAC;EACVC,MAAM;EACNC,eAAe;EACfC,SAAS;EACTC,YAAY;EACZC,aAAa,GAAG,IAAI;EACpBC,IAAI;EACJC;AACa,CAAC,EAAE;EAChB,oBACErB,IAAA,CAACF,IAAI;IACHY,YAAY,EAAEA,YAAa;IAC3BG,UAAU,EAAEA,UAAW;IACvBC,MAAM,EAAEA,MAAO;IACfC,MAAM,EAAEA,MAAO;IACfC,eAAe,EAAEA,eAAgB;IACjCI,IAAI,EAAEA,IAAK;IACXC,YAAY,EAAEA,YAAa;IAC3BC,aAAa,EAAEA,CAAC;MAAEC;IAAO,CAAC,kBACxBvB,IAAA,CAACH,QAAQ;MACPO,MAAM,EAAEA,MAAO;MACfC,IAAI,EAAEA,IAAK;MACXC,QAAQ,EAAEA,QAAS;MACnBC,IAAI,EAAEA,IAAK;MACXiB,eAAe,EAAEhB,mBAAoB;MACrCiB,KAAK,EAAEhB,SAAU;MACjBiB,OAAO,EAAEH;IAAO,CACjB,CACD;IAAAI,QAAA,EAEDA,CAAC;MAAEC,KAAK;MAAEC;IAAU,CAAC,kBACpB7B,IAAA,CAACJ,QAAQ;MACPM,OAAO,EAAEA,OAAQ;MACjB4B,KAAK,EAAEb,SAAU;MACjBY,SAAS,EAAEA,SAAU;MACrBX,YAAY,EAAEA,YAAa;MAC3Bf,QAAQ,EAAG4B,GAAG,IAAK;QACjB5B,QAAQ,GAAG4B,GAAG,CAAC;QACf,IAAIZ,aAAa,EAAES,KAAK,CAAC,CAAC;MAC5B;IAAE,CACH;EACF,CACG,CAAC;AAEX","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ import { View } from 'react-native';
4
+ import { UserMenu } from "./UserMenu.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ const meta = {
7
+ title: 'Components/UserMenu',
8
+ component: UserMenu
9
+ };
10
+ export default meta;
11
+ const PHOTO = {
12
+ uri: 'https://i.pravatar.cc/150?img=47'
13
+ };
14
+ const ACCOUNT = [{
15
+ key: 'profile',
16
+ label: 'Profile',
17
+ leading: {
18
+ kind: 'icon',
19
+ name: 'user'
20
+ }
21
+ }, {
22
+ key: 'settings',
23
+ label: 'Settings',
24
+ leading: {
25
+ kind: 'icon',
26
+ name: 'settings'
27
+ }
28
+ }, {
29
+ key: 'div',
30
+ type: 'divider'
31
+ }, {
32
+ key: 'logout',
33
+ label: 'Log out',
34
+ destructive: true
35
+ }];
36
+
37
+ /** Trigger = the UserChip pill (avatar + name). */
38
+ export const ChipTrigger = {
39
+ render: () => /*#__PURE__*/_jsx(View, {
40
+ style: {
41
+ padding: 24,
42
+ height: 320
43
+ },
44
+ children: /*#__PURE__*/_jsx(UserMenu, {
45
+ name: "Juana Gomez",
46
+ source: PHOTO,
47
+ size: "lg",
48
+ options: ACCOUNT,
49
+ menuWidth: 240,
50
+ onSelect: () => {}
51
+ })
52
+ })
53
+ };
54
+
55
+ /** Trigger = just the avatar (no name) — e.g. a header account button. */
56
+ export const AvatarTrigger = {
57
+ render: () => /*#__PURE__*/_jsx(View, {
58
+ style: {
59
+ padding: 24,
60
+ height: 320,
61
+ alignItems: 'flex-end'
62
+ },
63
+ children: /*#__PURE__*/_jsx(UserMenu, {
64
+ source: PHOTO,
65
+ initials: "JG",
66
+ size: "md",
67
+ options: ACCOUNT,
68
+ menuWidth: 220,
69
+ anchorOrigin: {
70
+ vertical: 'bottom',
71
+ horizontal: 'right'
72
+ },
73
+ menuOrigin: {
74
+ vertical: 'top',
75
+ horizontal: 'right'
76
+ },
77
+ onSelect: () => {}
78
+ })
79
+ })
80
+ };
81
+ //# sourceMappingURL=UserMenu.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["View","UserMenu","jsx","_jsx","meta","title","component","PHOTO","uri","ACCOUNT","key","label","leading","kind","name","type","destructive","ChipTrigger","render","style","padding","height","children","source","size","options","menuWidth","onSelect","AvatarTrigger","alignItems","initials","anchorOrigin","vertical","horizontal","menuOrigin"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/UserMenu.stories.tsx"],"mappings":";;AACA,SAASA,IAAI,QAAQ,cAAc;AACnC,SAASC,QAAQ,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,MAAMC,IAAI,GAAG;EACXC,KAAK,EAAE,qBAAqB;EAC5BC,SAAS,EAAEL;AACb,CAAiC;AAEjC,eAAeG,IAAI;AAGnB,MAAMG,KAAK,GAAG;EAAEC,GAAG,EAAE;AAAmC,CAAC;AAEzD,MAAMC,OAAwB,GAAG,CAC/B;EAAEC,GAAG,EAAE,SAAS;EAAEC,KAAK,EAAE,SAAS;EAAEC,OAAO,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEC,IAAI,EAAE;EAAO;AAAE,CAAC,EAC7E;EAAEJ,GAAG,EAAE,UAAU;EAAEC,KAAK,EAAE,UAAU;EAAEC,OAAO,EAAE;IAAEC,IAAI,EAAE,MAAM;IAAEC,IAAI,EAAE;EAAW;AAAE,CAAC,EACnF;EAAEJ,GAAG,EAAE,KAAK;EAAEK,IAAI,EAAE;AAAU,CAAC,EAC/B;EAAEL,GAAG,EAAE,QAAQ;EAAEC,KAAK,EAAE,SAAS;EAAEK,WAAW,EAAE;AAAK,CAAC,CACvD;;AAED;AACA,OAAO,MAAMC,WAAkB,GAAG;EAChCC,MAAM,EAAEA,CAAA,kBACNf,IAAA,CAACH,IAAI;IAACmB,KAAK,EAAE;MAAEC,OAAO,EAAE,EAAE;MAAEC,MAAM,EAAE;IAAI,CAAE;IAAAC,QAAA,eACxCnB,IAAA,CAACF,QAAQ;MAACa,IAAI,EAAC,aAAa;MAACS,MAAM,EAAEhB,KAAM;MAACiB,IAAI,EAAC,IAAI;MAACC,OAAO,EAAEhB,OAAQ;MAACiB,SAAS,EAAE,GAAI;MAACC,QAAQ,EAAEA,CAAA,KAAM,CAAC;IAAE,CAAE;EAAC,CAC1G;AAEV,CAAC;;AAED;AACA,OAAO,MAAMC,aAAoB,GAAG;EAClCV,MAAM,EAAEA,CAAA,kBACNf,IAAA,CAACH,IAAI;IAACmB,KAAK,EAAE;MAAEC,OAAO,EAAE,EAAE;MAAEC,MAAM,EAAE,GAAG;MAAEQ,UAAU,EAAE;IAAW,CAAE;IAAAP,QAAA,eAChEnB,IAAA,CAACF,QAAQ;MACPsB,MAAM,EAAEhB,KAAM;MACduB,QAAQ,EAAC,IAAI;MACbN,IAAI,EAAC,IAAI;MACTC,OAAO,EAAEhB,OAAQ;MACjBiB,SAAS,EAAE,GAAI;MACfK,YAAY,EAAE;QAAEC,QAAQ,EAAE,QAAQ;QAAEC,UAAU,EAAE;MAAQ,CAAE;MAC1DC,UAAU,EAAE;QAAEF,QAAQ,EAAE,KAAK;QAAEC,UAAU,EAAE;MAAQ,CAAE;MACrDN,QAAQ,EAAEA,CAAA,KAAM,CAAC;IAAE,CACpB;EAAC,CACE;AAEV,CAAC","ignoreList":[]}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ import { render, fireEvent, screen } from '@testing-library/react-native';
4
+ import { ThemeProvider } from "../../theme/index.js";
5
+ import { UserMenu } from "./UserMenu.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ function wrap(ui) {
8
+ return render(/*#__PURE__*/_jsx(ThemeProvider, {
9
+ children: ui
10
+ }));
11
+ }
12
+ const OPTIONS = [{
13
+ key: 'profile',
14
+ label: 'Profile'
15
+ }, {
16
+ key: 'logout',
17
+ label: 'Log out',
18
+ destructive: true
19
+ }];
20
+ describe('UserMenu', () => {
21
+ it('opens the menu when the chip trigger is pressed', () => {
22
+ wrap(/*#__PURE__*/_jsx(UserMenu, {
23
+ name: "Juana Gomez",
24
+ options: OPTIONS
25
+ }));
26
+ expect(screen.queryByText('Profile')).toBeNull();
27
+ fireEvent.press(screen.getByText('Juana Gomez'));
28
+ expect(screen.getByText('Profile')).toBeTruthy();
29
+ expect(screen.getByText('Log out')).toBeTruthy();
30
+ });
31
+ it('opens from an avatar-only trigger (no name)', () => {
32
+ wrap(/*#__PURE__*/_jsx(UserMenu, {
33
+ initials: "JG",
34
+ options: OPTIONS
35
+ }));
36
+ fireEvent.press(screen.getByText('JG'));
37
+ expect(screen.getByText('Profile')).toBeTruthy();
38
+ });
39
+ it('calls onSelect with the key and closes', () => {
40
+ const onSelect = jest.fn();
41
+ wrap(/*#__PURE__*/_jsx(UserMenu, {
42
+ name: "Juana Gomez",
43
+ options: OPTIONS,
44
+ onSelect: onSelect
45
+ }));
46
+ fireEvent.press(screen.getByText('Juana Gomez'));
47
+ fireEvent.press(screen.getByText('Profile'));
48
+ expect(onSelect).toHaveBeenCalledWith('profile');
49
+ expect(screen.queryByText('Log out')).toBeNull();
50
+ });
51
+ });
52
+ //# sourceMappingURL=UserMenu.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","fireEvent","screen","ThemeProvider","UserMenu","jsx","_jsx","wrap","ui","children","OPTIONS","key","label","destructive","describe","it","name","options","expect","queryByText","toBeNull","press","getByText","toBeTruthy","initials","onSelect","jest","fn","toHaveBeenCalledWith"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/UserMenu.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,EAAEC,MAAM,QAAQ,+BAA+B;AACzE,SAASC,aAAa,QAAQ,sBAAa;AAC3C,SAASC,QAAQ,QAAQ,eAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGtC,SAASC,IAAIA,CAACC,EAAsB,EAAE;EACpC,OAAOR,MAAM,cAACM,IAAA,CAACH,aAAa;IAAAM,QAAA,EAAED;EAAE,CAAgB,CAAC,CAAC;AACpD;AAEA,MAAME,OAAwB,GAAG,CAC/B;EAAEC,GAAG,EAAE,SAAS;EAAEC,KAAK,EAAE;AAAU,CAAC,EACpC;EAAED,GAAG,EAAE,QAAQ;EAAEC,KAAK,EAAE,SAAS;EAAEC,WAAW,EAAE;AAAK,CAAC,CACvD;AAEDC,QAAQ,CAAC,UAAU,EAAE,MAAM;EACzBC,EAAE,CAAC,iDAAiD,EAAE,MAAM;IAC1DR,IAAI,cAACD,IAAA,CAACF,QAAQ;MAACY,IAAI,EAAC,aAAa;MAACC,OAAO,EAAEP;IAAQ,CAAE,CAAC,CAAC;IACvDQ,MAAM,CAAChB,MAAM,CAACiB,WAAW,CAAC,SAAS,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;IAChDnB,SAAS,CAACoB,KAAK,CAACnB,MAAM,CAACoB,SAAS,CAAC,aAAa,CAAC,CAAC;IAChDJ,MAAM,CAAChB,MAAM,CAACoB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;IAChDL,MAAM,CAAChB,MAAM,CAACoB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;EAClD,CAAC,CAAC;EAEFR,EAAE,CAAC,6CAA6C,EAAE,MAAM;IACtDR,IAAI,cAACD,IAAA,CAACF,QAAQ;MAACoB,QAAQ,EAAC,IAAI;MAACP,OAAO,EAAEP;IAAQ,CAAE,CAAC,CAAC;IAClDT,SAAS,CAACoB,KAAK,CAACnB,MAAM,CAACoB,SAAS,CAAC,IAAI,CAAC,CAAC;IACvCJ,MAAM,CAAChB,MAAM,CAACoB,SAAS,CAAC,SAAS,CAAC,CAAC,CAACC,UAAU,CAAC,CAAC;EAClD,CAAC,CAAC;EAEFR,EAAE,CAAC,wCAAwC,EAAE,MAAM;IACjD,MAAMU,QAAQ,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;IAC1BpB,IAAI,cAACD,IAAA,CAACF,QAAQ;MAACY,IAAI,EAAC,aAAa;MAACC,OAAO,EAAEP,OAAQ;MAACe,QAAQ,EAAEA;IAAS,CAAE,CAAC,CAAC;IAC3ExB,SAAS,CAACoB,KAAK,CAACnB,MAAM,CAACoB,SAAS,CAAC,aAAa,CAAC,CAAC;IAChDrB,SAAS,CAACoB,KAAK,CAACnB,MAAM,CAACoB,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5CJ,MAAM,CAACO,QAAQ,CAAC,CAACG,oBAAoB,CAAC,SAAS,CAAC;IAChDV,MAAM,CAAChB,MAAM,CAACiB,WAAW,CAAC,SAAS,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC;EAClD,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
@@ -3,4 +3,5 @@
3
3
  export { Menu } from "./Menu.js";
4
4
  export { MenuButton } from "./MenuButton.js";
5
5
  export { SelectButton } from "./SelectButton.js";
6
+ export { UserMenu } from "./UserMenu.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Menu","MenuButton","SelectButton"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/index.ts"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,WAAQ;AAQ7B,SAASC,UAAU,QAAQ,iBAAc;AAEzC,SAASC,YAAY,QAAQ,mBAAgB","ignoreList":[]}
1
+ {"version":3,"names":["Menu","MenuButton","SelectButton","UserMenu"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/index.ts"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,WAAQ;AAQ7B,SAASC,UAAU,QAAQ,iBAAc;AAEzC,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,SAASC,QAAQ,QAAQ,eAAY","ignoreList":[]}
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+
3
+ const V_FRAC = {
4
+ top: 0,
5
+ center: 0.5,
6
+ bottom: 1
7
+ };
8
+ const H_FRAC = {
9
+ left: 0,
10
+ center: 0.5,
11
+ right: 1
12
+ };
13
+ function clamp(value, min, max) {
14
+ if (max < min) return min;
15
+ return Math.min(Math.max(value, min), max);
16
+ }
17
+
18
+ /**
19
+ * Pure placement math for `Menu`. Kept side-effect-free so it can be unit-tested
20
+ * exhaustively (status-bar offset, flip, cap, clamp) independent of RN layout.
21
+ *
22
+ * The key correctness point: the trigger is measured in *window* coordinates but
23
+ * the menu is painted in a full-screen (`statusBarTranslucent`) Modal, so we add
24
+ * `statusBarHeight` when converting the trigger position into the Modal's space.
25
+ * Available-space math cancels the offset out, so it uses window coordinates.
26
+ */
27
+ export function computeMenuPlacement(input) {
28
+ const {
29
+ rect,
30
+ menuWidth,
31
+ menuHeight,
32
+ naturalHeight,
33
+ anchorOrigin,
34
+ menuOrigin,
35
+ offset,
36
+ screenPadding,
37
+ insets,
38
+ screenWidth,
39
+ screenHeight,
40
+ statusBarHeight,
41
+ autoFit
42
+ } = input;
43
+ const isDropConfig = anchorOrigin.vertical === 'bottom' && menuOrigin.vertical === 'top' || anchorOrigin.vertical === 'top' && menuOrigin.vertical === 'bottom';
44
+ const preferredUp = anchorOrigin.vertical === 'top' && menuOrigin.vertical === 'bottom';
45
+ let effAnchor = anchorOrigin;
46
+ let effMenu = menuOrigin;
47
+ let maxHeight;
48
+ if (autoFit && isDropConfig) {
49
+ // Space math is in window coordinates (the status-bar offset cancels out).
50
+ const spaceBelow = screenHeight - insets.bottom - (rect.y + rect.height) - offset - screenPadding;
51
+ const spaceAbove = rect.y - insets.top - offset - screenPadding;
52
+ let up = preferredUp;
53
+ if (!preferredUp) up = naturalHeight > spaceBelow && spaceAbove > spaceBelow;else up = !(naturalHeight > spaceAbove && spaceBelow > spaceAbove);
54
+ const chosen = up ? spaceAbove : spaceBelow;
55
+ if (naturalHeight > chosen && chosen > 0) maxHeight = chosen;
56
+ effAnchor = {
57
+ horizontal: anchorOrigin.horizontal,
58
+ vertical: up ? 'top' : 'bottom'
59
+ };
60
+ effMenu = {
61
+ horizontal: menuOrigin.horizontal,
62
+ vertical: up ? 'bottom' : 'top'
63
+ };
64
+ }
65
+
66
+ // Convert the trigger position into the Modal's (full-screen) coordinate space.
67
+ const anchorX = rect.x + H_FRAC[effAnchor.horizontal] * rect.width;
68
+ const anchorY = rect.y + statusBarHeight + V_FRAC[effAnchor.vertical] * rect.height;
69
+ const offsetY = effMenu.vertical === 'top' ? offset : effMenu.vertical === 'bottom' ? -offset : 0;
70
+ let left = anchorX - H_FRAC[effMenu.horizontal] * menuWidth;
71
+ let top = anchorY - V_FRAC[effMenu.vertical] * menuHeight + offsetY;
72
+ left = clamp(left, screenPadding + insets.left, screenWidth - insets.right - menuWidth - screenPadding);
73
+ top = clamp(top, statusBarHeight + screenPadding + insets.top, screenHeight + statusBarHeight - insets.bottom - menuHeight - screenPadding);
74
+ return {
75
+ top,
76
+ left,
77
+ maxHeight
78
+ };
79
+ }
80
+ //# sourceMappingURL=placement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["V_FRAC","top","center","bottom","H_FRAC","left","right","clamp","value","min","max","Math","computeMenuPlacement","input","rect","menuWidth","menuHeight","naturalHeight","anchorOrigin","menuOrigin","offset","screenPadding","insets","screenWidth","screenHeight","statusBarHeight","autoFit","isDropConfig","vertical","preferredUp","effAnchor","effMenu","maxHeight","spaceBelow","y","height","spaceAbove","up","chosen","horizontal","anchorX","x","width","anchorY","offsetY"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/placement.ts"],"mappings":"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","ignoreList":[]}