@oxyhq/bloom 0.13.0 → 0.15.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/dialog/CenteredDialog.js +2 -0
  2. package/lib/commonjs/dialog/CenteredDialog.js.map +1 -1
  3. package/lib/commonjs/dialog/CenteredDialog.web.js +2 -0
  4. package/lib/commonjs/dialog/CenteredDialog.web.js.map +1 -1
  5. package/lib/commonjs/dialog/Dialog.js +337 -43
  6. package/lib/commonjs/dialog/Dialog.js.map +1 -1
  7. package/lib/commonjs/dialog/Dialog.web.js +414 -63
  8. package/lib/commonjs/dialog/Dialog.web.js.map +1 -1
  9. package/lib/commonjs/dialog/index.js +6 -0
  10. package/lib/commonjs/dialog/index.js.map +1 -1
  11. package/lib/commonjs/dialog/index.web.js +6 -0
  12. package/lib/commonjs/dialog/index.web.js.map +1 -1
  13. package/lib/commonjs/dialog/placement.js +104 -0
  14. package/lib/commonjs/dialog/placement.js.map +1 -0
  15. package/lib/commonjs/index.js +22 -0
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/commonjs/index.web.js +28 -6
  18. package/lib/commonjs/index.web.js.map +1 -1
  19. package/lib/commonjs/responsive-sheet/ResponsiveSheet.js +97 -0
  20. package/lib/commonjs/responsive-sheet/ResponsiveSheet.js.map +1 -0
  21. package/lib/commonjs/responsive-sheet/ResponsiveSheet.web.js +84 -0
  22. package/lib/commonjs/responsive-sheet/ResponsiveSheet.web.js.map +1 -0
  23. package/lib/commonjs/responsive-sheet/index.js +19 -0
  24. package/lib/commonjs/responsive-sheet/index.js.map +1 -0
  25. package/lib/commonjs/responsive-sheet/index.web.js +19 -0
  26. package/lib/commonjs/responsive-sheet/index.web.js.map +1 -0
  27. package/lib/commonjs/responsive-sheet/types.js +6 -0
  28. package/lib/commonjs/responsive-sheet/types.js.map +1 -0
  29. package/lib/module/dialog/CenteredDialog.js +2 -0
  30. package/lib/module/dialog/CenteredDialog.js.map +1 -1
  31. package/lib/module/dialog/CenteredDialog.web.js +2 -0
  32. package/lib/module/dialog/CenteredDialog.web.js.map +1 -1
  33. package/lib/module/dialog/Dialog.js +336 -46
  34. package/lib/module/dialog/Dialog.js.map +1 -1
  35. package/lib/module/dialog/Dialog.web.js +412 -65
  36. package/lib/module/dialog/Dialog.web.js.map +1 -1
  37. package/lib/module/dialog/index.js +1 -1
  38. package/lib/module/dialog/index.js.map +1 -1
  39. package/lib/module/dialog/index.web.js +1 -1
  40. package/lib/module/dialog/index.web.js.map +1 -1
  41. package/lib/module/dialog/placement.js +100 -0
  42. package/lib/module/dialog/placement.js.map +1 -0
  43. package/lib/module/index.js +3 -1
  44. package/lib/module/index.js.map +1 -1
  45. package/lib/module/index.web.js +3 -1
  46. package/lib/module/index.web.js.map +1 -1
  47. package/lib/module/responsive-sheet/ResponsiveSheet.js +90 -0
  48. package/lib/module/responsive-sheet/ResponsiveSheet.js.map +1 -0
  49. package/lib/module/responsive-sheet/ResponsiveSheet.web.js +77 -0
  50. package/lib/module/responsive-sheet/ResponsiveSheet.web.js.map +1 -0
  51. package/lib/module/responsive-sheet/index.js +4 -0
  52. package/lib/module/responsive-sheet/index.js.map +1 -0
  53. package/lib/module/responsive-sheet/index.web.js +12 -0
  54. package/lib/module/responsive-sheet/index.web.js.map +1 -0
  55. package/lib/module/responsive-sheet/types.js +4 -0
  56. package/lib/module/responsive-sheet/types.js.map +1 -0
  57. package/lib/typescript/commonjs/dialog/CenteredDialog.d.ts +2 -0
  58. package/lib/typescript/commonjs/dialog/CenteredDialog.d.ts.map +1 -1
  59. package/lib/typescript/commonjs/dialog/CenteredDialog.web.d.ts +2 -0
  60. package/lib/typescript/commonjs/dialog/CenteredDialog.web.d.ts.map +1 -1
  61. package/lib/typescript/commonjs/dialog/Dialog.d.ts +18 -15
  62. package/lib/typescript/commonjs/dialog/Dialog.d.ts.map +1 -1
  63. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts +18 -5
  64. package/lib/typescript/commonjs/dialog/Dialog.web.d.ts.map +1 -1
  65. package/lib/typescript/commonjs/dialog/centered-dialog-types.d.ts +4 -0
  66. package/lib/typescript/commonjs/dialog/centered-dialog-types.d.ts.map +1 -1
  67. package/lib/typescript/commonjs/dialog/index.d.ts +2 -2
  68. package/lib/typescript/commonjs/dialog/index.d.ts.map +1 -1
  69. package/lib/typescript/commonjs/dialog/index.web.d.ts +2 -2
  70. package/lib/typescript/commonjs/dialog/index.web.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/dialog/placement.d.ts +71 -0
  72. package/lib/typescript/commonjs/dialog/placement.d.ts.map +1 -0
  73. package/lib/typescript/commonjs/dialog/types.d.ts +66 -3
  74. package/lib/typescript/commonjs/dialog/types.d.ts.map +1 -1
  75. package/lib/typescript/commonjs/index.d.ts +4 -2
  76. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  77. package/lib/typescript/commonjs/index.web.d.ts +4 -2
  78. package/lib/typescript/commonjs/index.web.d.ts.map +1 -1
  79. package/lib/typescript/commonjs/responsive-sheet/ResponsiveSheet.d.ts +22 -0
  80. package/lib/typescript/commonjs/responsive-sheet/ResponsiveSheet.d.ts.map +1 -0
  81. package/lib/typescript/commonjs/responsive-sheet/ResponsiveSheet.web.d.ts +16 -0
  82. package/lib/typescript/commonjs/responsive-sheet/ResponsiveSheet.web.d.ts.map +1 -0
  83. package/lib/typescript/commonjs/responsive-sheet/index.d.ts +3 -0
  84. package/lib/typescript/commonjs/responsive-sheet/index.d.ts.map +1 -0
  85. package/lib/typescript/commonjs/responsive-sheet/index.web.d.ts +3 -0
  86. package/lib/typescript/commonjs/responsive-sheet/index.web.d.ts.map +1 -0
  87. package/lib/typescript/commonjs/responsive-sheet/types.d.ts +58 -0
  88. package/lib/typescript/commonjs/responsive-sheet/types.d.ts.map +1 -0
  89. package/lib/typescript/module/dialog/CenteredDialog.d.ts +2 -0
  90. package/lib/typescript/module/dialog/CenteredDialog.d.ts.map +1 -1
  91. package/lib/typescript/module/dialog/CenteredDialog.web.d.ts +2 -0
  92. package/lib/typescript/module/dialog/CenteredDialog.web.d.ts.map +1 -1
  93. package/lib/typescript/module/dialog/Dialog.d.ts +18 -15
  94. package/lib/typescript/module/dialog/Dialog.d.ts.map +1 -1
  95. package/lib/typescript/module/dialog/Dialog.web.d.ts +18 -5
  96. package/lib/typescript/module/dialog/Dialog.web.d.ts.map +1 -1
  97. package/lib/typescript/module/dialog/centered-dialog-types.d.ts +4 -0
  98. package/lib/typescript/module/dialog/centered-dialog-types.d.ts.map +1 -1
  99. package/lib/typescript/module/dialog/index.d.ts +2 -2
  100. package/lib/typescript/module/dialog/index.d.ts.map +1 -1
  101. package/lib/typescript/module/dialog/index.web.d.ts +2 -2
  102. package/lib/typescript/module/dialog/index.web.d.ts.map +1 -1
  103. package/lib/typescript/module/dialog/placement.d.ts +71 -0
  104. package/lib/typescript/module/dialog/placement.d.ts.map +1 -0
  105. package/lib/typescript/module/dialog/types.d.ts +66 -3
  106. package/lib/typescript/module/dialog/types.d.ts.map +1 -1
  107. package/lib/typescript/module/index.d.ts +4 -2
  108. package/lib/typescript/module/index.d.ts.map +1 -1
  109. package/lib/typescript/module/index.web.d.ts +4 -2
  110. package/lib/typescript/module/index.web.d.ts.map +1 -1
  111. package/lib/typescript/module/responsive-sheet/ResponsiveSheet.d.ts +22 -0
  112. package/lib/typescript/module/responsive-sheet/ResponsiveSheet.d.ts.map +1 -0
  113. package/lib/typescript/module/responsive-sheet/ResponsiveSheet.web.d.ts +16 -0
  114. package/lib/typescript/module/responsive-sheet/ResponsiveSheet.web.d.ts.map +1 -0
  115. package/lib/typescript/module/responsive-sheet/index.d.ts +3 -0
  116. package/lib/typescript/module/responsive-sheet/index.d.ts.map +1 -0
  117. package/lib/typescript/module/responsive-sheet/index.web.d.ts +3 -0
  118. package/lib/typescript/module/responsive-sheet/index.web.d.ts.map +1 -0
  119. package/lib/typescript/module/responsive-sheet/types.d.ts +58 -0
  120. package/lib/typescript/module/responsive-sheet/types.d.ts.map +1 -0
  121. package/package.json +18 -1
  122. package/src/__tests__/DialogPlacement.test.tsx +144 -0
  123. package/src/__tests__/ResponsiveSheet.test.tsx +88 -0
  124. package/src/dialog/CenteredDialog.tsx +2 -0
  125. package/src/dialog/CenteredDialog.web.tsx +2 -0
  126. package/src/dialog/Dialog.tsx +407 -50
  127. package/src/dialog/Dialog.web.tsx +490 -75
  128. package/src/dialog/centered-dialog-types.ts +4 -0
  129. package/src/dialog/index.ts +4 -1
  130. package/src/dialog/index.web.ts +4 -1
  131. package/src/dialog/placement.ts +113 -0
  132. package/src/dialog/types.ts +69 -3
  133. package/src/index.ts +12 -0
  134. package/src/index.web.ts +12 -0
  135. package/src/responsive-sheet/ResponsiveSheet.stories.tsx +54 -0
  136. package/src/responsive-sheet/ResponsiveSheet.tsx +88 -0
  137. package/src/responsive-sheet/ResponsiveSheet.web.tsx +76 -0
  138. package/src/responsive-sheet/index.ts +6 -0
  139. package/src/responsive-sheet/index.web.ts +14 -0
  140. package/src/responsive-sheet/types.ts +60 -0
