monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
28 lines (23 loc) • 1.17 kB
text/typescript
import { ReactElement } from "react";
import ModalHeader from "./ModalHeader/ModalHeader";
import ModalContent from "./ModalContent/ModalContent";
import ModalFooter from "./ModalFooter/ModalFooter";
import ModalFooterButtons from "./ModalFooter/ModalFooterButtons/ModalFooterButtons";
export enum ModalWidth {
DEFAULT = "default",
FULL_WIDTH = "full_width"
}
// the type A11yDialog is not exported from a11y-dialog, so mocking it with any for now
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type A11yDialogType = any;
export const isModalHeader = (child: ReactElement) => child.type === ModalHeader;
export const isModalContent = (child: ReactElement) => child.type === ModalContent;
export const isModalFooter = (child: ReactElement) =>
[ModalFooter, ModalFooterButtons].some(component => child.type === component);
export const validateTitleProp = (title: string, childrenArray: ReactElement[]) => {
const hasHeaderComponent = childrenArray.some(isModalHeader);
if (hasHeaderComponent) return;
if (!title) {
throw new Error(`Title prop is mandatory for Modal when HeaderModal isn't provided. Validation failed.`);
}
};