UNPKG

@grafana/ui

Version:
1 lines 4.26 kB
{"version":3,"file":"ActionButton.mjs","sources":["../../../../src/components/Actions/ActionButton.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { ActionModel, Field, ActionVariableInput } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { useTheme2 } from '../../themes/ThemeContext';\nimport { Button, ButtonProps } from '../Button/Button';\nimport { ConfirmModal } from '../ConfirmModal/ConfirmModal';\n\nimport { VariablesInputModal } from './VariablesInputModal';\n\ntype ActionButtonProps = Omit<ButtonProps, 'children'> & {\n action: ActionModel<Field>;\n};\n\n/**\n * @internal\n */\nexport function ActionButton({ action, ...buttonProps }: ActionButtonProps) {\n const theme = useTheme2();\n const backgroundColor = action.style.backgroundColor || theme.colors.secondary.main;\n const textColor = theme.colors.getContrastText(backgroundColor);\n\n const [showConfirm, setShowConfirm] = useState(false);\n\n // Action variables\n const [showVarsModal, setShowVarsModal] = useState(false);\n const [actionVars, setActionVars] = useState<ActionVariableInput>({});\n\n const actionHasVariables = action.variables && action.variables.length > 0;\n\n const onClick = () => {\n if (actionHasVariables) {\n setShowVarsModal(true);\n } else {\n setShowConfirm(true);\n }\n };\n\n return (\n <>\n <Button\n variant=\"primary\"\n size=\"sm\"\n onClick={onClick}\n {...buttonProps}\n style={{ width: 'fit-content', backgroundColor, color: textColor }}\n >\n {action.title}\n </Button>\n\n {actionHasVariables && showVarsModal && (\n <VariablesInputModal\n onDismiss={() => setShowVarsModal(false)}\n action={action}\n onShowConfirm={() => setShowConfirm(true)}\n variables={actionVars}\n setVariables={setActionVars}\n />\n )}\n\n {showConfirm && (\n <ConfirmModal\n isOpen={true}\n title={t('grafana-ui.action-editor.button.confirm-action', 'Confirm action')}\n body={action.confirmation(actionVars)}\n confirmText={t('grafana-ui.action-editor.button.confirm', 'Confirm')}\n confirmButtonVariant=\"primary\"\n onConfirm={() => {\n setShowConfirm(false);\n action.onClick(new MouseEvent('click'), null, actionVars);\n }}\n onDismiss={() => {\n setShowConfirm(false);\n }}\n />\n )}\n </>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AAkBO,SAAS,YAAA,CAAa,EAAE,MAAA,EAAQ,GAAG,aAAY,EAAsB;AAC1E,EAAA,MAAM,QAAQ,SAAA,EAAU;AACxB,EAAA,MAAM,kBAAkB,MAAA,CAAO,KAAA,CAAM,eAAA,IAAmB,KAAA,CAAM,OAAO,SAAA,CAAU,IAAA;AAC/E,EAAA,MAAM,SAAA,GAAY,KAAA,CAAM,MAAA,CAAO,eAAA,CAAgB,eAAe,CAAA;AAE9D,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AAGpD,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA;AACxD,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,QAAA,CAA8B,EAAE,CAAA;AAEpE,EAAA,MAAM,kBAAA,GAAqB,MAAA,CAAO,SAAA,IAAa,MAAA,CAAO,UAAU,MAAA,GAAS,CAAA;AAEzE,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,kBAAA,EAAoB;AACtB,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAAA,IACvB,CAAA,MAAO;AACL,MAAA,cAAA,CAAe,IAAI,CAAA;AAAA,IACrB;AAAA,EACF,CAAA;AAEA,EAAA,uBACE,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,OAAA,EAAQ,SAAA;AAAA,QACR,IAAA,EAAK,IAAA;AAAA,QACL,OAAA;AAAA,QACC,GAAG,WAAA;AAAA,QACJ,OAAO,EAAE,KAAA,EAAO,aAAA,EAAe,eAAA,EAAiB,OAAO,SAAA,EAAU;AAAA,QAEhE,QAAA,EAAA,MAAA,CAAO;AAAA;AAAA,KACV;AAAA,IAEC,sBAAsB,aAAA,oBACrB,GAAA;AAAA,MAAC,mBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,MAAM,gBAAA,CAAiB,KAAK,CAAA;AAAA,QACvC,MAAA;AAAA,QACA,aAAA,EAAe,MAAM,cAAA,CAAe,IAAI,CAAA;AAAA,QACxC,SAAA,EAAW,UAAA;AAAA,QACX,YAAA,EAAc;AAAA;AAAA,KAChB;AAAA,IAGD,WAAA,oBACC,GAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,MAAA,EAAQ,IAAA;AAAA,QACR,KAAA,EAAO,CAAA,CAAE,gDAAA,EAAkD,gBAAgB,CAAA;AAAA,QAC3E,IAAA,EAAM,MAAA,CAAO,YAAA,CAAa,UAAU,CAAA;AAAA,QACpC,WAAA,EAAa,CAAA,CAAE,yCAAA,EAA2C,SAAS,CAAA;AAAA,QACnE,oBAAA,EAAqB,SAAA;AAAA,QACrB,WAAW,MAAM;AACf,UAAA,cAAA,CAAe,KAAK,CAAA;AACpB,UAAA,MAAA,CAAO,QAAQ,IAAI,UAAA,CAAW,OAAO,CAAA,EAAG,MAAM,UAAU,CAAA;AAAA,QAC1D,CAAA;AAAA,QACA,WAAW,MAAM;AACf,UAAA,cAAA,CAAe,KAAK,CAAA;AAAA,QACtB;AAAA;AAAA;AACF,GAAA,EAEJ,CAAA;AAEJ;;;;"}