UNPKG

@sertec/dialog

Version:
111 lines (110 loc) 5.31 kB
import { ButtonHTMLAttributes, Dispatch, HTMLAttributes, ReactNode, SetStateAction, MouseEvent, RefObject, Ref } from 'react'; import type { UseFloatingReturn, UseInteractionsReturn } from '@floating-ui/react'; import { Border, DialogMode, DialogWidth, FontWeight, IconElement, Justify, JustifyContent, Rounded, Size, StringBoolean, Variant } from '@sertec/types'; export interface UseDialog extends UseFloatingReturn, UseInteractionsReturn { open: boolean; setOpen: (open: boolean) => void; loading: boolean; setLoading: (loading: boolean) => void; labelId: string | undefined; descriptionId: string | undefined; formId: string | undefined; setLabelId: Dispatch<SetStateAction<string | undefined>>; setDescriptionId: Dispatch<SetStateAction<string | undefined>>; setFormId: Dispatch<SetStateAction<string | undefined>>; mode?: DialogMode; with?: DialogWidth; } export interface DialogCloseProps extends ButtonHTMLAttributes<HTMLButtonElement> { ref?: RefObject<HTMLButtonElement> | Ref<HTMLButtonElement>; } interface FontProperties { 'data-justify'?: Justify; 'data-font-size'?: Size; 'data-font-weight'?: FontWeight; } export interface DialogIconProps extends HTMLAttributes<HTMLSpanElement>, FontProperties { ref?: RefObject<HTMLSpanElement> | Ref<HTMLSpanElement>; 'data-justify-content'?: JustifyContent; } export type FooterButtonType = 'submit' | 'button' | 'reset'; export interface DialogFooterProps extends HTMLAttributes<HTMLDivElement> { ref?: RefObject<HTMLDivElement> | Ref<HTMLDivElement>; labelCancel?: string; labelAccept?: string; onAcceptAsync?: (e?: MouseEvent<HTMLButtonElement>) => Promise<boolean>; onAccept?: (e?: MouseEvent<HTMLButtonElement>) => boolean; onCancelAsync?: (e?: MouseEvent<HTMLButtonElement>) => Promise<boolean>; onCancel?: (e?: MouseEvent<HTMLButtonElement>) => boolean; 'data-footer'?: StringBoolean; 'data-foooter-justify-content'?: JustifyContent; 'data-default-button-autofocus'?: 'cancel' | 'accept' | 'none'; typeaccept?: FooterButtonType; typecancel?: FooterButtonType; 'data-default-button-accept-variant'?: Variant; 'data-default-button-cancel-variant'?: Variant; 'data-default-button-accept-ref'?: RefObject<HTMLButtonElement> | Ref<HTMLButtonElement>; 'data-default-button-accept-shortcut'?: string; 'data-default-button-accept-icon'?: IconElement; 'data-default-button-accept-outline'?: StringBoolean; 'data-default-button-cancel-ref'?: RefObject<HTMLButtonElement> | Ref<HTMLButtonElement>; 'data-default-button-cancel-shortcut'?: string; 'data-default-button-cancel-icon'?: IconElement; 'data-default-button-cancel-outline'?: StringBoolean; 'data-default-button-accept-disabled'?: StringBoolean; 'data-default-button-cancel-disabled'?: StringBoolean; 'data-default-button-accept-hidden'?: StringBoolean; 'data-default-button-cancel-hidden'?: StringBoolean; 'data-default-button-justify'?: Justify; 'data-default-button-rounded'?: Rounded; 'data-default-button-border'?: Border; 'data-default-button-font-weight'?: FontWeight; 'data-default-button-padding-x-disabled'?: StringBoolean; 'data-default-button-padding-y-disabled'?: StringBoolean; 'data-default-button-hover-disabled'?: StringBoolean; 'data-default-button-hover-bg-disabled'?: StringBoolean; 'data-default-button-focus-disabled'?: StringBoolean; 'data-default-button-active-disabled'?: StringBoolean; 'data-default-button-disabledcss-disabled'?: StringBoolean; 'data-default-button-accept-classname'?: string; 'data-default-button-cancel-classname'?: string; } export interface DialogContentProps extends HTMLAttributes<HTMLDivElement> { ref?: RefObject<HTMLDivElement> | Ref<HTMLDivElement>; 'data-padding'?: StringBoolean; 'data-footer-disabled-autofocus'?: StringBoolean; 'data-a-content-classname'?: string; 'data-b-content-classname'?: string; 'data-rounded'?: Rounded; } export interface DialogDescriptionProps extends Omit<HTMLAttributes<HTMLParagraphElement>, 'id'>, FontProperties { ref?: RefObject<HTMLParagraphElement> | Ref<HTMLParagraphElement>; } export interface DialogHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id'>, FontProperties { ref?: RefObject<HTMLDivElement> | Ref<HTMLDivElement>; } export interface DialogFormProps extends HTMLAttributes<HTMLFormElement> { ref?: RefObject<HTMLFormElement | HTMLDivElement> | Ref<HTMLFormElement | HTMLDivElement>; } export interface DialogBodyProps extends HTMLAttributes<HTMLDivElement> { ref?: RefObject<HTMLDivElement> | Ref<HTMLDivElement>; } export interface DialogTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> { ref?: RefObject<HTMLButtonElement> | Ref<HTMLButtonElement>; children: ReactNode; asChild?: boolean; } export interface DialogProps { initialOpen?: boolean; open?: boolean; onOpenChange?: Dispatch<SetStateAction<boolean>>; loading?: boolean; onLoadingChange?: Dispatch<SetStateAction<boolean>>; children?: ReactNode; mode?: DialogMode; escapeKey?: boolean; width?: DialogWidth; } export interface DialogNoteProps extends HTMLAttributes<HTMLDivElement> { } export {};