@@ -1,49 +1,81 @@
1
1
  "use strict";
2
2
 
3
- import React, { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef } from 'react';
4
- import { Text, TouchableOpacity, View } from 'react-native';
3
+ import React, { useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from 'react';
4
+ import { Pressable, StyleSheet, Text, TouchableOpacity, useWindowDimensions, View } from 'react-native';
5
+ import Animated, { cancelAnimation, Easing, runOnJS, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
5
6
  import { BottomSheet } from "../bottom-sheet/index.js";
7
+ import { Z_INDEX } from "../styles/z-index.js";
6
8
  import { useTheme } from "../theme/use-theme.js";
7
9
  import { Context, useDialogContext, useDialogControl } from "./context.js";
8
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
10
+ import { ANIMATION_DURATION, DEFAULT_MAX_HEIGHT_RATIO, DEFAULT_SIDE_WIDTH, DIALOG_SHEET_BACKDROP_TESTID, PANEL_RADIUS, SHEET_BACKDROP_OPACITY, SIDE_SHEET_MIN_GUTTER, useResolvedPlacement } from "./placement.js";
11
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
12
+ export { DIALOG_SHEET_BACKDROP_TESTID };
13
+
9
14
  /**
10
15
  * Native variant of `<Dialog>`.
11
16
  *
12
- * Uses bloom's own `BottomSheet` in `detached` mode as the underlying
13
- * surface a floating, dynamically-sized, content-hugging card that
14
- * gracefully degrades from sheet (phone) to centered card (tablet, via the
15
- * 500px max-width cap).
17
+ * Open/close is driven by EITHER the imperative `control` (legacy) OR the
18
+ * controlled `open` prop. When `open` is provided it wins.
16
19
  *
17
- * The component accepts three rendering modes simultaneously:
20
+ * `placement` selects the surface:
18
21
  *
19
- * 1. Declarative `title`, `description`, `actions`. Bloom renders a
20
- * standard confirm/destructive/cancel layout.
21
- * 2. Custom children caller passes JSX, bloom renders the chrome (title
22
- * + close behaviour) and the children fill the body.
23
- * 3. Pure childrenno `title`/`description`/`actions`; caller owns
24
- * every pixel.
22
+ * - `'center'` (default) / `'bottom'` bloom's `BottomSheet` (`detached`
23
+ * for center: a floating, content-hugging card that degrades from sheet to
24
+ * centered card via the 500px cap; flush for bottom: a full-width sheet
25
+ * with a drag handle). Default behavior is unchanged.
26
+ * - `'left'` / `'right'` an anchored side-sheet/drawer driven by
27
+ * reanimated (the `responsive-sheet` native technique). Exit animations
28
+ * are safe on native.
29
+ *
30
+ * The component accepts three rendering modes simultaneously:
25
31
  *
26
- * All three share the same dismissal semantics: tapping the backdrop, the
27
- * drag handle, swiping down, or `control.close()` runs the queued close
28
- * callbacks once the sheet's exit animation has settled.
32
+ * 1. Declarative `title`, `description`, `actions`.
33
+ * 2. Custom children caller passes JSX, bloom renders the chrome.
34
+ * 3. Pure children no `title`/`description`/`actions`.
29
35
  */
30
36
  export function Dialog({
31
37
  control,
38
+ open: controlledOpen,
32
39
  onClose,
33
40
  testID,
34
41
  title,
35
42
  description,
36
43
  actions,
44
+ placement,
45
+ width = DEFAULT_SIDE_WIDTH,
46
+ maxHeightRatio = DEFAULT_MAX_HEIGHT_RATIO,
47
+ inset,
48
+ showHandle = true,
49
+ dismissOnBackdrop = true,
37
50
  style,
51
+ panelStyle,
52
+ panelClassName,
53
+ containerStyle,
54
+ containerClassName,
38
55
  label,
39
56
  children
40
57
  }) {
58
+ const isControlled = controlledOpen !== undefined;
59
+ const resolvedPlacement = useResolvedPlacement(placement);
60
+ const isSide = resolvedPlacement === 'left' || resolvedPlacement === 'right';
61
+
62
+ // Imperative open state for the side placement (the BottomSheet path owns its
63
+ // own visibility via its ref instead).
64
+ const [sideOpen, setSideOpen] = useState(false);
41
65
  const theme = useTheme();
42
66
  const ref = useRef(null);
43
67
  const closeCallbacks = useRef([]);
44
68
  const titleId = useId();
45
69
  const descriptionId = useId();
46
70
 
71
+ // Read the latest controlled flag / `onClose` inside stable callbacks
72
+ // without re-binding them (the context + imperative handle depend on `close`
73
+ // staying referentially stable).
74
+ const isControlledRef = useRef(isControlled);
75
+ isControlledRef.current = isControlled;
76
+ const onCloseRef = useRef(onClose);
77
+ onCloseRef.current = onClose;
78
+
47
79
  // Drain queued close callbacks atomically — capturing the list and
48
80
  // resetting it before invocation ensures a callback that synchronously
49
81
  // re-opens the dialog (and queues fresh callbacks) does not see the old
@@ -62,19 +94,49 @@ export function Dialog({
62
94
  }
63
95
  }, []);
64
96
  const open = useCallback(() => {
97
+ setSideOpen(true);
65
98
  ref.current?.present();
66
99
  }, []);
100
+
101
+ // A dismissal request (backdrop, pan-to-close, action button). In controlled
102
+ // mode it asks the host to close via `onClose` (the host flips `open`); in
103
+ // imperative mode it dismisses the surface directly. The optional callback
104
+ // runs once the dialog has finished closing.
67
105
  const close = useCallback(cb => {
68
106
  if (typeof cb === 'function') {
69
107
  closeCallbacks.current.push(cb);
70
108
  }
109
+ if (isControlledRef.current) {
110
+ onCloseRef.current?.();
111
+ return;
112
+ }
113
+ setSideOpen(false);
71
114
  ref.current?.dismiss();
72
115
  }, []);
116
+
117
+ // Fired when the underlying surface has finished closing. Drains queued
118
+ // callbacks, then fires `onClose` ONLY in imperative mode — controlled mode
119
+ // already requested the close through `onClose` (the host then flipped
120
+ // `open`), so firing it again here would double-call it.
73
121
  const handleDismiss = useCallback(() => {
74
122
  callQueuedCallbacks();
75
- onClose?.();
76
- }, [callQueuedCallbacks, onClose]);
77
- useImperativeHandle(control.ref, () => ({
123
+ if (!isControlledRef.current) onCloseRef.current?.();
124
+ }, [callQueuedCallbacks]);
125
+
126
+ // In controlled mode, mirror the `open` prop onto the underlying surface so
127
+ // both modes share one lifecycle. The BottomSheet path presents/dismisses by
128
+ // ref; the side path flips `sideOpen`.
129
+ useEffect(() => {
130
+ if (!isControlled) return;
131
+ if (controlledOpen) {
132
+ setSideOpen(true);
133
+ ref.current?.present();
134
+ } else {
135
+ setSideOpen(false);
136
+ ref.current?.dismiss();
137
+ }
138
+ }, [isControlled, controlledOpen]);
139
+ useImperativeHandle(control?.ref, () => ({
78
140
  open,
79
141
  close
80
142
  }), [open, close]);
@@ -90,23 +152,61 @@ export function Dialog({
90
152
  // floating and rounded uniformly.
91
153
  borderRadius: 20
92
154
  }), [theme.colors.background]);
155
+ const bodyNode = /*#__PURE__*/_jsx(DialogBody, {
156
+ titleId: titleId,
157
+ descriptionId: descriptionId,
158
+ title: title,
159
+ description: description,
160
+ actions: actions,
161
+ children: children
162
+ });
163
+ if (isSide) {
164
+ return /*#__PURE__*/_jsx(Context.Provider, {
165
+ value: context,
166
+ children: /*#__PURE__*/_jsx(SideSheet, {
167
+ open: sideOpen,
168
+ onDismiss: handleDismiss,
169
+ side: resolvedPlacement,
170
+ width: width,
171
+ inset: inset,
172
+ dismissOnBackdrop: dismissOnBackdrop,
173
+ testID: testID,
174
+ label: label,
175
+ title: title,
176
+ description: description,
177
+ titleId: titleId,
178
+ descriptionId: descriptionId,
179
+ panelStyle: panelStyle,
180
+ panelClassName: panelClassName,
181
+ containerStyle: containerStyle,
182
+ containerClassName: containerClassName,
183
+ style: style,
184
+ children: bodyNode
185
+ })
186
+ });
187
+ }
188
+ const isBottom = resolvedPlacement === 'bottom';
93
189
  return /*#__PURE__*/_jsx(BottomSheet, {
94
190
  ref: ref,
95
191
  onDismiss: handleDismiss,
96
192
  enablePanDownToClose: true,
97
- detached: true
193
+ detached: !isBottom,
194
+ showHandle: isBottom ? showHandle : true
98
195
  // Stronger dim when a Dialog is stacked over another sheet so the
99
196
  // underlying sheet's handle/content doesn't bleed through.
100
197
  ,
101
198
  backdropOpacity: 0.7,
102
- style: sheetStyle,
199
+ style: isBottom ? bottomSheetStyle(theme.colors.background, maxHeightRatio) : sheetStyle,
103
200
  children: /*#__PURE__*/_jsx(Context.Provider, {
104
201
  value: context,
105
- children: /*#__PURE__*/_jsxs(View, {
202
+ children: /*#__PURE__*/_jsx(View, {
106
203
  testID: testID,
107
204
  accessibilityLabel: label,
108
205
  "aria-labelledby": title ? titleId : undefined,
109
206
  "aria-describedby": description ? descriptionId : undefined,
207
+ ...(panelClassName ? {
208
+ className: panelClassName
209
+ } : {}),
110
210
  style: [
111
211
  // Detached BottomSheet already adds `marginBottom: insets.bottom + 16`
112
212
  // to the sheet container — the floating card sits ABOVE the
@@ -117,33 +217,199 @@ export function Dialog({
117
217
  paddingBottom: 20
118
218
  }, {
119
219
  backgroundColor: theme.colors.background
120
- }, style],
121
- children: [title ? /*#__PURE__*/_jsx(Text, {
122
- nativeID: titleId,
123
- style: {
124
- fontSize: 22,
125
- fontWeight: '600',
126
- color: theme.colors.text,
127
- paddingBottom: description ? 4 : 16,
128
- lineHeight: 30
129
- },
130
- children: title
131
- }) : null, description ? /*#__PURE__*/_jsx(Text, {
132
- nativeID: descriptionId,
133
- style: {
134
- fontSize: 16,
135
- color: theme.colors.textSecondary,
136
- paddingBottom: 16,
137
- lineHeight: 22
138
- },
139
- children: description
140
- }) : null, children, actions && actions.length > 0 ? /*#__PURE__*/_jsx(ActionRow, {
141
- actions: actions
142
- }) : null]
220
+ }, style, panelStyle],
221
+ children: bodyNode
143
222
  })
144
223
  })
145
224
  });
146
225
  }
226
+ function bottomSheetStyle(background, maxHeightRatio) {
227
+ return {
228
+ backgroundColor: background,
229
+ borderTopLeftRadius: PANEL_RADIUS + 4,
230
+ borderTopRightRadius: PANEL_RADIUS + 4,
231
+ maxHeight: `${Math.round(maxHeightRatio * 100)}%`
232
+ };
233
+ }
234
+
235
+ /**
236
+ * Renders the dialog's body: optional declarative title + description, any
237
+ * `children`, then the action row. Shared by all placements. The
238
+ * `titleId`/`descriptionId` are wired by the caller for accessibility.
239
+ */
240
+ function DialogBody({
241
+ titleId,
242
+ descriptionId,
243
+ title,
244
+ description,
245
+ actions,
246
+ children
247
+ }) {
248
+ const theme = useTheme();
249
+ return /*#__PURE__*/_jsxs(_Fragment, {
250
+ children: [title ? /*#__PURE__*/_jsx(Text, {
251
+ nativeID: titleId,
252
+ style: {
253
+ fontSize: 22,
254
+ fontWeight: '600',
255
+ color: theme.colors.text,
256
+ paddingBottom: description ? 4 : 16,
257
+ lineHeight: 30
258
+ },
259
+ children: title
260
+ }) : null, description ? /*#__PURE__*/_jsx(Text, {
261
+ nativeID: descriptionId,
262
+ style: {
263
+ fontSize: 16,
264
+ color: theme.colors.textSecondary,
265
+ paddingBottom: 16,
266
+ lineHeight: 22
267
+ },
268
+ children: description
269
+ }) : null, children, actions && actions.length > 0 ? /*#__PURE__*/_jsx(ActionRow, {
270
+ actions: actions
271
+ }) : null]
272
+ });
273
+ }
274
+
275
+ /**
276
+ * Reanimated side-sheet/drawer for the `left`/`right` placements (native).
277
+ *
278
+ * A shared `progress` value times 0 -> 1 on open and 1 -> 0 on close, mapped to
279
+ * the panel translateX and the backdrop opacity. The node stays mounted through
280
+ * the close timing and unmounts from the animation completion callback. Native
281
+ * exit animations are safe (the web `removeChild` crash does not apply).
282
+ */
283
+ function SideSheet({
284
+ open,
285
+ onDismiss,
286
+ side,
287
+ width,
288
+ inset,
289
+ dismissOnBackdrop,
290
+ testID,
291
+ label,
292
+ title,
293
+ description,
294
+ titleId,
295
+ descriptionId,
296
+ panelStyle,
297
+ panelClassName,
298
+ containerStyle,
299
+ containerClassName,
300
+ style,
301
+ children
302
+ }) {
303
+ const theme = useTheme();
304
+ const {
305
+ width: viewportWidth
306
+ } = useWindowDimensions();
307
+ const [mounted, setMounted] = useState(open);
308
+ const progress = useSharedValue(open ? 1 : 0);
309
+ const insetTop = inset?.top ?? 0;
310
+ const insetBottom = inset?.bottom ?? 0;
311
+ const insetLeft = inset?.left ?? 0;
312
+ const insetRight = inset?.right ?? 0;
313
+ const anchorInset = side === 'left' ? insetLeft : insetRight;
314
+ const oppositeInset = side === 'left' ? insetRight : insetLeft;
315
+ const sideWidth = useMemo(() => {
316
+ const available = viewportWidth - anchorInset - oppositeInset - SIDE_SHEET_MIN_GUTTER;
317
+ return Math.max(0, Math.min(width, available));
318
+ }, [viewportWidth, anchorInset, oppositeInset, width]);
319
+
320
+ // Travel distance for the hidden state: the panel's measured width, with the
321
+ // geometry target as the pre-measurement fallback.
322
+ const travel = useSharedValue(sideWidth);
323
+ useEffect(() => {
324
+ travel.value = sideWidth;
325
+ }, [sideWidth, travel]);
326
+ const finishClose = useCallback(() => {
327
+ setMounted(false);
328
+ onDismiss();
329
+ }, [onDismiss]);
330
+ useEffect(() => {
331
+ cancelAnimation(progress);
332
+ const timing = {
333
+ duration: ANIMATION_DURATION,
334
+ easing: Easing.out(Easing.cubic)
335
+ };
336
+ if (open) {
337
+ setMounted(true);
338
+ progress.value = withTiming(1, timing);
339
+ return;
340
+ }
341
+ if (!mounted) return;
342
+ progress.value = withTiming(0, timing, finished => {
343
+ if (finished) runOnJS(finishClose)();
344
+ });
345
+ }, [open, mounted, progress, finishClose]);
346
+ const handleBackdropPress = useCallback(() => {
347
+ if (dismissOnBackdrop) onDismiss();
348
+ }, [dismissOnBackdrop, onDismiss]);
349
+ const backdropAnimatedStyle = useAnimatedStyle(() => ({
350
+ opacity: progress.value * SHEET_BACKDROP_OPACITY
351
+ }));
352
+ const hiddenSign = side === 'left' ? -1 : 1;
353
+ const panelAnimatedStyle = useAnimatedStyle(() => {
354
+ const hidden = 1 - progress.value;
355
+ return {
356
+ opacity: progress.value,
357
+ transform: [{
358
+ translateX: hidden * travel.value * hiddenSign
359
+ }]
360
+ };
361
+ }, [hiddenSign]);
362
+ const measurePanel = useCallback(e => {
363
+ const measured = e.nativeEvent.layout.width;
364
+ if (measured > 0) travel.value = measured;
365
+ }, [travel]);
366
+ const panelGeometry = useMemo(() => ({
367
+ top: insetTop,
368
+ bottom: insetBottom,
369
+ [side]: anchorInset,
370
+ width: sideWidth,
371
+ borderRadius: PANEL_RADIUS
372
+ }), [insetTop, insetBottom, side, anchorInset, sideWidth]);
373
+ if (!mounted) return null;
374
+ return /*#__PURE__*/_jsxs(View, {
375
+ style: [sideStyles.root, containerStyle],
376
+ ...(containerClassName ? {
377
+ className: containerClassName
378
+ } : {}),
379
+ pointerEvents: "box-none",
380
+ children: [/*#__PURE__*/_jsx(Animated.View, {
381
+ style: [sideStyles.backdrop, backdropAnimatedStyle],
382
+ pointerEvents: "auto",
383
+ children: /*#__PURE__*/_jsx(Pressable, {
384
+ testID: testID ? `${testID}-backdrop` : DIALOG_SHEET_BACKDROP_TESTID,
385
+ accessibilityRole: "button",
386
+ accessibilityLabel: label ? `Dismiss ${label}` : 'Dismiss dialog',
387
+ onPress: handleBackdropPress,
388
+ disabled: !dismissOnBackdrop,
389
+ style: StyleSheet.absoluteFill
390
+ })
391
+ }), /*#__PURE__*/_jsx(Animated.View, {
392
+ accessibilityViewIsModal: true,
393
+ accessibilityLabel: label,
394
+ "aria-labelledby": title ? titleId : undefined,
395
+ "aria-describedby": description ? descriptionId : undefined,
396
+ testID: testID,
397
+ onLayout: measurePanel,
398
+ ...(panelClassName ? {
399
+ className: panelClassName
400
+ } : {}),
401
+ style: [sideStyles.panel, {
402
+ backgroundColor: theme.colors.background,
403
+ shadowColor: theme.colors.shadow
404
+ }, panelGeometry, panelAnimatedStyle, panelStyle, style],
405
+ pointerEvents: "auto",
406
+ children: /*#__PURE__*/_jsx(View, {
407
+ style: sideStyles.body,
408
+ children: children
409
+ })
410
+ })]
411
+ });
412
+ }
147
413
  function ActionRow({
148
414
  actions
149
415
  }) {
@@ -236,6 +502,30 @@ function getActionPalette(color, colors) {
236
502
  }
237
503
  }
238
504
  }
505
+ const sideStyles = StyleSheet.create({
506
+ root: {
507
+ ...StyleSheet.absoluteFill,
508
+ zIndex: Z_INDEX.fullscreen
509
+ },
510
+ backdrop: {
511
+ ...StyleSheet.absoluteFill,
512
+ backgroundColor: '#000'
513
+ },
514
+ panel: {
515
+ position: 'absolute',
516
+ overflow: 'hidden',
517
+ shadowOpacity: 0.18,
518
+ shadowRadius: 24,
519
+ shadowOffset: {
520
+ width: 0,
521
+ height: 8
522
+ },
523
+ elevation: 12
524
+ },
525
+ body: {
526
+ padding: 20
527
+ }
528
+ });
239
529
 
240
530
  /**
241
531
  * Helper used by the imperative `alert()` API. Mounts a `<Dialog>` against
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","Text","TouchableOpacity","View","BottomSheet","useTheme","Context","useDialogContext","useDialogControl","jsx","_jsx","jsxs","_jsxs","Dialog","control","onClose","testID","title","description","actions","style","label","children","theme","ref","closeCallbacks","titleId","descriptionId","callQueuedCallbacks","queued","current","cb","e","console","error","open","present","close","push","dismiss","handleDismiss","context","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","onDismiss","enablePanDownToClose","detached","backdropOpacity","Provider","value","accessibilityLabel","undefined","paddingTop","paddingHorizontal","paddingBottom","nativeID","fontSize","fontWeight","color","text","lineHeight","textSecondary","length","ActionRow","width","gap","justifyContent","map","action","idx","ActionButton","shouldCloseOnPress","foreground","getActionPalette","handlePress","onPress","alignItems","opacity","disabled","paddingVertical","activeOpacity","negative","negativeForeground","contrast50","primary","primaryForeground","_exhaustive","AutoMountedDialog","onResolve"],"sourceRoot":"../../../src","sources":["dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useCallback","useEffect","useId","useImperativeHandle","useMemo","useRef","useState","Pressable","StyleSheet","Text","TouchableOpacity","useWindowDimensions","View","Animated","cancelAnimation","Easing","runOnJS","useAnimatedStyle","useSharedValue","withTiming","BottomSheet","Z_INDEX","useTheme","Context","useDialogContext","useDialogControl","ANIMATION_DURATION","DEFAULT_MAX_HEIGHT_RATIO","DEFAULT_SIDE_WIDTH","DIALOG_SHEET_BACKDROP_TESTID","PANEL_RADIUS","SHEET_BACKDROP_OPACITY","SIDE_SHEET_MIN_GUTTER","useResolvedPlacement","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","Dialog","control","open","controlledOpen","onClose","testID","title","description","actions","placement","width","maxHeightRatio","inset","showHandle","dismissOnBackdrop","style","panelStyle","panelClassName","containerStyle","containerClassName","label","children","isControlled","undefined","resolvedPlacement","isSide","sideOpen","setSideOpen","theme","ref","closeCallbacks","titleId","descriptionId","isControlledRef","current","onCloseRef","callQueuedCallbacks","queued","cb","e","console","error","present","close","push","dismiss","handleDismiss","context","isWithinDialog","sheetStyle","maxWidth","backgroundColor","colors","background","borderRadius","bodyNode","DialogBody","Provider","value","SideSheet","onDismiss","side","isBottom","enablePanDownToClose","detached","backdropOpacity","bottomSheetStyle","accessibilityLabel","className","paddingTop","paddingHorizontal","paddingBottom","borderTopLeftRadius","borderTopRightRadius","maxHeight","Math","round","nativeID","fontSize","fontWeight","color","text","lineHeight","textSecondary","length","ActionRow","viewportWidth","mounted","setMounted","progress","insetTop","top","insetBottom","bottom","insetLeft","left","insetRight","right","anchorInset","oppositeInset","sideWidth","available","max","min","travel","finishClose","timing","duration","easing","out","cubic","finished","handleBackdropPress","backdropAnimatedStyle","opacity","hiddenSign","panelAnimatedStyle","hidden","transform","translateX","measurePanel","measured","nativeEvent","layout","panelGeometry","sideStyles","root","pointerEvents","backdrop","accessibilityRole","onPress","disabled","absoluteFill","accessibilityViewIsModal","onLayout","panel","shadowColor","shadow","body","gap","justifyContent","map","action","idx","ActionButton","shouldCloseOnPress","foreground","getActionPalette","handlePress","alignItems","paddingVertical","activeOpacity","negative","negativeForeground","contrast50","primary","primaryForeground","_exhaustive","create","zIndex","fullscreen","position","overflow","shadowOpacity","shadowRadius","shadowOffset","height","elevation","padding","AutoMountedDialog","onResolve"],"sourceRoot":"../../../src","sources":["dialog/Dialog.tsx"],"mappings":"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","ignoreList":[]}