react-native-bottom-sheet-stack 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +48 -20
- package/lib/commonjs/bottomSheet.store.js +2 -1
- package/lib/commonjs/bottomSheet.store.js.map +1 -1
- package/lib/commonjs/useBottomSheetControl.js +10 -9
- 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 +3 -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 +11 -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 +4 -1
- package/src/index.tsx +1 -0
- package/src/portal.types.ts +29 -4
- package/src/useBottomSheetControl.ts +25 -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,48 @@ 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, // (options?) => void
|
|
297
|
+
open, // (options?) => void - options include typed params
|
|
277
298
|
close, // () => void
|
|
278
299
|
isOpen, // boolean
|
|
279
300
|
status, // 'opening' | 'open' | 'closing' | 'hidden' | null
|
|
280
301
|
} = useBottomSheetControl('my-sheet');
|
|
302
|
+
|
|
303
|
+
// Open with params (required if defined in registry)
|
|
304
|
+
open({ params: { userId: '123' }, scaleBackground: true });
|
|
281
305
|
```
|
|
282
306
|
|
|
283
307
|
### Types
|
|
284
308
|
|
|
285
309
|
#### `BottomSheetPortalRegistry`
|
|
286
310
|
|
|
287
|
-
Interface to augment for type-safe portal IDs. See [Type-Safe Portal IDs](#type-safe-portal-ids).
|
|
311
|
+
Interface to augment for type-safe portal IDs and params. See [Type-Safe Portal IDs & Params](#type-safe-portal-ids--params).
|
|
288
312
|
|
|
289
313
|
#### `BottomSheetPortalId`
|
|
290
314
|
|
|
291
315
|
Type for portal sheet IDs. If `BottomSheetPortalRegistry` is augmented, this is a union of registered keys. Otherwise, it's `string`.
|
|
292
316
|
|
|
317
|
+
#### `BottomSheetPortalParams<T>`
|
|
318
|
+
|
|
319
|
+
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.
|
|
320
|
+
|
|
293
321
|
## Example
|
|
294
322
|
|
|
295
323
|
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]
|
|
@@ -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","clearAll"],"sourceRoot":"../../src","sources":["bottomSheet.store.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -54,23 +54,24 @@ function useBottomSheetControl(id) {
|
|
|
54
54
|
const close = t2;
|
|
55
55
|
const status = sheetState?.status ?? null;
|
|
56
56
|
const isOpen = status === "open" || status === "opening";
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
const t3 = open;
|
|
58
|
+
let t4;
|
|
59
|
+
if ($[9] !== close || $[10] !== isOpen || $[11] !== status || $[12] !== t3) {
|
|
60
|
+
t4 = {
|
|
61
|
+
open: t3,
|
|
61
62
|
close,
|
|
62
63
|
isOpen,
|
|
63
64
|
status
|
|
64
65
|
};
|
|
65
66
|
$[9] = close;
|
|
66
67
|
$[10] = isOpen;
|
|
67
|
-
$[11] =
|
|
68
|
-
$[12] =
|
|
69
|
-
$[13] =
|
|
68
|
+
$[11] = status;
|
|
69
|
+
$[12] = t3;
|
|
70
|
+
$[13] = t4;
|
|
70
71
|
} else {
|
|
71
|
-
|
|
72
|
+
t4 = $[13];
|
|
72
73
|
}
|
|
73
|
-
return
|
|
74
|
+
return t4;
|
|
74
75
|
}
|
|
75
76
|
function _temp2(state_0) {
|
|
76
77
|
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","state_1","state","sheetsById","sheetState","t1","groupId","options","ref","React","createRef","sheetRefs","open","t2","close","status","isOpen","t3","state_0"],"sourceRoot":"../../src","sources":["useBottomSheetControl.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAGA,IAAAC,YAAA,GAAAD,OAAA;AAKA,IAAAE,mBAAA,GAAAF,OAAA;
|
|
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","state_1","state","sheetsById","sheetState","t1","groupId","options","ref","React","createRef","sheetRefs","open","t2","close","status","isOpen","t3","t4","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;
|
|
@@ -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,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,gBAAgB,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,mBAAmB;;;;;;;;EAwJ/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,17 @@
|
|
|
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;
|
|
6
12
|
isOpen: boolean;
|
|
7
13
|
status: BottomSheetStatus | null;
|
|
8
14
|
}
|
|
9
|
-
export declare function useBottomSheetControl(id:
|
|
15
|
+
export declare function useBottomSheetControl<T extends BottomSheetPortalId>(id: T): UseBottomSheetControlReturn<T>;
|
|
16
|
+
export {};
|
|
10
17
|
//# 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,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,CA8BhC"}
|
|
@@ -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 {
|
|
@@ -120,6 +122,7 @@ export const useBottomSheetStore = create(
|
|
|
120
122
|
status: 'opening',
|
|
121
123
|
usePortal: true,
|
|
122
124
|
scaleBackground: options?.scaleBackground,
|
|
125
|
+
params: options?.params,
|
|
123
126
|
},
|
|
124
127
|
},
|
|
125
128
|
stackOrder: [...state.stackOrder, id],
|
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,43 @@ 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;
|
|
16
33
|
isOpen: boolean;
|
|
17
34
|
status: BottomSheetStatus | null;
|
|
18
35
|
}
|
|
19
36
|
|
|
20
|
-
export function useBottomSheetControl(
|
|
21
|
-
id:
|
|
22
|
-
): UseBottomSheetControlReturn {
|
|
37
|
+
export function useBottomSheetControl<T extends BottomSheetPortalId>(
|
|
38
|
+
id: T
|
|
39
|
+
): UseBottomSheetControlReturn<T> {
|
|
23
40
|
const bottomSheetManagerContext = useMaybeBottomSheetManagerContext();
|
|
24
41
|
|
|
25
42
|
const openPortal = useBottomSheetStore((state) => state.openPortal);
|
|
26
43
|
const startClosing = useBottomSheetStore((state) => state.startClosing);
|
|
27
44
|
const sheetState = useBottomSheetStore((state) => state.sheetsById[id]);
|
|
28
45
|
|
|
29
|
-
const open = (options?:
|
|
46
|
+
const open = (options?: OpenOptions<T>) => {
|
|
30
47
|
const groupId = bottomSheetManagerContext?.groupId || 'default';
|
|
31
48
|
|
|
32
49
|
// Create ref when opening (same pattern as useBottomSheetManager)
|
|
@@ -44,7 +61,7 @@ export function useBottomSheetControl(
|
|
|
44
61
|
const isOpen = status === 'open' || status === 'opening';
|
|
45
62
|
|
|
46
63
|
return {
|
|
47
|
-
open
|
|
64
|
+
open: open as OpenFunction<T>,
|
|
48
65
|
close,
|
|
49
66
|
isOpen,
|
|
50
67
|
status,
|
|
@@ -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
|
};
|