Repository URL to install this package:
|
Version:
3.12.20 ▾
|
import { useCallback } from 'react';
import { Warning } from '@scaleflex/icons';
import { useModal } from '@filerobot/core/lib/hooks';
import { useTheme } from '@scaleflex/ui/theme/hooks';
import { useExplorerI18n } from '../../../hooks';
import { PC } from '@filerobot/common';
import { jsx as _jsx } from "react/jsx-runtime";
export var useConfirmationModal = function useConfirmationModal() {
var toggleModal = useModal();
var theme = useTheme();
var i18n = useExplorerI18n();
var triggerConfirmationModal = useCallback(function (_ref) {
var title = _ref.title,
description = _ref.description,
icon = _ref.icon,
onCancel = _ref.onCancel,
onConfirm = _ref.onConfirm;
var confirmationHandler = function confirmationHandler(_ref2) {
var closeModal = _ref2.closeModal,
setIsModalLoading = _ref2.setIsModalLoading;
if (typeof onConfirm === 'function') {
var returnedData = onConfirm({
closeModal: closeModal,
setIsModalLoading: setIsModalLoading
});
if (returnedData instanceof Promise) {
setIsModalLoading(true);
returnedData.then(closeModal)["finally"](function () {
setIsModalLoading(false);
});
} else {
closeModal();
}
}
};
var cancellationHandler = function cancellationHandler(_ref3) {
var closeModal = _ref3.closeModal;
closeModal();
if (typeof onCancel === 'function') {
onCancel();
}
};
toggleModal({
icon: icon || /*#__PURE__*/_jsx(Warning, {
size: 29
}),
title: title || i18n('mutualizedConfirmationModalTitle'),
content: description || i18n('mutualizedConfirmationModalContent'),
buttonPrimaryLabel: i18n('mutualizedConfirmButtonLabel'),
buttonSecondaryLabel: i18n('mutualizedCancelButtonLabel'),
onButtonPrimaryClick: confirmationHandler,
onButtonSecondaryClick: cancellationHandler,
disableAutoClose: true,
modalPrimaryButtonColor: 'warning-primary',
modalSecondaryButtonColor: 'basic',
modalStyle: {
maxWidth: 400
},
modalBodyStyle: {
textAlign: 'center'
},
modalFooterStyle: {
flexDirection: 'row'
},
modalIconStyle: {
backgroundColor: theme.palette[PC.Orange_0_1_Overlay],
color: theme.palette[PC.Warning]
}
});
}, [theme, i18n]);
return triggerConfirmationModal;
};