You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
261 lines
6.9 KiB
261 lines
6.9 KiB
3 years ago
|
import * as Popper from '@popperjs/core';
|
||
|
|
||
|
export type BasePlacement = Popper.BasePlacement;
|
||
|
|
||
|
export type Placement = Popper.Placement;
|
||
|
|
||
|
export type Content =
|
||
|
| string
|
||
|
| Element
|
||
|
| DocumentFragment
|
||
|
| ((ref: Element) => string | Element | DocumentFragment);
|
||
|
|
||
|
export type SingleTarget = Element;
|
||
|
|
||
|
export type MultipleTargets = string | Element[] | NodeList;
|
||
|
|
||
|
export type Targets = SingleTarget | MultipleTargets;
|
||
|
|
||
|
export interface ReferenceElement<TProps = Props> extends Element {
|
||
|
_tippy?: Instance<TProps>;
|
||
|
}
|
||
|
|
||
|
export interface PopperElement<TProps = Props> extends HTMLDivElement {
|
||
|
_tippy?: Instance<TProps>;
|
||
|
}
|
||
|
|
||
|
export interface LifecycleHooks<TProps = Props> {
|
||
|
onAfterUpdate(
|
||
|
instance: Instance<TProps>,
|
||
|
partialProps: Partial<TProps>
|
||
|
): void;
|
||
|
onBeforeUpdate(
|
||
|
instance: Instance<TProps>,
|
||
|
partialProps: Partial<TProps>
|
||
|
): void;
|
||
|
onCreate(instance: Instance<TProps>): void;
|
||
|
onDestroy(instance: Instance<TProps>): void;
|
||
|
onHidden(instance: Instance<TProps>): void;
|
||
|
onHide(instance: Instance<TProps>): void | false;
|
||
|
onMount(instance: Instance<TProps>): void;
|
||
|
onShow(instance: Instance<TProps>): void | false;
|
||
|
onShown(instance: Instance<TProps>): void;
|
||
|
onTrigger(instance: Instance<TProps>, event: Event): void;
|
||
|
onUntrigger(instance: Instance<TProps>, event: Event): void;
|
||
|
onClickOutside(instance: Instance<TProps>, event: Event): void;
|
||
|
}
|
||
|
|
||
|
export interface RenderProps {
|
||
|
allowHTML: boolean;
|
||
|
animation: string | boolean;
|
||
|
arrow: boolean | string | SVGElement | DocumentFragment;
|
||
|
content: Content;
|
||
|
inertia: boolean;
|
||
|
maxWidth: number | string;
|
||
|
role: string;
|
||
|
theme: string;
|
||
|
zIndex: number;
|
||
|
}
|
||
|
|
||
|
export interface GetReferenceClientRect {
|
||
|
(): ClientRect | DOMRect;
|
||
|
contextElement?: Element;
|
||
|
}
|
||
|
|
||
|
export interface Props extends LifecycleHooks, RenderProps {
|
||
|
animateFill: boolean;
|
||
|
appendTo: 'parent' | Element | ((ref: Element) => Element);
|
||
|
aria: {
|
||
|
content?: 'auto' | 'describedby' | 'labelledby' | null;
|
||
|
expanded?: 'auto' | boolean;
|
||
|
};
|
||
|
delay: number | [number | null, number | null];
|
||
|
duration: number | [number | null, number | null];
|
||
|
followCursor: boolean | 'horizontal' | 'vertical' | 'initial';
|
||
|
getReferenceClientRect: null | GetReferenceClientRect;
|
||
|
hideOnClick: boolean | 'toggle';
|
||
|
ignoreAttributes: boolean;
|
||
|
inlinePositioning: boolean;
|
||
|
interactive: boolean;
|
||
|
interactiveBorder: number;
|
||
|
interactiveDebounce: number;
|
||
|
moveTransition: string;
|
||
|
offset:
|
||
|
| [number, number]
|
||
|
| (({
|
||
|
placement,
|
||
|
popper,
|
||
|
reference,
|
||
|
}: {
|
||
|
placement: Placement;
|
||
|
popper: Popper.Rect;
|
||
|
reference: Popper.Rect;
|
||
|
}) => [number, number]);
|
||
|
placement: Placement;
|
||
|
plugins: Plugin<unknown>[];
|
||
|
popperOptions: Partial<Popper.Options>;
|
||
|
render:
|
||
|
| ((
|
||
|
instance: Instance
|
||
|
) => {
|
||
|
popper: PopperElement;
|
||
|
onUpdate?: (prevProps: Props, nextProps: Props) => void;
|
||
|
})
|
||
|
| null;
|
||
|
showOnCreate: boolean;
|
||
|
sticky: boolean | 'reference' | 'popper';
|
||
|
touch: boolean | 'hold' | ['hold', number];
|
||
|
trigger: string;
|
||
|
triggerTarget: Element | Element[] | null;
|
||
|
}
|
||
|
|
||
|
export interface DefaultProps extends Omit<Props, 'delay' | 'duration'> {
|
||
|
delay: number | [number, number];
|
||
|
duration: number | [number, number];
|
||
|
}
|
||
|
|
||
|
export interface Instance<TProps = Props> {
|
||
|
clearDelayTimeouts(): void;
|
||
|
destroy(): void;
|
||
|
disable(): void;
|
||
|
enable(): void;
|
||
|
hide(): void;
|
||
|
hideWithInteractivity(event: MouseEvent): void;
|
||
|
id: number;
|
||
|
plugins: Plugin<TProps>[];
|
||
|
popper: PopperElement<TProps>;
|
||
|
popperInstance: Popper.Instance | null;
|
||
|
props: TProps;
|
||
|
reference: ReferenceElement<TProps>;
|
||
|
setContent(content: Content): void;
|
||
|
setProps(partialProps: Partial<TProps>): void;
|
||
|
show(): void;
|
||
|
state: {
|
||
|
isEnabled: boolean;
|
||
|
isVisible: boolean;
|
||
|
isDestroyed: boolean;
|
||
|
isMounted: boolean;
|
||
|
isShown: boolean;
|
||
|
};
|
||
|
unmount(): void;
|
||
|
}
|
||
|
|
||
|
export interface TippyStatics {
|
||
|
readonly currentInput: {isTouch: boolean};
|
||
|
readonly defaultProps: DefaultProps;
|
||
|
setDefaultProps(partialProps: Partial<DefaultProps>): void;
|
||
|
}
|
||
|
|
||
|
export interface Tippy<TProps = Props> extends TippyStatics {
|
||
|
(targets: SingleTarget, optionalProps?: Partial<TProps>): Instance<TProps>;
|
||
|
}
|
||
|
|
||
|
export interface Tippy<TProps = Props> extends TippyStatics {
|
||
|
(targets: MultipleTargets, optionalProps?: Partial<TProps>): Instance<
|
||
|
TProps
|
||
|
>[];
|
||
|
}
|
||
|
|
||
|
declare const tippy: Tippy;
|
||
|
|
||
|
// =============================================================================
|
||
|
// Addon types
|
||
|
// =============================================================================
|
||
|
export interface DelegateInstance<TProps = Props> extends Instance<TProps> {
|
||
|
destroy(shouldDestroyTargetInstances?: boolean): void;
|
||
|
}
|
||
|
|
||
|
export interface Delegate<TProps = Props> {
|
||
|
(
|
||
|
targets: SingleTarget,
|
||
|
props: Partial<TProps> & {target: string}
|
||
|
): DelegateInstance<TProps>;
|
||
|
}
|
||
|
|
||
|
export interface Delegate<TProps = Props> {
|
||
|
(
|
||
|
targets: MultipleTargets,
|
||
|
props: Partial<TProps> & {target: string}
|
||
|
): DelegateInstance<TProps>[];
|
||
|
}
|
||
|
|
||
|
export type CreateSingletonProps<TProps = Props> = TProps & {
|
||
|
overrides: Array<keyof TProps>;
|
||
|
};
|
||
|
|
||
|
export type CreateSingletonInstance<TProps = CreateSingletonProps> = Instance<
|
||
|
TProps
|
||
|
> & {
|
||
|
setInstances(instances: Instance<any>[]): void;
|
||
|
show(target?: ReferenceElement | Instance | number): void;
|
||
|
showNext(): void;
|
||
|
showPrevious(): void;
|
||
|
};
|
||
|
|
||
|
export type CreateSingleton<TProps = Props> = (
|
||
|
tippyInstances: Instance<any>[],
|
||
|
optionalProps?: Partial<CreateSingletonProps<TProps>>
|
||
|
) => CreateSingletonInstance<CreateSingletonProps<TProps>>;
|
||
|
|
||
|
declare const delegate: Delegate;
|
||
|
declare const createSingleton: CreateSingleton;
|
||
|
|
||
|
// =============================================================================
|
||
|
// Plugin types
|
||
|
// =============================================================================
|
||
|
export interface Plugin<TProps = Props> {
|
||
|
name?: string;
|
||
|
defaultValue?: any;
|
||
|
fn(instance: Instance<TProps>): Partial<LifecycleHooks<TProps>>;
|
||
|
}
|
||
|
|
||
|
export interface AnimateFill extends Plugin {
|
||
|
name: 'animateFill';
|
||
|
defaultValue: false;
|
||
|
}
|
||
|
|
||
|
export interface FollowCursor extends Plugin {
|
||
|
name: 'followCursor';
|
||
|
defaultValue: false;
|
||
|
}
|
||
|
|
||
|
export interface InlinePositioning extends Plugin {
|
||
|
name: 'inlinePositioning';
|
||
|
defaultValue: false;
|
||
|
}
|
||
|
|
||
|
export interface Sticky extends Plugin {
|
||
|
name: 'sticky';
|
||
|
defaultValue: false;
|
||
|
}
|
||
|
|
||
|
declare const animateFill: AnimateFill;
|
||
|
declare const followCursor: FollowCursor;
|
||
|
declare const inlinePositioning: InlinePositioning;
|
||
|
declare const sticky: Sticky;
|
||
|
|
||
|
// =============================================================================
|
||
|
// Misc types
|
||
|
// =============================================================================
|
||
|
export interface HideAllOptions {
|
||
|
duration?: number;
|
||
|
exclude?: Instance | ReferenceElement;
|
||
|
}
|
||
|
|
||
|
export type HideAll = (options?: HideAllOptions) => void;
|
||
|
|
||
|
declare const hideAll: HideAll;
|
||
|
declare const roundArrow: string;
|
||
|
|
||
|
export default tippy;
|
||
|
export {
|
||
|
hideAll,
|
||
|
delegate,
|
||
|
createSingleton,
|
||
|
animateFill,
|
||
|
followCursor,
|
||
|
inlinePositioning,
|
||
|
sticky,
|
||
|
roundArrow,
|
||
|
};
|