@grafana/ui
Version:
Grafana Components Library
1 lines • 3.88 kB
Source Map (JSON)
{"version":3,"file":"ConfirmModal.mjs","sources":["../../../../src/components/ConfirmModal/ConfirmModal.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport * as React from 'react';\n\nimport { IconName } from '@grafana/data';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { ButtonVariant } from '../Button/Button';\nimport { Modal } from '../Modal/Modal';\n\nimport { ConfirmContent } from './ConfirmContent';\n\nexport interface ConfirmModalProps {\n /** Toggle modal's open/closed state */\n isOpen: boolean;\n /** Title for the modal header */\n title: string;\n /** Modal content */\n body: React.ReactNode;\n /** Modal description */\n description?: React.ReactNode;\n /** Text for confirm button */\n confirmText: string;\n /** Variant for confirm button */\n confirmVariant?: ButtonVariant;\n /** Text for dismiss button */\n dismissText?: string;\n /** Variant for dismiss button */\n dismissVariant?: ButtonVariant;\n /** Icon for the modal header */\n icon?: IconName;\n /** Additional styling for modal container */\n modalClass?: string;\n /** Text user needs to fill in before confirming */\n confirmationText?: string;\n /** Text for alternative button */\n alternativeText?: string;\n /** Confirm button variant */\n confirmButtonVariant?: ButtonVariant;\n /** Confirm action callback\n * Return a promise to disable the confirm button until the promise is resolved\n */\n onConfirm(): void | Promise<void>;\n /** Dismiss action callback */\n onDismiss(): void;\n /** Alternative action callback */\n onAlternative?(): void;\n /** Disable the confirm button and the confirm text input if needed */\n disabled?: boolean;\n}\n\nexport const ConfirmModal = ({\n isOpen,\n title,\n body,\n description,\n confirmText,\n confirmVariant = 'destructive',\n confirmationText,\n dismissText = 'Cancel',\n dismissVariant = 'secondary',\n alternativeText,\n modalClass,\n icon = 'exclamation-triangle',\n onConfirm,\n onDismiss,\n onAlternative,\n confirmButtonVariant = 'destructive',\n disabled,\n}: ConfirmModalProps): JSX.Element => {\n const styles = useStyles2(getStyles);\n\n return (\n <Modal className={cx(styles.modal, modalClass)} title={title} icon={icon} isOpen={isOpen} onDismiss={onDismiss}>\n <ConfirmContent\n body={body}\n description={description}\n confirmButtonLabel={confirmText}\n dismissButtonLabel={dismissText}\n dismissButtonVariant={dismissVariant}\n confirmPromptText={confirmationText}\n alternativeButtonLabel={alternativeText}\n confirmButtonVariant={confirmButtonVariant}\n onConfirm={onConfirm}\n onDismiss={onDismiss}\n onAlternative={onAlternative}\n disabled={disabled}\n />\n </Modal>\n );\n};\n\nconst getStyles = () => ({\n modal: css({\n width: '500px',\n }),\n});\n"],"names":[],"mappings":";;;;;;;AAkDO,MAAM,eAAe,CAAC;AAAA,EAC3B,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,cAAA,GAAiB,aAAA;AAAA,EACjB,gBAAA;AAAA,EACA,WAAA,GAAc,QAAA;AAAA,EACd,cAAA,GAAiB,WAAA;AAAA,EACjB,eAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA,GAAO,sBAAA;AAAA,EACP,SAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA;AAAA,EACA,oBAAA,GAAuB,aAAA;AAAA,EACvB;AACF,CAAA,KAAsC;AACpC,EAAA,MAAM,MAAA,GAAS,WAAW,SAAS,CAAA;AAEnC,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAW,EAAA,CAAG,MAAA,CAAO,KAAA,EAAO,UAAU,CAAA,EAAG,KAAA,EAAc,IAAA,EAAY,MAAA,EAAgB,SAAA,EACxF,QAAA,kBAAA,GAAA;AAAA,IAAC,cAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA;AAAA,MACA,kBAAA,EAAoB,WAAA;AAAA,MACpB,kBAAA,EAAoB,WAAA;AAAA,MACpB,oBAAA,EAAsB,cAAA;AAAA,MACtB,iBAAA,EAAmB,gBAAA;AAAA,MACnB,sBAAA,EAAwB,eAAA;AAAA,MACxB,oBAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAEA,MAAM,YAAY,OAAO;AAAA,EACvB,OAAO,GAAA,CAAI;AAAA,IACT,KAAA,EAAO;AAAA,GACR;AACH,CAAA,CAAA;;;;"}