@bacon-pos/ui 0.2.1 → 0.3.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 (45) hide show
  1. package/lib/commonjs/components/Dialog/Dialog.js +215 -0
  2. package/lib/commonjs/components/Dialog/Dialog.js.map +1 -0
  3. package/lib/commonjs/components/Dialog/Dialog.stories.js +169 -0
  4. package/lib/commonjs/components/Dialog/Dialog.stories.js.map +1 -0
  5. package/lib/commonjs/components/Dialog/Dialog.test.js +71 -0
  6. package/lib/commonjs/components/Dialog/Dialog.test.js.map +1 -0
  7. package/lib/commonjs/components/Dialog/index.js +13 -0
  8. package/lib/commonjs/components/Dialog/index.js.map +1 -0
  9. package/lib/commonjs/components/_internal/ScrollArea.js +96 -0
  10. package/lib/commonjs/components/_internal/ScrollArea.js.map +1 -0
  11. package/lib/commonjs/components/index.js +22 -11
  12. package/lib/commonjs/components/index.js.map +1 -1
  13. package/lib/module/components/Dialog/Dialog.js +211 -0
  14. package/lib/module/components/Dialog/Dialog.js.map +1 -0
  15. package/lib/module/components/Dialog/Dialog.stories.js +165 -0
  16. package/lib/module/components/Dialog/Dialog.stories.js.map +1 -0
  17. package/lib/module/components/Dialog/Dialog.test.js +70 -0
  18. package/lib/module/components/Dialog/Dialog.test.js.map +1 -0
  19. package/lib/module/components/Dialog/index.js +4 -0
  20. package/lib/module/components/Dialog/index.js.map +1 -0
  21. package/lib/module/components/_internal/ScrollArea.js +92 -0
  22. package/lib/module/components/_internal/ScrollArea.js.map +1 -0
  23. package/lib/module/components/index.js +1 -0
  24. package/lib/module/components/index.js.map +1 -1
  25. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts +75 -0
  26. package/lib/typescript/commonjs/components/Dialog/Dialog.d.ts.map +1 -0
  27. package/lib/typescript/commonjs/components/Dialog/index.d.ts +2 -0
  28. package/lib/typescript/commonjs/components/Dialog/index.d.ts.map +1 -0
  29. package/lib/typescript/commonjs/components/_internal/ScrollArea.d.ts +20 -0
  30. package/lib/typescript/commonjs/components/_internal/ScrollArea.d.ts.map +1 -0
  31. package/lib/typescript/commonjs/components/index.d.ts +1 -0
  32. package/lib/typescript/commonjs/components/index.d.ts.map +1 -1
  33. package/lib/typescript/module/components/Dialog/Dialog.d.ts +75 -0
  34. package/lib/typescript/module/components/Dialog/Dialog.d.ts.map +1 -0
  35. package/lib/typescript/module/components/Dialog/index.d.ts +2 -0
  36. package/lib/typescript/module/components/Dialog/index.d.ts.map +1 -0
  37. package/lib/typescript/module/components/_internal/ScrollArea.d.ts +20 -0
  38. package/lib/typescript/module/components/_internal/ScrollArea.d.ts.map +1 -0
  39. package/lib/typescript/module/components/index.d.ts +1 -0
  40. package/lib/typescript/module/components/index.d.ts.map +1 -1
  41. package/package.json +1 -1
  42. package/src/components/Dialog/Dialog.tsx +269 -0
  43. package/src/components/Dialog/index.ts +6 -0
  44. package/src/components/_internal/ScrollArea.tsx +95 -0
  45. package/src/components/index.ts +1 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Dialog = Dialog;
