{"version":3,"file":"ConfirmModal.mjs","sources":["../../../../src/components/ConfirmModal/ConfirmModal.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport * as React from 'react';\nimport type { JSX } 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\n/**\n * Used to request user for action confirmation, e.g. deleting items. Triggers provided `onConfirm` callback.\n *\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/overlays-confirmmodal--docs\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":";;;;;;;AAwDO,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;;;;"}