react-native-bottom-sheet-stack 1.3.0 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -23
- package/lib/commonjs/bottomSheet.store.js +17 -1
- package/lib/commonjs/bottomSheet.store.js.map +1 -1
- package/lib/commonjs/useBottomSheetControl.js +46 -13
- package/lib/commonjs/useBottomSheetControl.js.map +1 -1
- package/lib/commonjs/useBottomSheetState.js +13 -8
- package/lib/commonjs/useBottomSheetState.js.map +1 -1
- package/lib/typescript/src/bottomSheet.store.d.ts +4 -1
- package/lib/typescript/src/bottomSheet.store.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/portal.types.d.ts +13 -4
- package/lib/typescript/src/portal.types.d.ts.map +1 -1
- package/lib/typescript/src/useBottomSheetControl.d.ts +13 -4
- package/lib/typescript/src/useBottomSheetControl.d.ts.map +1 -1
- package/lib/typescript/src/useBottomSheetManager.d.ts +2 -0
- package/lib/typescript/src/useBottomSheetManager.d.ts.map +1 -1
- package/lib/typescript/src/useBottomSheetState.d.ts +9 -2
- package/lib/typescript/src/useBottomSheetState.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/bottomSheet.store.ts +19 -1
- package/src/index.tsx +1 -0
- package/src/portal.types.ts +29 -4
- package/src/useBottomSheetControl.ts +38 -8
- package/src/useBottomSheetState.ts +22 -2
package/README.md
CHANGED
|
@@ -168,9 +168,9 @@ function MyComponent() {
|
|
|
168
168
|
|
|
169
169
|
The portal API uses [react-native-teleport](https://github.com/nicklockwood/react-native-teleport) to render content in your component tree while displaying it in `BottomSheetHost`.
|
|
170
170
|
|
|
171
|
-
### Type-Safe Portal IDs
|
|
171
|
+
### Type-Safe Portal IDs & Params
|
|
172
172
|
|
|
173
|
-
You can get autocomplete and type checking for portal sheet IDs by augmenting the `BottomSheetPortalRegistry` interface.
|
|
173
|
+
You can get autocomplete and type checking for portal sheet IDs and their parameters by augmenting the `BottomSheetPortalRegistry` interface.
|
|
174
174
|
|
|
175
175
|
**Step 1:** Create a type declaration file in your project (e.g., `src/types/bottom-sheet.d.ts`):
|
|
176
176
|
|
|
@@ -179,13 +179,17 @@ import 'react-native-bottom-sheet-stack';
|
|
|
179
179
|
|
|
180
180
|
declare module 'react-native-bottom-sheet-stack' {
|
|
181
181
|
interface BottomSheetPortalRegistry {
|
|
182
|
-
'settings-sheet': true;
|
|
183
|
-
'profile-sheet':
|
|
184
|
-
'confirm-dialog': true;
|
|
182
|
+
'settings-sheet': true; // no params
|
|
183
|
+
'profile-sheet': { userId: string }; // with required params
|
|
185
184
|
}
|
|
186
185
|
}
|
|
187
186
|
```
|
|
188
187
|
|
|
188
|
+
| Value | Meaning |
|
|
189
|
+
|-------|---------|
|
|
190
|
+
| `true` | Sheet has no params |
|
|
191
|
+
| `{ ... }` | Sheet has required params |
|
|
192
|
+
|
|
189
193
|
**Step 2:** Make sure the file is included in your `tsconfig.json`:
|
|
190
194
|
|
|
191
195
|
```json
|
|
@@ -200,19 +204,35 @@ declare module 'react-native-bottom-sheet-stack' {
|
|
|
200
204
|
}
|
|
201
205
|
```
|
|
202
206
|
|
|
203
|
-
**Step 3:** Now TypeScript will autocomplete and validate
|
|
207
|
+
**Step 3:** Now TypeScript will autocomplete and validate IDs and params:
|
|
208
|
+
|
|
209
|
+
```tsx
|
|
210
|
+
// ✅ No params required (defined as `true`)
|
|
211
|
+
settingsControl.open();
|
|
212
|
+
|
|
213
|
+
// ✅ Params required (defined as object)
|
|
214
|
+
profileControl.open({ params: { userId: '123' } });
|
|
215
|
+
|
|
216
|
+
// ❌ Error - missing required params
|
|
217
|
+
profileControl.open(); // TypeScript error!
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
**Step 4:** Access typed params inside your sheet:
|
|
204
221
|
|
|
205
222
|
```tsx
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
const
|
|
223
|
+
const ProfileSheet = forwardRef((props, ref) => {
|
|
224
|
+
// Pass the sheet ID as generic to get typed params
|
|
225
|
+
const { params, close } = useBottomSheetState<'profile-sheet'>();
|
|
209
226
|
|
|
210
|
-
|
|
211
|
-
<
|
|
212
|
-
|
|
227
|
+
return (
|
|
228
|
+
<BottomSheetManaged ref={ref}>
|
|
229
|
+
<Text>User ID: {params.userId}</Text> {/* ✅ type-safe */}
|
|
230
|
+
</BottomSheetManaged>
|
|
231
|
+
);
|
|
232
|
+
});
|
|
213
233
|
```
|
|
214
234
|
|
|
215
|
-
If you don't augment the registry, the `id` accepts any `string`
|
|
235
|
+
If you don't augment the registry, the `id` accepts any `string` and `params` is `unknown`.
|
|
216
236
|
|
|
217
237
|
## API Reference
|
|
218
238
|
|
|
@@ -256,40 +276,56 @@ const {
|
|
|
256
276
|
} = useBottomSheetManager();
|
|
257
277
|
```
|
|
258
278
|
|
|
259
|
-
#### `useBottomSheetState()`
|
|
279
|
+
#### `useBottomSheetState<T>()`
|
|
260
280
|
|
|
261
|
-
Use inside a bottom sheet component:
|
|
281
|
+
Use inside a bottom sheet component. Pass a portal ID as generic for typed params:
|
|
262
282
|
|
|
263
283
|
```tsx
|
|
264
284
|
const {
|
|
265
285
|
bottomSheetState, // { id, status, groupId, ... }
|
|
286
|
+
params, // typed if generic provided, unknown otherwise
|
|
266
287
|
close, // () => void
|
|
267
|
-
} = useBottomSheetState();
|
|
288
|
+
} = useBottomSheetState<'my-sheet'>();
|
|
268
289
|
```
|
|
269
290
|
|
|
270
|
-
#### `useBottomSheetControl(id:
|
|
291
|
+
#### `useBottomSheetControl<T>(id: T)`
|
|
271
292
|
|
|
272
|
-
Control portal-based sheets:
|
|
293
|
+
Control portal-based sheets. Params are type-safe if registry is augmented:
|
|
273
294
|
|
|
274
295
|
```tsx
|
|
275
296
|
const {
|
|
276
|
-
open,
|
|
277
|
-
close,
|
|
278
|
-
|
|
279
|
-
|
|
297
|
+
open, // (options?) => void - options include typed params
|
|
298
|
+
close, // () => void
|
|
299
|
+
updateParams, // (params) => void - update params while open
|
|
300
|
+
resetParams, // () => void - reset params to undefined
|
|
301
|
+
isOpen, // boolean
|
|
302
|
+
status, // 'opening' | 'open' | 'closing' | 'hidden' | null
|
|
280
303
|
} = useBottomSheetControl('my-sheet');
|
|
304
|
+
|
|
305
|
+
// Open with params (required if defined in registry)
|
|
306
|
+
open({ params: { userId: '123' }, scaleBackground: true });
|
|
307
|
+
|
|
308
|
+
// Update params while sheet is open
|
|
309
|
+
updateParams({ userId: '456' });
|
|
310
|
+
|
|
311
|
+
// Reset params
|
|
312
|
+
resetParams();
|
|
281
313
|
```
|
|
282
314
|
|
|
283
315
|
### Types
|
|
284
316
|
|
|
285
317
|
#### `BottomSheetPortalRegistry`
|
|
286
318
|
|
|
287
|
-
Interface to augment for type-safe portal IDs. See [Type-Safe Portal IDs](#type-safe-portal-ids).
|
|
319
|
+
Interface to augment for type-safe portal IDs and params. See [Type-Safe Portal IDs & Params](#type-safe-portal-ids--params).
|
|
288
320
|
|
|
289
321
|
#### `BottomSheetPortalId`
|
|
290
322
|
|
|
291
323
|
Type for portal sheet IDs. If `BottomSheetPortalRegistry` is augmented, this is a union of registered keys. Otherwise, it's `string`.
|
|
292
324
|
|
|
325
|
+
#### `BottomSheetPortalParams<T>`
|
|
326
|
+
|
|
327
|
+
Type helper to extract params for a given portal sheet ID. Returns `undefined` if the sheet has no params (`true` in registry), or the param type if defined.
|
|
328
|
+
|
|
293
329
|
## Example
|
|
294
330
|
|
|
295
331
|
See the [example app](./example) for a full demo including:
|
|
@@ -83,7 +83,8 @@ const useBottomSheetStore = exports.useBottomSheetStore = (0, _traditional.creat
|
|
|
83
83
|
content: null,
|
|
84
84
|
status: 'opening',
|
|
85
85
|
usePortal: true,
|
|
86
|
-
scaleBackground: options?.scaleBackground
|
|
86
|
+
scaleBackground: options?.scaleBackground,
|
|
87
|
+
params: options?.params
|
|
87
88
|
}
|
|
88
89
|
},
|
|
89
90
|
stackOrder: [...state.stackOrder, id]
|
|
@@ -151,6 +152,21 @@ const useBottomSheetStore = exports.useBottomSheetStore = (0, _traditional.creat
|
|
|
151
152
|
stackOrder: newStackOrder
|
|
152
153
|
};
|
|
153
154
|
}),
|
|
155
|
+
updateParams: (id, params) => set(state => {
|
|
156
|
+
const sheet = state.sheetsById[id];
|
|
157
|
+
if (!sheet) {
|
|
158
|
+
return state;
|
|
159
|
+
}
|
|
160
|
+
return {
|
|
161
|
+
sheetsById: {
|
|
162
|
+
...state.sheetsById,
|
|
163
|
+
[id]: {
|
|
164
|
+
...sheet,
|
|
165
|
+
params
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
}),
|
|
154
170
|
clearAll: () => set(() => ({
|
|
155
171
|
sheetsById: {},
|
|
156
172
|
stackOrder: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_middleware","require","_traditional","useBottomSheetStore","exports","create","subscribeWithSelector","set","sheetsById","stackOrder","push","sheet","state","id","status","switch","newSheetsById","topId","length","replace","openPortal","groupId","options","content","usePortal","scaleBackground","markOpen","startClosing","index","indexOf","belowId","belowSheet","undefined","finishClosing","newStackOrder","filter","sheetId","topSheet","clearAll"],"sourceRoot":"../../src","sources":["bottomSheet.store.ts"],"mappings":";;;;;;AACA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_middleware","require","_traditional","useBottomSheetStore","exports","create","subscribeWithSelector","set","sheetsById","stackOrder","push","sheet","state","id","status","switch","newSheetsById","topId","length","replace","openPortal","groupId","options","content","usePortal","scaleBackground","params","markOpen","startClosing","index","indexOf","belowId","belowSheet","undefined","finishClosing","newStackOrder","filter","sheetId","topSheet","updateParams","clearAll"],"sourceRoot":"../../src","sources":["bottomSheet.store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,13 +11,14 @@ var _BottomSheetManager = require("./BottomSheetManager.provider");
|
|
|
11
11
|
var _refsMap = require("./refsMap");
|
|
12
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
13
|
function useBottomSheetControl(id) {
|
|
14
|
-
const $ = (0, _compilerRuntime.c)(
|
|
14
|
+
const $ = (0, _compilerRuntime.c)(22);
|
|
15
15
|
const bottomSheetManagerContext = (0, _BottomSheetManager.useMaybeBottomSheetManagerContext)();
|
|
16
16
|
const openPortal = (0, _bottomSheet.useBottomSheetStore)(_temp);
|
|
17
17
|
const startClosing = (0, _bottomSheet.useBottomSheetStore)(_temp2);
|
|
18
|
+
const storeUpdateParams = (0, _bottomSheet.useBottomSheetStore)(_temp3);
|
|
18
19
|
let t0;
|
|
19
20
|
if ($[0] !== id) {
|
|
20
|
-
t0 =
|
|
21
|
+
t0 = state_2 => state_2.sheetsById[id];
|
|
21
22
|
$[0] = id;
|
|
22
23
|
$[1] = t0;
|
|
23
24
|
} else {
|
|
@@ -52,25 +53,57 @@ function useBottomSheetControl(id) {
|
|
|
52
53
|
t2 = $[8];
|
|
53
54
|
}
|
|
54
55
|
const close = t2;
|
|
56
|
+
let t3;
|
|
57
|
+
if ($[9] !== id || $[10] !== storeUpdateParams) {
|
|
58
|
+
t3 = params => {
|
|
59
|
+
storeUpdateParams(id, params);
|
|
60
|
+
};
|
|
61
|
+
$[9] = id;
|
|
62
|
+
$[10] = storeUpdateParams;
|
|
63
|
+
$[11] = t3;
|
|
64
|
+
} else {
|
|
65
|
+
t3 = $[11];
|
|
66
|
+
}
|
|
67
|
+
const updateParams = t3;
|
|
68
|
+
let t4;
|
|
69
|
+
if ($[12] !== id || $[13] !== storeUpdateParams) {
|
|
70
|
+
t4 = () => {
|
|
71
|
+
storeUpdateParams(id, undefined);
|
|
72
|
+
};
|
|
73
|
+
$[12] = id;
|
|
74
|
+
$[13] = storeUpdateParams;
|
|
75
|
+
$[14] = t4;
|
|
76
|
+
} else {
|
|
77
|
+
t4 = $[14];
|
|
78
|
+
}
|
|
79
|
+
const resetParams = t4;
|
|
55
80
|
const status = sheetState?.status ?? null;
|
|
56
81
|
const isOpen = status === "open" || status === "opening";
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
82
|
+
const t5 = open;
|
|
83
|
+
let t6;
|
|
84
|
+
if ($[15] !== close || $[16] !== isOpen || $[17] !== resetParams || $[18] !== status || $[19] !== t5 || $[20] !== updateParams) {
|
|
85
|
+
t6 = {
|
|
86
|
+
open: t5,
|
|
61
87
|
close,
|
|
88
|
+
updateParams,
|
|
89
|
+
resetParams,
|
|
62
90
|
isOpen,
|
|
63
91
|
status
|
|
64
92
|
};
|
|
65
|
-
$[
|
|
66
|
-
$[
|
|
67
|
-
$[
|
|
68
|
-
$[
|
|
69
|
-
$[
|
|
93
|
+
$[15] = close;
|
|
94
|
+
$[16] = isOpen;
|
|
95
|
+
$[17] = resetParams;
|
|
96
|
+
$[18] = status;
|
|
97
|
+
$[19] = t5;
|
|
98
|
+
$[20] = updateParams;
|
|
99
|
+
$[21] = t6;
|
|
70
100
|
} else {
|
|
71
|
-
|
|
101
|
+
t6 = $[21];
|
|
72
102
|
}
|
|
73
|
-
return
|
|
103
|
+
return t6;
|
|
104
|
+
}
|
|
105
|
+
function _temp3(state_1) {
|
|
106
|
+
return state_1.updateParams;
|
|
74
107
|
}
|
|
75
108
|
function _temp2(state_0) {
|
|
76
109
|
return state_0.startClosing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireDefault","require","_bottomSheet","_BottomSheetManager","_refsMap","e","__esModule","default","useBottomSheetControl","id","$","_compilerRuntime","c","bottomSheetManagerContext","useMaybeBottomSheetManagerContext","openPortal","useBottomSheetStore","_temp","startClosing","_temp2","t0","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_bottomSheet","_BottomSheetManager","_refsMap","e","__esModule","default","useBottomSheetControl","id","$","_compilerRuntime","c","bottomSheetManagerContext","useMaybeBottomSheetManagerContext","openPortal","useBottomSheetStore","_temp","startClosing","_temp2","storeUpdateParams","_temp3","t0","state_2","state","sheetsById","sheetState","t1","groupId","options","ref","React","createRef","sheetRefs","open","t2","close","t3","params","updateParams","t4","undefined","resetParams","status","isOpen","t5","t6","state_1","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetControl.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,8 +7,10 @@ exports.useBottomSheetState = useBottomSheetState;
|
|
|
7
7
|
var _compilerRuntime = require("react/compiler-runtime");
|
|
8
8
|
var _BottomSheet = require("./BottomSheet.context");
|
|
9
9
|
var _bottomSheet = require("./bottomSheet.store");
|
|
10
|
+
// Marker type to detect when no generic is provided
|
|
11
|
+
|
|
10
12
|
function useBottomSheetState() {
|
|
11
|
-
const $ = (0, _compilerRuntime.c)(
|
|
13
|
+
const $ = (0, _compilerRuntime.c)(9);
|
|
12
14
|
const context = (0, _BottomSheet.useMaybeBottomSheetContext)();
|
|
13
15
|
let t0;
|
|
14
16
|
if ($[0] !== context?.id) {
|
|
@@ -24,29 +26,32 @@ function useBottomSheetState() {
|
|
|
24
26
|
throw new Error("useBottomSheetState must be used within a BottomSheetProvider");
|
|
25
27
|
}
|
|
26
28
|
let t1;
|
|
27
|
-
if ($[2] !== bottomSheetState || $[3] !== startClosing) {
|
|
29
|
+
if ($[2] !== bottomSheetState.id || $[3] !== startClosing) {
|
|
28
30
|
t1 = () => startClosing(bottomSheetState.id);
|
|
29
|
-
$[2] = bottomSheetState;
|
|
31
|
+
$[2] = bottomSheetState.id;
|
|
30
32
|
$[3] = startClosing;
|
|
31
33
|
$[4] = t1;
|
|
32
34
|
} else {
|
|
33
35
|
t1 = $[4];
|
|
34
36
|
}
|
|
35
37
|
const close = t1;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
38
|
+
const t2 = bottomSheetState.params;
|
|
39
|
+
let t3;
|
|
40
|
+
if ($[5] !== bottomSheetState || $[6] !== close || $[7] !== t2) {
|
|
41
|
+
t3 = {
|
|
39
42
|
bottomSheetState,
|
|
43
|
+
params: t2,
|
|
40
44
|
close,
|
|
41
45
|
closeBottomSheet: close
|
|
42
46
|
};
|
|
43
47
|
$[5] = bottomSheetState;
|
|
44
48
|
$[6] = close;
|
|
45
49
|
$[7] = t2;
|
|
50
|
+
$[8] = t3;
|
|
46
51
|
} else {
|
|
47
|
-
|
|
52
|
+
t3 = $[8];
|
|
48
53
|
}
|
|
49
|
-
return
|
|
54
|
+
return t3;
|
|
50
55
|
}
|
|
51
56
|
function _temp(state_0) {
|
|
52
57
|
return state_0.startClosing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_BottomSheet","require","_bottomSheet","useBottomSheetState","$","_compilerRuntime","c","context","useMaybeBottomSheetContext","t0","id","state","sheetsById","bottomSheetState","useBottomSheetStore","startClosing","_temp","Error","t1","close","t2","closeBottomSheet","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetState.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;
|
|
1
|
+
{"version":3,"names":["_BottomSheet","require","_bottomSheet","useBottomSheetState","$","_compilerRuntime","c","context","useMaybeBottomSheetContext","t0","id","state","sheetsById","bottomSheetState","useBottomSheetStore","startClosing","_temp","Error","t1","close","t2","params","t3","closeBottomSheet","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetState.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AASA;;AAiBO,SAAAE,oBAAA;EAAA,MAAAC,CAAA,OAAAC,gBAAA,CAAAC,CAAA;EAGL,MAAAC,OAAA,GAAgB,IAAAC,uCAA0B,EAAC,CAAC;EAAC,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAG,OAAA,EAAAG,EAAA;IAG3CD,EAAA,GAAAE,KAAA,IAAWA,KAAK,CAAAC,UAAW,CAACL,OAAO,EAAAG,EAAI,CAAE;IAAAN,CAAA,MAAAG,OAAA,EAAAG,EAAA;IAAAN,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAD3C,MAAAS,gBAAA,GAAyB,IAAAC,gCAAmB,EAC1CL,EACF,CAAC;EAED,MAAAM,YAAA,GAAqB,IAAAD,gCAAmB,EAACE,KAA6B,CAAC;EAEvE,IAAI,CAACH,gBAAgB;IACnB,MAAM,IAAII,KAAK,CACb,+DACF,CAAC;EAAC;EACH,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAS,gBAAA,CAAAH,EAAA,IAAAN,CAAA,QAAAW,YAAA;IAEaG,EAAA,GAAAA,CAAA,KAAMH,YAAY,CAACF,gBAAgB,CAAAH,EAAG,CAAC;IAAAN,CAAA,MAAAS,gBAAA,CAAAH,EAAA;IAAAN,CAAA,MAAAW,YAAA;IAAAX,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAArD,MAAAe,KAAA,GAAcD,EAAuC;EAI3C,MAAAE,EAAA,GAAAP,gBAAgB,CAAAQ,MAAO;EAAoB,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAS,gBAAA,IAAAT,CAAA,QAAAe,KAAA,IAAAf,CAAA,QAAAgB,EAAA;IAF9CE,EAAA;MAAAT,gBAAA;MAAAQ,MAAA,EAEGD,EAA2C;MAAAD,KAAA;MAAAI,gBAAA,EAEjCJ;IACpB,CAAC;IAAAf,CAAA,MAAAS,gBAAA;IAAAT,CAAA,MAAAe,KAAA;IAAAf,CAAA,MAAAgB,EAAA;IAAAhB,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EAAA,OALMkB,EAKN;AAAA;AAxBI,SAAAN,MAAAQ,OAAA;EAAA,OAS+Cb,OAAK,CAAAI,YAAa;AAAA","ignoreList":[]}
|
|
@@ -8,14 +8,16 @@ export interface BottomSheetState {
|
|
|
8
8
|
status: BottomSheetStatus;
|
|
9
9
|
scaleBackground?: boolean;
|
|
10
10
|
usePortal?: boolean;
|
|
11
|
+
params?: Record<string, unknown>;
|
|
11
12
|
}
|
|
12
13
|
type TriggerState = Omit<BottomSheetState, 'status'>;
|
|
13
14
|
interface BottomSheetStoreState {
|
|
14
15
|
sheetsById: Record<string, BottomSheetState>;
|
|
15
16
|
stackOrder: string[];
|
|
16
17
|
}
|
|
17
|
-
export interface PortalOpenOptions {
|
|
18
|
+
export interface PortalOpenOptions<TParams = Record<string, unknown>> {
|
|
18
19
|
scaleBackground?: boolean;
|
|
20
|
+
params?: TParams;
|
|
19
21
|
}
|
|
20
22
|
interface BottomSheetStoreActions {
|
|
21
23
|
push(sheet: TriggerState): void;
|
|
@@ -25,6 +27,7 @@ interface BottomSheetStoreActions {
|
|
|
25
27
|
markOpen(id: string): void;
|
|
26
28
|
startClosing(id: string): void;
|
|
27
29
|
finishClosing(id: string): void;
|
|
30
|
+
updateParams(id: string, params: Record<string, unknown> | undefined): void;
|
|
28
31
|
clearAll(): void;
|
|
29
32
|
}
|
|
30
33
|
export type BottomSheetStore = BottomSheetStoreState & BottomSheetStoreActions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bottomSheet.store.d.ts","sourceRoot":"","sources":["../../../src/bottomSheet.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"bottomSheet.store.d.ts","sourceRoot":"","sources":["../../../src/bottomSheet.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;AAC1E,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAErD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,KAAK,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAErD,UAAU,qBAAqB;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,uBAAuB;IAC/B,IAAI,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5E,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,mBAAmB;;;;;;;;EAsK/B,CAAC"}
|
|
@@ -7,5 +7,5 @@ export { BottomSheetScaleView } from './BottomSheetScaleView';
|
|
|
7
7
|
export { type ScaleConfig } from './useScaleAnimation';
|
|
8
8
|
export { BottomSheetPortal } from './BottomSheetPortal';
|
|
9
9
|
export { useBottomSheetControl } from './useBottomSheetControl';
|
|
10
|
-
export type { BottomSheetPortalRegistry, BottomSheetPortalId, } from './portal.types';
|
|
10
|
+
export type { BottomSheetPortalRegistry, BottomSheetPortalId, BottomSheetPortalParams, } from './portal.types';
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,yBAAyB,EACzB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,YAAY,EACV,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Registry for portal-based bottom sheets.
|
|
3
|
-
* Augment this interface in your app to get type-safe sheet IDs:
|
|
3
|
+
* Augment this interface in your app to get type-safe sheet IDs and params:
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
6
|
* ```tsx
|
|
7
7
|
* declare module 'react-native-bottom-sheet-stack' {
|
|
8
8
|
* interface BottomSheetPortalRegistry {
|
|
9
|
-
* '
|
|
10
|
-
* '
|
|
11
|
-
* '
|
|
9
|
+
* 'simple-sheet': true; // no params
|
|
10
|
+
* 'user-sheet': { userId: string }; // with params
|
|
11
|
+
* 'settings-sheet': { theme: 'light' | 'dark'; notifications: boolean };
|
|
12
12
|
* }
|
|
13
13
|
* }
|
|
14
14
|
* ```
|
|
@@ -21,4 +21,13 @@ export interface BottomSheetPortalRegistry {
|
|
|
21
21
|
* Otherwise, it falls back to `string` for flexibility.
|
|
22
22
|
*/
|
|
23
23
|
export type BottomSheetPortalId = keyof BottomSheetPortalRegistry extends never ? string : Extract<keyof BottomSheetPortalRegistry, string>;
|
|
24
|
+
/**
|
|
25
|
+
* Extract params type for a given portal sheet ID.
|
|
26
|
+
* Returns `undefined` if the sheet has no params (value is `true`).
|
|
27
|
+
*/
|
|
28
|
+
export type BottomSheetPortalParams<T extends BottomSheetPortalId> = keyof BottomSheetPortalRegistry extends never ? Record<string, unknown> | undefined : T extends keyof BottomSheetPortalRegistry ? BottomSheetPortalRegistry[T] extends true ? undefined : BottomSheetPortalRegistry[T] : Record<string, unknown> | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Check if a portal sheet has params defined.
|
|
31
|
+
*/
|
|
32
|
+
export type HasParams<T extends BottomSheetPortalId> = keyof BottomSheetPortalRegistry extends never ? false : T extends keyof BottomSheetPortalRegistry ? BottomSheetPortalRegistry[T] extends true ? false : true : false;
|
|
24
33
|
//# sourceMappingURL=portal.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.types.d.ts","sourceRoot":"","sources":["../../../src/portal.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;CAAG;AAE7C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,SAAS,KAAK,GAC3E,MAAM,GACN,OAAO,CAAC,MAAM,yBAAyB,EAAE,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"portal.types.d.ts","sourceRoot":"","sources":["../../../src/portal.types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,yBAAyB;CAAG;AAE7C;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,SAAS,KAAK,GAC3E,MAAM,GACN,OAAO,CAAC,MAAM,yBAAyB,EAAE,MAAM,CAAC,CAAC;AAErD;;;GAGG;AACH,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,mBAAmB,IAC/D,MAAM,yBAAyB,SAAS,KAAK,GACzC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACnC,CAAC,SAAS,MAAM,yBAAyB,GACvC,yBAAyB,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,SAAS,GACT,yBAAyB,CAAC,CAAC,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,mBAAmB,IACjD,MAAM,yBAAyB,SAAS,KAAK,GACzC,KAAK,GACL,CAAC,SAAS,MAAM,yBAAyB,GACvC,yBAAyB,CAAC,CAAC,CAAC,SAAS,IAAI,GACvC,KAAK,GACL,IAAI,GACN,KAAK,CAAC"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { type BottomSheetStatus, type PortalOpenOptions } from './bottomSheet.store';
|
|
2
|
-
import type { BottomSheetPortalId } from './portal.types';
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import type { BottomSheetPortalId, BottomSheetPortalParams, HasParams } from './portal.types';
|
|
3
|
+
type OpenOptions<T extends BottomSheetPortalId> = Omit<PortalOpenOptions<BottomSheetPortalParams<T>>, 'params'> & (HasParams<T> extends true ? {
|
|
4
|
+
params: BottomSheetPortalParams<T>;
|
|
5
|
+
} : {
|
|
6
|
+
params?: BottomSheetPortalParams<T>;
|
|
7
|
+
});
|
|
8
|
+
type OpenFunction<T extends BottomSheetPortalId> = HasParams<T> extends true ? (options: OpenOptions<T>) => void : (options?: OpenOptions<T>) => void;
|
|
9
|
+
export interface UseBottomSheetControlReturn<T extends BottomSheetPortalId> {
|
|
10
|
+
open: OpenFunction<T>;
|
|
5
11
|
close: () => void;
|
|
12
|
+
updateParams: (params: BottomSheetPortalParams<T>) => void;
|
|
13
|
+
resetParams: () => void;
|
|
6
14
|
isOpen: boolean;
|
|
7
15
|
status: BottomSheetStatus | null;
|
|
8
16
|
}
|
|
9
|
-
export declare function useBottomSheetControl(id:
|
|
17
|
+
export declare function useBottomSheetControl<T extends BottomSheetPortalId>(id: T): UseBottomSheetControlReturn<T>;
|
|
18
|
+
export {};
|
|
10
19
|
//# sourceMappingURL=useBottomSheetControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBottomSheetControl.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"useBottomSheetControl.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACvB,SAAS,EACV,MAAM,gBAAgB,CAAC;AAGxB,KAAK,WAAW,CAAC,CAAC,SAAS,mBAAmB,IAAI,IAAI,CACpD,iBAAiB,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,EAC7C,QAAQ,CACT,GACC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACtB;IAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAA;CAAE,GACtC;IAAE,MAAM,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC,CAAC;AAE/C,KAAK,YAAY,CAAC,CAAC,SAAS,mBAAmB,IAC7C,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,GACrB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GACjC,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAEzC,MAAM,WAAW,2BAA2B,CAAC,CAAC,SAAS,mBAAmB;IACxE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,YAAY,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC3D,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;CAClC;AAED,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,mBAAmB,EACjE,EAAE,EAAE,CAAC,GACJ,2BAA2B,CAAC,CAAC,CAAC,CAyChC"}
|
|
@@ -15,6 +15,7 @@ export declare const useBottomSheetManager: () => {
|
|
|
15
15
|
content: React.ReactNode;
|
|
16
16
|
scaleBackground?: boolean | undefined;
|
|
17
17
|
usePortal?: boolean | undefined;
|
|
18
|
+
params?: Record<string, unknown> | undefined;
|
|
18
19
|
}) => void;
|
|
19
20
|
replaceBottomSheet: (sheet: {
|
|
20
21
|
groupId: string;
|
|
@@ -22,6 +23,7 @@ export declare const useBottomSheetManager: () => {
|
|
|
22
23
|
content: React.ReactNode;
|
|
23
24
|
scaleBackground?: boolean | undefined;
|
|
24
25
|
usePortal?: boolean | undefined;
|
|
26
|
+
params?: Record<string, unknown> | undefined;
|
|
25
27
|
}) => void;
|
|
26
28
|
};
|
|
27
29
|
//# sourceMappingURL=useBottomSheetManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBottomSheetManager.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMzE,eAAO,MAAM,qBAAqB;;gBA0Db,MAAM;+BArCd,KAAK,CAAC,YAAY,YAClB;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B
|
|
1
|
+
{"version":3,"file":"useBottomSheetManager.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetManager.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAMzE,eAAO,MAAM,qBAAqB;;gBA0Db,MAAM;+BArCd,KAAK,CAAC,YAAY,YAClB;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;QAChB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B;;;;;;;;;;;;;;;;;CA8CJ,CAAC"}
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { type BottomSheetState } from './bottomSheet.store';
|
|
2
|
-
|
|
2
|
+
import type { BottomSheetPortalId, BottomSheetPortalParams } from './portal.types';
|
|
3
|
+
declare const UNSPECIFIED: unique symbol;
|
|
4
|
+
type Unspecified = typeof UNSPECIFIED;
|
|
5
|
+
type ResolveParams<T> = T extends Unspecified ? unknown : T extends BottomSheetPortalId ? BottomSheetPortalParams<T> : unknown;
|
|
6
|
+
export interface UseBottomSheetStateReturn<T> {
|
|
3
7
|
bottomSheetState: BottomSheetState;
|
|
8
|
+
params: ResolveParams<T>;
|
|
4
9
|
close: () => void;
|
|
5
10
|
closeBottomSheet: () => void;
|
|
6
|
-
}
|
|
11
|
+
}
|
|
12
|
+
export declare function useBottomSheetState<T extends BottomSheetPortalId | Unspecified = Unspecified>(): UseBottomSheetStateReturn<T>;
|
|
13
|
+
export {};
|
|
7
14
|
//# sourceMappingURL=useBottomSheetState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBottomSheetState.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetState.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"useBottomSheetState.d.ts","sourceRoot":"","sources":["../../../src/useBottomSheetState.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AACzC,KAAK,WAAW,GAAG,OAAO,WAAW,CAAC;AAEtC,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,WAAW,GACzC,OAAO,GACP,CAAC,SAAS,mBAAmB,GAC3B,uBAAuB,CAAC,CAAC,CAAC,GAC1B,OAAO,CAAC;AAEd,MAAM,WAAW,yBAAyB,CAAC,CAAC;IAC1C,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CACjC,CAAC,SAAS,mBAAmB,GAAG,WAAW,GAAG,WAAW,KACtD,yBAAyB,CAAC,CAAC,CAAC,CAuBhC"}
|
package/package.json
CHANGED
package/src/bottomSheet.store.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface BottomSheetState {
|
|
|
12
12
|
status: BottomSheetStatus;
|
|
13
13
|
scaleBackground?: boolean;
|
|
14
14
|
usePortal?: boolean;
|
|
15
|
+
params?: Record<string, unknown>;
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
type TriggerState = Omit<BottomSheetState, 'status'>;
|
|
@@ -21,8 +22,9 @@ interface BottomSheetStoreState {
|
|
|
21
22
|
stackOrder: string[];
|
|
22
23
|
}
|
|
23
24
|
|
|
24
|
-
export interface PortalOpenOptions {
|
|
25
|
+
export interface PortalOpenOptions<TParams = Record<string, unknown>> {
|
|
25
26
|
scaleBackground?: boolean;
|
|
27
|
+
params?: TParams;
|
|
26
28
|
}
|
|
27
29
|
|
|
28
30
|
interface BottomSheetStoreActions {
|
|
@@ -33,6 +35,7 @@ interface BottomSheetStoreActions {
|
|
|
33
35
|
markOpen(id: string): void;
|
|
34
36
|
startClosing(id: string): void;
|
|
35
37
|
finishClosing(id: string): void;
|
|
38
|
+
updateParams(id: string, params: Record<string, unknown> | undefined): void;
|
|
36
39
|
clearAll(): void;
|
|
37
40
|
}
|
|
38
41
|
|
|
@@ -120,6 +123,7 @@ export const useBottomSheetStore = create(
|
|
|
120
123
|
status: 'opening',
|
|
121
124
|
usePortal: true,
|
|
122
125
|
scaleBackground: options?.scaleBackground,
|
|
126
|
+
params: options?.params,
|
|
123
127
|
},
|
|
124
128
|
},
|
|
125
129
|
stackOrder: [...state.stackOrder, id],
|
|
@@ -187,6 +191,20 @@ export const useBottomSheetStore = create(
|
|
|
187
191
|
};
|
|
188
192
|
}),
|
|
189
193
|
|
|
194
|
+
updateParams: (id, params) =>
|
|
195
|
+
set((state) => {
|
|
196
|
+
const sheet = state.sheetsById[id];
|
|
197
|
+
if (!sheet) {
|
|
198
|
+
return state;
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
sheetsById: {
|
|
202
|
+
...state.sheetsById,
|
|
203
|
+
[id]: { ...sheet, params },
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
}),
|
|
207
|
+
|
|
190
208
|
clearAll: () => set(() => ({ sheetsById: {}, stackOrder: [] })),
|
|
191
209
|
}))
|
|
192
210
|
);
|
package/src/index.tsx
CHANGED
package/src/portal.types.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Registry for portal-based bottom sheets.
|
|
3
|
-
* Augment this interface in your app to get type-safe sheet IDs:
|
|
3
|
+
* Augment this interface in your app to get type-safe sheet IDs and params:
|
|
4
4
|
*
|
|
5
5
|
* @example
|
|
6
6
|
* ```tsx
|
|
7
7
|
* declare module 'react-native-bottom-sheet-stack' {
|
|
8
8
|
* interface BottomSheetPortalRegistry {
|
|
9
|
-
* '
|
|
10
|
-
* '
|
|
11
|
-
* '
|
|
9
|
+
* 'simple-sheet': true; // no params
|
|
10
|
+
* 'user-sheet': { userId: string }; // with params
|
|
11
|
+
* 'settings-sheet': { theme: 'light' | 'dark'; notifications: boolean };
|
|
12
12
|
* }
|
|
13
13
|
* }
|
|
14
14
|
* ```
|
|
@@ -23,3 +23,28 @@ export interface BottomSheetPortalRegistry {}
|
|
|
23
23
|
export type BottomSheetPortalId = keyof BottomSheetPortalRegistry extends never
|
|
24
24
|
? string
|
|
25
25
|
: Extract<keyof BottomSheetPortalRegistry, string>;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Extract params type for a given portal sheet ID.
|
|
29
|
+
* Returns `undefined` if the sheet has no params (value is `true`).
|
|
30
|
+
*/
|
|
31
|
+
export type BottomSheetPortalParams<T extends BottomSheetPortalId> =
|
|
32
|
+
keyof BottomSheetPortalRegistry extends never
|
|
33
|
+
? Record<string, unknown> | undefined
|
|
34
|
+
: T extends keyof BottomSheetPortalRegistry
|
|
35
|
+
? BottomSheetPortalRegistry[T] extends true
|
|
36
|
+
? undefined
|
|
37
|
+
: BottomSheetPortalRegistry[T]
|
|
38
|
+
: Record<string, unknown> | undefined;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Check if a portal sheet has params defined.
|
|
42
|
+
*/
|
|
43
|
+
export type HasParams<T extends BottomSheetPortalId> =
|
|
44
|
+
keyof BottomSheetPortalRegistry extends never
|
|
45
|
+
? false
|
|
46
|
+
: T extends keyof BottomSheetPortalRegistry
|
|
47
|
+
? BottomSheetPortalRegistry[T] extends true
|
|
48
|
+
? false
|
|
49
|
+
: true
|
|
50
|
+
: false;
|
|
@@ -7,26 +7,46 @@ import {
|
|
|
7
7
|
type PortalOpenOptions,
|
|
8
8
|
} from './bottomSheet.store';
|
|
9
9
|
import { useMaybeBottomSheetManagerContext } from './BottomSheetManager.provider';
|
|
10
|
-
import type {
|
|
10
|
+
import type {
|
|
11
|
+
BottomSheetPortalId,
|
|
12
|
+
BottomSheetPortalParams,
|
|
13
|
+
HasParams,
|
|
14
|
+
} from './portal.types';
|
|
11
15
|
import { sheetRefs } from './refsMap';
|
|
12
16
|
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
type OpenOptions<T extends BottomSheetPortalId> = Omit<
|
|
18
|
+
PortalOpenOptions<BottomSheetPortalParams<T>>,
|
|
19
|
+
'params'
|
|
20
|
+
> &
|
|
21
|
+
(HasParams<T> extends true
|
|
22
|
+
? { params: BottomSheetPortalParams<T> }
|
|
23
|
+
: { params?: BottomSheetPortalParams<T> });
|
|
24
|
+
|
|
25
|
+
type OpenFunction<T extends BottomSheetPortalId> =
|
|
26
|
+
HasParams<T> extends true
|
|
27
|
+
? (options: OpenOptions<T>) => void
|
|
28
|
+
: (options?: OpenOptions<T>) => void;
|
|
29
|
+
|
|
30
|
+
export interface UseBottomSheetControlReturn<T extends BottomSheetPortalId> {
|
|
31
|
+
open: OpenFunction<T>;
|
|
15
32
|
close: () => void;
|
|
33
|
+
updateParams: (params: BottomSheetPortalParams<T>) => void;
|
|
34
|
+
resetParams: () => void;
|
|
16
35
|
isOpen: boolean;
|
|
17
36
|
status: BottomSheetStatus | null;
|
|
18
37
|
}
|
|
19
38
|
|
|
20
|
-
export function useBottomSheetControl(
|
|
21
|
-
id:
|
|
22
|
-
): UseBottomSheetControlReturn {
|
|
39
|
+
export function useBottomSheetControl<T extends BottomSheetPortalId>(
|
|
40
|
+
id: T
|
|
41
|
+
): UseBottomSheetControlReturn<T> {
|
|
23
42
|
const bottomSheetManagerContext = useMaybeBottomSheetManagerContext();
|
|
24
43
|
|
|
25
44
|
const openPortal = useBottomSheetStore((state) => state.openPortal);
|
|
26
45
|
const startClosing = useBottomSheetStore((state) => state.startClosing);
|
|
46
|
+
const storeUpdateParams = useBottomSheetStore((state) => state.updateParams);
|
|
27
47
|
const sheetState = useBottomSheetStore((state) => state.sheetsById[id]);
|
|
28
48
|
|
|
29
|
-
const open = (options?:
|
|
49
|
+
const open = (options?: OpenOptions<T>) => {
|
|
30
50
|
const groupId = bottomSheetManagerContext?.groupId || 'default';
|
|
31
51
|
|
|
32
52
|
// Create ref when opening (same pattern as useBottomSheetManager)
|
|
@@ -40,12 +60,22 @@ export function useBottomSheetControl(
|
|
|
40
60
|
startClosing(id);
|
|
41
61
|
};
|
|
42
62
|
|
|
63
|
+
const updateParams = (params: BottomSheetPortalParams<T>) => {
|
|
64
|
+
storeUpdateParams(id, params as Record<string, unknown>);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
const resetParams = () => {
|
|
68
|
+
storeUpdateParams(id, undefined);
|
|
69
|
+
};
|
|
70
|
+
|
|
43
71
|
const status = sheetState?.status ?? null;
|
|
44
72
|
const isOpen = status === 'open' || status === 'opening';
|
|
45
73
|
|
|
46
74
|
return {
|
|
47
|
-
open
|
|
75
|
+
open: open as OpenFunction<T>,
|
|
48
76
|
close,
|
|
77
|
+
updateParams,
|
|
78
|
+
resetParams,
|
|
49
79
|
isOpen,
|
|
50
80
|
status,
|
|
51
81
|
};
|
|
@@ -3,12 +3,31 @@ import {
|
|
|
3
3
|
useBottomSheetStore,
|
|
4
4
|
type BottomSheetState,
|
|
5
5
|
} from './bottomSheet.store';
|
|
6
|
+
import type {
|
|
7
|
+
BottomSheetPortalId,
|
|
8
|
+
BottomSheetPortalParams,
|
|
9
|
+
} from './portal.types';
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
// Marker type to detect when no generic is provided
|
|
12
|
+
declare const UNSPECIFIED: unique symbol;
|
|
13
|
+
type Unspecified = typeof UNSPECIFIED;
|
|
14
|
+
|
|
15
|
+
type ResolveParams<T> = T extends Unspecified
|
|
16
|
+
? unknown
|
|
17
|
+
: T extends BottomSheetPortalId
|
|
18
|
+
? BottomSheetPortalParams<T>
|
|
19
|
+
: unknown;
|
|
20
|
+
|
|
21
|
+
export interface UseBottomSheetStateReturn<T> {
|
|
8
22
|
bottomSheetState: BottomSheetState;
|
|
23
|
+
params: ResolveParams<T>;
|
|
9
24
|
close: () => void;
|
|
10
25
|
closeBottomSheet: () => void;
|
|
11
|
-
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function useBottomSheetState<
|
|
29
|
+
T extends BottomSheetPortalId | Unspecified = Unspecified,
|
|
30
|
+
>(): UseBottomSheetStateReturn<T> {
|
|
12
31
|
const context = useMaybeBottomSheetContext();
|
|
13
32
|
|
|
14
33
|
const bottomSheetState = useBottomSheetStore(
|
|
@@ -27,6 +46,7 @@ export function useBottomSheetState(): {
|
|
|
27
46
|
|
|
28
47
|
return {
|
|
29
48
|
bottomSheetState,
|
|
49
|
+
params: bottomSheetState.params as ResolveParams<T>,
|
|
30
50
|
close,
|
|
31
51
|
closeBottomSheet: close,
|
|
32
52
|
};
|