@carbon/react
Version:
React components for the Carbon Design System
76 lines (75 loc) • 3.25 kB
TypeScript
/**
* Copyright IBM Corp. 2016, 2023
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
import PropTypes from 'prop-types';
import React, { ReactNode } from 'react';
import { ButtonKinds } from '../Button';
export interface ModalWrapperProps {
buttonTriggerClassName?: string;
buttonTriggerText?: ReactNode;
children?: ReactNode;
disabled?: boolean;
handleOpen?: React.MouseEventHandler<HTMLButtonElement>;
handleSubmit?: React.ReactEventHandler<HTMLElement>;
id?: string;
modalBeforeContent?: boolean;
modalHeading?: string;
modalLabel?: string;
modalText?: string;
onKeyDown?: React.KeyboardEventHandler<HTMLDivElement>;
passiveModal?: boolean;
preventCloseOnClickOutside?: boolean;
primaryButtonText?: string;
renderTriggerButtonIcon: React.ElementType;
secondaryButtonText?: string;
selectorPrimaryFocus?: string;
shouldCloseAfterSubmit?: boolean;
status?: string;
triggerButtonIconDescription?: string;
triggerButtonKind: (typeof ButtonKinds)[number];
withHeader?: boolean;
}
interface ModelWrapperState {
isOpen: boolean;
}
export default class ModalWrapper extends React.Component<ModalWrapperProps, ModelWrapperState> {
if(isDev: any): void;
static propTypes: {
buttonTriggerClassName: PropTypes.Requireable<string>;
buttonTriggerText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
disabled: PropTypes.Requireable<boolean>;
handleOpen: PropTypes.Requireable<(...args: any[]) => any>;
handleSubmit: PropTypes.Requireable<(...args: any[]) => any>;
id: PropTypes.Requireable<string>;
modalBeforeContent: PropTypes.Requireable<boolean>;
modalHeading: PropTypes.Requireable<string>;
modalLabel: PropTypes.Requireable<string>;
modalText: PropTypes.Requireable<string>;
onKeyDown: PropTypes.Requireable<(...args: any[]) => any>;
passiveModal: PropTypes.Requireable<boolean>;
preventCloseOnClickOutside: PropTypes.Requireable<boolean>;
primaryButtonText: PropTypes.Requireable<string>;
renderTriggerButtonIcon: PropTypes.Requireable<object>;
secondaryButtonText: PropTypes.Requireable<string>;
selectorPrimaryFocus: PropTypes.Requireable<string>;
shouldCloseAfterSubmit: PropTypes.Requireable<boolean>;
status: PropTypes.Requireable<string>;
triggerButtonIconDescription: PropTypes.Requireable<string>;
triggerButtonKind: PropTypes.Requireable<"primary" | "secondary" | "danger" | "ghost" | "danger--primary" | "danger--ghost" | "danger--tertiary" | "tertiary">;
withHeader: PropTypes.Requireable<boolean>;
};
triggerButton: React.RefObject<HTMLButtonElement | null>;
modal: React.RefObject<HTMLDivElement | null>;
state: {
isOpen: boolean;
};
handleOpen: () => void;
handleClose: (evt: React.KeyboardEvent<HTMLDivElement>) => void;
handleOnRequestSubmit: (evt: React.KeyboardEvent<HTMLDivElement>) => void;
render(): import("react/jsx-runtime").JSX.Element;
}
export {};