7
+ var _reactNative = require("react-native");
8
+ var _index = require("../../theme/index.js");
9
+ var _Button = require("../Button/Button.js");
10
+ var _Icon = require("../Icon/Icon.js");
11
+ var _Text = require("../Text/Text.js");
12
+ var _ScrollArea = require("../_internal/ScrollArea.js");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ /**
15
+ * Dialog — an accessible, keyboard-aware modal that can hold anything from a
16
+ * short message to a full form (selects, date pickers, etc. keep working thanks
17
+ * to `keyboardShouldPersistTaps`). Content scrolls with an elegant thin,
18
+ * auto-hiding indicator. `scrollMode="page"` scrolls the whole modal on short
19
+ * screens instead of scrolling inside the card. Footer composes the
20
+ * design-system `Button`.
21
+ */
22
+ function Dialog({
23
+ visible,
24
+ onClose,
25
+ title,
26
+ subtitle,
27
+ children,
28
+ actions = [],
29
+ cancel,
30
+ showClose = true,
31
+ closeDestructive = false,
32
+ dismissOnBackdrop = false,
33
+ scrollMode = 'inner',
34
+ stickyHeader = true,
35
+ stickyFooter = true,
36
+ padding = 24,
37
+ contentSpacing = 24,
38
+ radius = 24,
39
+ maxWidth = 560,
40
+ maxHeightRatio = 0.9,
41
+ scrollbarColor,
42
+ style
43
+ }) {
44
+ const theme = (0, _index.useTheme)();
45
+ const {
46
+ height
47
+ } = (0, _reactNative.useWindowDimensions)();
48
+ const indicatorColor = scrollbarColor ?? theme.colors.text.tertiary;
49
+ const closeBtn = showClose ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
50
+ onPress: onClose,
51
+ hitSlop: 8,
52
+ accessibilityRole: "button",
53
+ accessibilityLabel: "Close",
54
+ style: {
55
+ position: 'absolute',
56
+ top: padding,
57
+ right: padding,
58
+ padding: 4,
59
+ zIndex: 1
60
+ },
61
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.Icon, {
62
+ name: "close",
63
+ size: 24,
64
+ color: closeDestructive ? theme.colors.feedback.error : theme.colors.text.secondary
65
+ })
66
+ }) : null;
67
+ const header = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
68
+ style: {
69
+ paddingHorizontal: padding,
70
+ paddingTop: padding,
71
+ paddingBottom: contentSpacing
72
+ },
73
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
74
+ style: {
75
+ paddingRight: showClose ? 40 : 0,
76
+ gap: 4
77
+ },
78
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.Text, {
79
+ variant: "h3",
80
+ weight: "semibold",
81
+ color: "primary",
82
+ children: title
83
+ }), subtitle ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.Text, {
84
+ variant: "bodyLarge",
85
+ color: "secondary",
86
+ children: subtitle
87
+ }) : null]
88
+ })
89
+ });
90
+ const contentBody = /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
91
+ style: {
92
+ paddingHorizontal: padding
93
+ },
94
+ children: children
95
+ });
96
+ const hasFooter = cancel != null || actions.length > 0;
97
+ const footer = hasFooter ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
98
+ style: {
99
+ flexDirection: 'row',
100
+ gap: 12,
101
+ paddingHorizontal: padding,
102
+ paddingBottom: padding,
103
+ paddingTop: contentSpacing
104
+ },
105
+ children: [cancel ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
106
+ style: {
107
+ flex: 1
108
+ },
109
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
110
+ fullWidth: true,
111
+ variant: cancel.destructive ? 'destructive' : 'secondary',
112
+ label: cancel.label ?? 'Cancel',
113
+ onPress: cancel.onPress ?? onClose
114
+ })
115
+ }) : null, actions.map((action, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
116
+ style: {
117
+ flex: 1
118
+ },
119
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
120
+ fullWidth: true,
121
+ variant: action.variant ?? 'default',
122
+ label: action.label,
123
+ onPress: action.onPress,
124
+ loading: action.loading,
125
+ disabled: action.disabled
126
+ })
127
+ }, i))]
128
+ }) : null;
129
+ const cardBase = {
130
+ width: '100%',
131
+ maxWidth,
132
+ backgroundColor: theme.colors.background.default,
133
+ borderRadius: radius,
134
+ overflow: 'hidden'
135
+ };
136
+ const card = scrollMode === 'page' ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
137
+ accessibilityViewIsModal: true,
138
+ style: [cardBase, style],
139
+ children: [closeBtn, header, contentBody, footer]
140
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
141
+ accessibilityViewIsModal: true,
142
+ style: [cardBase, {
143
+ maxHeight: height * maxHeightRatio
144
+ }, style],
145
+ children: [closeBtn, stickyHeader ? header : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_ScrollArea.ScrollArea, {
146
+ indicatorColor: indicatorColor,
147
+ style: {
148
+ flexShrink: 1
149
+ },
150
+ keyboardShouldPersistTaps: "handled",
151
+ keyboardDismissMode: "interactive",
152
+ children: [!stickyHeader ? header : null, contentBody, !stickyFooter ? footer : null]
153
+ }), stickyFooter ? footer : null]
154
+ });
155
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
156
+ visible: visible,
157
+ transparent: true,
158
+ animationType: "fade",
159
+ statusBarTranslucent: true,
160
+ onRequestClose: onClose,
161
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.KeyboardAvoidingView, {
162
+ behavior: _reactNative.Platform.OS === 'ios' ? 'padding' : undefined,
163
+ style: {
164
+ flex: 1
165
+ },
166
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
167
+ style: {
168
+ flex: 1,
169
+ backgroundColor: 'rgba(16, 18, 20, 0.55)'
170
+ },
171
+ children: scrollMode === 'page' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
172
+ style: {
173
+ flex: 1
174
+ },
175
+ contentContainerStyle: {
176
+ flexGrow: 1,
177
+ padding: 16
178
+ },
179
+ keyboardShouldPersistTaps: "handled",
180
+ showsVerticalScrollIndicator: false,
181
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
182
+ style: {
183
+ flexGrow: 1,
184
+ justifyContent: 'center',
185
+ alignItems: 'center'
186
+ },
187
+ onPress: dismissOnBackdrop ? onClose : undefined,
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
189
+ style: {
190
+ width: '100%',
191
+ alignItems: 'center'
192
+ },
193
+ onPress: () => {},
194
+ children: card
195
+ })
196
+ })
197
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
198
+ style: {
199
+ flex: 1,
200
+ justifyContent: 'center',
201
+ alignItems: 'center',
202
+ padding: 16
203
+ },
204
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Pressable, {
205
+ style: _reactNative.StyleSheet.absoluteFill,
206
+ onPress: dismissOnBackdrop ? onClose : undefined,
207
+ accessibilityElementsHidden: true,
208
+ importantForAccessibility: "no-hide-descendants"
209
+ }), card]
210
+ })
211
+ })
212
+ })
213
+ });
214
+ }
215
+ //# sourceMappingURL=Dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_index","_Button","_Icon","_Text","_ScrollArea","_jsxRuntime","Dialog","visible","onClose","title","subtitle","children","actions","cancel","showClose","closeDestructive","dismissOnBackdrop","scrollMode","stickyHeader","stickyFooter","padding","contentSpacing","radius","maxWidth","maxHeightRatio","scrollbarColor","style","theme","useTheme","height","useWindowDimensions","indicatorColor","colors","text","tertiary","closeBtn","jsx","Pressable","onPress","hitSlop","accessibilityRole","accessibilityLabel","position","top","right","zIndex","Icon","name","size","color","feedback","error","secondary","header","View","paddingHorizontal","paddingTop","paddingBottom","jsxs","paddingRight","gap","Text","variant","weight","contentBody","hasFooter","length","footer","flexDirection","flex","Button","fullWidth","destructive","label","map","action","i","loading","disabled","cardBase","width","backgroundColor","background","default","borderRadius","overflow","card","accessibilityViewIsModal","maxHeight","ScrollArea","flexShrink","keyboardShouldPersistTaps","keyboardDismissMode","Modal","transparent","animationType","statusBarTranslucent","onRequestClose","KeyboardAvoidingView","behavior","Platform","OS","undefined","ScrollView","contentContainerStyle","flexGrow","showsVerticalScrollIndicator","justifyContent","alignItems","StyleSheet","absoluteFill","accessibilityElementsHidden","importantForAccessibility"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.ThreeActions = exports.PageScroll = exports.LongScrollingForm = exports.EverythingScrolls = exports.DestructiveCancel = exports.Basic = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _Dialog = require("./Dialog.js");
10
+ var _Button = require("../Button/Button.js");
11
+ var _Input = require("../Input/Input.js");
12
+ var _Text = require("../Text/Text.js");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ const meta = {
15
+ title: 'Components/Dialog',
16
+ component: _Dialog.Dialog
17
+ };
18
+ var _default = exports.default = meta;
19
+ function Frame({
20
+ render
21
+ }) {
22
+ const [open, setOpen] = (0, _react.useState)(false);
23
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
24
+ style: {
25
+ padding: 24
26
+ },
27
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.Button, {
28
+ label: "Open dialog",
29
+ onPress: () => setOpen(true)
30
+ }), render(open, () => setOpen(false))]
31
+ });
32
+ }
33
+ const Basic = exports.Basic = {
34
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
35
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
36
+ visible: open,
37
+ onClose: close,
38
+ title: "Enter password",
39
+ subtitle: "Enter password for Universum WiFi",
40
+ cancel: {},
41
+ actions: [{
42
+ label: 'Update',
43
+ onPress: close
44
+ }],
45
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, {
46
+ label: "Password",
47
+ placeholder: "Enter password",
48
+ revealable: true
49
+ })
50
+ })
51
+ })
52
+ };
53
+ const DestructiveCancel = exports.DestructiveCancel = {
54
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
55
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
56
+ visible: open,
57
+ onClose: close,
58
+ title: "Delete order?",
59
+ subtitle: "This action cannot be undone.",
60
+ closeDestructive: true,
61
+ cancel: {
62
+ label: 'Delete',
63
+ destructive: true,
64
+ onPress: close
65
+ },
66
+ actions: [{
67
+ label: 'Keep',
68
+ onPress: close
69
+ }]
70
+ })
71
+ })
72
+ };
73
+ const ThreeActions = exports.ThreeActions = {
74
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
75
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
76
+ visible: open,
77
+ onClose: close,
78
+ title: "Choose an option",
79
+ actions: [{
80
+ label: 'One',
81
+ variant: 'secondary',
82
+ onPress: close
83
+ }, {
84
+ label: 'Two',
85
+ variant: 'inverse',
86
+ onPress: close
87
+ }, {
88
+ label: 'Three',
89
+ onPress: close
90
+ }]
91
+ })
92
+ })
93
+ };
94
+ const LongScrollingForm = exports.LongScrollingForm = {
95
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
96
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
97
+ visible: open,
98
+ onClose: close,
99
+ title: "Customer details",
100
+ subtitle: "Fill in the information below",
101
+ cancel: {},
102
+ actions: [{
103
+ label: 'Save',
104
+ onPress: close
105
+ }],
106
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
107
+ style: {
108
+ gap: 16
109
+ },
110
+ children: Array.from({
111
+ length: 8
112
+ }).map((_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, {
113
+ label: `Field ${i + 1}`,
114
+ placeholder: `Value ${i + 1}`
115
+ }, i))
116
+ })
117
+ })
118
+ })
119
+ };
120
+ const PageScroll = exports.PageScroll = {
121
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
122
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
123
+ visible: open,
124
+ onClose: close,
125
+ title: "Page scroll on short screens",
126
+ subtitle: "scrollMode='page' \u2014 the whole modal scrolls, nothing behind moves",
127
+ scrollMode: "page",
128
+ cancel: {},
129
+ actions: [{
130
+ label: 'Save',
131
+ onPress: close
132
+ }],
133
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
134
+ style: {
135
+ gap: 16
136
+ },
137
+ children: Array.from({
138
+ length: 10
139
+ }).map((_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Input.Input, {
140
+ label: `Field ${i + 1}`,
141
+ placeholder: `Value ${i + 1}`
142
+ }, i))
143
+ })
144
+ })
145
+ })
146
+ };
147
+ const EverythingScrolls = exports.EverythingScrolls = {
148
+ render: () => /*#__PURE__*/(0, _jsxRuntime.jsx)(Frame, {
149
+ render: (open, close) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
150
+ visible: open,
151
+ onClose: close,
152
+ title: "Scrollable header & footer",
153
+ subtitle: "stickyHeader/stickyFooter = false",
154
+ stickyHeader: false,
155
+ stickyFooter: false,
156
+ cancel: {},
157
+ actions: [{
158
+ label: 'Done',
159
+ onPress: close
160
+ }],
161
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.Text, {
162
+ variant: "bodyMedium",
163
+ color: "secondary",
164
+ children: 'Lorem ipsum dolor sit amet.\n'.repeat(20)
165
+ })
166
+ })
167
+ })
168
+ };
169
+ //# sourceMappingURL=Dialog.stories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_Dialog","_Button","_Input","_Text","_jsxRuntime","meta","title","component","Dialog","_default","exports","default","Frame","render","open","setOpen","useState","jsxs","View","style","padding","children","jsx","Button","label","onPress","Basic","close","visible","onClose","subtitle","cancel","actions","Input","placeholder","revealable","DestructiveCancel","closeDestructive","destructive","ThreeActions","variant","LongScrollingForm","gap","Array","from","length","map","_","i","PageScroll","scrollMode","EverythingScrolls","stickyHeader","stickyFooter","Text","color","repeat"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dialog/Dialog.stories.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _react = _interopRequireDefault(require("react"));
4
+ var _reactNative = require("@testing-library/react-native");
5
+ var _Dialog = require("./Dialog.js");
6
+ var _index = require("../../theme/index.js");
7
+ var _jsxRuntime = require("react/jsx-runtime");
8
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
+ function renderWithTheme(ui) {
10
+ return (0, _reactNative.render)(/*#__PURE__*/(0, _jsxRuntime.jsx)(_index.ThemeProvider, {
11
+ children: ui
12
+ }));
13
+ }
14
+ describe('Dialog', () => {
15
+ it('renders title, subtitle and content when visible', () => {
16
+ renderWithTheme(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
17
+ visible: true,
18
+ onClose: () => {},
19
+ title: "Enter password",
20
+ subtitle: "For WiFi",
21
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {})
22
+ }));
23
+ expect(_reactNative.screen.getByText('Enter password')).toBeTruthy();
24
+ expect(_reactNative.screen.getByText('For WiFi')).toBeTruthy();
25
+ });
26
+ it('fires an action press', () => {
27
+ const onPress = jest.fn();
28
+ renderWithTheme(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
29
+ visible: true,
30
+ onClose: () => {},
31
+ title: "T",
32
+ actions: [{
33
+ label: 'Update',
34
+ onPress
35
+ }]
36
+ }));
37
+ _reactNative.fireEvent.press(_reactNative.screen.getByText('Update'));
38
+ expect(onPress).toHaveBeenCalledTimes(1);
39
+ });
40
+ it('cancel defaults to onClose', () => {
41
+ const onClose = jest.fn();
42
+ renderWithTheme(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
43
+ visible: true,
44
+ onClose: onClose,
45
+ title: "T",
46
+ cancel: {}
47
+ }));
48
+ _reactNative.fireEvent.press(_reactNative.screen.getByText('Cancel'));
49
+ expect(onClose).toHaveBeenCalledTimes(1);
50
+ });
51
+ it('close button calls onClose', () => {
52
+ const onClose = jest.fn();
53
+ renderWithTheme(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
54
+ visible: true,
55
+ onClose: onClose,
56
+ title: "T"
57
+ }));
58
+ _reactNative.fireEvent.press(_reactNative.screen.getByLabelText('Close'));
59
+ expect(onClose).toHaveBeenCalledTimes(1);
60
+ });
61
+ it('hides the close button when showClose is false', () => {
62
+ renderWithTheme(/*#__PURE__*/(0, _jsxRuntime.jsx)(_Dialog.Dialog, {
63
+ visible: true,
64
+ onClose: () => {},
65
+ title: "T",
66
+ showClose: false
67
+ }));
68
+ expect(_reactNative.screen.queryByLabelText('Close')).toBeNull();
69
+ });
70
+ });
71
+ //# sourceMappingURL=Dialog.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Dialog","_index","_jsxRuntime","e","__esModule","default","renderWithTheme","ui","render","jsx","ThemeProvider","children","describe","it","Dialog","visible","onClose","title","subtitle","Fragment","expect","screen","getByText","toBeTruthy","onPress","jest","fn","actions","label","fireEvent","press","toHaveBeenCalledTimes","cancel","getByLabelText","showClose","queryByLabelText","toBeNull"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dialog/Dialog.test.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Dialog", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _Dialog.Dialog;
10
+ }
11
+ });
12
+ var _Dialog = require("./Dialog.js");
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_Dialog","require"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/Dialog/index.ts"],"mappings":";;;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA","ignoreList":[]}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ScrollArea = ScrollArea;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _jsxRuntime = require("react/jsx-runtime");
10
+ /**
11
+ * ScrollView with an elegant custom vertical indicator: thin, rounded, colored,
12
+ * and only visible while scrolling (fades out when idle). The native indicator
13
+ * is hidden so it looks the same on iOS, Android and web.
14
+ */
15
+ function ScrollArea({
16
+ children,
17
+ indicatorColor,
18
+ indicatorWidth = 4,
19
+ keyboardShouldPersistTaps,
20
+ keyboardDismissMode,
21
+ style,
22
+ contentContainerStyle
23
+ }) {
24
+ const [viewportH, setViewportH] = (0, _react.useState)(0);
25
+ const [contentH, setContentH] = (0, _react.useState)(0);
26
+ const scrollY = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
27
+ const opacity = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
28
+ const hideTimer = (0, _react.useRef)(null);
29
+ const scrollable = contentH > viewportH + 1;
30
+ const thumbH = scrollable ? Math.max(24, viewportH / contentH * viewportH) : 0;
31
+ const maxScroll = Math.max(1, contentH - viewportH);
32
+ const translateY = scrollY.interpolate({
33
+ inputRange: [0, maxScroll],
34
+ outputRange: [0, viewportH - thumbH],
35
+ extrapolate: 'clamp'
36
+ });
37
+ const reveal = () => {
38
+ _reactNative.Animated.timing(opacity, {
39
+ toValue: 1,
40
+ duration: 120,
41
+ useNativeDriver: true
42
+ }).start();
43
+ if (hideTimer.current) clearTimeout(hideTimer.current);
44
+ hideTimer.current = setTimeout(() => {
45
+ _reactNative.Animated.timing(opacity, {
46
+ toValue: 0,
47
+ duration: 400,
48
+ useNativeDriver: true
49
+ }).start();
50
+ }, 900);
51
+ };
52
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
53
+ style: [{
54
+ position: 'relative'
55
+ }, style],
56
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.ScrollView, {
57
+ style: {
58
+ flexShrink: 1
59
+ },
60
+ contentContainerStyle: contentContainerStyle,
61
+ showsVerticalScrollIndicator: false,
62
+ scrollEventThrottle: 16,
63
+ keyboardShouldPersistTaps: keyboardShouldPersistTaps,
64
+ keyboardDismissMode: keyboardDismissMode,
65
+ onLayout: e => setViewportH(e.nativeEvent.layout.height),
66
+ onContentSizeChange: (_w, h) => setContentH(h),
67
+ onScroll: _reactNative.Animated.event([{
68
+ nativeEvent: {
69
+ contentOffset: {
70
+ y: scrollY
71
+ }
72
+ }
73
+ }], {
74
+ useNativeDriver: true,
75
+ listener: _e => reveal()
76
+ }),
77
+ children: children
78
+ }), scrollable ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
79
+ pointerEvents: "none",
80
+ style: {
81
+ position: 'absolute',
82
+ top: 0,
83
+ right: 2,
84
+ width: indicatorWidth,
85
+ height: thumbH,
86
+ borderRadius: indicatorWidth / 2,
87
+ backgroundColor: indicatorColor,
88
+ opacity,
89
+ transform: [{
90
+ translateY
91
+ }]
92
+ }
93
+ }) : null]
94
+ });
95
+ }
96
+ //# sourceMappingURL=ScrollArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","require","_reactNative","_jsxRuntime","ScrollArea","children","indicatorColor","indicatorWidth","keyboardShouldPersistTaps","keyboardDismissMode","style","contentContainerStyle","viewportH","setViewportH","useState","contentH","setContentH","scrollY","useRef","Animated","Value","current","opacity","hideTimer","scrollable","thumbH","Math","max","maxScroll","translateY","interpolate","inputRange","outputRange","extrapolate","reveal","timing","toValue","duration","useNativeDriver","start","clearTimeout","setTimeout","jsxs","View","position","jsx","ScrollView","flexShrink","showsVerticalScrollIndicator","scrollEventThrottle","onLayout","e","nativeEvent","layout","height","onContentSizeChange","_w","h","onScroll","event","contentOffset","y","listener","_e","pointerEvents","top","right","width","borderRadius","backgroundColor","transform"],"sourceRoot":"..\\..\\..\\..\\src","sources":["components/_internal/ScrollArea.tsx"],"mappings":"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","ignoreList":[]}