@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.
- package/lib/commonjs/components/Dropdown/Dropdown.stories.js +99 -1
- package/lib/commonjs/components/Dropdown/Dropdown.stories.js.map +1 -1
- package/lib/commonjs/components/Menu/Menu.js +25 -52
- package/lib/commonjs/components/Menu/Menu.js.map +1 -1
- package/lib/commonjs/components/Menu/MenuButton.js +4 -0
- package/lib/commonjs/components/Menu/MenuButton.js.map +1 -1
- package/lib/commonjs/components/Menu/SelectButton.js +4 -0
- package/lib/commonjs/components/Menu/SelectButton.js.map +1 -1
- package/lib/commonjs/components/Menu/UserMenu.js +77 -0
- package/lib/commonjs/components/Menu/UserMenu.js.map +1 -0
- package/lib/commonjs/components/Menu/UserMenu.stories.js +85 -0
- package/lib/commonjs/components/Menu/UserMenu.stories.js.map +1 -0
- package/lib/commonjs/components/Menu/UserMenu.test.js +52 -0
- package/lib/commonjs/components/Menu/UserMenu.test.js.map +1 -0
- package/lib/commonjs/components/Menu/index.js +7 -0
- package/lib/commonjs/components/Menu/index.js.map +1 -1
- package/lib/commonjs/components/Menu/placement.js +84 -0
- package/lib/commonjs/components/Menu/placement.js.map +1 -0
- package/lib/commonjs/components/Menu/placement.test.js +186 -0
- package/lib/commonjs/components/Menu/placement.test.js.map +1 -0
- package/lib/commonjs/components/Select/Select.js +2 -0
- package/lib/commonjs/components/Select/Select.js.map +1 -1
- package/lib/module/components/Dropdown/Dropdown.stories.js +98 -0
- package/lib/module/components/Dropdown/Dropdown.stories.js.map +1 -1
- package/lib/module/components/Menu/Menu.js +27 -54
- package/lib/module/components/Menu/Menu.js.map +1 -1
- package/lib/module/components/Menu/MenuButton.js +4 -0
- package/lib/module/components/Menu/MenuButton.js.map +1 -1
- package/lib/module/components/Menu/SelectButton.js +4 -0
- package/lib/module/components/Menu/SelectButton.js.map +1 -1
- package/lib/module/components/Menu/UserMenu.js +73 -0
- package/lib/module/components/Menu/UserMenu.js.map +1 -0
- package/lib/module/components/Menu/UserMenu.stories.js +81 -0
- package/lib/module/components/Menu/UserMenu.stories.js.map +1 -0
- package/lib/module/components/Menu/UserMenu.test.js +52 -0
- package/lib/module/components/Menu/UserMenu.test.js.map +1 -0
- package/lib/module/components/Menu/index.js +1 -0
- package/lib/module/components/Menu/index.js.map +1 -1
- package/lib/module/components/Menu/placement.js +80 -0
- package/lib/module/components/Menu/placement.js.map +1 -0
- package/lib/module/components/Menu/placement.test.js +186 -0
- package/lib/module/components/Menu/placement.test.js.map +1 -0
- package/lib/module/components/Select/Select.js +2 -0
- package/lib/module/components/Select/Select.js.map +1 -1
- package/lib/typescript/commonjs/components/Menu/Menu.d.ts +7 -1
- package/lib/typescript/commonjs/components/Menu/Menu.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts +6 -2
- package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts +6 -2
- package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts +50 -0
- package/lib/typescript/commonjs/components/Menu/UserMenu.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/index.d.ts +2 -0
- package/lib/typescript/commonjs/components/Menu/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/components/Menu/placement.d.ts +47 -0
- package/lib/typescript/commonjs/components/Menu/placement.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/placement.test.d.ts +2 -0
- package/lib/typescript/commonjs/components/Menu/placement.test.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts +3 -1
- package/lib/typescript/commonjs/components/Select/Select.d.ts.map +1 -1
- package/lib/typescript/module/components/Menu/Menu.d.ts +7 -1
- package/lib/typescript/module/components/Menu/Menu.d.ts.map +1 -1
- package/lib/typescript/module/components/Menu/MenuButton.d.ts +6 -2
- package/lib/typescript/module/components/Menu/MenuButton.d.ts.map +1 -1
- package/lib/typescript/module/components/Menu/SelectButton.d.ts +6 -2
- package/lib/typescript/module/components/Menu/SelectButton.d.ts.map +1 -1
- package/lib/typescript/module/components/Menu/UserMenu.d.ts +50 -0
- package/lib/typescript/module/components/Menu/UserMenu.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/index.d.ts +2 -0
- package/lib/typescript/module/components/Menu/index.d.ts.map +1 -1
- package/lib/typescript/module/components/Menu/placement.d.ts +47 -0
- package/lib/typescript/module/components/Menu/placement.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/placement.test.d.ts +2 -0
- package/lib/typescript/module/components/Menu/placement.test.d.ts.map +1 -0
- package/lib/typescript/module/components/Select/Select.d.ts +3 -1
- package/lib/typescript/module/components/Select/Select.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Menu/Menu.tsx +37 -46
- package/src/components/Menu/MenuButton.tsx +9 -1
- package/src/components/Menu/SelectButton.tsx +9 -1
- package/src/components/Menu/UserMenu.tsx +108 -0
- package/src/components/Menu/index.ts +2 -0
- package/src/components/Menu/placement.ts +107 -0
- 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
|
-
//
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
const
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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","
|
|
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,
|
|
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":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,QAAQ,QAAQ,sBAAa;AACtC,SAASC,MAAM,QAA6C,qBAAkB;AAC9E,SAASC,QAAQ,QAA4B,yBAAsB;AACnE,SAASC,IAAI,QAAQ,iBAAc;AAEnC,SAASC,IAAI,
|
|
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":[]}
|
|
@@ -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":[]}
|