selection-popover
Version:
Easy-to-use, composable react selection popover.
65 lines (62 loc) • 2.83 kB
TypeScript
import * as React from 'react';
import { Primitive } from '@radix-ui/react-primitive';
import { Portal } from '@radix-ui/react-portal';
import { DismissableLayer } from '@radix-ui/react-dismissable-layer';
import * as ArrowPrimitive from '@radix-ui/react-arrow';
declare const SIDE_OPTIONS: readonly ["top", "right", "bottom", "left"];
declare const ALIGN_OPTIONS: readonly ["start", "center", "end"];
type Side = (typeof SIDE_OPTIONS)[number];
type Align = (typeof ALIGN_OPTIONS)[number];
interface SelectionProps {
children?: React.ReactNode;
open?: boolean;
defaultOpen?: boolean;
onOpenChange?(open: boolean): void;
whileSelect?: boolean;
disabled?: boolean;
openDelay?: number;
closeDelay?: number;
}
declare const Selection: (props: SelectionProps) => JSX.Element;
interface SelectionTriggerProps extends SelectionTriggerImplProps {
}
declare const SelectionTrigger: React.ForwardRefExoticComponent<SelectionTriggerProps & React.RefAttributes<HTMLDivElement>>;
type PrimitiveDivProps = React.ComponentPropsWithoutRef<typeof Primitive.div>;
interface SelectionTriggerImplProps extends PrimitiveDivProps {
}
type PortalProps = React.ComponentPropsWithoutRef<typeof Portal>;
interface SelectionPortalProps extends Omit<PortalProps, 'asChild'> {
children?: React.ReactNode;
forceMount?: true;
}
declare const SelectionPortal: {
(props: SelectionPortalProps): JSX.Element;
displayName: string;
};
interface SelectionContentProps extends SelectionContentImplProps {
forceMount?: true;
}
declare const SelectionContent: React.ForwardRefExoticComponent<SelectionContentProps & React.RefAttributes<HTMLDivElement>>;
type Boundary = Element | null;
type DismissableLayerProps = React.ComponentPropsWithoutRef<typeof DismissableLayer>;
interface SelectionContentImplProps extends PrimitiveDivProps {
side?: Side;
sideOffset?: number;
align?: Align;
alignOffset?: number;
arrowPadding?: number;
collisionBoundary?: Boundary | Boundary[];
collisionPadding?: number | Partial<Record<Side, number>>;
sticky?: 'partial' | 'always';
hideWhenDetached?: boolean;
avoidCollisions?: boolean;
onEscapeKeyDown?: DismissableLayerProps['onEscapeKeyDown'];
onPointerDownOutside?: DismissableLayerProps['onPointerDownOutside'];
onFocusOutside?: DismissableLayerProps['onFocusOutside'];
onInteractOutside?: DismissableLayerProps['onInteractOutside'];
}
type ArrowProps = React.ComponentPropsWithoutRef<typeof ArrowPrimitive.Root>;
interface SelectionArrowProps extends ArrowProps {
}
declare const SelectionArrow: React.ForwardRefExoticComponent<SelectionArrowProps & React.RefAttributes<SVGSVGElement>>;
export { SelectionArrow as Arrow, SelectionContent as Content, SelectionPortal as Portal, Selection as Root, SelectionTrigger as Trigger };