@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.
Files changed (140) hide show
  1. package/lib/commonjs/components/Dropdown/Dropdown.js +282 -0
  2. package/lib/commonjs/components/Dropdown/Dropdown.js.map +1 -0
  3. package/lib/commonjs/components/Dropdown/Dropdown.stories.js +421 -0
  4. package/lib/commonjs/components/Dropdown/Dropdown.stories.js.map +1 -0
  5. package/lib/commonjs/components/Dropdown/Dropdown.test.js +113 -0
  6. package/lib/commonjs/components/Dropdown/Dropdown.test.js.map +1 -0
  7. package/lib/commonjs/components/Dropdown/index.js +19 -0
  8. package/lib/commonjs/components/Dropdown/index.js.map +1 -0
  9. package/lib/commonjs/components/Menu/Menu.js +214 -0
  10. package/lib/commonjs/components/Menu/Menu.js.map +1 -0
  11. package/lib/commonjs/components/Menu/Menu.test.js +71 -0
  12. package/lib/commonjs/components/Menu/Menu.test.js.map +1 -0
  13. package/lib/commonjs/components/Menu/MenuButton.js +73 -0
  14. package/lib/commonjs/components/Menu/MenuButton.js.map +1 -0
  15. package/lib/commonjs/components/Menu/MenuButton.stories.js +166 -0
  16. package/lib/commonjs/components/Menu/MenuButton.stories.js.map +1 -0
  17. package/lib/commonjs/components/Menu/SelectButton.js +143 -0
  18. package/lib/commonjs/components/Menu/SelectButton.js.map +1 -0
  19. package/lib/commonjs/components/Menu/SelectButton.stories.js +116 -0
  20. package/lib/commonjs/components/Menu/SelectButton.stories.js.map +1 -0
  21. package/lib/commonjs/components/Menu/SelectButton.test.js +80 -0
  22. package/lib/commonjs/components/Menu/SelectButton.test.js.map +1 -0
  23. package/lib/commonjs/components/Menu/index.js +27 -0
  24. package/lib/commonjs/components/Menu/index.js.map +1 -0
  25. package/lib/commonjs/components/Select/Select.js +246 -0
  26. package/lib/commonjs/components/Select/Select.js.map +1 -0
  27. package/lib/commonjs/components/Select/Select.stories.js +221 -0
  28. package/lib/commonjs/components/Select/Select.stories.js.map +1 -0
  29. package/lib/commonjs/components/Select/Select.test.js +165 -0
  30. package/lib/commonjs/components/Select/Select.test.js.map +1 -0
  31. package/lib/commonjs/components/Select/index.js +13 -0
  32. package/lib/commonjs/components/Select/index.js.map +1 -0
  33. package/lib/commonjs/components/UserChip/UserChip.js +121 -0
  34. package/lib/commonjs/components/UserChip/UserChip.js.map +1 -0
  35. package/lib/commonjs/components/UserChip/UserChip.stories.js +153 -0
  36. package/lib/commonjs/components/UserChip/UserChip.stories.js.map +1 -0
  37. package/lib/commonjs/components/UserChip/UserChip.test.js +59 -0
  38. package/lib/commonjs/components/UserChip/UserChip.test.js.map +1 -0
  39. package/lib/commonjs/components/UserChip/index.js +13 -0
  40. package/lib/commonjs/components/UserChip/index.js.map +1 -0
  41. package/lib/commonjs/components/index.js +57 -13
  42. package/lib/commonjs/components/index.js.map +1 -1
  43. package/lib/module/components/Dropdown/Dropdown.js +277 -0
  44. package/lib/module/components/Dropdown/Dropdown.js.map +1 -0
  45. package/lib/module/components/Dropdown/Dropdown.stories.js +417 -0
  46. package/lib/module/components/Dropdown/Dropdown.stories.js.map +1 -0
  47. package/lib/module/components/Dropdown/Dropdown.test.js +113 -0
  48. package/lib/module/components/Dropdown/Dropdown.test.js.map +1 -0
  49. package/lib/module/components/Dropdown/index.js +4 -0
  50. package/lib/module/components/Dropdown/index.js.map +1 -0
  51. package/lib/module/components/Menu/Menu.js +210 -0
  52. package/lib/module/components/Menu/Menu.js.map +1 -0
  53. package/lib/module/components/Menu/Menu.test.js +71 -0
  54. package/lib/module/components/Menu/Menu.test.js.map +1 -0
  55. package/lib/module/components/Menu/MenuButton.js +69 -0
  56. package/lib/module/components/Menu/MenuButton.js.map +1 -0
  57. package/lib/module/components/Menu/MenuButton.stories.js +162 -0
  58. package/lib/module/components/Menu/MenuButton.stories.js.map +1 -0
  59. package/lib/module/components/Menu/SelectButton.js +139 -0
  60. package/lib/module/components/Menu/SelectButton.js.map +1 -0
  61. package/lib/module/components/Menu/SelectButton.stories.js +112 -0
  62. package/lib/module/components/Menu/SelectButton.stories.js.map +1 -0
  63. package/lib/module/components/Menu/SelectButton.test.js +80 -0
  64. package/lib/module/components/Menu/SelectButton.test.js.map +1 -0
  65. package/lib/module/components/Menu/index.js +6 -0
  66. package/lib/module/components/Menu/index.js.map +1 -0
  67. package/lib/module/components/Select/Select.js +244 -0
  68. package/lib/module/components/Select/Select.js.map +1 -0
  69. package/lib/module/components/Select/Select.stories.js +217 -0
  70. package/lib/module/components/Select/Select.stories.js.map +1 -0
  71. package/lib/module/components/Select/Select.test.js +165 -0
  72. package/lib/module/components/Select/Select.test.js.map +1 -0
  73. package/lib/module/components/Select/index.js +4 -0
  74. package/lib/module/components/Select/index.js.map +1 -0
  75. package/lib/module/components/UserChip/UserChip.js +117 -0
  76. package/lib/module/components/UserChip/UserChip.js.map +1 -0
  77. package/lib/module/components/UserChip/UserChip.stories.js +149 -0
  78. package/lib/module/components/UserChip/UserChip.stories.js.map +1 -0
  79. package/lib/module/components/UserChip/UserChip.test.js +59 -0
  80. package/lib/module/components/UserChip/UserChip.test.js.map +1 -0
  81. package/lib/module/components/UserChip/index.js +4 -0
  82. package/lib/module/components/UserChip/index.js.map +1 -0
  83. package/lib/module/components/index.js +4 -0
  84. package/lib/module/components/index.js.map +1 -1
  85. package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts +105 -0
  86. package/lib/typescript/commonjs/components/Dropdown/Dropdown.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/components/Dropdown/index.d.ts +3 -0
  88. package/lib/typescript/commonjs/components/Dropdown/index.d.ts.map +1 -0
  89. package/lib/typescript/commonjs/components/Menu/Menu.d.ts +66 -0
  90. package/lib/typescript/commonjs/components/Menu/Menu.d.ts.map +1 -0
  91. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts +46 -0
  92. package/lib/typescript/commonjs/components/Menu/MenuButton.d.ts.map +1 -0
  93. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts +60 -0
  94. package/lib/typescript/commonjs/components/Menu/SelectButton.d.ts.map +1 -0
  95. package/lib/typescript/commonjs/components/Menu/index.d.ts +7 -0
  96. package/lib/typescript/commonjs/components/Menu/index.d.ts.map +1 -0
  97. package/lib/typescript/commonjs/components/Select/Select.d.ts +73 -0
  98. package/lib/typescript/commonjs/components/Select/Select.d.ts.map +1 -0
  99. package/lib/typescript/commonjs/components/Select/index.d.ts +3 -0
  100. package/lib/typescript/commonjs/components/Select/index.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts +33 -0
  102. package/lib/typescript/commonjs/components/UserChip/UserChip.d.ts.map +1 -0
  103. package/lib/typescript/commonjs/components/UserChip/index.d.ts +3 -0
  104. package/lib/typescript/commonjs/components/UserChip/index.d.ts.map +1 -0
  105. package/lib/typescript/commonjs/components/index.d.ts +4 -0
  106. package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
  107. package/lib/typescript/module/components/Dropdown/Dropdown.d.ts +105 -0
  108. package/lib/typescript/module/components/Dropdown/Dropdown.d.ts.map +1 -0
  109. package/lib/typescript/module/components/Dropdown/index.d.ts +3 -0
  110. package/lib/typescript/module/components/Dropdown/index.d.ts.map +1 -0
  111. package/lib/typescript/module/components/Menu/Menu.d.ts +66 -0
  112. package/lib/typescript/module/components/Menu/Menu.d.ts.map +1 -0
  113. package/lib/typescript/module/components/Menu/MenuButton.d.ts +46 -0
  114. package/lib/typescript/module/components/Menu/MenuButton.d.ts.map +1 -0
  115. package/lib/typescript/module/components/Menu/SelectButton.d.ts +60 -0
  116. package/lib/typescript/module/components/Menu/SelectButton.d.ts.map +1 -0
  117. package/lib/typescript/module/components/Menu/index.d.ts +7 -0
  118. package/lib/typescript/module/components/Menu/index.d.ts.map +1 -0
  119. package/lib/typescript/module/components/Select/Select.d.ts +73 -0
  120. package/lib/typescript/module/components/Select/Select.d.ts.map +1 -0
  121. package/lib/typescript/module/components/Select/index.d.ts +3 -0
  122. package/lib/typescript/module/components/Select/index.d.ts.map +1 -0
  123. package/lib/typescript/module/components/UserChip/UserChip.d.ts +33 -0
  124. package/lib/typescript/module/components/UserChip/UserChip.d.ts.map +1 -0
  125. package/lib/typescript/module/components/UserChip/index.d.ts +3 -0
  126. package/lib/typescript/module/components/UserChip/index.d.ts.map +1 -0
  127. package/lib/typescript/module/components/index.d.ts +4 -0
  128. package/lib/typescript/module/components/index.d.ts.map +1 -1
  129. package/package.json +1 -1
  130. package/src/components/Dropdown/Dropdown.tsx +319 -0
  131. package/src/components/Dropdown/index.ts +2 -0
  132. package/src/components/Menu/Menu.tsx +249 -0
  133. package/src/components/Menu/MenuButton.tsx +98 -0
  134. package/src/components/Menu/SelectButton.tsx +171 -0
  135. package/src/components/Menu/index.ts +12 -0
  136. package/src/components/Select/Select.tsx +323 -0
  137. package/src/components/Select/index.ts +2 -0
  138. package/src/components/UserChip/UserChip.tsx +138 -0
  139. package/src/components/UserChip/index.ts +2 -0
  140. 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,4 @@
1
+ "use strict";
2
+
3
+ export { Dropdown, DropdownItem } from "./Dropdown.js";
4
+ //# sourceMappingURL=index.js.map
@@ -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":[]}