@bacon-pos/ui 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Dropdown/Dropdown.js +282 -0
- package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -0
- package/lib/commonjs/components/Dropdown/Dropdown.stories.js +421 -0
- package/lib/commonjs/components/Dropdown/Dropdown.stories.js.map +1 -0
- package/lib/commonjs/components/Dropdown/Dropdown.test.js +113 -0
- package/lib/commonjs/components/Dropdown/Dropdown.test.js.map +1 -0
- package/lib/commonjs/components/Dropdown/index.js +19 -0
- package/lib/commonjs/components/Dropdown/index.js.map +1 -0
- package/lib/commonjs/components/Menu/Menu.js +214 -0
- package/lib/commonjs/components/Menu/Menu.js.map +1 -0
- package/lib/commonjs/components/Menu/Menu.test.js +71 -0
- package/lib/commonjs/components/Menu/Menu.test.js.map +1 -0
- package/lib/commonjs/components/Menu/MenuButton.js +73 -0
- package/lib/commonjs/components/Menu/MenuButton.js.map +1 -0
- package/lib/commonjs/components/Menu/MenuButton.stories.js +166 -0
- package/lib/commonjs/components/Menu/MenuButton.stories.js.map +1 -0
- package/lib/commonjs/components/Menu/SelectButton.js +143 -0
- package/lib/commonjs/components/Menu/SelectButton.js.map +1 -0
- package/lib/commonjs/components/Menu/SelectButton.stories.js +116 -0
- package/lib/commonjs/components/Menu/SelectButton.stories.js.map +1 -0
- package/lib/commonjs/components/Menu/SelectButton.test.js +80 -0
- package/lib/commonjs/components/Menu/SelectButton.test.js.map +1 -0
- package/lib/commonjs/components/Menu/index.js +27 -0
- package/lib/commonjs/components/Menu/index.js.map +1 -0
- package/lib/commonjs/components/Select/Select.js +246 -0
- package/lib/commonjs/components/Select/Select.js.map +1 -0
- package/lib/commonjs/components/Select/Select.stories.js +221 -0
- package/lib/commonjs/components/Select/Select.stories.js.map +1 -0
- package/lib/commonjs/components/Select/Select.test.js +165 -0
- package/lib/commonjs/components/Select/Select.test.js.map +1 -0
- package/lib/commonjs/components/Select/index.js +13 -0
- package/lib/commonjs/components/Select/index.js.map +1 -0
- package/lib/commonjs/components/UserChip/UserChip.js +121 -0
- package/lib/commonjs/components/UserChip/UserChip.js.map +1 -0
- package/lib/commonjs/components/UserChip/UserChip.stories.js +153 -0
- package/lib/commonjs/components/UserChip/UserChip.stories.js.map +1 -0
- package/lib/commonjs/components/UserChip/UserChip.test.js +59 -0
- package/lib/commonjs/components/UserChip/UserChip.test.js.map +1 -0
- package/lib/commonjs/components/UserChip/index.js +13 -0
- package/lib/commonjs/components/UserChip/index.js.map +1 -0
- package/lib/commonjs/components/index.js +57 -13
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/module/components/Dropdown/Dropdown.js +277 -0
- package/lib/module/components/Dropdown/Dropdown.js.map +1 -0
- package/lib/module/components/Dropdown/Dropdown.stories.js +417 -0
- package/lib/module/components/Dropdown/Dropdown.stories.js.map +1 -0
- package/lib/module/components/Dropdown/Dropdown.test.js +113 -0
- package/lib/module/components/Dropdown/Dropdown.test.js.map +1 -0
- package/lib/module/components/Dropdown/index.js +4 -0
- package/lib/module/components/Dropdown/index.js.map +1 -0
- package/lib/module/components/Menu/Menu.js +210 -0
- package/lib/module/components/Menu/Menu.js.map +1 -0
- package/lib/module/components/Menu/Menu.test.js +71 -0
- package/lib/module/components/Menu/Menu.test.js.map +1 -0
- package/lib/module/components/Menu/MenuButton.js +69 -0
- package/lib/module/components/Menu/MenuButton.js.map +1 -0
- package/lib/module/components/Menu/MenuButton.stories.js +162 -0
- package/lib/module/components/Menu/MenuButton.stories.js.map +1 -0
- package/lib/module/components/Menu/SelectButton.js +139 -0
- package/lib/module/components/Menu/SelectButton.js.map +1 -0
- package/lib/module/components/Menu/SelectButton.stories.js +112 -0
- package/lib/module/components/Menu/SelectButton.stories.js.map +1 -0
- package/lib/module/components/Menu/SelectButton.test.js +80 -0
- package/lib/module/components/Menu/SelectButton.test.js.map +1 -0
- package/lib/module/components/Menu/index.js +6 -0
- package/lib/module/components/Menu/index.js.map +1 -0
- package/lib/module/components/Select/Select.js +244 -0
- package/lib/module/components/Select/Select.js.map +1 -0
- package/lib/module/components/Select/Select.stories.js +217 -0
- package/lib/module/components/Select/Select.stories.js.map +1 -0
- package/lib/module/components/Select/Select.test.js +165 -0
- package/lib/module/components/Select/Select.test.js.map +1 -0
- package/lib/module/components/Select/index.js +4 -0
- package/lib/module/components/Select/index.js.map +1 -0
- package/lib/module/components/UserChip/UserChip.js +117 -0
- package/lib/module/components/UserChip/UserChip.js.map +1 -0
- package/lib/module/components/UserChip/UserChip.stories.js +149 -0
- package/lib/module/components/UserChip/UserChip.stories.js.map +1 -0
- package/lib/module/components/UserChip/UserChip.test.js +59 -0
- package/lib/module/components/UserChip/UserChip.test.js.map +1 -0
- package/lib/module/components/UserChip/index.js +4 -0
- package/lib/module/components/UserChip/index.js.map +1 -0
- package/lib/module/components/index.js +4 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts +105 -0
- package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Dropdown/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Dropdown/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/Menu.d.ts +66 -0
- package/lib/typescript/commonjs/components/Menu/Menu.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts +46 -0
- package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts +60 -0
- package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Menu/index.d.ts +7 -0
- package/lib/typescript/commonjs/components/Menu/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts +73 -0
- package/lib/typescript/commonjs/components/Select/Select.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/Select/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/Select/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts +33 -0
- package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/UserChip/index.d.ts +3 -0
- package/lib/typescript/commonjs/components/UserChip/index.d.ts.map +1 -0
- package/lib/typescript/commonjs/components/index.d.ts +4 -0
- package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
- package/lib/typescript/module/components/Dropdown/Dropdown.d.ts +105 -0
- package/lib/typescript/module/components/Dropdown/Dropdown.d.ts.map +1 -0
- package/lib/typescript/module/components/Dropdown/index.d.ts +3 -0
- package/lib/typescript/module/components/Dropdown/index.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/Menu.d.ts +66 -0
- package/lib/typescript/module/components/Menu/Menu.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/MenuButton.d.ts +46 -0
- package/lib/typescript/module/components/Menu/MenuButton.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/SelectButton.d.ts +60 -0
- package/lib/typescript/module/components/Menu/SelectButton.d.ts.map +1 -0
- package/lib/typescript/module/components/Menu/index.d.ts +7 -0
- package/lib/typescript/module/components/Menu/index.d.ts.map +1 -0
- package/lib/typescript/module/components/Select/Select.d.ts +73 -0
- package/lib/typescript/module/components/Select/Select.d.ts.map +1 -0
- package/lib/typescript/module/components/Select/index.d.ts +3 -0
- package/lib/typescript/module/components/Select/index.d.ts.map +1 -0
- package/lib/typescript/module/components/UserChip/UserChip.d.ts +33 -0
- package/lib/typescript/module/components/UserChip/UserChip.d.ts.map +1 -0
- package/lib/typescript/module/components/UserChip/index.d.ts +3 -0
- package/lib/typescript/module/components/UserChip/index.d.ts.map +1 -0
- package/lib/typescript/module/components/index.d.ts +4 -0
- package/lib/typescript/module/components/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Dropdown/Dropdown.tsx +319 -0
- package/src/components/Dropdown/index.ts +2 -0
- package/src/components/Menu/Menu.tsx +249 -0
- package/src/components/Menu/MenuButton.tsx +98 -0
- package/src/components/Menu/SelectButton.tsx +171 -0
- package/src/components/Menu/index.ts +12 -0
- package/src/components/Select/Select.tsx +323 -0
- package/src/components/Select/index.ts +2 -0
- package/src/components/UserChip/UserChip.tsx +138 -0
- package/src/components/UserChip/index.ts +2 -0
- package/src/components/index.ts +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","View","Dropdown","useTheme","Text","jsx","_jsx","jsxs","_jsxs","meta","title","component","Default","render","theme","options","Array","from","length","map","_","i","key","String","label","leading","kind","name","trailing","color","colors","feedback","success","style","padding","children","Select","items","sel","setSel","selected","undefined","onSelect","variant","marginTop","MultiSelect","checked","setChecked","Bacon","Boolean","onChange","v","c","Toggles","on","setOn","Notifications","value","s","CustomWidth","width","Ellipsis","ActionMenu","type","destructive","TextOnly","Grouped","showDividers","TwoLine","description","Scrollable","maxHeight","CustomAndBothSides","fav","setFav","node","height","borderRadius","backgroundColor","a","f","onPress","accessibilityLabel"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/Dropdown.stories.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { render, fireEvent, screen } from '@testing-library/react-native';
|
|
4
|
+
import { ThemeProvider } from "../../theme/index.js";
|
|
5
|
+
import { Dropdown, DropdownItem } from "./Dropdown.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
|
+
describe('DropdownItem', () => {
|
|
13
|
+
it('renders the label and fires onPress', () => {
|
|
14
|
+
const onPress = jest.fn();
|
|
15
|
+
wrap(/*#__PURE__*/_jsx(DropdownItem, {
|
|
16
|
+
label: "Edit",
|
|
17
|
+
onPress: onPress
|
|
18
|
+
}));
|
|
19
|
+
fireEvent.press(screen.getByText('Edit'));
|
|
20
|
+
expect(onPress).toHaveBeenCalledTimes(1);
|
|
21
|
+
});
|
|
22
|
+
it('renders a description as a second line', () => {
|
|
23
|
+
wrap(/*#__PURE__*/_jsx(DropdownItem, {
|
|
24
|
+
label: "Credit card",
|
|
25
|
+
description: "Visa ending in 4242"
|
|
26
|
+
}));
|
|
27
|
+
expect(screen.getByText('Visa ending in 4242')).toBeTruthy();
|
|
28
|
+
});
|
|
29
|
+
it('row press toggles a trailing checkbox when no onPress is given', () => {
|
|
30
|
+
const onChange = jest.fn();
|
|
31
|
+
wrap(/*#__PURE__*/_jsx(DropdownItem, {
|
|
32
|
+
label: "Bacon",
|
|
33
|
+
trailing: {
|
|
34
|
+
kind: 'checkbox',
|
|
35
|
+
checked: false,
|
|
36
|
+
onChange
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
fireEvent.press(screen.getByText('Bacon'));
|
|
40
|
+
expect(onChange).toHaveBeenCalledWith(true);
|
|
41
|
+
});
|
|
42
|
+
it('row press toggles a trailing switch when no onPress is given', () => {
|
|
43
|
+
const onChange = jest.fn();
|
|
44
|
+
wrap(/*#__PURE__*/_jsx(DropdownItem, {
|
|
45
|
+
label: "Sound",
|
|
46
|
+
trailing: {
|
|
47
|
+
kind: 'switch',
|
|
48
|
+
value: true,
|
|
49
|
+
onChange
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
fireEvent.press(screen.getByText('Sound'));
|
|
53
|
+
expect(onChange).toHaveBeenCalledWith(false);
|
|
54
|
+
});
|
|
55
|
+
it('does not fire when disabled', () => {
|
|
56
|
+
const onPress = jest.fn();
|
|
57
|
+
wrap(/*#__PURE__*/_jsx(DropdownItem, {
|
|
58
|
+
label: "Edit",
|
|
59
|
+
onPress: onPress,
|
|
60
|
+
disabled: true
|
|
61
|
+
}));
|
|
62
|
+
fireEvent.press(screen.getByText('Edit'));
|
|
63
|
+
expect(onPress).not.toHaveBeenCalled();
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('Dropdown', () => {
|
|
67
|
+
const options = [{
|
|
68
|
+
key: 'a',
|
|
69
|
+
label: 'Alpha'
|
|
70
|
+
}, {
|
|
71
|
+
key: 'b',
|
|
72
|
+
label: 'Beta'
|
|
73
|
+
}, {
|
|
74
|
+
key: 'c',
|
|
75
|
+
label: 'Gamma'
|
|
76
|
+
}];
|
|
77
|
+
it('renders every item', () => {
|
|
78
|
+
wrap(/*#__PURE__*/_jsx(Dropdown, {
|
|
79
|
+
options: options
|
|
80
|
+
}));
|
|
81
|
+
expect(screen.getByText('Alpha')).toBeTruthy();
|
|
82
|
+
expect(screen.getByText('Beta')).toBeTruthy();
|
|
83
|
+
expect(screen.getByText('Gamma')).toBeTruthy();
|
|
84
|
+
});
|
|
85
|
+
it('calls onSelect with the pressed key', () => {
|
|
86
|
+
const onSelect = jest.fn();
|
|
87
|
+
wrap(/*#__PURE__*/_jsx(Dropdown, {
|
|
88
|
+
options: options,
|
|
89
|
+
onSelect: onSelect
|
|
90
|
+
}));
|
|
91
|
+
fireEvent.press(screen.getByText('Beta'));
|
|
92
|
+
expect(onSelect).toHaveBeenCalledWith('b');
|
|
93
|
+
});
|
|
94
|
+
it('renders section headers and does not treat them as items', () => {
|
|
95
|
+
const withHeader = [{
|
|
96
|
+
key: 'h',
|
|
97
|
+
type: 'header',
|
|
98
|
+
label: 'GROUP'
|
|
99
|
+
}, {
|
|
100
|
+
key: 'x',
|
|
101
|
+
label: 'Item X'
|
|
102
|
+
}];
|
|
103
|
+
const onSelect = jest.fn();
|
|
104
|
+
wrap(/*#__PURE__*/_jsx(Dropdown, {
|
|
105
|
+
options: withHeader,
|
|
106
|
+
onSelect: onSelect
|
|
107
|
+
}));
|
|
108
|
+
expect(screen.getByText('GROUP')).toBeTruthy();
|
|
109
|
+
fireEvent.press(screen.getByText('GROUP'));
|
|
110
|
+
expect(onSelect).not.toHaveBeenCalled();
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=Dropdown.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["render","fireEvent","screen","ThemeProvider","Dropdown","DropdownItem","jsx","_jsx","wrap","ui","children","describe","it","onPress","jest","fn","label","press","getByText","expect","toHaveBeenCalledTimes","description","toBeTruthy","onChange","trailing","kind","checked","toHaveBeenCalledWith","value","disabled","not","toHaveBeenCalled","options","key","onSelect","withHeader","type"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/Dropdown.test.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Dropdown","DropdownItem"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dropdown/index.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,YAAY,QAAQ,eAAY","ignoreList":[]}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { Animated, Dimensions, Easing, Modal, Platform, Pressable, View } from 'react-native';
|
|
5
|
+
|
|
6
|
+
/** 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
|
+
|
|
19
|
+
/** State handed to the trigger renderer and (optionally) the content renderer. */
|
|
20
|
+
|
|
21
|
+
const ZERO_INSETS = {
|
|
22
|
+
top: 0,
|
|
23
|
+
right: 0,
|
|
24
|
+
bottom: 0,
|
|
25
|
+
left: 0
|
|
26
|
+
};
|
|
27
|
+
function clamp(value, min, max) {
|
|
28
|
+
if (max < min) return min;
|
|
29
|
+
return Math.min(Math.max(value, min), max);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Anchored overlay menu. Renders a trigger inline and, when open, a floating
|
|
34
|
+
* panel positioned relative to the trigger via two origins — `anchorOrigin`
|
|
35
|
+
* (point on the trigger) and `menuOrigin` (matching point on the menu). Tapping
|
|
36
|
+
* outside (or the hardware back button) dismisses it. Used to compose menu
|
|
37
|
+
* buttons, select fields, popovers, etc.
|
|
38
|
+
*/
|
|
39
|
+
export function Menu({
|
|
40
|
+
renderTrigger,
|
|
41
|
+
children,
|
|
42
|
+
anchorOrigin = {
|
|
43
|
+
vertical: 'bottom',
|
|
44
|
+
horizontal: 'left'
|
|
45
|
+
},
|
|
46
|
+
menuOrigin = {
|
|
47
|
+
vertical: 'top',
|
|
48
|
+
horizontal: 'left'
|
|
49
|
+
},
|
|
50
|
+
offset = 8,
|
|
51
|
+
autoFit = true,
|
|
52
|
+
insets = ZERO_INSETS,
|
|
53
|
+
open: openProp,
|
|
54
|
+
onOpenChange,
|
|
55
|
+
screenPadding = 8,
|
|
56
|
+
triggerStyle
|
|
57
|
+
}) {
|
|
58
|
+
const triggerRef = useRef(null);
|
|
59
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState(false);
|
|
60
|
+
const isControlled = openProp !== undefined;
|
|
61
|
+
const open = isControlled ? openProp : uncontrolledOpen;
|
|
62
|
+
const [rect, setRect] = useState(null);
|
|
63
|
+
const [menuSize, setMenuSize] = useState(null);
|
|
64
|
+
// The content's natural (uncapped) height, captured once per open — used to
|
|
65
|
+
// decide whether it fits the preferred side (kept stable so the flip decision
|
|
66
|
+
// doesn't oscillate once a maxHeight cap is applied).
|
|
67
|
+
const [naturalHeight, setNaturalHeight] = useState(null);
|
|
68
|
+
const anim = useRef(new Animated.Value(0)).current;
|
|
69
|
+
const setOpen = next => {
|
|
70
|
+
if (!isControlled) setUncontrolledOpen(next);
|
|
71
|
+
onOpenChange?.(next);
|
|
72
|
+
};
|
|
73
|
+
const close = () => setOpen(false);
|
|
74
|
+
const toggle = () => setOpen(!open);
|
|
75
|
+
|
|
76
|
+
// Measure the trigger whenever the menu opens.
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (!open) {
|
|
79
|
+
setMenuSize(null);
|
|
80
|
+
setNaturalHeight(null);
|
|
81
|
+
anim.setValue(0);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
triggerRef.current?.measureInWindow((x, y, width, height) => {
|
|
85
|
+
setRect({
|
|
86
|
+
x,
|
|
87
|
+
y,
|
|
88
|
+
width,
|
|
89
|
+
height
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}, [open, anim]);
|
|
93
|
+
|
|
94
|
+
// Fade + scale in once the menu has been measured (so it never flashes unplaced).
|
|
95
|
+
useEffect(() => {
|
|
96
|
+
if (open && rect && menuSize) {
|
|
97
|
+
Animated.timing(anim, {
|
|
98
|
+
toValue: 1,
|
|
99
|
+
duration: 120,
|
|
100
|
+
easing: Easing.out(Easing.ease),
|
|
101
|
+
useNativeDriver: Platform.OS !== 'web'
|
|
102
|
+
}).start();
|
|
103
|
+
}
|
|
104
|
+
}, [open, rect, menuSize, anim]);
|
|
105
|
+
const onMenuLayout = e => {
|
|
106
|
+
const {
|
|
107
|
+
width,
|
|
108
|
+
height
|
|
109
|
+
} = e.nativeEvent.layout;
|
|
110
|
+
if (!menuSize || menuSize.width !== width || menuSize.height !== height) {
|
|
111
|
+
setMenuSize({
|
|
112
|
+
width,
|
|
113
|
+
height
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
// Capture the natural height once — before any maxHeight cap is applied.
|
|
117
|
+
if (naturalHeight === null) setNaturalHeight(height);
|
|
118
|
+
};
|
|
119
|
+
|
|
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
|
+
}
|
|
157
|
+
const placed = Boolean(rect && menuSize);
|
|
158
|
+
const content = typeof children === 'function' ? children({
|
|
159
|
+
close,
|
|
160
|
+
triggerWidth: rect?.width,
|
|
161
|
+
maxHeight: autoMaxHeight
|
|
162
|
+
}) : children;
|
|
163
|
+
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
164
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
165
|
+
ref: triggerRef,
|
|
166
|
+
collapsable: false,
|
|
167
|
+
style: [{
|
|
168
|
+
alignSelf: 'flex-start'
|
|
169
|
+
}, triggerStyle],
|
|
170
|
+
children: renderTrigger({
|
|
171
|
+
open,
|
|
172
|
+
toggle,
|
|
173
|
+
close
|
|
174
|
+
})
|
|
175
|
+
}), /*#__PURE__*/_jsx(Modal, {
|
|
176
|
+
visible: open,
|
|
177
|
+
transparent: true,
|
|
178
|
+
animationType: "none",
|
|
179
|
+
onRequestClose: close,
|
|
180
|
+
statusBarTranslucent: true,
|
|
181
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
182
|
+
accessibilityLabel: "Close menu",
|
|
183
|
+
onPress: close,
|
|
184
|
+
style: {
|
|
185
|
+
flex: 1
|
|
186
|
+
},
|
|
187
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
188
|
+
onLayout: onMenuLayout
|
|
189
|
+
// Stop presses inside the menu from bubbling to the backdrop.
|
|
190
|
+
,
|
|
191
|
+
onStartShouldSetResponder: () => true,
|
|
192
|
+
style: {
|
|
193
|
+
position: 'absolute',
|
|
194
|
+
top,
|
|
195
|
+
left,
|
|
196
|
+
opacity: placed ? anim : 0,
|
|
197
|
+
transform: [{
|
|
198
|
+
scale: placed ? anim.interpolate({
|
|
199
|
+
inputRange: [0, 1],
|
|
200
|
+
outputRange: [0.96, 1]
|
|
201
|
+
}) : 1
|
|
202
|
+
}]
|
|
203
|
+
},
|
|
204
|
+
children: content
|
|
205
|
+
})
|
|
206
|
+
})
|
|
207
|
+
})]
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +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":"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","ignoreList":[]}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { render, fireEvent, screen } from '@testing-library/react-native';
|
|
4
|
+
import { ThemeProvider } from "../../theme/index.js";
|
|
5
|
+
import { MenuButton } from "./MenuButton.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: 'a',
|
|
14
|
+
label: 'Edit'
|
|
15
|
+
}, {
|
|
16
|
+
key: 'b',
|
|
17
|
+
label: 'Delete',
|
|
18
|
+
destructive: true
|
|
19
|
+
}];
|
|
20
|
+
describe('MenuButton', () => {
|
|
21
|
+
it('is closed initially — options are not shown', () => {
|
|
22
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
23
|
+
options: options
|
|
24
|
+
}));
|
|
25
|
+
expect(screen.queryByText('Edit')).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
it('opens on trigger press and shows the options', () => {
|
|
28
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
29
|
+
options: options
|
|
30
|
+
}));
|
|
31
|
+
fireEvent.press(screen.getByLabelText('More options'));
|
|
32
|
+
expect(screen.getByText('Edit')).toBeTruthy();
|
|
33
|
+
expect(screen.getByText('Delete')).toBeTruthy();
|
|
34
|
+
});
|
|
35
|
+
it('calls onSelect with the pressed key', () => {
|
|
36
|
+
const onSelect = jest.fn();
|
|
37
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
38
|
+
options: options,
|
|
39
|
+
onSelect: onSelect
|
|
40
|
+
}));
|
|
41
|
+
fireEvent.press(screen.getByLabelText('More options'));
|
|
42
|
+
fireEvent.press(screen.getByText('Edit'));
|
|
43
|
+
expect(onSelect).toHaveBeenCalledWith('a');
|
|
44
|
+
});
|
|
45
|
+
it('closes after selecting (closeOnSelect default)', () => {
|
|
46
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
47
|
+
options: options
|
|
48
|
+
}));
|
|
49
|
+
fireEvent.press(screen.getByLabelText('More options'));
|
|
50
|
+
fireEvent.press(screen.getByText('Edit'));
|
|
51
|
+
expect(screen.queryByText('Edit')).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
it('closes when the backdrop is pressed', () => {
|
|
54
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
55
|
+
options: options
|
|
56
|
+
}));
|
|
57
|
+
fireEvent.press(screen.getByLabelText('More options'));
|
|
58
|
+
expect(screen.getByText('Edit')).toBeTruthy();
|
|
59
|
+
fireEvent.press(screen.getByLabelText('Close menu'));
|
|
60
|
+
expect(screen.queryByText('Edit')).toBeNull();
|
|
61
|
+
});
|
|
62
|
+
it('respects a custom trigger icon / label', () => {
|
|
63
|
+
wrap(/*#__PURE__*/_jsx(MenuButton, {
|
|
64
|
+
options: options,
|
|
65
|
+
icon: "settings",
|
|
66
|
+
accessibilityLabel: "Row actions"
|
|
67
|
+
}));
|
|
68
|
+
expect(screen.getByLabelText('Row actions')).toBeTruthy();
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=Menu.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["render","fireEvent","screen","ThemeProvider","MenuButton","jsx","_jsx","wrap","ui","children","options","key","label","destructive","describe","it","expect","queryByText","toBeNull","press","getByLabelText","getByText","toBeTruthy","onSelect","jest","fn","toHaveBeenCalledWith","icon","accessibilityLabel"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Menu/Menu.test.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Dropdown } from "../Dropdown/Dropdown.js";
|
|
4
|
+
import { IconButton } from "../IconButton/IconButton.js";
|
|
5
|
+
import { Menu } from "./Menu.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
/**
|
|
8
|
+
* A "More"-style menu button — an `IconButton` that opens an anchored `Dropdown`.
|
|
9
|
+
* The first composed component built from `IconButton` + `Icon` + `Dropdown` +
|
|
10
|
+
* `Menu`. Placement is controlled by the two-origin model (`anchorOrigin` on the
|
|
11
|
+
* trigger, `menuOrigin` on the menu). Dismisses on outside press / back button.
|
|
12
|
+
*/
|
|
13
|
+
export function MenuButton({
|
|
14
|
+
options,
|
|
15
|
+
onSelect,
|
|
16
|
+
icon = 'more',
|
|
17
|
+
accessibilityLabel = 'More options',
|
|
18
|
+
variant = 'secondary',
|
|
19
|
+
size = 'md',
|
|
20
|
+
shape = 'round',
|
|
21
|
+
disabled = false,
|
|
22
|
+
anchorOrigin = {
|
|
23
|
+
vertical: 'bottom',
|
|
24
|
+
horizontal: 'right'
|
|
25
|
+
},
|
|
26
|
+
menuOrigin = {
|
|
27
|
+
vertical: 'top',
|
|
28
|
+
horizontal: 'right'
|
|
29
|
+
},
|
|
30
|
+
offset = 8,
|
|
31
|
+
menuWidth,
|
|
32
|
+
showDividers,
|
|
33
|
+
closeOnSelect = true,
|
|
34
|
+
open,
|
|
35
|
+
onOpenChange
|
|
36
|
+
}) {
|
|
37
|
+
return /*#__PURE__*/_jsx(Menu, {
|
|
38
|
+
anchorOrigin: anchorOrigin,
|
|
39
|
+
menuOrigin: menuOrigin,
|
|
40
|
+
offset: offset,
|
|
41
|
+
open: open,
|
|
42
|
+
onOpenChange: onOpenChange,
|
|
43
|
+
renderTrigger: ({
|
|
44
|
+
toggle
|
|
45
|
+
}) => /*#__PURE__*/_jsx(IconButton, {
|
|
46
|
+
icon: icon,
|
|
47
|
+
accessibilityLabel: accessibilityLabel,
|
|
48
|
+
variant: variant,
|
|
49
|
+
size: size,
|
|
50
|
+
shape: shape,
|
|
51
|
+
disabled: disabled,
|
|
52
|
+
onPress: toggle
|
|
53
|
+
}),
|
|
54
|
+
children: ({
|
|
55
|
+
close,
|
|
56
|
+
maxHeight
|
|
57
|
+
}) => /*#__PURE__*/_jsx(Dropdown, {
|
|
58
|
+
options: options,
|
|
59
|
+
width: menuWidth,
|
|
60
|
+
maxHeight: maxHeight,
|
|
61
|
+
showDividers: showDividers,
|
|
62
|
+
onSelect: key => {
|
|
63
|
+
onSelect?.(key);
|
|
64
|
+
if (closeOnSelect) close();
|
|
65
|
+
}
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=MenuButton.js.map
|
|
@@ -0,0 +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":[]}
|