feat(ui): expose typed overlay handles
This commit is contained in:
@@ -4,11 +4,21 @@ import { AlertDialog as AlertDialogPrimitive } from "@base-ui/react/alert-dialog
|
|||||||
import { cn } from "../lib/utils"
|
import { cn } from "../lib/utils"
|
||||||
import { Button } from "./button"
|
import { Button } from "./button"
|
||||||
|
|
||||||
function AlertDialog({ ...props }: AlertDialogPrimitive.Root.Props) {
|
type AlertDialogHandle<Payload> = AlertDialogPrimitive.Handle<Payload>
|
||||||
|
|
||||||
|
function createAlertDialogHandle<Payload>(): AlertDialogHandle<Payload> {
|
||||||
|
return AlertDialogPrimitive.createHandle<Payload>()
|
||||||
|
}
|
||||||
|
|
||||||
|
function AlertDialog<Payload = unknown>({
|
||||||
|
...props
|
||||||
|
}: AlertDialogPrimitive.Root.Props<Payload>) {
|
||||||
return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />
|
return <AlertDialogPrimitive.Root data-slot="alert-dialog" {...props} />
|
||||||
}
|
}
|
||||||
|
|
||||||
function AlertDialogTrigger({ ...props }: AlertDialogPrimitive.Trigger.Props) {
|
function AlertDialogTrigger<Payload = unknown>({
|
||||||
|
...props
|
||||||
|
}: AlertDialogPrimitive.Trigger.Props<Payload>) {
|
||||||
return (
|
return (
|
||||||
<AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
|
<AlertDialogPrimitive.Trigger data-slot="alert-dialog-trigger" {...props} />
|
||||||
)
|
)
|
||||||
@@ -170,6 +180,7 @@ function AlertDialogCancel({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
type AlertDialogHandle,
|
||||||
AlertDialog,
|
AlertDialog,
|
||||||
AlertDialogAction,
|
AlertDialogAction,
|
||||||
AlertDialogCancel,
|
AlertDialogCancel,
|
||||||
@@ -182,4 +193,5 @@ export {
|
|||||||
AlertDialogPortal,
|
AlertDialogPortal,
|
||||||
AlertDialogTitle,
|
AlertDialogTitle,
|
||||||
AlertDialogTrigger,
|
AlertDialogTrigger,
|
||||||
|
createAlertDialogHandle,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,13 +30,13 @@ function createDrawerHandle<Payload>(): DrawerHandle<Payload> {
|
|||||||
return DrawerPrimitive.createHandle<Payload>()
|
return DrawerPrimitive.createHandle<Payload>()
|
||||||
}
|
}
|
||||||
|
|
||||||
function Drawer({
|
function Drawer<Payload = unknown>({
|
||||||
modal = true,
|
modal = true,
|
||||||
showSwipeHandle = false,
|
showSwipeHandle = false,
|
||||||
snapPoints,
|
snapPoints,
|
||||||
swipeDirection = "down",
|
swipeDirection = "down",
|
||||||
...props
|
...props
|
||||||
}: DrawerPrimitive.Root.Props & {
|
}: DrawerPrimitive.Root.Props<Payload> & {
|
||||||
showSwipeHandle?: boolean
|
showSwipeHandle?: boolean
|
||||||
}) {
|
}) {
|
||||||
const hasSnapPoints = snapPoints != null && snapPoints.length > 0
|
const hasSnapPoints = snapPoints != null && snapPoints.length > 0
|
||||||
@@ -58,7 +58,9 @@ function Drawer({
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function DrawerTrigger({ ...props }: DrawerPrimitive.Trigger.Props) {
|
function DrawerTrigger<Payload = unknown>({
|
||||||
|
...props
|
||||||
|
}: DrawerPrimitive.Trigger.Props<Payload>) {
|
||||||
return <DrawerPrimitive.Trigger data-slot="drawer-trigger" {...props} />
|
return <DrawerPrimitive.Trigger data-slot="drawer-trigger" {...props} />
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,6 +219,7 @@ function DrawerDescription({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
type DrawerHandle,
|
||||||
Drawer,
|
Drawer,
|
||||||
DrawerPortal,
|
DrawerPortal,
|
||||||
DrawerOverlay,
|
DrawerOverlay,
|
||||||
|
|||||||
@@ -8,15 +8,21 @@ import { Button } from "./button"
|
|||||||
import { XIcon } from "./icon"
|
import { XIcon } from "./icon"
|
||||||
import { LocalizedText, uiMessages } from "./i18n"
|
import { LocalizedText, uiMessages } from "./i18n"
|
||||||
|
|
||||||
function createSheetHandle<Payload>(): SheetPrimitive.Handle<Payload> {
|
type SheetHandle<Payload> = SheetPrimitive.Handle<Payload>
|
||||||
|
|
||||||
|
function createSheetHandle<Payload>(): SheetHandle<Payload> {
|
||||||
return SheetPrimitive.createHandle<Payload>()
|
return SheetPrimitive.createHandle<Payload>()
|
||||||
}
|
}
|
||||||
|
|
||||||
function Sheet({ ...props }: SheetPrimitive.Root.Props) {
|
function Sheet<Payload = unknown>({
|
||||||
|
...props
|
||||||
|
}: SheetPrimitive.Root.Props<Payload>) {
|
||||||
return <SheetPrimitive.Root data-slot="sheet" {...props} />
|
return <SheetPrimitive.Root data-slot="sheet" {...props} />
|
||||||
}
|
}
|
||||||
|
|
||||||
function SheetTrigger({ ...props }: SheetPrimitive.Trigger.Props) {
|
function SheetTrigger<Payload = unknown>({
|
||||||
|
...props
|
||||||
|
}: SheetPrimitive.Trigger.Props<Payload>) {
|
||||||
return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
|
return <SheetPrimitive.Trigger data-slot="sheet-trigger" {...props} />
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,6 +136,7 @@ function SheetDescription({
|
|||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
type SheetHandle,
|
||||||
Sheet,
|
Sheet,
|
||||||
SheetTrigger,
|
SheetTrigger,
|
||||||
SheetClose,
|
SheetClose,
|
||||||
|
|||||||
Reference in New Issue
Block a user