UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

117 lines (116 loc) 3.89 kB
/** * Web Modal Component * */ import React from 'react'; import { ContextProps } from '../../shared/Context'; import ModalInner from './parts/ModalInner'; import { ModalProps } from './types'; import ModalHeader from './parts/ModalHeader'; import ModalHeaderBar from './parts/ModalHeaderBar'; import { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'; import CloseButton from './parts/CloseButton'; import type { SpacingProps } from '../../shared/types'; import { ToCamelCasePartial } from '../../shared/helpers/withCamelCaseProps'; export declare const ANIMATION_DURATION = 300; interface ModalState { hide: boolean; modalActive: boolean; preventAutoFocus: boolean; } export type ModalPropTypes = ModalProps & SpacingProps & Omit<ScrollViewAllProps, 'children'>; declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePartial<ModalPropTypes>, ModalState> { static contextType: React.Context<ContextProps>; context: ContextProps; static Bar: typeof ModalHeaderBar; static Header: typeof ModalHeader; static Content: typeof ModalInner; static getContent(props: any): any; _id: string; _triggerRef: React.RefObject<HTMLElement>; _onUnmount: Array<() => void>; _openTimeout: NodeJS.Timeout; _closeTimeout: NodeJS.Timeout; _sideEffectsTimeout: NodeJS.Timeout; _tryToOpenTimeout: NodeJS.Timeout; activeElement: Element; isInTransition: boolean; modalContentCloseRef: React.RefObject<(event: Event, options: { triggeredBy?: string; }) => void>; state: { hide: boolean; modalActive: boolean; preventAutoFocus: boolean; animation_duration: number; no_animation: boolean; }; static defaultProps: { id: any; focus_selector: any; labelled_by: any; title: any; disabled: any; spacing: boolean; open_delay: any; content_id: any; dialog_title: string; close_title: string; hide_close_button: boolean; close_button_attributes: any; prevent_close: boolean; prevent_core_style: boolean; animation_duration: number; no_animation: boolean; no_animation_on_mobile: boolean; fullscreen: string; min_width: any; max_width: any; align_content: string; container_placement: any; vertical_alignment: any; open_state: any; direct_dom_return: boolean; root_id: string; omit_trigger_button: boolean; className: any; children: any; on_open: any; on_close: any; on_close_prevent: any; open_modal: any; close_modal: any; trigger: any; trigger_attributes: any; overlay_class: any; content_class: any; modal_content: any; header_content: any; bar_content: any; }; static getDerivedStateFromProps(props: any, state: any): any; constructor(props: any); componentDidMount(): void; componentWillUnmount(): void; componentDidUpdate(prevProps: any): void; openBasedOnStateUpdate(): void; toggleOpenClose: (event?: any, showModal?: any) => void; handleSideEffects: () => void; open: (e: Event) => void; close: (event: Event, { ifIsLatest, triggeredBy }?: { ifIsLatest: boolean; triggeredBy?: string; }) => void; removeActiveState(): void; /** * Prevent scrolling on the background * But checks if this instance was the last one or not * * @param {string} modalId Will remove the attribute if false is given */ setActiveState(modalId: string): void; render(): import("react/jsx-runtime").JSX.Element; } export { CloseButton, Modal as OriginalComponent }; declare const _default: typeof Modal; export default _default;